diff --git a/.github/workflows/selenuim-test.yml b/.github/workflows/selenuim-test.yml
index 600989c214e..8c97724b08c 100644
--- a/.github/workflows/selenuim-test.yml
+++ b/.github/workflows/selenuim-test.yml
@@ -19,7 +19,7 @@ jobs:
- uses: ankane/setup-mariadb@v1
with:
mariadb-version: "10.11"
- database: angel_selenuim_test
+ database: angel_selenium_test
- uses: actions/checkout@v2
@@ -63,7 +63,7 @@ jobs:
- name: Run tests
if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
- run: ./gradlew selenium-test:test -x client-html:test -PdbUrl=jdbc:mariadb://localhost:3306/angel_selenuim_test?user=root --stacktrace
+ run: ./gradlew selenium-test:test -x client-html:test -PdbUrl=jdbc:mariadb://localhost:3306/angel_selenium_test?user=root --stacktrace
- name: Publish test results
uses: EnricoMi/publish-unit-test-result-action@v1
diff --git a/api-doc/build.gradle b/api-doc/build.gradle
index 59d14a65954..083f7de04a6 100644
--- a/api-doc/build.gradle
+++ b/api-doc/build.gradle
@@ -1,3 +1,14 @@
+/*
+ * Copyright ish group pty ltd 2020.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the
+ * GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU Affero General Public License for more details.
+ */
+
apply from: "$rootDir/nodeSetup.gradle"
task apiDoc(type: NpmTask, dependsOn: [':server-api:apiDocs_mergeSwagger', 'npmInstall']) {
@@ -9,22 +20,24 @@ task apiDoc(type: NpmTask, dependsOn: [':server-api:apiDocs_mergeSwagger', 'npmI
npmCommand = ['run']
args = ['build']
- outputs.dir("${buildDir}/api-docs")
+ outputs.dir("${layout.buildDirectory.get()}/api-docs")
}
-build.dependsOn(apiDoc)
-
task packageApiDoc (type: Zip, dependsOn: apiDoc) {
group = "documentation"
from apiDoc.outputs.files
archiveClassifier = 'documentation'
}
+tasks.named('build') {
+ dependsOn apiDoc
+}
+
publishing {
publications {
- docs(MavenPublication) {
+ create("docs", MavenPublication) {
artifact(packageApiDoc) {
- artifactId "apiDoc"
+ artifactId = "apiDoc"
}
}
}
diff --git a/api-test/build.gradle b/api-test/build.gradle
index 0c5e014c0c5..1cf78cecd83 100644
--- a/api-test/build.gradle
+++ b/api-test/build.gradle
@@ -1,5 +1,3 @@
-import test.PrepareTestDatabase
-
/*
* Copyright ish group pty ltd 2020.
*
@@ -11,6 +9,17 @@ import test.PrepareTestDatabase
* See the GNU Affero General Public License for more details.
*/
+import test.PrepareTestDatabase
+
+plugins {
+ id 'java'
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+}
+
ext {
karateVersion = '1.0.1'
}
@@ -29,9 +38,6 @@ dependencies {
testImplementation "org.eclipse.jetty:jetty-client:$jettyVersion"
}
-sourceCompatibility = 11
-targetCompatibility = 11
-
task copyConfig(type: Copy) {
from("$rootDir/api-test/src/test/resources/") {
include 'onCourse.yml'
@@ -52,7 +58,9 @@ test {
events "failed", "standardOut"
}
- tasks.getByName('prepareTestDatabase').mustRunAfter(':server:startDaemon').mustRunAfter('copyConfig')
+ tasks.named('prepareTestDatabase').get()
+ .mustRunAfter(':server:startDaemon')
+ .mustRunAfter('copyConfig')
dependsOn "copyConfig"
dependsOn ":server:startDaemon"
diff --git a/build.gradle b/build.gradle
index 1d4e72d41e9..50fb777702e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,6 +5,7 @@
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
*/
+
buildscript {
ext {
log4j2Version = '2.17.2'
@@ -14,7 +15,7 @@ buildscript {
googleGuiceVersion = '4.2.2'
groovyVersion = '2.5.15'
bouncycastleVersion = '1.67'
- bootiqueVersion = '1.2'
+ bootiqueVersion = '2.0'
cfxVersion = '3.3.5'
//latest jackson version 2.12.2 (no any conflicts with spring, see AbstractApplicationContext), same version jasper uses also
jacksonVersion = '2.12.2'
@@ -31,11 +32,11 @@ buildscript {
}
plugins {
- id 'com.github.ben-manes.versions' version '0.39.0' // adds the task 'dependencyUpdates -Drevision=release'
- id 'com.github.node-gradle.node' version '3.1.1' apply false
- id 'com.github.psxpaul.execfork' version '0.1.15' apply false
+ id 'com.github.ben-manes.versions' version '0.51.0' // adds the task 'dependencyUpdates -Drevision=release'
+ id 'com.github.node-gradle.node' version '7.0.1' apply false
+ id 'com.github.psxpaul.execfork' version '0.2.2' apply false
id 'idea'
- id 'org.barfuin.gradle.taskinfo' version '1.2.0' // adds the task 'tiTree [some task]' and the task 'tiOrder [some task]'
+ id 'org.barfuin.gradle.taskinfo' version '2.2.0' // adds the task 'tiTree [some task]' and the task 'tiOrder [some task]'
id 'java'
id 'groovy'
@@ -64,7 +65,11 @@ subprojects {
// added it exactly here since api dep doesn't work without that plugin
apply plugin: 'java-library'
- sourceCompatibility = 11
+ java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ }
+
+ group = 'ish.oncourse.angel'
// get the version from the command line properties
version = project.hasProperty('releaseVersion') && project.releaseVersion ? project.releaseVersion : "99-SNAPSHOT"
version = version.replace('v','') // remove the leading v from the version
@@ -90,22 +95,15 @@ subprojects {
implementation 'javax.annotation:javax.annotation-api:1.3.2'
-
-
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.0'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.0'
testImplementation 'org.junit.vintage:junit-vintage-engine:5.8.0' // needed for dbunit https://sourceforge.net/p/dbunit/feature-requests/222/
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
testImplementation 'org.dbunit:dbunit:2.7.0'
+
testImplementation "org.codehaus.groovy:groovy-test-junit5:$groovyVersion"
testImplementation "org.codehaus.groovy:groovy-sql:$groovyVersion"
}
-// uncomment when dbunit is detached from junit
-// configurations {
-// testImplementation.exclude group: 'junit' // exclude junit4
-// }
-
- group = 'ish.oncourse.angel'
publishing {
repositories {
@@ -133,15 +131,11 @@ subprojects {
'Trusted-Library': 'true'
}
- ext {
- testFailed = false
- }
-
test {
+ boolean testFailed = false
useJUnitPlatform()
- systemProperties 'java.awt.headless': 'true',
- 'java.locale.providers': 'COMPAT,SPI'
+ systemProperties 'java.awt.headless': 'true', 'java.locale.providers': 'COMPAT,SPI'
maxHeapSize = '3000M'
maxParallelForks = 1
ignoreFailures = true
@@ -152,7 +146,7 @@ subprojects {
}
reports {
- junitXml.enabled = true
+ junitXml.required = true
}
afterSuite { desc, result ->
@@ -169,9 +163,9 @@ subprojects {
}
task testReport(type: TestReport) {
- destinationDir = file("$buildDir/reports/tests")
+ destinationDirectory = file("${layout.buildDirectory.get()}/reports/tests")
// Include the results from the `test` task in all subprojects
- reportOn subprojects*.test
+ testResults.from = subprojects*.test
}
// Skip beta and other non-final releases in the update report
diff --git a/buildSrc/apidoc/src/main/groovy/au/com/ish/docs/DslGroovyRootDocBuilder.groovy b/buildSrc/apidoc/src/main/groovy/au/com/ish/docs/DslGroovyRootDocBuilder.groovy
index 2eddb15dac0..57e0b44085c 100644
--- a/buildSrc/apidoc/src/main/groovy/au/com/ish/docs/DslGroovyRootDocBuilder.groovy
+++ b/buildSrc/apidoc/src/main/groovy/au/com/ish/docs/DslGroovyRootDocBuilder.groovy
@@ -3,7 +3,7 @@
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
- * You may obtain ssh copy of the License at
+ * You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -18,6 +18,7 @@ package au.com.ish.docs
import groovyjarjarantlr.RecognitionException
import groovyjarjarantlr.TokenStreamException
import groovyjarjarantlr.collections.AST
+import org.apache.groovy.antlr.override.GroovydocVisitor
import org.apache.commons.lang3.StringUtils
import org.codehaus.groovy.antlr.AntlrASTProcessor
import org.codehaus.groovy.antlr.SourceBuffer
@@ -29,13 +30,13 @@ import org.codehaus.groovy.antlr.java.JavaRecognizer
import org.codehaus.groovy.antlr.parser.GroovyLexer
import org.codehaus.groovy.antlr.parser.GroovyRecognizer
import org.codehaus.groovy.antlr.treewalker.PreOrderTraversal
-import org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal
import org.codehaus.groovy.antlr.treewalker.Visitor
+import org.codehaus.groovy.ast.ModuleNode
+import org.codehaus.groovy.control.*
import org.codehaus.groovy.groovydoc.GroovyClassDoc
import org.codehaus.groovy.groovydoc.GroovyRootDoc
import org.codehaus.groovy.runtime.ResourceGroovyMethods
import org.codehaus.groovy.tools.groovydoc.LinkArgument
-import org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDocAssembler
import org.codehaus.groovy.tools.groovydoc.SimpleGroovyExecutableMemberDoc
import org.codehaus.groovy.tools.groovydoc.SimpleGroovyPackageDoc
import org.codehaus.groovy.tools.groovydoc.SimpleGroovyRootDoc
@@ -68,32 +69,56 @@ class DslGroovyRootDocBuilder {
JavaLexer lexer = new JavaLexer(unicodeReader)
unicodeReader.setLexer(lexer)
parser = JavaRecognizer.make(lexer)
- parser.setSourceBuffer(sourceBuffer)
- parser.compilationUnit()
} else {
GroovyLexer lexer = new GroovyLexer(unicodeReader)
unicodeReader.setLexer(lexer)
parser = GroovyRecognizer.make(lexer)
- parser.setSourceBuffer(sourceBuffer)
- parser.compilationUnit()
}
-
- AST ast = parser.getAST()
- if (isJava) {
- // modify the Java AST into ssh Groovy AST (just token types)
- Visitor java2groovyConverter = new Java2GroovyConverter(parser.getTokenNames())
- AntlrASTProcessor java2groovyTraverser = new PreOrderTraversal(java2groovyConverter)
- java2groovyTraverser.process(ast)
-
- // now mutate (groovify) the ast into groovy
- Visitor groovifier = new Groovifier(parser.getTokenNames(), false)
- AntlrASTProcessor groovifierTraverser = new PreOrderTraversal(groovifier)
- groovifierTraverser.process(ast)
+ if (isJava) {
+ parser.setSourceBuffer(sourceBuffer)
+ parser.compilationUnit()
+ AST ast = parser.getAST()
+
+ // modify the Java AST into a Groovy AST (just token types)
+ Visitor java2groovyConverter = new Java2GroovyConverter(parser.getTokenNames())
+ AntlrASTProcessor java2groovyTraverser = new PreOrderTraversal(java2groovyConverter)
+ java2groovyTraverser.process(ast)
+
+ // now mutate (groovify) the ast into groovy
+ Visitor groovifier = new Groovifier(parser.getTokenNames(), false)
+ AntlrASTProcessor groovifierTraverser = new PreOrderTraversal(groovifier)
+ groovifierTraverser.process(ast)
+ }
+
+ CompilerConfiguration config = new CompilerConfiguration()
+ config.getOptimizationOptions().put(CompilerConfiguration.GROOVYDOC, true)
+ CompilationUnit compUnit = new CompilationUnit(config)
+ SourceUnit unit = new SourceUnit(file, src, config, null, new ErrorCollector(config));
+ compUnit.addSource(unit);
+ int phase = Phases.CONVERSION;
+ if (properties.containsKey("phaseOverride")) {
+ String raw = properties.getProperty("phaseOverride")
+ try {
+ phase = Integer.parseInt(raw)
+ } catch(NumberFormatException ignore) {
+ raw = raw.toUpperCase();
+ switch(raw) {
+ // some dup here but kept simple since we may swap Phases to an enum
+ case "CONVERSION": phase = 3; break;
+ case "SEMANTIC_ANALYSIS": phase = 4; break;
+ case "CANONICALIZATION": phase = 5; break;
+ case "INSTRUCTION_SELECTION": phase = 6; break;
+ case "CLASS_GENERATION": phase = 7; break;
+ default:
+ System.err.println("Ignoring unrecognised or unsuitable phase and keeping default");
+ }
+ }
}
- Visitor visitor = new SimpleGroovyClassDocAssembler(packagePath, file, sourceBuffer, links, properties, !isJava)
- AntlrASTProcessor traverser = new SourceCodeTraversal(visitor)
- traverser.process(ast)
- return ((SimpleGroovyClassDocAssembler)visitor).getGroovyClassDocs()
+ compUnit.compile(phase);
+ ModuleNode root = unit.getAST()
+ GroovydocVisitor visitor = new GroovydocVisitor(unit, packagePath, links, properties)
+ root.getClasses().forEach(clazz -> visitor.visitClass(clazz))
+ return visitor.getGroovyClassDocs()
}
protected void setOverview() {
diff --git a/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/ArrayGroovyMethods.java b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/ArrayGroovyMethods.java
new file mode 100644
index 00000000000..3d5a52aa086
--- /dev/null
+++ b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/ArrayGroovyMethods.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright ish group pty ltd 2024.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.groovy.antlr.override;
+
+import org.codehaus.groovy.runtime.DefaultGroovyMethods;
+import org.codehaus.groovy.runtime.DefaultGroovyMethodsSupport;
+import org.codehaus.groovy.util.ArrayIterator;
+
+/**
+ * Defines new groovy methods which appear on arrays inside the Groovy environment.
+ * Static methods are used with the first parameter being the destination class,
+ * i.e. public static int[] each(int[] self, Closure closure)
+ * provides an each({i -> }) method for int[].
+ *
+ * NOTE: While this class contains many 'public' static methods, it is
+ * primarily regarded as an internal class (its internal package name
+ * suggests this also). We value backwards compatibility of these
+ * methods when used within Groovy but value less backwards compatibility
+ * at the Java method call level. I.e. future versions of Groovy may
+ * remove or move a method call in this file but would normally
+ * aim to keep the method available from within Groovy.
+ */
+
+// TODO: Remove after update Groovy v4, this part of code is taken from this version
+
+public class ArrayGroovyMethods extends DefaultGroovyMethodsSupport {
+
+ private ArrayGroovyMethods() {
+ }
+
+ /**
+ * Concatenates the string representation of each item in this array,
+ * with the given String as a separator between each item.
+ *
+ *
+ * Serializable[] array = [1,2L,-3G]
+ * assert array.join("+") == "1+2+-3"
+ *
+ *
+ * @param self an array of Object
+ * @param separator a String separator
+ * @return the joined String
+ * @since 1.0
+ */
+ public static String join(Object[] self, String separator) {
+ return DefaultGroovyMethods.join(new ArrayIterator<>(self), separator);
+ }
+}
\ No newline at end of file
diff --git a/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/FormatHelper.java b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/FormatHelper.java
new file mode 100644
index 00000000000..8e9d443b69b
--- /dev/null
+++ b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/FormatHelper.java
@@ -0,0 +1,562 @@
+/*
+ * Copyright ish group pty ltd 2024.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.groovy.antlr.override;
+
+import groovy.lang.GroovyRuntimeException;
+import groovy.lang.GroovySystem;
+import groovy.lang.MetaClassRegistry;
+import groovy.lang.Range;
+import groovy.lang.Writable;
+import groovy.transform.NamedParam;
+import groovy.transform.NamedParams;
+import org.apache.groovy.io.StringBuilderWriter;
+import org.codehaus.groovy.control.ResolveVisitor;
+import org.codehaus.groovy.runtime.DefaultGroovyMethods;
+import org.codehaus.groovy.runtime.NullObject;
+import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
+import org.w3c.dom.Element;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.Writer;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import static java.lang.Math.max;
+import static java.util.Arrays.stream;
+
+/**
+ * Formatting methods
+ */
+
+// TODO: Remove after update Groovy v4, this part of code is taken from this version
+
+public class FormatHelper {
+
+ private FormatHelper() {}
+
+ private static final String SQ = "'";
+ private static final String DQ = "\"";
+
+ private static final Object[] EMPTY_ARGS = {};
+
+ // heuristic size to pre-allocate stringbuffers for collections of items
+ private static final int ITEM_ALLOCATE_SIZE = 5;
+
+ public static final MetaClassRegistry metaRegistry = GroovySystem.getMetaClassRegistry();
+ private static final String XMLUTIL_CLASS_FULL_NAME = "groovy.xml.XmlUtil";
+ private static final String SERIALIZE_METHOD_NAME = "serialize";
+
+ static final Set DEFAULT_IMPORT_PKGS = new HashSet<>();
+ static final Set DEFAULT_IMPORT_CLASSES = new HashSet<>();
+
+ static {
+ for (String pkgName : ResolveVisitor.DEFAULT_IMPORTS) {
+ FormatHelper.DEFAULT_IMPORT_PKGS.add(pkgName.substring(0, pkgName.length() - 1));
+ }
+ FormatHelper.DEFAULT_IMPORT_CLASSES.add("java.math.BigDecimal");
+ FormatHelper.DEFAULT_IMPORT_CLASSES.add("java.math.BigInteger");
+ }
+
+ public static String toString(Object arguments) {
+ return format(arguments, false, -1, false);
+ }
+
+ public static String inspect(Object self) {
+ return format(self, true);
+ }
+
+ public static String format(Object arguments, boolean verbose) {
+ return format(arguments, verbose, -1);
+ }
+
+ public static String format(Object arguments, boolean inspect, boolean escapeBackslashes) {
+ return format(arguments, inspect, -1);
+ }
+
+ public static String format(Object arguments, boolean verbose, int maxSize) {
+ return format(arguments, verbose, maxSize, false);
+ }
+
+ public static String format(Object arguments, boolean inspect, boolean escapeBackslashes, int maxSize) {
+ return format(arguments, inspect, escapeBackslashes, maxSize, false);
+ }
+
+ /**
+ * Output the {@code toString} for the argument(s) with various options to configure.
+ * Configuration options:
+ *
+ *
+ * safe provides protection if the {@code toString} throws an exception, in which case the exception is swallowed and a dumber default {@code toString} is used
+ * maxSize will attempt to truncate the output to fit approx the maxSize number of characters, -1 means don't truncate
+ * inspect if false, render a value by its {@code toString}, otherwise use its {@code inspect} value
+ * escapeBackSlashes whether characters like tab, newline, etc. are converted to their escaped rendering ('\t', '\n', etc.)
+ * verbose shorthand to turn on both {@code inspect} and {@code escapeBackslashes}
+ *
+ *
+ *
+ * @param options a map of configuration options
+ * @param arguments the argument(s) to calculate the {@code toString} for
+ * @return the string rendering of the argument(s)
+ * @see DefaultGroovyMethods#inspect(Object)
+ */
+ public static String toString(@NamedParams({
+ @NamedParam(value = "safe", type = Boolean.class),
+ @NamedParam(value = "maxSize", type = Integer.class),
+ @NamedParam(value = "verbose", type = Boolean.class),
+ @NamedParam(value = "escapeBackslashes", type = Boolean.class),
+ @NamedParam(value = "inspect", type = Boolean.class)
+ }) Map options, Object arguments) {
+ Object safe = options.get("safe");
+ if (!(safe instanceof Boolean)) safe = false;
+ Object maxSize = options.get("maxSize");
+ if (!(maxSize instanceof Integer)) maxSize = -1;
+ Object verbose = options.get("verbose");
+ Object inspect = options.get("inspect");
+ Object escapeBackslashes = options.get("escapeBackslashes");
+ if (!(inspect instanceof Boolean)) inspect = false;
+ if (!(escapeBackslashes instanceof Boolean)) escapeBackslashes = false;
+ if (!(verbose instanceof Boolean)) verbose = false;
+ if (Boolean.TRUE.equals(verbose)) {
+ inspect = true;
+ escapeBackslashes = true;
+ }
+ return format(arguments, (boolean) inspect, (boolean) escapeBackslashes, (int) maxSize, (boolean) safe);
+ }
+
+ public static String format(Object arguments, boolean verbose, int maxSize, boolean safe) {
+ return format(arguments, verbose, verbose, maxSize, safe);
+ }
+
+ public static String format(Object arguments, boolean inspect, boolean escapeBackslashes, int maxSize, boolean safe) {
+ if (arguments == null) {
+ final NullObject nullObject = NullObject.getNullObject();
+ return (String) nullObject.getMetaClass().invokeMethod(nullObject, "toString", EMPTY_ARGS);
+ }
+ if (arguments.getClass().isArray()) {
+ if (arguments instanceof Object[]) {
+ return toArrayString((Object[]) arguments, inspect, escapeBackslashes, maxSize, safe);
+ }
+ if (arguments instanceof char[]) {
+ return new String((char[]) arguments);
+ }
+ // other primitives
+ return formatCollection(DefaultTypeTransformation.arrayAsCollection(arguments), inspect, escapeBackslashes, maxSize, safe);
+ }
+ if (arguments instanceof Range) {
+ Range range = (Range) arguments;
+ try {
+ if (inspect) {
+ return range.inspect();
+ } else {
+ return range.toString();
+ }
+ } catch (RuntimeException ex) {
+ if (!safe) throw ex;
+ return handleFormattingException(arguments, ex);
+ } catch (Exception ex) {
+ if (!safe) throw new GroovyRuntimeException(ex);
+ return handleFormattingException(arguments, ex);
+ }
+ }
+ if (arguments instanceof Collection) {
+ return formatCollection((Collection) arguments, inspect, escapeBackslashes, maxSize, safe);
+ }
+ if (arguments instanceof Map) {
+ return formatMap((Map) arguments, inspect, escapeBackslashes, maxSize, safe);
+ }
+ if (arguments instanceof Element) {
+ try {
+ Method serialize = Class.forName(XMLUTIL_CLASS_FULL_NAME).getMethod(SERIALIZE_METHOD_NAME, Element.class);
+ return (String) serialize.invoke(null, arguments);
+ } catch (ClassNotFoundException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ if (arguments instanceof CharSequence) {
+ String arg = escapeBackslashes ? escapeBackslashes(arguments.toString()) : arguments.toString();
+ if (arguments instanceof String) {
+ if (!inspect) return arg;
+ return !escapeBackslashes && multiline(arg) ? "'''" + arg + "'''" : SQ + arg.replace(SQ, "\\'") + SQ;
+ }
+ if (!inspect) return arg;
+ return !escapeBackslashes && multiline(arg) ? "\"\"\"" + arg + "\"\"\"" : DQ + arg.replace(DQ, "\\\"") + DQ;
+ }
+ try {
+ // TODO: For GROOVY-2599 do we need something like below but it breaks other things
+// return (String) invokeMethod(arguments, "toString", EMPTY_ARGS);
+ return arguments.toString();
+ } catch (RuntimeException ex) {
+ if (!safe) throw ex;
+ return handleFormattingException(arguments, ex);
+ } catch (Exception ex) {
+ if (!safe) throw new GroovyRuntimeException(ex);
+ return handleFormattingException(arguments, ex);
+ }
+ }
+
+ private static boolean multiline(String s) {
+ return s.contains("\n") || s.contains("\r");
+ }
+
+ public static String escapeBackslashes(String orig) {
+ // must replace backslashes first, as the other replacements add backslashes not to be escaped
+ return orig
+ .replace("\\", "\\\\") // backslash
+ .replace("\n", "\\n") // line feed
+ .replace("\r", "\\r") // carriage return
+ .replace("\t", "\\t") // tab
+ .replace("\f", "\\f"); // form feed
+ }
+
+ private static String handleFormattingException(Object item, Exception ex) {
+
+ String hash;
+ try {
+ hash = Integer.toHexString(item.hashCode());
+ } catch (Exception ignored) {
+ hash = "????";
+ }
+ return "<" + typeName(item) + "@" + hash + ">";
+ }
+
+ private static String formatMap(Map map, boolean inspect, boolean escapeBackslashes, int maxSize, boolean safe) {
+ if (map.isEmpty()) {
+ return "[:]";
+ }
+ StringBuilder buffer = new StringBuilder(ITEM_ALLOCATE_SIZE * map.size() * 2);
+ buffer.append('[');
+ boolean first = true;
+ for (Object o : map.entrySet()) {
+ if (first) {
+ first = false;
+ } else {
+ buffer.append(", ");
+ }
+ if (maxSize != -1 && buffer.length() > maxSize) {
+ buffer.append("...");
+ break;
+ }
+ Map.Entry entry = (Map.Entry) o;
+ if (entry.getKey() == map) {
+ buffer.append("(this Map)");
+ } else {
+ buffer.append(format(entry.getKey(), inspect, escapeBackslashes, sizeLeft(maxSize, buffer), safe));
+ }
+ buffer.append(":");
+ if (entry.getValue() == map) {
+ buffer.append("(this Map)");
+ } else {
+ buffer.append(format(entry.getValue(), inspect, escapeBackslashes, sizeLeft(maxSize, buffer), safe));
+ }
+ }
+ buffer.append(']');
+ return buffer.toString();
+ }
+
+ private static int sizeLeft(int maxSize, StringBuilder buffer) {
+ return maxSize == -1 ? maxSize : max(0, maxSize - buffer.length());
+ }
+
+ private static String formatCollection(Collection collection, boolean inspect, boolean escapeBackslashes, int maxSize, boolean safe) {
+ StringBuilder buffer = new StringBuilder(ITEM_ALLOCATE_SIZE * collection.size());
+ buffer.append('[');
+ boolean first = true;
+ for (Object item : collection) {
+ if (first) {
+ first = false;
+ } else {
+ buffer.append(", ");
+ }
+ if (maxSize != -1 && buffer.length() > maxSize) {
+ buffer.append("...");
+ break;
+ }
+ if (item == collection) {
+ buffer.append("(this Collection)");
+ } else {
+ buffer.append(format(item, inspect, escapeBackslashes, sizeLeft(maxSize, buffer), safe));
+ }
+ }
+ buffer.append(']');
+ return buffer.toString();
+ }
+
+ /**
+ * A helper method to format the arguments types as a comma-separated list.
+ *
+ * @param arguments the type to process
+ * @return the string representation of the type
+ */
+ public static String toTypeString(Object[] arguments) {
+ return toTypeString(arguments, -1);
+ }
+
+ /**
+ * A helper method to format the arguments types as a comma-separated list.
+ *
+ * @param arguments the type to process
+ * @param maxSize stop after approximately this many characters and append '...', -1 means don't stop
+ * @return the string representation of the type
+ */
+ public static String toTypeString(Object[] arguments, int maxSize) {
+ if (arguments == null) {
+ return "null";
+ }
+ if (arguments.length == 0) {
+ return "";
+ }
+ if (maxSize < 0) {
+ return stream(arguments)
+ .map(arg -> arg != null ? typeName(arg) : "null")
+ .collect(java.util.stream.Collectors.joining(", "));
+ }
+
+ var plainForm = new StringBuilder();
+ var shortForm = new StringBuilder();
+ for (int i = 0; i < arguments.length; i += 1) {
+ String type = arguments[i] != null ? typeName(arguments[i]) : "null";
+
+ if (plainForm.length() < maxSize) {
+ if (i > 0) plainForm.append(", ");
+ plainForm.append(type);
+ } else if (plainForm.charAt(plainForm.length() - 1) != '.') {
+ plainForm.append("...");
+ }
+
+ if (shortForm.length() < maxSize) {
+ if (i > 0) shortForm.append(", ");
+ String[] tokens = type.split("\\.");
+ for (int j = 0; j < tokens.length - 1; j += 1) {
+ // GROOVY-11270: reduce "foo.bar.Baz" to "f.b.Baz"
+ shortForm.appendCodePoint(tokens[j].codePointAt(0)).append('.');
+ }
+ shortForm.append(tokens[tokens.length - 1]);
+ } else {
+ shortForm.append("...");
+ break;
+ }
+ }
+
+ return (plainForm.length() <= maxSize ? plainForm : shortForm).toString();
+ }
+
+ /**
+ * Gets the type name
+ *
+ * @param argument the object to find the type for
+ * @return the type name (slightly pretty format taking into account default imports)
+ */
+ static String typeName(Object argument) {
+ Class> aClass = argument.getClass();
+ String pkgName = aClass.getPackage() == null ? "" : aClass.getPackage().getName();
+ boolean useShort = DEFAULT_IMPORT_PKGS.contains(pkgName) || DEFAULT_IMPORT_CLASSES.contains(aClass.getName());
+ return useShort ? aClass.getSimpleName() : aClass.getName();
+ }
+
+ /**
+ * A helper method to return the string representation of a map with bracket boundaries "[" and "]".
+ *
+ * @param arg the map to process
+ * @return the string representation of the map
+ */
+ public static String toMapString(Map arg) {
+ return toMapString(arg, -1);
+ }
+
+ /**
+ * A helper method to return the string representation of a map with bracket boundaries "[" and "]".
+ *
+ * @param arg the map to process
+ * @param maxSize stop after approximately this many characters and append '...', -1 means don't stop
+ * @return the string representation of the map
+ */
+ public static String toMapString(Map arg, int maxSize) {
+ return formatMap(arg, false, false, maxSize, false);
+ }
+
+ /**
+ * A helper method to return the string representation of a list with bracket boundaries "[" and "]".
+ *
+ * @param arg the collection to process
+ * @return the string representation of the collection
+ */
+ public static String toListString(Collection arg) {
+ return toListString(arg, -1);
+ }
+
+ /**
+ * A helper method to return the string representation of a list with bracket boundaries "[" and "]".
+ *
+ * @param arg the collection to process
+ * @param maxSize stop after approximately this many characters and append '...'
+ * @return the string representation of the collection
+ */
+ public static String toListString(Collection arg, int maxSize) {
+ return toListString(arg, maxSize, false);
+ }
+
+ /**
+ * A helper method to return the string representation of a list with bracket boundaries "[" and "]".
+ *
+ * @param arg the collection to process
+ * @param maxSize stop after approximately this many characters and append '...', -1 means don't stop
+ * @param safe whether to use a default object representation for any item in the collection if an exception occurs when generating its toString
+ * @return the string representation of the collection
+ */
+ public static String toListString(Collection arg, int maxSize, boolean safe) {
+ return formatCollection(arg, false, false, maxSize, safe);
+ }
+
+ /**
+ * A helper method to return the string representation of an array of objects
+ * with brace boundaries "[" and "]".
+ *
+ * @param arguments the array to process
+ * @return the string representation of the array
+ */
+ public static String toArrayString(Object[] arguments) {
+ return toArrayString(arguments, false, false, -1, false);
+ }
+
+ private static String toArrayString(Object[] array, boolean inspect, boolean escapeBackslashes, int maxSize, boolean safe) {
+ if (array == null) {
+ return "null";
+ }
+ boolean first = true;
+ StringBuilder argBuf = new StringBuilder(array.length);
+ argBuf.append('[');
+
+ for (Object item : array) {
+ if (first) {
+ first = false;
+ } else {
+ argBuf.append(", ");
+ }
+ if (maxSize != -1 && argBuf.length() > maxSize) {
+ argBuf.append("...");
+ break;
+ }
+ if (item == array) {
+ argBuf.append("(this array)");
+ } else {
+ argBuf.append(format(item, inspect, escapeBackslashes, sizeLeft(maxSize, argBuf), safe));
+ }
+ }
+ argBuf.append(']');
+ return argBuf.toString();
+ }
+
+ /**
+ * A helper method to return the string representation of an array of objects
+ * with brace boundaries "[" and "]".
+ *
+ * @param arguments the array to process
+ * @param maxSize stop after approximately this many characters and append '...'
+ * @param safe whether to use a default object representation for any item in the array if an exception occurs when generating its toString
+ * @return the string representation of the array
+ */
+ public static String toArrayString(Object[] arguments, int maxSize, boolean safe) {
+ return toArrayString(arguments, false, false, maxSize, safe);
+ }
+
+ /**
+ * Writes an object to a Writer using Groovy's default representation for the object.
+ */
+ public static void write(Writer out, Object object) throws IOException {
+ if (object instanceof String) {
+ out.write((String) object);
+ } else if (object instanceof Object[]) {
+ out.write(toArrayString((Object[]) object));
+ } else if (object instanceof Map) {
+ out.write(toMapString((Map) object));
+ } else if (object instanceof Collection) {
+ out.write(toListString((Collection) object));
+ } else if (object instanceof Writable) {
+ Writable writable = (Writable) object;
+ writable.writeTo(out);
+ } else if (object instanceof InputStream || object instanceof Reader) {
+ // Copy stream to stream
+ Reader reader;
+ if (object instanceof InputStream) {
+ reader = new InputStreamReader((InputStream) object);
+ } else {
+ reader = (Reader) object;
+ }
+
+ try (Reader r = reader) {
+ char[] chars = new char[8192];
+ for (int i; (i = r.read(chars)) != -1; ) {
+ out.write(chars, 0, i);
+ }
+ }
+ } else {
+ out.write(toString(object));
+ }
+ }
+
+ /**
+ * Appends an object to an Appendable using Groovy's default representation for the object.
+ */
+ public static void append(Appendable out, Object object) throws IOException {
+ if (object instanceof String) {
+ out.append((String) object);
+ } else if (object instanceof Object[]) {
+ out.append(toArrayString((Object[]) object));
+ } else if (object instanceof Map) {
+ out.append(toMapString((Map) object));
+ } else if (object instanceof Collection) {
+ out.append(toListString((Collection) object));
+ } else if (object instanceof Writable) {
+ Writable writable = (Writable) object;
+ Writer stringWriter = new StringBuilderWriter();
+ writable.writeTo(stringWriter);
+ out.append(stringWriter.toString());
+ } else if (object instanceof InputStream || object instanceof Reader) {
+ // Copy stream to stream
+ try (Reader reader =
+ object instanceof InputStream
+ ? new InputStreamReader((InputStream) object)
+ : (Reader) object) {
+ char[] chars = new char[8192];
+ for (int i; (i = reader.read(chars)) != -1; ) {
+ for (int j = 0; j < i; j++) {
+ out.append(chars[j]);
+ }
+ }
+ }
+ } else {
+ out.append(toString(object));
+ }
+ }
+}
diff --git a/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/GroovydocVisitor.java b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/GroovydocVisitor.java
new file mode 100644
index 00000000000..f8d5a0dcaeb
--- /dev/null
+++ b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/GroovydocVisitor.java
@@ -0,0 +1,394 @@
+/*
+ * Copyright ish group pty ltd 2024.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// TODO: Remove after update Groovy v4, this part of code is taken from this version
+package org.apache.groovy.antlr.override;
+
+import groovy.lang.groovydoc.Groovydoc;
+import org.codehaus.groovy.ast.*;
+import org.codehaus.groovy.ast.expr.DeclarationExpression;
+import org.codehaus.groovy.ast.expr.VariableExpression;
+import org.codehaus.groovy.control.ResolveVisitor;
+import org.codehaus.groovy.control.SourceUnit;
+import org.codehaus.groovy.groovydoc.GroovyClassDoc;
+import org.codehaus.groovy.groovydoc.GroovyFieldDoc;
+import org.codehaus.groovy.groovydoc.GroovyMethodDoc;
+import org.codehaus.groovy.tools.groovydoc.*;
+
+import java.lang.reflect.Modifier;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.apache.groovy.antlr.override.RecordTypeASTTransformation.recordNative;
+import static org.codehaus.groovy.transform.trait.Traits.isTrait;
+
+/**
+ * A visitor which collects Groovydoc information.
+ */
+public class GroovydocVisitor extends ClassCodeVisitorSupport {
+ private final SourceUnit unit;
+ private final List links;
+ private String packagePath;
+ private SimpleGroovyClassDoc currentClassDoc = null;
+ private Map classDocs = new HashMap<>();
+ private final Properties properties;
+ private static final String FS = "/";
+
+ public GroovydocVisitor(final SourceUnit unit, String packagePath, List links) {
+ this(unit, packagePath, links, new Properties());
+ }
+
+ public GroovydocVisitor(final SourceUnit unit, String packagePath, List links, Properties properties) {
+ this.unit = unit;
+ this.packagePath = packagePath;
+ this.links = links;
+ this.properties = properties;
+ }
+
+ @Override
+ protected SourceUnit getSourceUnit() {
+ return unit;
+ }
+
+ @Override
+ public void visitClass(ClassNode node) {
+ final Map aliases = new HashMap<>();
+ final List imports = new ArrayList<>();
+ for (ImportNode iNode : node.getModule().getImports()) {
+ String name = iNode.getClassName();
+ imports.add(name.replace('.', '/'));
+ if (iNode.getAlias() != null && !iNode.getAlias().isEmpty()) {
+ aliases.put(iNode.getAlias(), name.replace('.', '/'));
+ }
+ }
+ for (ImportNode iNode : node.getModule().getStarImports()) {
+ String name = iNode.getPackageName()+"*";
+ imports.add(name.replace('.', '/'));
+ }
+ String name = node.getNameWithoutPackage();
+
+ if (node instanceof InnerClassNode) {
+ name = name.replace('$', '.');
+ }
+ currentClassDoc = new SimpleGroovyClassDoc(withDefaultImports(imports), aliases, name, links);
+ if (node.isEnum()) {
+ currentClassDoc.setTokenType(org.codehaus.groovy.tools.groovydoc.SimpleGroovyDoc.ENUM_DEF);
+ } else if (recordNative(node)) { // node is record
+ currentClassDoc.setTokenType(org.apache.groovy.antlr.override.SimpleGroovyDoc.RECORD_DEF);
+ } else if (node.isAnnotationDefinition()) {
+ currentClassDoc.setTokenType(org.codehaus.groovy.tools.groovydoc.SimpleGroovyDoc.ANNOTATION_DEF);
+ } else if (isTrait(node)) {
+ currentClassDoc.setTokenType(org.codehaus.groovy.tools.groovydoc.SimpleGroovyDoc.TRAIT_DEF);
+ } else if (node.isInterface()) {
+ currentClassDoc.setTokenType(org.codehaus.groovy.tools.groovydoc.SimpleGroovyDoc.INTERFACE_DEF);
+ }
+ if (node.isScript()) {
+ if ("false".equals(properties.getProperty("processScripts", "true"))) return;
+ currentClassDoc.setScript(true);
+ }
+ for (ClassNode iface : node.getInterfaces()) {
+ currentClassDoc.addInterfaceName(makeType(iface));
+ }
+ currentClassDoc.setRawCommentText(getDocContent(node.getGroovydoc()));
+ currentClassDoc.setNameWithTypeArgs(name + genericTypesAsString(node.getGenericsTypes()));
+ if (!node.isInterface() && !node.isEnum() && node.getSuperClass() != null) {
+ String superName = makeType(node.getSuperClass());
+ currentClassDoc.setSuperClassName(superName);
+ String superSimpleName = node.getSuperClass().getNameWithoutPackage();
+ if (!classDocs.containsKey(superSimpleName)) {
+ SimpleGroovyClassDoc superDoc = new SimpleGroovyClassDoc(imports, superName);
+ superDoc.setFullPathName(superName);
+ }
+ }
+ processModifiers(currentClassDoc, node, node.getModifiers());
+ processAnnotations(currentClassDoc, node);
+ if (Modifier.isAbstract(node.getModifiers())) {
+ currentClassDoc.setAbstract(true);
+ }
+ currentClassDoc.setFullPathName(packagePath + FS + name);
+ currentClassDoc.setGroovy(true);
+ classDocs.put(currentClassDoc.getFullPathName(), currentClassDoc);
+ super.visitClass(node);
+ SimpleGroovyClassDoc parent = currentClassDoc;
+ if (currentClassDoc.isClass() && currentClassDoc.constructors().length == 0) {
+ // add default no-arg constructor, but not for interfaces, traits, enums, or annotation definitions
+ SimpleGroovyConstructorDoc cons = new SimpleGroovyConstructorDoc(name, currentClassDoc);
+ cons.setPublic(true);
+ currentClassDoc.add(cons);
+ }
+ Iterator innerClasses = node.getInnerClasses();
+ while (innerClasses.hasNext()) {
+ visitClass(innerClasses.next());
+ parent.addNested(currentClassDoc);
+ currentClassDoc = parent;
+ }
+ }
+
+ private List withDefaultImports(List imports) {
+ imports = imports != null ? imports : new ArrayList<>();
+ imports.add(packagePath + "/*"); // everything in this package
+ for (String pkg : ResolveVisitor.DEFAULT_IMPORTS) {
+ imports.add(pkg.replace('.', '/') + "*");
+ }
+ return imports;
+ }
+
+ private static final Pattern JAVADOC_COMMENT_PATTERN = Pattern.compile("(?s)/\\*\\*(.*?)\\*/");
+
+ private String getDocContent(Groovydoc groovydoc) {
+ if (groovydoc == null) return "";
+ String result = groovydoc.getContent();
+ if (result == null) result = "";
+ Matcher m = JAVADOC_COMMENT_PATTERN.matcher(result);
+ if (m.find()) {
+ result = m.group(1).trim();
+ }
+ return result;
+ }
+
+ private void processAnnotations(SimpleGroovyProgramElementDoc element, AnnotatedNode node) {
+ for (AnnotationNode an : node.getAnnotations()) {
+ String name = an.getClassNode().getName();
+ element.addAnnotationRef(new SimpleGroovyAnnotationRef(name, an.getText()));
+ }
+ }
+
+ private void processAnnotations(SimpleGroovyParameter param, AnnotatedNode node) {
+ for (AnnotationNode an : node.getAnnotations()) {
+ String name = an.getClassNode().getName();
+ param.addAnnotationRef(new SimpleGroovyAnnotationRef(name, an.getText()));
+ }
+ }
+
+ @Override
+ public void visitConstructor(ConstructorNode node) {
+ if (node.isSynthetic()) return;
+ SimpleGroovyConstructorDoc cons = new SimpleGroovyConstructorDoc(currentClassDoc.simpleTypeName(), currentClassDoc);
+ setConstructorOrMethodCommon(node, cons);
+ currentClassDoc.add(cons);
+ super.visitConstructor(node);
+ }
+
+ @Override
+ public void visitMethod(MethodNode node) {
+ if (currentClassDoc.isEnum() && "$INIT".equals(node.getName()))
+ return;
+ if (node.isSynthetic()) return;
+ if ("false".equals(properties.getProperty("includeMainForScripts", "true"))
+ && currentClassDoc.isScript() && "main".equals(node.getName()) && node.isStatic() && node.getParameters().length == 1)
+ return;
+
+ SimpleGroovyMethodDoc meth = new SimpleGroovyMethodDoc(node.getName(), currentClassDoc);
+ meth.setReturnType(new SimpleGroovyType(makeType(node.getReturnType())));
+ setConstructorOrMethodCommon(node, meth);
+ currentClassDoc.add(meth);
+ processPropertiesFromGetterSetter(meth);
+ super.visitMethod(node);
+ meth.setTypeParameters(genericTypesAsString(node.getGenericsTypes()));
+ }
+
+ private String genericTypesAsString(GenericsType[] genericsTypes) {
+ if (genericsTypes == null || genericsTypes.length == 0)
+ return "";
+ return "<" + ArrayGroovyMethods.join(genericsTypes, ", ") + ">";
+ }
+
+ private void processPropertiesFromGetterSetter(SimpleGroovyMethodDoc currentMethodDoc) {
+ String methodName = currentMethodDoc.name();
+ int len = methodName.length();
+ String prefix;
+ String propName;
+ if (len > 3 && methodName.startsWith("get")) {
+ prefix = "get";
+ propName = methodName.substring(3);
+ } else if (len > 3 && methodName.startsWith("set")) {
+ prefix = "set";
+ propName = methodName.substring(3);
+ } else if (len > 2 && methodName.startsWith("is")) {
+ prefix = "is";
+ propName = methodName.substring(2);
+ } else {
+ // Not a (get/set/is) method that contains a property name
+ return;
+ }
+
+ for (GroovyFieldDoc field : currentClassDoc.properties()) {
+ if (propName.equals(field.name())) return;
+ }
+ SimpleGroovyClassDoc classDoc = currentClassDoc;
+ // TODO: not sure why but groovy.ui.view.BasicContentPane#buildOutputArea classDoc is null
+ if (classDoc == null) {
+ return;
+ }
+ GroovyMethodDoc[] methods = classDoc.methods();
+
+ //find expected method name
+ String expectedMethodName;
+ if ("set".equals(prefix) && (currentMethodDoc.parameters().length >= 1 && !currentMethodDoc.parameters()[0].typeName().equals("boolean"))) {
+ expectedMethodName = "get" + propName;
+ } else if ("get".equals(prefix) && !currentMethodDoc.returnType().typeName().equals("boolean")) {
+ expectedMethodName = "set" + propName;
+ } else if ("is".equals(prefix)) {
+ expectedMethodName = "set" + propName;
+ } else {
+ expectedMethodName = "is" + propName;
+ }
+
+ for (GroovyMethodDoc methodDoc : methods) {
+ if (methodDoc.name().equals(expectedMethodName)) {
+
+ //extract the field name
+ String fieldName = propName.substring(0, 1).toLowerCase() + propName.substring(1);
+ SimpleGroovyFieldDoc currentFieldDoc = new SimpleGroovyFieldDoc(fieldName, classDoc);
+
+ //find the type of the field; if it's a setter, need to get the type of the params
+ if (expectedMethodName.startsWith("set") && methodDoc.parameters().length >= 1) {
+ String typeName = methodDoc.parameters()[0].typeName();
+ currentFieldDoc.setType(new SimpleGroovyType(typeName));
+ } else {
+ //if it's not setter, get the type info of the return type of the get* method
+ currentFieldDoc.setType(methodDoc.returnType());
+ }
+
+ if (methodDoc.isPublic() && currentMethodDoc.isPublic()) {
+ classDoc.addProperty(currentFieldDoc);
+ break;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void visitProperty(PropertyNode node) {
+ String name = node.getName();
+ SimpleGroovyFieldDoc fieldDoc = new SimpleGroovyFieldDoc(name, currentClassDoc);
+ fieldDoc.setType(new SimpleGroovyType(makeType(node.getType())));
+ int mods = node.getModifiers();
+ if (!hasAnno(node.getField(), "PackageScope")) {
+ processModifiers(fieldDoc, node.getField(), mods);
+ Groovydoc groovydoc = node.getGroovydoc();
+ fieldDoc.setRawCommentText(groovydoc == null ? "" : getDocContent(groovydoc));
+ currentClassDoc.addProperty(fieldDoc);
+ }
+ processAnnotations(fieldDoc, node.getField());
+ super.visitProperty(node);
+ }
+
+ private String makeType(ClassNode node) {
+ final ClassNode cn = node.isArray() ? node.getComponentType() : node;
+ return cn.getName().replace('.', '/').replace('$', '.')
+ + genericTypesAsString(cn.getGenericsTypes())
+ + (node.isArray() ? "[]" : "");
+ }
+
+ @Override
+ public void visitDeclarationExpression(DeclarationExpression expression) {
+ if (currentClassDoc.isScript()) {
+ if (hasAnno(expression, "Field")) {
+ VariableExpression varx = expression.getVariableExpression();
+ SimpleGroovyFieldDoc field = new SimpleGroovyFieldDoc(varx.getName(), currentClassDoc);
+ field.setType(new SimpleGroovyType(makeType(varx.getType())));
+ int mods = varx.getModifiers();
+ processModifiers(field, varx, mods);
+ boolean isProp = (mods & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED)) == 0;
+ if (isProp) {
+ currentClassDoc.addProperty(field);
+ } else {
+ currentClassDoc.add(field);
+ }
+ }
+ }
+ super.visitDeclarationExpression(expression);
+ }
+
+ private void processModifiers(SimpleGroovyProgramElementDoc element, AnnotatedNode node, int mods) {
+ if (Modifier.isStatic(mods)) {
+ element.setStatic(true);
+ }
+ if (hasAnno(node, "PackageScope")) {
+ element.setPackagePrivate(true);
+ } else {
+ if (Modifier.isPublic(mods)) {
+ element.setPublic(true);
+ } else if (Modifier.isProtected(mods)) {
+ element.setProtected(true);
+ } else if (Modifier.isPrivate(mods)) {
+ element.setPrivate(true);
+ } else {
+ element.setPackagePrivate(true);
+ }
+ }
+ if (Modifier.isFinal(mods)) {
+ element.setFinal(true);
+ }
+ }
+
+ @Override
+ public void visitField(FieldNode node) {
+ if (node.isSynthetic()) return;
+ String name = node.getName();
+ SimpleGroovyFieldDoc fieldDoc = new SimpleGroovyFieldDoc(name, currentClassDoc);
+ fieldDoc.setType(new SimpleGroovyType(makeType(node.getType())));
+ processModifiers(fieldDoc, node, node.getModifiers());
+ processAnnotations(fieldDoc, node);
+ fieldDoc.setRawCommentText(getDocContent(node.getGroovydoc()));
+ if (node.isEnum()) {
+ currentClassDoc.addEnumConstant(fieldDoc);
+ } else {
+ currentClassDoc.add(fieldDoc);
+ }
+ super.visitField(node);
+ }
+
+ private void setConstructorOrMethodCommon(MethodNode node, SimpleGroovyExecutableMemberDoc methOrCons) {
+ methOrCons.setRawCommentText(getDocContent(node.getGroovydoc()));
+ processModifiers(methOrCons, node, node.getModifiers());
+ processAnnotations(methOrCons, node);
+ if (node.isAbstract()) {
+ methOrCons.setAbstract(true);
+ }
+ for (Parameter param : node.getParameters()) {
+ SimpleGroovyParameter p = new SimpleGroovyParameter(param.getName());
+ p.setType(new SimpleGroovyType(makeType(param.getType())));
+ processAnnotations(p, param);
+ methOrCons.add(p);
+ }
+ }
+
+ private boolean hasAnno(AnnotatedNode node, String annoSuffix) {
+ for (AnnotationNode annotationNode : node.getAnnotations()) {
+ // check name to cover non/resolved cases
+ if (annotationNode.getClassNode().getName().endsWith(annoSuffix)) return true;
+ }
+ return false;
+ }
+
+ public Map getGroovyClassDocs() {
+ return classDocs;
+ }
+}
diff --git a/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/Opcodes.java b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/Opcodes.java
new file mode 100644
index 00000000000..6528e723451
--- /dev/null
+++ b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/Opcodes.java
@@ -0,0 +1,18 @@
+/*
+ * Copyright ish group pty ltd 2024.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+package org.apache.groovy.antlr.override;
+
+// TODO: Remove after update Groovy v4, this part of code is taken from this version
+
+public class Opcodes {
+
+ public static final int ACC_PUBLIC = 0x0001; // class, field, method;
+ public static final int ACC_PRIVATE = 0x0002; // class, field, method
+ public static final int ACC_PROTECTED = 0x0004; // class, field, method
+}
diff --git a/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/README.md b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/README.md
new file mode 100644
index 00000000000..ba16b94509c
--- /dev/null
+++ b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/README.md
@@ -0,0 +1,21 @@
+GroovyDocVisitor is a special class for Parsing Groovy documents that was introduced in version > 4.
+
+Since this class is not yet in the version used, it was copied into the project and also included manually.
+
+After updating Groovy > 4, all contents of the package
+
+`buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override`
+
+can be removed and standard Document Parsing mechanisms can be used.
+
+// TODO after Groovy update
+
+Change class [DslGroovyRootDocBuilder.groovy](..%2F..%2F..%2F..%2F..%2F..%2Fgroovy%2Fau%2Fcom%2Fish%2Fdocs%2FDslGroovyRootDocBuilder.groovy)
+
+````
+private Map parseGroovy(String src, String packagePath, String file) {
+ ...
+}
+````
+
+Acourding to https://issues.apache.org/jira/browse/GROOVY-11269
\ No newline at end of file
diff --git a/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/RecordTypeASTTransformation.java b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/RecordTypeASTTransformation.java
new file mode 100644
index 00000000000..f973dca8aa7
--- /dev/null
+++ b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/RecordTypeASTTransformation.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright ish group pty ltd 2024.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.groovy.antlr.override;
+
+import org.apache.groovy.lang.annotation.Incubating;
+import org.codehaus.groovy.ast.ClassNode;
+import org.codehaus.groovy.control.CompilePhase;
+import org.codehaus.groovy.transform.GroovyASTTransformation;
+
+/**
+ * Handles generation of code for the @RecordType annotation.
+ */
+
+// TODO: Remove after update Groovy v4, this part of code is taken from this version
+
+@GroovyASTTransformation(phase = CompilePhase.SEMANTIC_ANALYSIS)
+public class RecordTypeASTTransformation {
+
+ private static final String RECORD_CLASS_NAME = "java.lang.Record";
+
+ /**
+ * Indicates that the given classnode is a native JVM record class.
+ * For classes being compiled, this will only be valid after the
+ * {@code RecordTypeASTTransformation} transform has been invoked.
+ */
+ @Incubating
+ public static boolean recordNative(final ClassNode node) {
+ return node.getUnresolvedSuperClass() != null && RECORD_CLASS_NAME.equals(node.getUnresolvedSuperClass().getName());
+ }
+
+}
diff --git a/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/SimpleGroovyDoc.java b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/SimpleGroovyDoc.java
new file mode 100644
index 00000000000..b792999d1e6
--- /dev/null
+++ b/buildSrc/apidoc/src/main/java/org/apache/groovy/antlr/override/SimpleGroovyDoc.java
@@ -0,0 +1,17 @@
+/*
+ * Copyright ish group pty ltd 2024.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+package org.apache.groovy.antlr.override;
+
+// TODO: Remove after update Groovy v4, this part of code is taken from this version
+
+public class SimpleGroovyDoc {
+
+ public static final int RECORD_DEF = 16;
+
+}
diff --git a/buildSrc/aql/build.gradle b/buildSrc/aql/build.gradle
index 94b5484ec88..10e701fc5b6 100644
--- a/buildSrc/aql/build.gradle
+++ b/buildSrc/aql/build.gradle
@@ -10,11 +10,16 @@
*/
plugins {
+ id 'java'
id 'java-gradle-plugin'
id 'groovy'
id 'antlr'
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+}
+
repositories {
mavenCentral()
}
@@ -26,5 +31,3 @@ ext {
dependencies {
antlr "org.antlr:antlr4:$antlrVersion"
}
-
-sourceCompatibility = JavaVersion.VERSION_11
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 33989d16b65..f6317caf140 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -9,6 +9,14 @@
* See the GNU Affero General Public License for more details.
*/
+plugins {
+ id 'java'
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+}
+
repositories {
mavenCentral()
}
@@ -18,5 +26,3 @@ subprojects {
runtimeOnly project(path)
}
}
-
-sourceCompatibility = JavaVersion.VERSION_11
diff --git a/buildSrc/swagger/build.gradle b/buildSrc/swagger/build.gradle
index e40119a544a..cd471de1e9b 100644
--- a/buildSrc/swagger/build.gradle
+++ b/buildSrc/swagger/build.gradle
@@ -10,10 +10,15 @@
*/
plugins {
+ id 'java'
id 'java-gradle-plugin'
id 'groovy'
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+}
+
repositories {
mavenCentral()
}
@@ -21,5 +26,3 @@ repositories {
dependencies {
implementation 'io.swagger:swagger-codegen:2.4.0'
}
-
-sourceCompatibility = JavaVersion.VERSION_11
diff --git a/buildSrc/testDataset/build.gradle b/buildSrc/testDataset/build.gradle
index 1c594e30e5a..758c79b565e 100644
--- a/buildSrc/testDataset/build.gradle
+++ b/buildSrc/testDataset/build.gradle
@@ -1,9 +1,25 @@
+/*
+ * Copyright ish group pty ltd 2020.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the
+ * GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU Affero General Public License for more details.
+ */
+
plugins {
id 'java-gradle-plugin'
id 'groovy'
id 'java'
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+}
+
repositories {
mavenCentral()
}
@@ -12,7 +28,4 @@ dependencies {
implementation 'org.dbunit:dbunit:2.6.0'
implementation "org.mariadb.jdbc:mariadb-java-client:2.7.4"
implementation 'commons-io:commons-io:2.11.0'
-}
-
-sourceCompatibility = 11
-targetCompatibility = 11
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/client-html/build.gradle b/client-html/build.gradle
index 5b082dbe480..3e68a61b769 100644
--- a/client-html/build.gradle
+++ b/client-html/build.gradle
@@ -12,11 +12,14 @@ plugins {
apply from: "$rootDir/nodeSetup.gradle"
+sourceSets {
+ main.resources.srcDirs 'src/js', 'build/generated-sources/swagger-js', 'build/generated-sources/aql-model', 'build/generated-sources/aql-parser'
+}
task webpack(type: NpmTask, dependsOn: 'queryGrammar') {
inputs.files("webpack.config.js", "tsconfig.json", "package-lock.json", "package.json", "jest.config.js")
inputs.dir("src")
- outputs.dir("$buildDir/assets")
+ outputs.dir("${layout.buildDirectory.get()}/assets")
inputs.property('version', version)
npmCommand = ['run']
args = ['build:prod', "BUILD_NUMBER=${version ?: '99-SNAPSHOT'}"]
@@ -35,7 +38,7 @@ task npm_outdated(type: NpmTask) {
task queryGrammar(type: NpmTask, dependsOn: [':server-api:swagger', 'npmInstall', 'generateQueryLanguageModel']) {
inputs.dir("$rootDir/buildSrc/aql/src/main/resources/")
- outputs.dir("$buildDir/generated-sources/aql-parser")
+ outputs.dir("${layout.buildDirectory.get()}/generated-sources/aql-parser")
npmCommand = ['run']
args = ['antlr4ts']
}
@@ -45,21 +48,24 @@ task jest(type: NpmTask, dependsOn: 'queryGrammar') {
args = ['test']
}
-if("true" != System.getProperty('ish.devMode'))
- test.dependsOn(jest)
-
-sourceSets {
- main.resources.srcDirs 'src/js', 'build/generated-sources/swagger-js', 'build/generated-sources/aql-model', 'build/generated-sources/aql-parser'
-}
-
-build.dependsOn(webpack)
-
generateQueryLanguageModel {
source = fileTree("$rootDir/types/src/main/groovy")
.plus(fileTree("$rootDir/types/src/main/java"))
.plus(fileTree("$rootDir/server/src/main/java"))
- destinationDir = file("$buildDir/generated-sources/aql-model")
+ destinationDir = file("${layout.buildDirectory.get()}/generated-sources/aql-model")
+}
+
+if("true" != System.getProperty('ish.devMode')) {
+ tasks.named('test') {
+ dependsOn jest
+ }
}
-processResources.dependsOn(':server-api:swagger', "generateQueryLanguageModel")
+tasks.named('build') {
+ dependsOn webpack
+}
+
+tasks.named('processResources') {
+ dependsOn(':server-api:swagger', "generateQueryLanguageModel", "queryGrammar")
+}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2a563242c11..d6e308a6378 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/nodeSetup.gradle b/nodeSetup.gradle
index f9fe775b862..11375b06218 100644
--- a/nodeSetup.gradle
+++ b/nodeSetup.gradle
@@ -1,9 +1,20 @@
+/*
+ * Copyright ish group pty ltd 2020.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the
+ * GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU Affero General Public License for more details.
+ */
+
apply plugin: 'com.github.node-gradle.node'
node {
version = '20.16.0'
download = System.properties['os.name'] != "FreeBSD" // FreeBSD has no binaries this plugin can install
- workDir = file("${project.buildDir}/nodejs")
+ workDir = file("${layout.buildDirectory.get()}/nodejs")
npmInstallCommand = System.getenv("CI") ? 'ci' : 'install'
}
diff --git a/selenium-test/build.gradle b/selenium-test/build.gradle
index ae62d45e62f..af9e32dc158 100644
--- a/selenium-test/build.gradle
+++ b/selenium-test/build.gradle
@@ -1,3 +1,14 @@
+/*
+ * Copyright ish group pty ltd 2020.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the
+ * GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU Affero General Public License for more details.
+ */
+
import test.PrepareTestDatabase
buildscript {
@@ -10,13 +21,15 @@ plugins {
id 'java'
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+}
+
repositories {
mavenCentral()
}
-sourceCompatibility = 11
-targetCompatibility = 11
-
dependencies {
api(project(':server-api')) {
@@ -49,12 +62,12 @@ task copyConfig(type: Copy) {
include 'logSetup.xml'
}
into "$rootDir/server/build"
- def dbUrl = project.hasProperty('dbUrl') ? project.getProperty('dbUrl') : 'jdbc:mariadb://localhost/angel_selenium_test?user=root&password=11111111'
+ def dbUrl = project.hasProperty('dbUrl') ? project.getProperty('dbUrl') : 'jdbc:mariadb://localhost/angel_selenium_test'
expand(dbUrl: dbUrl)
}
task prepareTestDatabase(type: PrepareTestDatabase) {
- databaseUrl = project.hasProperty('dbUrl') ? project.getProperty('dbUrl') : 'jdbc:mariadb://localhost/angel_selenium_test?user=root&password=11111111'
+ databaseUrl = project.hasProperty('dbUrl') ? project.getProperty('dbUrl') : 'jdbc:mariadb://localhost/angel_selenium_test'
dataSetDirectory = "$rootDir/selenium-test/src/test/resources/ish.oncourse.selenium.test"
}
@@ -66,11 +79,14 @@ test {
jvmArgs = ['-Xmx3000m', '-Xms3000m']
useJUnitPlatform()
- tasks.getByName('prepareTestDatabase')
+ tasks.named('prepareTestDatabase').get()
.mustRunAfter(':server:startDaemon')
.mustRunAfter('copyConfig')
dependsOn "copyConfig"
dependsOn ":server:startDaemon"
dependsOn "prepareTestDatabase"
+
+ // ensure tests are always run
+ outputs.upToDateWhen { false }
}
\ No newline at end of file
diff --git a/server-api/build.gradle b/server-api/build.gradle
index 9d621e142d9..c1c67e24304 100644
--- a/server-api/build.gradle
+++ b/server-api/build.gradle
@@ -9,11 +9,23 @@
* See the GNU Affero General Public License for more details.
*/
-
plugins {
+ id 'java'
id 'java-library'
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+}
+
+sourceSets {
+ main {
+ groovy {
+ srcDirs += "${project.projectDir}/build/generated-sources/src/main/groovy"
+ }
+ }
+}
+
configurations {
swagger
}
@@ -23,7 +35,10 @@ sourceSets.main.groovy.srcDir 'src/main/java'
sourceSets.test.java.srcDirs = []
sourceSets.test.groovy.srcDir 'src/test/java'
-sourceCompatibility = 11
+tasks.withType(GroovyCompile).configureEach {
+ options.incremental = true
+}
+compileGroovy.groovyOptions.configurationScript = file("${rootDir}/gradle/groovyConfig.groovy")
dependencies {
implementation "org.apache.cayenne:cayenne-server:$cayenneVersion"
@@ -43,23 +58,14 @@ dependencies {
api "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jacksonVersion"
api "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$jacksonVersion"
- api "io.bootique.jetty:bootique-jetty:$bootiqueVersion"
-}
-
-sourceSets {
- main {
- groovy {
- srcDirs += "${project.projectDir}/build/generated-sources/src/main/groovy"
- }
+ implementation ("io.bootique.jetty:bootique-jetty:$bootiqueVersion") {
+ exclude group: 'org.eclipse.jetty', module: 'jetty-servlet'
+ exclude group: 'org.eclipse.jetty', module: 'jetty-server'
}
+ implementation "org.eclipse.jetty:jetty-servlets:$jettyVersion"
+ implementation "org.eclipse.jetty.http2:http2-server:$jettyVersion"
}
-tasks.withType(GroovyCompile).configureEach {
- options.incremental = true
-}
-compileGroovy.groovyOptions.configurationScript = file("${rootDir}/gradle/groovyConfig.groovy")
-
-
task swagger (type: Swagger) {
schema = file("${project.projectDir}/src/main/resources/server-api.yaml")
sourceFolder = file("${project.projectDir}/src/main/groovy")
@@ -73,7 +79,7 @@ task swagger (type: Swagger) {
// Some documentation scripts can only work on a single merged swagger file
task apiDocs_mergeSwagger(type: SwaggerMerge) {
schema = file("${rootDir}/server-api/src/main/resources/server-api.yaml")
- outputFile = file("${buildDir}/swagger-merged/swagger.yaml")
+ outputFile = file("${layout.buildDirectory.get()}/swagger-merged/swagger.yaml")
}
compileGroovy {
@@ -87,9 +93,9 @@ clean.doFirst {
publishing {
publications {
- jar(MavenPublication) {
+ create("jar", MavenPublication) {
from components.java
}
}
-}
+}
\ No newline at end of file
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/ServerApiModule.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/ServerApiModule.groovy
index f2fff3be056..de4741dcf71 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/ServerApiModule.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/ServerApiModule.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api
-import com.google.inject.Binder
+import io.bootique.di.Binder
import io.bootique.ConfigModule
import ish.oncourse.server.api.cxf.CXFModule
import ish.oncourse.server.api.v1.service.*
@@ -21,108 +21,108 @@ class ServerApiModule extends ConfigModule {
@Override
void configure(Binder binder) {
- CXFModule.contributeResources(binder).addBinding().to(AccessApi)
- CXFModule.contributeResources(binder).addBinding().to(AccountApi)
- CXFModule.contributeResources(binder).addBinding().to(ApplicationApi)
- CXFModule.contributeResources(binder).addBinding().to(ArticleProductApi)
- CXFModule.contributeResources(binder).addBinding().to(AssessmentApi)
- CXFModule.contributeResources(binder).addBinding().to(AssessmentSubmissionApi)
- CXFModule.contributeResources(binder).addBinding().to(AuditApi)
- CXFModule.contributeResources(binder).addBinding().to(AuthenticationApi)
- CXFModule.contributeResources(binder).addBinding().to(AvetmissExportApi)
-
- CXFModule.contributeResources(binder).addBinding().to(BankingApi)
-
- CXFModule.contributeResources(binder).addBinding().to(CertificateApi)
- CXFModule.contributeResources(binder).addBinding().to(ConcessionApi)
- CXFModule.contributeResources(binder).addBinding().to(ContactApi)
- CXFModule.contributeResources(binder).addBinding().to(ContactMergeApi)
- CXFModule.contributeResources(binder).addBinding().to(ContactInsightApi)
- CXFModule.contributeResources(binder).addBinding().to(ControlApi)
- CXFModule.contributeResources(binder).addBinding().to(CorporatePassApi)
- CXFModule.contributeResources(binder).addBinding().to(CourseApi)
- CXFModule.contributeResources(binder).addBinding().to(CourseClassApi)
- CXFModule.contributeResources(binder).addBinding().to(FacultyApi)
- CXFModule.contributeResources(binder).addBinding().to(ExportApi)
- CXFModule.contributeResources(binder).addBinding().to(CustomFieldApi)
-
- CXFModule.contributeResources(binder).addBinding().to(DashboardApi)
- CXFModule.contributeResources(binder).addBinding().to(DataCollectionApi)
- CXFModule.contributeResources(binder).addBinding().to(DiscountApi)
- CXFModule.contributeResources(binder).addBinding().to(DocumentApi)
-
- CXFModule.contributeResources(binder).addBinding().to(EmailTemplateApi)
- CXFModule.contributeResources(binder).addBinding().to(EnrolmentApi)
- CXFModule.contributeResources(binder).addBinding().to(EntityApi)
- CXFModule.contributeResources(binder).addBinding().to(ExportTemplateApi)
-
- CXFModule.contributeResources(binder).addBinding().to(FilterApi)
- CXFModule.contributeResources(binder).addBinding().to(FundingContractApi)
- CXFModule.contributeResources(binder).addBinding().to(FundingUploadApi)
-
- CXFModule.contributeResources(binder).addBinding().to(GradingApi)
-
- CXFModule.contributeResources(binder).addBinding().to(HolidayApi)
-
- CXFModule.contributeResources(binder).addBinding().to(IntegrationApi)
- CXFModule.contributeResources(binder).addBinding().to(InvoiceApi)
- CXFModule.contributeResources(binder).addBinding().to(ImportApi)
-
- CXFModule.contributeResources(binder).addBinding().to(LeadApi)
- CXFModule.contributeResources(binder).addBinding().to(MessageApi)
- CXFModule.contributeResources(binder).addBinding().to(MembershipProductApi)
- CXFModule.contributeResources(binder).addBinding().to(ModuleApi)
-
- CXFModule.contributeResources(binder).addBinding().to(OutcomeApi)
- CXFModule.contributeResources(binder).addBinding().to(ReportOverlayApi)
-
- CXFModule.contributeResources(binder).addBinding().to(PaymentApi)
- CXFModule.contributeResources(binder).addBinding().to(PaymentInApi)
- CXFModule.contributeResources(binder).addBinding().to(PaymentOutApi)
- CXFModule.contributeResources(binder).addBinding().to(PayrollApi)
- CXFModule.contributeResources(binder).addBinding().to(PayslipApi)
- CXFModule.contributeResources(binder).addBinding().to(PdfApi)
- CXFModule.contributeResources(binder).addBinding().to(PdfTemplateApi)
- CXFModule.contributeResources(binder).addBinding().to(PreferenceApi)
- CXFModule.contributeResources(binder).addBinding().to(PriorLearningApi)
- CXFModule.contributeResources(binder).addBinding().to(ProductItemApi)
-
- CXFModule.contributeResources(binder).addBinding().to(QualificationApi)
-
- CXFModule.contributeResources(binder).addBinding().to(RoomApi)
- CXFModule.contributeResources(binder).addBinding().to(RoomValidationApi)
-
- CXFModule.contributeResources(binder).addBinding().to(ScriptApi)
- CXFModule.contributeResources(binder).addBinding().to(SiteApi)
- CXFModule.contributeResources(binder).addBinding().to(SurveyApi)
-
- CXFModule.contributeResources(binder).addBinding().to(TagApi)
- CXFModule.contributeResources(binder).addBinding().to(TaxApi)
- CXFModule.contributeResources(binder).addBinding().to(TransactionApi)
- CXFModule.contributeResources(binder).addBinding().to(TutorRoleApi)
-
- CXFModule.contributeResources(binder).addBinding().to(UserApi)
- CXFModule.contributeResources(binder).addBinding().to(UserPreferenceApi)
- CXFModule.contributeResources(binder).addBinding().to(UserRoleApi)
-
- CXFModule.contributeResources(binder).addBinding().to(VoucherProductApi)
-
- CXFModule.contributeResources(binder).addBinding().to(WaitingListApi)
-
- CXFModule.contributeResources(binder).addBinding().to(TimetableApi)
- CXFModule.contributeResources(binder).addBinding().to(FinalisePeriodApi)
- CXFModule.contributeResources(binder).addBinding().to(NoteApi)
- CXFModule.contributeResources(binder).addBinding().to(CourseClassTutorApi)
- CXFModule.contributeResources(binder).addBinding().to(ClassCostApi)
- CXFModule.contributeResources(binder).addBinding().to(AttendanceApi)
- CXFModule.contributeResources(binder).addBinding().to(AssessmentClassApi)
- CXFModule.contributeResources(binder).addBinding().to(SessionApi)
- CXFModule.contributeResources(binder).addBinding().to(CheckoutApi)
- CXFModule.contributeResources(binder).addBinding().to(EntityRelationTypeApi)
- CXFModule.contributeResources(binder).addBinding().to(TokenApi)
- CXFModule.contributeResources(binder).addBinding().to(LogsApi)
+ CXFModule.contributeResources(binder).add(AccessApi)
+ CXFModule.contributeResources(binder).add(AccountApi)
+ CXFModule.contributeResources(binder).add(ApplicationApi)
+ CXFModule.contributeResources(binder).add(ArticleProductApi)
+ CXFModule.contributeResources(binder).add(AssessmentApi)
+ CXFModule.contributeResources(binder).add(AssessmentSubmissionApi)
+ CXFModule.contributeResources(binder).add(AuditApi)
+ CXFModule.contributeResources(binder).add(AuthenticationApi)
+ CXFModule.contributeResources(binder).add(AvetmissExportApi)
+
+ CXFModule.contributeResources(binder).add(BankingApi)
+
+ CXFModule.contributeResources(binder).add(CertificateApi)
+ CXFModule.contributeResources(binder).add(ConcessionApi)
+ CXFModule.contributeResources(binder).add(ContactApi)
+ CXFModule.contributeResources(binder).add(ContactMergeApi)
+ CXFModule.contributeResources(binder).add(ContactInsightApi)
+ CXFModule.contributeResources(binder).add(ControlApi)
+ CXFModule.contributeResources(binder).add(CorporatePassApi)
+ CXFModule.contributeResources(binder).add(CourseApi)
+ CXFModule.contributeResources(binder).add(CourseClassApi)
+ CXFModule.contributeResources(binder).add(FacultyApi)
+ CXFModule.contributeResources(binder).add(ExportApi)
+ CXFModule.contributeResources(binder).add(CustomFieldApi)
+
+ CXFModule.contributeResources(binder).add(DashboardApi)
+ CXFModule.contributeResources(binder).add(DataCollectionApi)
+ CXFModule.contributeResources(binder).add(DiscountApi)
+ CXFModule.contributeResources(binder).add(DocumentApi)
+
+ CXFModule.contributeResources(binder).add(EmailTemplateApi)
+ CXFModule.contributeResources(binder).add(EnrolmentApi)
+ CXFModule.contributeResources(binder).add(EntityApi)
+ CXFModule.contributeResources(binder).add(ExportTemplateApi)
+
+ CXFModule.contributeResources(binder).add(FilterApi)
+ CXFModule.contributeResources(binder).add(FundingContractApi)
+ CXFModule.contributeResources(binder).add(FundingUploadApi)
+
+ CXFModule.contributeResources(binder).add(GradingApi)
+
+ CXFModule.contributeResources(binder).add(HolidayApi)
+
+ CXFModule.contributeResources(binder).add(IntegrationApi)
+ CXFModule.contributeResources(binder).add(InvoiceApi)
+ CXFModule.contributeResources(binder).add(ImportApi)
+
+ CXFModule.contributeResources(binder).add(LeadApi)
+ CXFModule.contributeResources(binder).add(MessageApi)
+ CXFModule.contributeResources(binder).add(MembershipProductApi)
+ CXFModule.contributeResources(binder).add(ModuleApi)
+
+ CXFModule.contributeResources(binder).add(OutcomeApi)
+ CXFModule.contributeResources(binder).add(ReportOverlayApi)
+
+ CXFModule.contributeResources(binder).add(PaymentApi)
+ CXFModule.contributeResources(binder).add(PaymentInApi)
+ CXFModule.contributeResources(binder).add(PaymentOutApi)
+ CXFModule.contributeResources(binder).add(PayrollApi)
+ CXFModule.contributeResources(binder).add(PayslipApi)
+ CXFModule.contributeResources(binder).add(PdfApi)
+ CXFModule.contributeResources(binder).add(PdfTemplateApi)
+ CXFModule.contributeResources(binder).add(PreferenceApi)
+ CXFModule.contributeResources(binder).add(PriorLearningApi)
+ CXFModule.contributeResources(binder).add(ProductItemApi)
+
+ CXFModule.contributeResources(binder).add(QualificationApi)
+
+ CXFModule.contributeResources(binder).add(RoomApi)
+ CXFModule.contributeResources(binder).add(RoomValidationApi)
+
+ CXFModule.contributeResources(binder).add(ScriptApi)
+ CXFModule.contributeResources(binder).add(SiteApi)
+ CXFModule.contributeResources(binder).add(SurveyApi)
+
+ CXFModule.contributeResources(binder).add(TagApi)
+ CXFModule.contributeResources(binder).add(TaxApi)
+ CXFModule.contributeResources(binder).add(TransactionApi)
+ CXFModule.contributeResources(binder).add(TutorRoleApi)
+
+ CXFModule.contributeResources(binder).add(UserApi)
+ CXFModule.contributeResources(binder).add(UserPreferenceApi)
+ CXFModule.contributeResources(binder).add(UserRoleApi)
+
+ CXFModule.contributeResources(binder).add(VoucherProductApi)
+
+ CXFModule.contributeResources(binder).add(WaitingListApi)
+
+ CXFModule.contributeResources(binder).add(TimetableApi)
+ CXFModule.contributeResources(binder).add(FinalisePeriodApi)
+ CXFModule.contributeResources(binder).add(NoteApi)
+ CXFModule.contributeResources(binder).add(CourseClassTutorApi)
+ CXFModule.contributeResources(binder).add(ClassCostApi)
+ CXFModule.contributeResources(binder).add(AttendanceApi)
+ CXFModule.contributeResources(binder).add(AssessmentClassApi)
+ CXFModule.contributeResources(binder).add(SessionApi)
+ CXFModule.contributeResources(binder).add(CheckoutApi)
+ CXFModule.contributeResources(binder).add(EntityRelationTypeApi)
+ CXFModule.contributeResources(binder).add(TokenApi)
+ CXFModule.contributeResources(binder).add(LogsApi)
//------
- CXFModule.contributeFeatures(binder).addBinding().to(JAXRSBeanValidationFeature)
+ CXFModule.contributeFeatures(binder).add(JAXRSBeanValidationFeature)
}
}
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFApplication.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFApplication.groovy
index cd92ab77454..94e284523fc 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFApplication.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFApplication.groovy
@@ -13,20 +13,15 @@ package ish.oncourse.server.api.cxf
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
-import org.apache.cxf.jaxrs.provider.JavaTimeTypesParamConverterProvider
import javax.ws.rs.core.Application
-/**
- * Created by akoira on 2/5/17.
- */
class CXFApplication extends Application{
private Set singletons = new HashSet<>()
private Set classes = new HashSet<>()
private Map props = new HashMap<>()
-
CXFApplication(Set resources, Set features, Map props) {
singletons.addAll(resources)
singletons.addAll(features)
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFDefaultService.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFDefaultService.groovy
index 0ca1fa14420..cc209a5efda 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFDefaultService.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFDefaultService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.cxf
-import com.google.inject.Inject
+import javax.inject.Inject
import javax.ws.rs.GET
import javax.ws.rs.Path
@@ -19,6 +19,7 @@ import javax.ws.rs.Produces
import javax.ws.rs.core.MediaType
class CXFDefaultService {
+
private CXFModuleConfig config
@Inject
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFFeature.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFFeature.groovy
index b49c21f49fa..b65280a15ec 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFFeature.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFFeature.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.cxf
-import com.google.inject.BindingAnnotation
+import javax.inject.Qualifier
import java.lang.annotation.ElementType
import java.lang.annotation.Retention
@@ -20,7 +20,7 @@ import java.lang.annotation.Target
@Target([ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD])
@Retention(RetentionPolicy.RUNTIME)
-@BindingAnnotation
+@Qualifier
@interface CXFFeature {
}
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModule.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModule.groovy
index 67508fb4558..78e18e60dec 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModule.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModule.groovy
@@ -11,13 +11,13 @@
package ish.oncourse.server.api.cxf
-import com.google.inject.Binder
-import com.google.inject.Key
-import com.google.inject.Provides
-import com.google.inject.Singleton
-import com.google.inject.multibindings.Multibinder
import io.bootique.ConfigModule
import io.bootique.config.ConfigurationFactory
+import io.bootique.di.Binder
+import io.bootique.di.Key
+import io.bootique.di.Provides
+import io.bootique.di.SetBuilder
+import javax.inject.Singleton
import io.bootique.jetty.JettyModule
import io.bootique.jetty.MappedServlet
import org.apache.cxf.interceptor.LoggingInInterceptor
@@ -27,18 +27,18 @@ import javax.ws.rs.core.Application
class CXFModule extends ConfigModule {
- static Multibinder contributeResources(Binder binder) {
- return Multibinder.newSetBinder(binder, Key.get(Object.class, CXFResource))
+ static SetBuilder contributeResources(Binder binder) {
+ return binder.bindSet(Object.class, CXFResource.class)
}
- static Multibinder contributeFeatures(Binder binder) {
- return Multibinder.newSetBinder(binder, Key.get(Object.class, CXFFeature))
+ static SetBuilder contributeFeatures(Binder binder) {
+ return binder.bindSet(Object.class, CXFFeature.class)
}
@Override
void configure(Binder binder) {
JettyModule.extend(binder).addMappedServlet(Key.get(MappedServlet, CXFServlet))
- contributeResources(binder).addBinding().to(CXFDefaultService)
+ contributeResources(binder).add(CXFDefaultService)
}
@CXFServlet
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleConfig.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleConfig.groovy
index 7a122ee4f45..310e02a5f83 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleConfig.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleConfig.groovy
@@ -16,10 +16,10 @@ import io.bootique.annotation.BQConfigProperty
@BQConfig("Configures the servlet that is an entry point to CXF REST API engine.")
class CXFModuleConfig {
+
private String urlPattern
private String welcomeText
-
@BQConfigProperty
void setUrlPattern(String urlPattern) {
this.urlPattern = urlPattern
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleProvider.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleProvider.groovy
index 8fbed6fd14a..2a6d68026ff 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleProvider.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFModuleProvider.groovy
@@ -11,15 +11,13 @@
package ish.oncourse.server.api.cxf
-import com.google.inject.Module
+import io.bootique.di.BQModule
import io.bootique.BQModuleProvider
-/**
- * Created by akoira on 2/5/17.
- */
class CXFModuleProvider implements BQModuleProvider {
+
@Override
- Module module() {
+ BQModule module() {
return new CXFModule()
}
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFResource.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFResource.groovy
index ec8203006bd..49027d56e16 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFResource.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFResource.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.cxf
-import com.google.inject.BindingAnnotation
+import javax.inject.Qualifier
import java.lang.annotation.ElementType
import java.lang.annotation.Retention
@@ -20,6 +20,6 @@ import java.lang.annotation.Target
@Target([ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD])
@Retention(RetentionPolicy.RUNTIME)
-@BindingAnnotation
+@Qualifier
@interface CXFResource {
}
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFServlet.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFServlet.groovy
index 154af5da2fe..be52b3b9008 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFServlet.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/CXFServlet.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.cxf
-import com.google.inject.BindingAnnotation
+import javax.inject.Qualifier
import java.lang.annotation.ElementType
import java.lang.annotation.Retention
@@ -20,6 +20,6 @@ import java.lang.annotation.Target
@Target([ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD])
@Retention(RetentionPolicy.RUNTIME)
-@BindingAnnotation
+@Qualifier
@interface CXFServlet {
}
diff --git a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/ObjectMapperContextResolver.groovy b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/ObjectMapperContextResolver.groovy
index 2294ed82ab5..95a0c07f533 100644
--- a/server-api/src/main/groovy/ish/oncourse/server/api/cxf/ObjectMapperContextResolver.groovy
+++ b/server-api/src/main/groovy/ish/oncourse/server/api/cxf/ObjectMapperContextResolver.groovy
@@ -8,20 +8,14 @@
package ish.oncourse.server.api.cxf
-import com.fasterxml.jackson.annotation.JsonInclude
-import com.fasterxml.jackson.databind.MapperFeature
import com.fasterxml.jackson.databind.ObjectMapper
-import com.fasterxml.jackson.databind.SerializationConfig
import com.fasterxml.jackson.databind.SerializationFeature
-import com.fasterxml.jackson.databind.annotation.JsonSerialize
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module
-import com.fasterxml.jackson.datatype.jsr310.JSR310Module
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Provider;
+import javax.ws.rs.Produces
+import javax.ws.rs.core.MediaType
+import javax.ws.rs.ext.ContextResolver
+import javax.ws.rs.ext.Provider
/**
*
@@ -30,7 +24,6 @@ import javax.ws.rs.ext.Provider;
* The reason of ObjectMapperContextResolver class - register JavaTimeModule only
* For usage see ish.oncourse.server.api.v1.service.impl.PreferenceApiImpl.getLockedDate()
*/
-
@Provider
@Produces(MediaType.APPLICATION_JSON)
class ObjectMapperContextResolver implements ContextResolver {
diff --git a/server-api/src/main/java/ish/oncourse/types/AuditAction.java b/server-api/src/main/java/ish/oncourse/types/AuditAction.java
index dcdbe9d8edf..6b5b778a45a 100644
--- a/server-api/src/main/java/ish/oncourse/types/AuditAction.java
+++ b/server-api/src/main/java/ish/oncourse/types/AuditAction.java
@@ -62,9 +62,8 @@ public enum AuditAction implements DisplayableExtendedEnumeration {
@API
API_TOKEN("API_TOKEN", "Api token used");
-
- private String displayValue;
- private String value;
+ private final String displayValue;
+ private final String value;
AuditAction(String value, String displayValue) {
this.value = value;
diff --git a/server-api/src/main/java/ish/oncourse/types/FundingStatus.java b/server-api/src/main/java/ish/oncourse/types/FundingStatus.java
index 44578717ccc..2c1ca838732 100644
--- a/server-api/src/main/java/ish/oncourse/types/FundingStatus.java
+++ b/server-api/src/main/java/ish/oncourse/types/FundingStatus.java
@@ -41,8 +41,8 @@ public enum FundingStatus implements DisplayableExtendedEnumeration {
@API
FAILED(2, "failed");
- private String displayValue;
- private int value;
+ private final String displayValue;
+ private final int value;
FundingStatus(int value, String displayValue) {
this.value = value;
diff --git a/server-api/src/main/java/ish/oncourse/types/OutputType.java b/server-api/src/main/java/ish/oncourse/types/OutputType.java
index 983b1556c9b..dbb89cc44fc 100644
--- a/server-api/src/main/java/ish/oncourse/types/OutputType.java
+++ b/server-api/src/main/java/ish/oncourse/types/OutputType.java
@@ -67,11 +67,11 @@ public enum OutputType implements DisplayableExtendedEnumeration {
*/
@API
PDF(5, "pdf", "application/pdf", "pdf");
- private Integer value;
- private String displayValue;
- private String mimeType;
- private String fileExtension;
+ private final Integer value;
+ private final String displayValue;
+ private final String mimeType;
+ private final String fileExtension;
OutputType(Integer value, String displayValue, String mimeType, String fileExtension) {
this.value = value;
@@ -80,7 +80,6 @@ public enum OutputType implements DisplayableExtendedEnumeration {
this.fileExtension = fileExtension;
}
-
public String getMimeType() {
return mimeType;
}
diff --git a/server-api/src/main/java/ish/oncourse/types/Severity.java b/server-api/src/main/java/ish/oncourse/types/Severity.java
index a62bc398120..ea6547cf05a 100644
--- a/server-api/src/main/java/ish/oncourse/types/Severity.java
+++ b/server-api/src/main/java/ish/oncourse/types/Severity.java
@@ -65,7 +65,7 @@ public enum Severity {
@API
SETUP(80);
- private int level;
+ private final int level;
Severity(int level) {
this.level = level;
diff --git a/server-api/src/main/java/ish/oncourse/types/WorkingWithChildrenStatus.java b/server-api/src/main/java/ish/oncourse/types/WorkingWithChildrenStatus.java
index 5c55bd3f15b..321f59e7e08 100644
--- a/server-api/src/main/java/ish/oncourse/types/WorkingWithChildrenStatus.java
+++ b/server-api/src/main/java/ish/oncourse/types/WorkingWithChildrenStatus.java
@@ -51,8 +51,8 @@ public enum WorkingWithChildrenStatus implements DisplayableExtendedEnumeration<
@API
INTERIM_BARRED(4, "Interim barred");
- private int value;
- private String displayName;
+ private final int value;
+ private final String displayName;
WorkingWithChildrenStatus(int value, String displayName) {
this.value = value;
diff --git a/server-api/src/main/java/ish/util/LocalDateUtils.java b/server-api/src/main/java/ish/util/LocalDateUtils.java
index fc2ce555c69..2f39e432457 100644
--- a/server-api/src/main/java/ish/util/LocalDateUtils.java
+++ b/server-api/src/main/java/ish/util/LocalDateUtils.java
@@ -29,8 +29,6 @@ public class LocalDateUtils {
public static final String DATE_PATTERN ="yyyy-MM-dd";
public static final String DATE_TIME_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
- ;
-
public static final ZoneId UTC = ZoneId.of("UTC");
/**
@@ -66,7 +64,6 @@ public static LocalDate stringToValue(String stringValue, DateTimeFormatter cust
return LocalDate.parse(stringValue, customFormatter);
}
-
public static String valueToString(LocalDate localDate) {
return DATE_FORMAT.format(localDate);
}
diff --git a/server/build.gradle b/server/build.gradle
index 83991e6cc37..7e2934d7ffd 100644
--- a/server/build.gradle
+++ b/server/build.gradle
@@ -15,17 +15,27 @@ import com.github.psxpaul.task.JavaExecFork
import java.security.MessageDigest
plugins {
+ id 'java'
id 'apidoc'
id 'org.apache.cayenne'
id 'application'
id 'com.github.psxpaul.execfork'
}
+def DEV_MODE_PROPERTY = "ish.devMode"
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+}
+
configurations {
// exclude these here since they are pulled in in various ways
all*.exclude group: "org.slf4j", module: "slf4j-simple"
all*.exclude module: "hessian"
}
+
+compileGroovy.groovyOptions.configurationScript = file("${rootDir}/gradle/groovyConfig.groovy")
+
sourceSets {
main {
groovy {
@@ -44,17 +54,31 @@ sourceSets {
}
}
+project.ext {
+ appName = "onCourseServer"
+}
+
+application {
+ mainClass.set('ish.oncourse.server.AngelServer')
+ applicationDefaultJvmArgs = ['-Xmx1024m', '-XX:+HeapDumpOnOutOfMemoryError']
+}
+
dependencies {
api project(":types")
api project(':server-api')
- implementation "io.bootique.jetty:bootique-jetty:$bootiqueVersion"
+ implementation ("io.bootique.jetty:bootique-jetty:$bootiqueVersion") {
+ exclude group: 'org.eclipse.jetty', module: 'jetty-servlet'
+ exclude group: 'org.eclipse.jetty', module: 'jetty-server'
+ }
+
implementation "io.bootique.cayenne:bootique-cayenne:$bootiqueVersion"
implementation "io.bootique.jdbc:bootique-jdbc-hikaricp:$bootiqueVersion"
api ("org.apache.cxf:cxf-rt-frontend-jaxws:$cfxVersion") {
exclude group: 'org.apache.geronimo.specs', module: 'geronimo-javamail_1.4_spec'
}
+
api 'javax.xml.bind:jaxb-api:2.3.0'
api 'javax.xml.ws:jaxws-api:2.3.0'
@@ -114,7 +138,6 @@ dependencies {
implementation 'commons-io:commons-io:2.6'
implementation 'org.apache.commons:commons-collections4:4.1'
implementation 'org.reflections:reflections:0.9.12'
- api "com.google.inject:guice:$googleGuiceVersion"
implementation 'net.sf.supercsv:super-csv:2.4.0'
implementation 'net.sf.supercsv:super-csv-java8:2.4.0'
@@ -139,6 +162,12 @@ dependencies {
implementation 'com.chargebee:chargebee-java:3.19.0'
+ implementation('com.google.guava:guava:33.1.0-jre') {
+ attributes {
+ attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
+ }
+ }
+
testImplementation "org.apache.cayenne:cayenne-dbsync:$cayenneVersion"
testImplementation 'org.mockito:mockito-core:2.18.3'
testImplementation 'commons-dbcp:commons-dbcp:1.4'
@@ -147,21 +176,6 @@ dependencies {
testImplementation "io.bootique:bootique-test:$bootiqueVersion"
}
-sourceCompatibility = JavaVersion.VERSION_11
-
-project.ext {
- appName = "onCourseServer"
-}
-
-def DEV_MODE_PROPERTY = "ish.devMode"
-
-application {
- mainClass.set('ish.oncourse.server.AngelServer')
- applicationDefaultJvmArgs = ['-Xmx1024m', '-XX:+HeapDumpOnOutOfMemoryError']
-}
-
-compileGroovy.groovyOptions.configurationScript = file("${rootDir}/gradle/groovyConfig.groovy")
-
jar {
manifest {
from sharedManifest
@@ -170,6 +184,7 @@ jar {
}
archiveFileName = 'onCourseServer.jar'
+ dependsOn "copyWebApp"
}
task expandTestConfig(type: Copy) {
@@ -230,7 +245,7 @@ task startDaemon(dependsOn: [classes], type: JavaExecFork) {
main = 'ish.oncourse.server.AngelServer'
args = ['DEBUG=true', 'REPLICATION_DISABLED=true']
jvmArgs = ['-Xmx2048m', '-XX:+HeapDumpOnOutOfMemoryError']
- workingDir = "$buildDir"
+ workingDir = "${layout.buildDirectory.get()}"
waitForOutput = 'Server ready for client connections'
timeout = 60 * 3
}
@@ -271,8 +286,6 @@ task addVersion {
}
}
-distZip.dependsOn(copyWebApp,addVersion)
-
task createChecksums(dependsOn: distZip) {
inputs.files(distZip.outputs.files)
outputs.files(inputs.files.collect({ it.path + ".sha256"}))
@@ -287,29 +300,19 @@ task createChecksums(dependsOn: distZip) {
}
}
}
-distZip.finalizedBy(createChecksums)
-
-distributions {
- main {
- distributionBaseName = 'onCourseServer'
- contents {
- from "src/packaging/"
- from addVersion.outputs.files
- }
- }
-}
// DSL asciidoc documentation
dslDocs {
source = sourceSets.main.groovy.plus(project(':types').sourceSets.main.groovy).plus(project(':server-api').sourceSets.main.groovy)
- destinationDir = file("${buildDir}/distributions/dsldoc")
+ destinationDir = file("${project.layout.buildDirectory.get()}/distributions/dsldoc")
}
+
task packageDslDoc(type: Zip) {
- from file("${buildDir}/distributions/dsldoc")
+ from file("${layout.buildDirectory.get()}/distributions/dsldoc")
archiveClassifier = 'documentation'
archiveBaseName = "dsl"
- tasks.getByName('dslDocs').mustRunAfter(tasks.getByName('classes'))
- dependsOn tasks.getByName('classes'),tasks.getByName('dslDocs')
+ tasks.named('dslDocs').get().mustRunAfter(tasks.named('classes').get())
+ dependsOn tasks.named('classes').get(), tasks.named('dslDocs').get()
}
task testJar(type: Jar) {
@@ -317,35 +320,8 @@ task testJar(type: Jar) {
from sourceSets.test.output
}
-
-// "gradlew publishToMavenLocal" if you want to publish this to your local .m2 folder
-publishing {
- publications {
- dsldocs(MavenPublication) {
- artifact (packageDslDoc) {
- artifactId "dsldocs"
- }
- }
- jar(MavenPublication) {
- from components.java
- artifactId 'server-jar'
- }
- test(MavenPublication) {
- artifact (testJar) {
- artifactId "test"
- }
- }
- executables(MavenPublication) {
- artifact(distZip) {
- classifier "executable"
- extension "zip"
- }
- }
- }
-}
-
task queryGrammar(type: Aql) {
- outputDir = file("${buildDir}/generated-resources/antlr/java/ish/oncourse/aql/impl")
+ outputDir = file("${project.layout.buildDirectory.get()}/generated-resources/antlr/java/ish/oncourse/aql/impl")
packageDir = 'ish.oncourse.aql.impl'
target = 'Java'
}
@@ -358,15 +334,22 @@ cgen {
superTemplate = "${projectDir}/src/main/resources/cayenne/dotemplates/superclass.vm"
mode = 'entity'
superPkg = 'ish.oncourse.server.cayenne.glue'
- destDir = file("${buildDir}/generated-resources/cayenne/java")
+ destDir = file("${layout.buildDirectory.get()}/generated-resources/cayenne/java")
doLast {
// remove subclass files which are already committed inside the app
- delete fileTree("${buildDir}/generated-resources/cayenne/java/ish/oncourse/server/cayenne") {
+ delete fileTree("${layout.buildDirectory.get()}/generated-resources/cayenne/java/ish/oncourse/server/cayenne") {
exclude '**/glue/*'
}
}
}
+distZip.dependsOn(copyWebApp, addVersion)
+distZip.finalizedBy(createChecksums)
+
+compileGroovy.mustRunAfter(":api-test:copyConfig")
+compileGroovy.mustRunAfter(":selenium-test:copyConfig")
+compileTestGroovy.dependsOn(copyWebApp)
+
compileJava {
dependsOn queryGrammar, cgen
if(project.hasProperty(DEV_MODE_PROPERTY) && project.property(DEV_MODE_PROPERTY) == "true"){
@@ -374,13 +357,48 @@ compileJava {
}
}
+distributions {
+ main {
+ distributionBaseName = 'onCourseServer'
+ contents {
+ from "src/packaging/"
+ from addVersion.outputs.files
+ }
+ }
+}
+
+// "gradlew publishToMavenLocal" if you want to publish this to your local .m2 folder
+publishing {
+ publications {
+ create("dsldocs", MavenPublication) {
+ artifact(packageDslDoc) {
+ artifactId = "dsldocs"
+ }
+ }
+ create("jar", MavenPublication) {
+ from components.java
+ artifactId = 'server-jar'
+ }
+ create("test", MavenPublication) {
+ artifact(testJar) {
+ artifactId = "test"
+ }
+ }
+ create("executables", MavenPublication) {
+ artifact(distZip) {
+ classifier = "executable"
+ extension = "zip"
+ }
+ }
+ }
+}
+
task runServer(dependsOn: [classes], type: JavaExec) {
if(project.hasProperty(DEV_MODE_PROPERTY)) {
systemProperty DEV_MODE_PROPERTY, project.property(DEV_MODE_PROPERTY)
}
classpath = sourceSets.main.runtimeClasspath
- main = 'ish.oncourse.server.AngelServer'
+ mainClass = 'ish.oncourse.server.AngelServer'
args = ['DEBUG=true', 'REPLICATION_DISABLED=true', 'disableReplication=true']
jvmArgs = ['-Xmx1024m', '-XX:+HeapDumpOnOutOfMemoryError']
}
-
diff --git a/server/src/main/groovy/ish/oncourse/server/AuditListener.groovy b/server/src/main/groovy/ish/oncourse/server/AuditListener.groovy
index 719fed2c0d2..6e3196890d7 100644
--- a/server/src/main/groovy/ish/oncourse/server/AuditListener.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/AuditListener.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.cayenne.glue.CayenneDataObject
import ish.oncourse.server.services.AuditService
import ish.oncourse.types.AuditAction
diff --git a/server/src/main/groovy/ish/oncourse/server/accounting/AccountTransactionService.groovy b/server/src/main/groovy/ish/oncourse/server/accounting/AccountTransactionService.groovy
index e0b1561da93..e960dd202e3 100644
--- a/server/src/main/groovy/ish/oncourse/server/accounting/AccountTransactionService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/accounting/AccountTransactionService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.accounting
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.AccountTransactionType
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.accounting.builder.JournalTransactionsBuilder
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/AssessmentClassDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/AssessmentClassDao.groovy
index 2eb3d83cf95..eefe63d7a17 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/AssessmentClassDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/AssessmentClassDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.cayenne.Assessment
import ish.oncourse.server.cayenne.AssessmentClass
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/ClassCostDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/ClassCostDao.groovy
index 8d4cf3c0aa0..fda424ea81e 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/ClassCostDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/ClassCostDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.ClassCostFlowType
import ish.common.types.ClassCostRepetitionType
import ish.math.Money
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/CourseClassDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/CourseClassDao.groovy
index ec74b6897c5..a6948471d93 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/CourseClassDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/CourseClassDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.EnrolmentStatus
import ish.math.Money
import ish.oncourse.server.CayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/FundingSourceDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/FundingSourceDao.groovy
index 676aa1ce5f4..59fb3a51fe8 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/FundingSourceDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/FundingSourceDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.FundingSource
import org.apache.cayenne.ObjectContext
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/PaymentInDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/PaymentInDao.groovy
index 575d0ccf1ea..498e189e9ca 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/PaymentInDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/PaymentInDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.PaymentStatus
import ish.common.types.PaymentType
import ish.math.Money
@@ -20,7 +20,6 @@ import ish.oncourse.server.cayenne.Contact
import ish.oncourse.server.cayenne.PaymentIn
import ish.oncourse.server.cayenne.PaymentMethod
import org.apache.cayenne.ObjectContext
-import org.apache.cayenne.exp.Expression
import org.apache.cayenne.query.ObjectSelect
import org.apache.cayenne.query.SelectById
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/ReportDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/ReportDao.groovy
index f947c8050be..df61ab191bc 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/ReportDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/ReportDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.AutomationStatus
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.v1.function.export.ExportFunctions
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/ReportOverlayDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/ReportOverlayDao.groovy
index 7598004808b..7a85cd38068 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/ReportOverlayDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/ReportOverlayDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.cayenne.ReportOverlay
import org.apache.cayenne.ObjectContext
diff --git a/server/src/main/groovy/ish/oncourse/server/api/dao/SessionDao.groovy b/server/src/main/groovy/ish/oncourse/server/api/dao/SessionDao.groovy
index 105fd72aead..9f6b31a26e6 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/dao/SessionDao.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/dao/SessionDao.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.dao
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.NodeType
import ish.oncourse.server.cayenne.CourseClass
import ish.oncourse.server.cayenne.SessionModule
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/AccountApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/AccountApiService.groovy
index 35a7f63cd4c..35f6688ce57 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/AccountApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/AccountApiService.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.AccountType
import ish.common.types.PaymentStatus
import ish.math.Money
@@ -29,7 +29,7 @@ import java.util.stream.Collectors
import static ish.oncourse.server.api.function.CayenneFunctions.getRecordById
import static ish.oncourse.server.api.v1.function.TaxFunctions.toRestTaxMinimized
import static org.apache.commons.lang3.StringUtils.isBlank
-import static org.apache.commons.lang3.StringUtils.trimToNull
+import static org.apache.commons.lang3.StringUtils.trimToNull
class AccountApiService extends EntityApiService{
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ApiTokenApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ApiTokenApiService.groovy
index 3e7cd0e1af6..09fd7849806 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/ApiTokenApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/ApiTokenApiService.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.dao.ApiTokenDao
import ish.oncourse.server.api.dao.UserDao
import ish.oncourse.server.api.v1.model.ApiTokenDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ApplicationApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ApplicationApiService.groovy
index 363f6373287..2a929d7b53d 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/ApplicationApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/ApplicationApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.common.types.ApplicationStatus
import ish.common.types.ConfirmationStatus
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ArticleProductApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ArticleProductApiService.groovy
index 9553d81d6a5..3e41645ce36 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/ArticleProductApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/ArticleProductApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.AccountType
import ish.math.Money
import ish.oncourse.server.api.dao.AccountDao
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentApiService.groovy
index 0127439814d..db4ffa438b8 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.cayenne.TaggableClasses
import ish.oncourse.server.api.dao.AssessmentDao
import ish.oncourse.server.cayenne.GradingType
@@ -19,8 +19,6 @@ import ish.oncourse.server.document.DocumentService
import static ish.oncourse.server.api.v1.function.DocumentFunctions.toRestDocument
import static ish.oncourse.server.api.v1.function.DocumentFunctions.updateDocuments
import ish.oncourse.server.api.v1.function.TagFunctions
-import static ish.oncourse.server.api.v1.function.TagFunctions.toRestTagMinimized
-import static ish.oncourse.server.api.v1.function.TagFunctions.updateTags
import ish.oncourse.server.api.v1.model.AssessmentDTO
import ish.oncourse.server.cayenne.Assessment
import ish.oncourse.server.cayenne.AssessmentAttachmentRelation
@@ -33,6 +31,8 @@ import static org.apache.commons.lang3.StringUtils.isBlank
import static org.apache.commons.lang3.StringUtils.trimToEmpty
import static org.apache.commons.lang3.StringUtils.trimToNull
+import static ish.oncourse.server.api.v1.function.TagFunctions.updateTags
+
class AssessmentApiService extends TaggableApiService {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentClassApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentClassApiService.groovy
index 6af25a5c33a..0edfc0be763 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentClassApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentClassApiService.groovy
@@ -11,7 +11,8 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Provider
+import javax.inject.Inject
import ish.oncourse.server.api.dao.AssessmentClassDao
import ish.oncourse.server.api.v1.model.AssessmentClassDTO
import ish.oncourse.server.cayenne.Assessment
@@ -32,7 +33,7 @@ class AssessmentClassApiService extends EntityApiService classServiceProvider
@Inject
private ContactApiService contactService
@@ -65,7 +66,7 @@ class AssessmentClassApiService extends EntityApiService{
@Inject
@@ -50,7 +33,7 @@ class ClassCostApiService extends EntityApiService classApiServiceProvider
@Inject
private TaxDao taxDao
@@ -235,7 +218,7 @@ class ClassCostApiService extends EntityApiService> {
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/FacultyApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/FacultyApiService.groovy
index 82e6de9e871..3b770c0a313 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/FacultyApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/FacultyApiService.groovy
@@ -8,7 +8,8 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
+import javax.inject.Provider
import ish.oncourse.cayenne.TaggableClasses
import ish.oncourse.server.api.dao.FacultyDao
import ish.oncourse.server.api.v1.function.TagFunctions
@@ -32,7 +33,7 @@ class FacultyApiService extends TaggableApiService courseApiServiceProvider
@Override
Class getPersistentClass() {
@@ -129,7 +130,7 @@ class FacultyApiService extends TaggableApiService coursesToSave = courseDTOS*.id ?: [] as List
List coursesToRemove = faculty.courses.findAll {!coursesToSave.contains(it.id)}
List coursesToAdd = courseDTOS.findAll { !faculty.courses*.id.contains(it.id) }.collect { courseDTO ->
- Course course = courseApiService.getEntityAndValidateExistence(faculty.context, courseDTO.id)
+ Course course = courseApiServiceProvider.get().getEntityAndValidateExistence(faculty.context, courseDTO.id)
course
}
coursesToAdd.each {faculty.addToCourses(it)}
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ImportApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ImportApiService.groovy
index 490ce1b22c6..a212958a3fe 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/ImportApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/ImportApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.DataType
import ish.imports.ImportResult
import ish.oncourse.server.api.dao.ImportDao
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/InvoiceApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/InvoiceApiService.groovy
index 3594b25580a..817f84c8eaf 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/InvoiceApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/InvoiceApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.ConfirmationStatus
import ish.common.types.InvoiceType
import ish.common.types.PaymentStatus
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/LeadApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/LeadApiService.groovy
index d3ee4890682..e8a96048ba2 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/LeadApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/LeadApiService.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.math.Money
import ish.oncourse.server.api.dao.LeadDao
import ish.oncourse.server.api.v1.function.SaleFunctions
@@ -17,7 +17,6 @@ import ish.oncourse.server.api.v1.model.LeadStatusDTO
import ish.oncourse.server.api.v1.model.SaleDTO
import ish.oncourse.server.api.v1.model.SaleTypeDTO
import ish.oncourse.server.api.v1.model.SiteDTO
-import ish.oncourse.server.cayenne.Course
import ish.oncourse.server.cayenne.Lead
import ish.oncourse.server.cayenne.LeadAttachmentRelation
import ish.oncourse.server.cayenne.LeadCustomField
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/MembershipProductApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/MembershipProductApiService.groovy
index f863bccd3b7..91a92f7529c 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/MembershipProductApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/MembershipProductApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.AccountType
import ish.common.types.ExpiryType
import ish.math.Money
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/MessageApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/MessageApiService.groovy
index 75a70fb4ab1..bb99ec7e4a7 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/MessageApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/MessageApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.text.Template
import groovy.transform.CompileStatic
import ish.common.types.EnrolmentStatus
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/NoteApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/NoteApiService.groovy
index 5292a4f0df9..c34ba53950f 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/NoteApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/NoteApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.dao.NoteDao
import ish.oncourse.server.api.v1.function.NoteFunctions
import ish.oncourse.server.api.v1.model.NoteDTO
@@ -20,7 +20,7 @@ import ish.oncourse.server.users.SystemUserService
import org.apache.cayenne.ObjectContext
import org.apache.cayenne.query.SelectById
-public class NoteApiService extends EntityApiService {
+class NoteApiService extends EntityApiService {
private Map> NOTABLE_MAP =
[
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/OutcomeApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/OutcomeApiService.groovy
index d9f42bc2ce2..d510fba6e73 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/OutcomeApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/OutcomeApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.EnrolmentStatus
import ish.oncourse.types.FundingStatus
import ish.oncourse.server.api.dao.EnrolmentDao
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/PaymentInApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/PaymentInApiService.groovy
index e38ea7ef72f..848a7d4dd49 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/PaymentInApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/PaymentInApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import groovy.transform.TypeCheckingMode
import ish.common.types.ConfirmationStatus
@@ -21,10 +21,12 @@ import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.dao.PaymentInDao
import ish.oncourse.server.api.v1.model.PaymentInDTO
import ish.oncourse.server.api.v1.model.PaymentInvoiceDTO
-import ish.oncourse.server.cayenne.*
+import ish.oncourse.server.cayenne.PaymentIn
+import ish.oncourse.server.cayenne.PaymentInLine
+import ish.oncourse.server.cayenne.Site
+import ish.oncourse.server.cayenne.SystemUser
import ish.oncourse.server.services.TransactionLockedService
import ish.oncourse.server.users.SystemUserService
-import ish.util.AccountUtil
import ish.util.PaymentMethodUtil
import org.apache.cayenne.ObjectContext
import org.apache.cayenne.access.DataContext
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/PaymentOutApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/PaymentOutApiService.groovy
index 51322c4d1bd..bb04a489d7d 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/PaymentOutApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/PaymentOutApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import groovy.transform.TypeCheckingMode
import ish.common.types.ConfirmationStatus
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/PortalWebsiteService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/PortalWebsiteService.groovy
index 8f668ab4e44..2620e1d8183 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/PortalWebsiteService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/PortalWebsiteService.groovy
@@ -8,10 +8,9 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.DataType
import ish.oncourse.server.ICayenneService
-import ish.oncourse.server.cayenne.Contact
import ish.oncourse.server.cayenne.ContactTrait
import ish.oncourse.server.cayenne.CustomField
import ish.oncourse.server.cayenne.PortalWebsite
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/PriorLearningApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/PriorLearningApiService.groovy
index 5d7277be2bb..e87555c1e34 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/PriorLearningApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/PriorLearningApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.dao.ModuleDao
import ish.oncourse.server.api.dao.OutcomeDao
import ish.oncourse.server.api.dao.PriorLearningDao
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ProductItemApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ProductItemApiService.groovy
index 4cf22ac64e2..cfb8150b391 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/ProductItemApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/ProductItemApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import groovy.transform.TypeCheckingMode
import ish.common.types.ExpiryType
@@ -20,14 +20,12 @@ import ish.common.types.ProductType
import ish.common.types.TypesUtil
import ish.math.Money
import ish.oncourse.cayenne.Taggable
-import ish.oncourse.cayenne.TaggableClasses
import ish.oncourse.server.api.dao.AccountDao
import ish.oncourse.server.api.dao.ContactDao
import ish.oncourse.server.api.dao.ProductItemDAO
import ish.oncourse.server.api.dao.TaxDao
import ish.oncourse.server.api.v1.model.*
import ish.oncourse.server.cayenne.*
-import ish.oncourse.server.cayenne.glue.TaggableCayenneDataObject
import ish.oncourse.server.document.DocumentService
import org.apache.cayenne.ObjectContext
import org.apache.cayenne.query.ObjectSelect
@@ -43,7 +41,6 @@ import static ish.oncourse.server.api.v1.function.CustomFieldFunctions.updateCus
import static ish.oncourse.server.api.v1.function.CustomFieldFunctions.validateCustomFields
import static ish.oncourse.server.api.v1.function.DocumentFunctions.toRestDocument
import static ish.oncourse.server.api.v1.function.DocumentFunctions.updateDocuments
-import static ish.oncourse.server.api.v1.function.TagFunctions.toRestTagMinimized
import static ish.oncourse.server.api.v1.function.TagFunctions.updateTags
import static ish.util.LocalDateUtils.dateToValue
import static ish.util.LocalDateUtils.valueToDate
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/RefundService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/RefundService.groovy
index 5ff6098f1b8..17b69fa55fd 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/RefundService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/RefundService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.ConfirmationStatus
import ish.common.types.PaymentSource
import ish.common.types.PaymentStatus
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/RoomApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/RoomApiService.groovy
index 65cbf61fb64..26e82536fb4 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/RoomApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/RoomApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.PreferenceController
import ish.oncourse.server.api.dao.RoomDao
import ish.oncourse.server.api.v1.function.RoomFunctions
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ScriptApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ScriptApiService.groovy
index 345b69246d4..16bda70ea44 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/ScriptApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/ScriptApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.EntityEvent
import ish.common.types.SystemEventType
import ish.common.types.TriggerType
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/SessionApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/SessionApiService.groovy
index 0311f1d530b..3bff14b761c 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/SessionApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/SessionApiService.groovy
@@ -11,20 +11,17 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.api.dao.CourseClassDao
-import ish.oncourse.server.api.dao.CourseClassTutorDao
import ish.oncourse.server.api.dao.RoomDao
import ish.oncourse.server.api.dao.SessionDao
-import ish.oncourse.server.api.dao.TutorAttendanceDao
import static ish.oncourse.server.api.servlet.ApiFilter.validateOnly
import ish.oncourse.server.api.v1.function.SessionValidator
import ish.oncourse.server.api.v1.model.SessionDTO
import ish.oncourse.server.api.v1.model.SessionWarningDTO
import static ish.oncourse.server.api.v1.service.impl.SessionApiImpl.CLASS_TEMP_ID
import ish.oncourse.server.cayenne.CourseClass
-import ish.oncourse.server.cayenne.CourseClassTutor
import ish.oncourse.server.cayenne.Room
import ish.oncourse.server.cayenne.Session
import ish.oncourse.server.cayenne.TutorAttendance
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/SiteApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/SiteApiService.groovy
index 4b6360a8f55..82bd421ce5e 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/SiteApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/SiteApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.cayenne.TaggableClasses
import ish.oncourse.server.PreferenceController
import ish.oncourse.server.api.dao.SiteDao
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/SpecialTagsApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/SpecialTagsApiService.groovy
index 98220a9236d..2771e1f148b 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/SpecialTagsApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/SpecialTagsApiService.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.NodeSpecialType
import ish.common.types.NodeType
import ish.oncourse.server.ICayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/TutorAttendanceApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/TutorAttendanceApiService.groovy
index 769ea38dd3a..63744acb997 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/TutorAttendanceApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/TutorAttendanceApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.api.dao.CourseClassTutorDao
import ish.oncourse.server.api.dao.TutorAttendanceDao
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/TutorRoleApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/TutorRoleApiService.groovy
index 344eb136fd7..484d73fc254 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/TutorRoleApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/TutorRoleApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.dao.DefinedTutorRoleDao
import ish.oncourse.server.api.dao.PayRateDao
import ish.oncourse.server.api.v1.model.ClassCostRepetitionTypeDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/VoucherProductApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/VoucherProductApiService.groovy
index b641ef01ebb..79c6d013854 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/service/VoucherProductApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/service/VoucherProductApiService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.service
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.common.types.AccountType
import ish.common.types.ExpiryType
@@ -26,13 +26,8 @@ import ish.oncourse.server.api.dao.ProductDao
import ish.oncourse.server.api.dao.TaxDao
import ish.oncourse.server.api.dao.VoucherProductCourseDao
import ish.oncourse.server.api.dao.VoucherProductDao
-import ish.oncourse.server.api.v1.model.ProductTypeDTO
-import ish.oncourse.server.cayenne.Article
-import ish.oncourse.server.cayenne.ExpandableTrait
import ish.oncourse.server.cayenne.FieldConfigurationScheme
-import ish.oncourse.server.cayenne.Membership
import ish.oncourse.server.cayenne.Product
-import ish.oncourse.server.cayenne.Voucher
import ish.oncourse.server.cayenne.VoucherProductTagRelation
import ish.oncourse.server.cayenne.VoucherProductAttachmentRelation
import ish.oncourse.server.document.DocumentService
@@ -44,7 +39,6 @@ import static ish.oncourse.server.api.v1.function.DocumentFunctions.updateDocume
import static ish.oncourse.server.api.v1.function.EntityRelationFunctions.toRestFromEntityRelation
import static ish.oncourse.server.api.v1.function.EntityRelationFunctions.toRestToEntityRelation
import static ish.oncourse.server.api.v1.function.ProductFunctions.updateCorporatePassesByIds
-import static ish.oncourse.server.api.v1.function.TagFunctions.toRestTagMinimized
import static ish.oncourse.server.api.v1.function.TagFunctions.updateTags
import static ish.oncourse.server.api.v1.model.ProductStatusDTO.CAN_BE_PURCHASED_IN_OFFICE
import static ish.oncourse.server.api.v1.model.ProductStatusDTO.CAN_BE_PURCHASED_IN_OFFICE_ONLINE
diff --git a/server/src/main/groovy/ish/oncourse/server/api/servlet/ActiveCollegeFilter.groovy b/server/src/main/groovy/ish/oncourse/server/api/servlet/ActiveCollegeFilter.groovy
index f87aa97c8fa..e5b19c1ea83 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/servlet/ActiveCollegeFilter.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/servlet/ActiveCollegeFilter.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.servlet
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.PreferenceController
import javax.servlet.*
diff --git a/server/src/main/groovy/ish/oncourse/server/api/servlet/ApiFilter.groovy b/server/src/main/groovy/ish/oncourse/server/api/servlet/ApiFilter.groovy
index f4a6769df4c..127b692fb4b 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/servlet/ApiFilter.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/servlet/ApiFilter.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.servlet
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.ApiToken
import ish.oncourse.server.security.api.IPermissionService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/servlet/SessionManager.groovy b/server/src/main/groovy/ish/oncourse/server/api/servlet/SessionManager.groovy
index a8f11a9aca7..54e91e89815 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/servlet/SessionManager.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/servlet/SessionManager.groovy
@@ -11,17 +11,12 @@
package ish.oncourse.server.api.servlet
-import com.google.inject.Inject
-import com.google.inject.Provider
+import javax.inject.Inject
+import javax.inject.Provider
import groovy.transform.CompileStatic
-import io.bootique.jetty.servlet.DefaultServletEnvironment
+import io.bootique.jetty.servlet.AngelServletEnvironment
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.ApiToken
-
-import static ish.oncourse.cayenne.SystemUserInterface.DEFAULT_ISH_USER
-
-import static ish.oncourse.server.api.servlet.AngelSessionDataStore.USER_ATTRIBUTE
-import static ish.oncourse.server.api.servlet.AngelSessionDataStore.IS_LOGIN
import ish.oncourse.server.cayenne.SystemUser
import org.apache.cayenne.query.ObjectSelect
import org.apache.logging.log4j.LogManager
@@ -33,6 +28,10 @@ import org.eclipse.jetty.server.session.Session
import javax.servlet.http.HttpServletRequest
+import static ish.oncourse.cayenne.SystemUserInterface.DEFAULT_ISH_USER
+import static ish.oncourse.server.api.servlet.AngelSessionDataStore.IS_LOGIN
+import static ish.oncourse.server.api.servlet.AngelSessionDataStore.USER_ATTRIBUTE
+
@CompileStatic
class SessionManager implements ISessionManager {
@@ -43,7 +42,7 @@ class SessionManager implements ISessionManager {
private ICayenneService cayenneService
@Inject
- DefaultServletEnvironment defaultServletEnvironment
+ AngelServletEnvironment defaultServletEnvironment
private static final Logger logger = LogManager.logger
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/function/SessionValidator.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/function/SessionValidator.groovy
index c041b3bed44..d32bdc3da1f 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/function/SessionValidator.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/function/SessionValidator.groovy
@@ -11,14 +11,13 @@
package ish.oncourse.server.api.v1.function
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.dao.ContactDao
import ish.oncourse.server.api.dao.CourseDao
import ish.oncourse.server.api.dao.RoomDao
import ish.oncourse.server.api.dao.UnavailableRuleDao
-import ish.oncourse.server.api.traits.SessionDTOTrait
import ish.oncourse.server.api.v1.model.TutorAttendanceDTO
import ish.oncourse.server.cayenne.CourseClassTutor
import ish.oncourse.server.cayenne.TutorAttendance
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/function/export/CertificatePrintFilter.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/function/export/CertificatePrintFilter.groovy
index 575e3957aa2..d1830bf4d32 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/function/export/CertificatePrintFilter.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/function/export/CertificatePrintFilter.groovy
@@ -11,7 +11,6 @@
package ish.oncourse.server.api.v1.function.export
-import com.google.inject.Inject
import ish.common.types.KeyCode
import ish.common.types.Mask
import ish.common.types.OutcomeStatus
@@ -22,8 +21,6 @@ import ish.oncourse.server.cayenne.SystemUser
import ish.oncourse.server.security.api.IPermissionService
import org.apache.cayenne.CayenneDataObject
-import javax.ws.rs.BadRequestException
-
/**
* PrintFilter for Certificates.
* Revoked or certificates with outcomes which has NOT_SET status won't be printed.
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccessApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccessApiImpl.groovy
index 23480d60d67..87a070fe6b4 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccessApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccessApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.KeyCode
import ish.common.types.Mask
import ish.oncourse.server.api.v1.model.KeyCodeDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccountApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccountApiImpl.groovy
index 8d6d4c5bf2c..7fc1a4547b9 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccountApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AccountApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.AccountApiService
import ish.oncourse.server.api.v1.model.AccountDTO
import ish.oncourse.server.api.v1.service.AccountApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApiTokenApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApiTokenApiImpl.groovy
index ae76916bcfd..e6b62ffe113 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApiTokenApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApiTokenApiImpl.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.dao.ApiTokenDao
import ish.oncourse.server.api.service.ApiTokenApiService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApplicationApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApplicationApiImpl.groovy
index f8d2de526a3..35ab81328db 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApplicationApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ApplicationApiImpl.groovy
@@ -11,10 +11,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.ApplicationApiService
import ish.oncourse.server.api.v1.model.ApplicationDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.service.ApplicationApi
class ApplicationApiImpl implements ApplicationApi {
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ArticleProductApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ArticleProductApiImpl.groovy
index 4ca93991826..3e30eebff2d 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ArticleProductApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ArticleProductApiImpl.groovy
@@ -11,12 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.service.ArticleProductApiService
import ish.oncourse.server.api.v1.function.EntityRelationFunctions
import ish.oncourse.server.api.v1.model.ArticleProductDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.service.ArticleProductApi
import ish.oncourse.server.cayenne.ArticleProduct
import ish.oncourse.server.cayenne.Product
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentApiImpl.groovy
index 98f57dd2ff1..a49179ea24f 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentApiImpl.groovy
@@ -11,10 +11,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.AssessmentApiService
import ish.oncourse.server.api.v1.model.AssessmentDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.service.AssessmentApi
class AssessmentApiImpl implements AssessmentApi {
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentClassApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentClassApiImpl.groovy
index f04c933dc6c..3d6e7dfa490 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentClassApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentClassApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.AssessmentClassApiService
import ish.oncourse.server.api.v1.model.AssessmentClassDTO
import ish.oncourse.server.api.v1.service.AssessmentClassApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentSubmissionApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentSubmissionApiImpl.groovy
index 6ffb0684153..686934b5537 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentSubmissionApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AssessmentSubmissionApiImpl.groovy
@@ -8,10 +8,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.AssessmentSubmissionApiService
import ish.oncourse.server.api.v1.model.AssessmentSubmissionDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.service.AssessmentSubmissionApi
class AssessmentSubmissionApiImpl implements AssessmentSubmissionApi {
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AttendanceApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AttendanceApiImpl.groovy
index 8def1a642d9..9e86169b608 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AttendanceApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AttendanceApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.AttendanceApiService
import ish.oncourse.server.api.v1.model.StudentAttendanceDTO
import ish.oncourse.server.api.v1.service.AttendanceApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuditApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuditApiImpl.groovy
index 69ef38847c1..775baaf587e 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuditApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuditApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import static ish.oncourse.server.api.function.EntityFunctions.checkForBadRequest
import static ish.oncourse.server.api.function.EntityFunctions.validateIdParam
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuthenticationApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuthenticationApiImpl.groovy
index ea7b814d37c..fe1c5a350aa 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuthenticationApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AuthenticationApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.PreferenceController
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AvetmissExportApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AvetmissExportApiImpl.groovy
index 7b35c8d4efe..71ed1ad3d71 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AvetmissExportApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/AvetmissExportApiImpl.groovy
@@ -12,7 +12,7 @@
package ish.oncourse.server.api.v1.service.impl
import com.fasterxml.jackson.databind.ObjectMapper
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.OutcomeStatus
import ish.oncourse.common.ExportJurisdiction
import ish.oncourse.entity.services.CertificateService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/BankingApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/BankingApiImpl.groovy
index 9c462957220..5544ba84363 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/BankingApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/BankingApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.common.types.PaymentStatus
import ish.common.types.PaymentType
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CertificateApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CertificateApiImpl.groovy
index 1069bf82da2..89b3df89e93 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CertificateApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CertificateApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.aql.AqlService
import ish.oncourse.server.CayenneService
@@ -24,7 +24,6 @@ import ish.oncourse.server.api.v1.service.CertificateApi
import ish.oncourse.server.api.v1.model.CertificateCreateForEnrolmentsRequestDTO
import ish.oncourse.server.cayenne.Certificate
import ish.oncourse.server.print.CertificatePrintStatus
-import org.apache.cayenne.Cayenne
import org.apache.cayenne.ObjectContext
@CompileStatic
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CheckoutApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CheckoutApiImpl.groovy
index 83f0bc1c54f..a0f9d9a806d 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CheckoutApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CheckoutApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.common.types.EntityRelationCartAction
import ish.math.Money
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ClassCostApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ClassCostApiImpl.groovy
index 9e34ca566e8..c3e3e9afe94 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ClassCostApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ClassCostApiImpl.groovy
@@ -11,15 +11,16 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
-import static ish.oncourse.server.api.servlet.ApiFilter.validateOnly
import ish.oncourse.server.api.service.ClassCostApiService
import ish.oncourse.server.api.v1.model.ClassCostDTO
import ish.oncourse.server.api.v1.service.ClassCostApi
import ish.oncourse.server.cayenne.ClassCost
-import org.apache.cayenne.CayenneRuntimeException
import org.apache.cayenne.validation.ValidationException
+import javax.inject.Inject
+
+import static ish.oncourse.server.api.servlet.ApiFilter.validateOnly
+
class ClassCostApiImpl implements ClassCostApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ConcessionApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ConcessionApiImpl.groovy
index d779d1e99aa..4926fd20b77 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ConcessionApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ConcessionApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import static ish.oncourse.server.api.v1.function.ConcessionTypeFunctions.toRestConcessionType
import static ish.oncourse.server.api.v1.function.ConcessionTypeFunctions.updateConcession
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactApiImpl.groovy
index 97cdcc3221d..9371815afb5 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.service.ContactApiService
import static ish.oncourse.server.api.v1.function.ContactRelationFunctions.toRestContactRelationType
@@ -20,7 +20,6 @@ import static ish.oncourse.server.api.v1.function.ContactRelationFunctions.valid
import static ish.oncourse.server.api.v1.function.ContactRelationFunctions.validateForUpdate
import ish.oncourse.server.api.v1.model.ContactDTO
import ish.oncourse.server.api.v1.model.ContactRelationTypeDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.UsiRequestDTO
import ish.oncourse.server.api.v1.model.UsiVerificationResultDTO
import ish.oncourse.server.api.v1.model.ValidationErrorDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactInsightApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactInsightApiImpl.groovy
index c8a9575542e..24206e5d2cd 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactInsightApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactInsightApiImpl.groovy
@@ -8,10 +8,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.ApplicationStatus
import ish.common.types.LeadStatus
-import ish.math.Money
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.dao.ContactDao
import ish.oncourse.server.api.v1.model.ContactInsightDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactMergeApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactMergeApiImpl.groovy
index 2da027ea55d..e0dc3554856 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactMergeApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ContactMergeApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.dao.ContactDao
import ish.oncourse.server.api.v1.model.MergeDataDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ControlApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ControlApiImpl.groovy
index 024a7a84832..346686d5656 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ControlApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ControlApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.imports.ImportResult
import ish.oncourse.server.api.v1.model.ProcessResultDTO
import ish.oncourse.server.api.v1.model.ProcessStatusDTO
@@ -20,6 +20,7 @@ import ish.oncourse.server.api.v1.service.ControlApi
import ish.oncourse.server.concurrent.ExecutorManager
import ish.print.PrintResult
import ish.scripting.ScriptResult
+
import static ish.scripting.ScriptResult.ResultType.FAILURE
import static org.apache.commons.lang3.StringUtils.isNotBlank
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CorporatePassApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CorporatePassApiImpl.groovy
index f8ab448479a..d63d1cbfbaf 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CorporatePassApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CorporatePassApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.CorporatePassApiService
import ish.oncourse.server.api.v1.model.CorporatePassDTO
import ish.oncourse.server.api.v1.service.CorporatePassApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseApiImpl.groovy
index b25e011616d..5536268528c 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseApiImpl.groovy
@@ -11,12 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.service.CourseApiService
import ish.oncourse.server.api.v1.function.EntityRelationFunctions
import ish.oncourse.server.api.v1.model.CourseDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.SaleDTO
import ish.oncourse.server.api.v1.service.CourseApi
import ish.oncourse.server.cayenne.Course
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassApiImpl.groovy
index 1cf7094de29..cfba7a71004 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassApiImpl.groovy
@@ -11,12 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.CourseClassApiService
import ish.oncourse.server.api.v1.model.CancelCourseClassDTO
import ish.oncourse.server.api.v1.model.CourseClassDTO
import ish.oncourse.server.api.v1.model.CourseClassDuplicateDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.TrainingPlanDTO
import ish.oncourse.server.api.v1.service.CourseClassApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassTutorApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassTutorApiImpl.groovy
index 19e081a625a..621c32c3cd2 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassTutorApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CourseClassTutorApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.CourseClassTutorApiService
import static ish.oncourse.server.api.servlet.ApiFilter.validateOnly
import ish.oncourse.server.api.v1.model.CourseClassTutorDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CustomFieldApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CustomFieldApiImpl.groovy
index bc6d8b7ae7b..badff0db661 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CustomFieldApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/CustomFieldApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.TutorAttendance
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DashboardApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DashboardApiImpl.groovy
index 8044da85b06..7db17cbbf0c 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DashboardApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DashboardApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.common.types.EnrolmentStatus
import ish.common.types.KeyCode
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DataCollectionApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DataCollectionApiImpl.groovy
index 447c378249e..0c99011c804 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DataCollectionApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DataCollectionApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.v1.function.DataCollectionFunctions
import ish.oncourse.server.api.v1.model.FieldValidationTypeDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DiscountApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DiscountApiImpl.groovy
index 49ca3f16a46..875fe809f3e 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DiscountApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DiscountApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.DiscountApiService
import ish.oncourse.server.api.v1.model.DiscountDTO
import ish.oncourse.server.api.v1.service.DiscountApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DocumentApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DocumentApiImpl.groovy
index 1407426017c..9fc67197c69 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DocumentApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/DocumentApiImpl.groovy
@@ -11,12 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.document.DocumentService
import ish.s3.AmazonS3Service
import ish.oncourse.server.api.service.DocumentApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.DocumentDTO
import ish.oncourse.server.api.v1.model.DocumentVersionDTO
import ish.oncourse.server.api.v1.model.DocumentVisibilityDTO
@@ -26,8 +25,6 @@ import ish.oncourse.server.cayenne.DocumentVersion
import ish.oncourse.server.users.SystemUserService
import org.apache.cayenne.ObjectContext
import org.apache.commons.collections.CollectionUtils
-import org.apache.logging.log4j.LogManager
-import org.apache.logging.log4j.Logger
import static ish.oncourse.server.api.v1.function.DocumentFunctions.deleteDocumentVersion
import static ish.oncourse.server.api.v1.function.DocumentFunctions.updateDocumentVersion
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EmailTemplateApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EmailTemplateApiImpl.groovy
index c8cbb152d04..3898959e9ec 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EmailTemplateApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EmailTemplateApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.AutomationStatus
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.service.EmailTemplateApiService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EnrolmentApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EnrolmentApiImpl.groovy
index e0c63aed5aa..2995e7052d2 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EnrolmentApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EnrolmentApiImpl.groovy
@@ -11,10 +11,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.EnrolmentApiService
import ish.oncourse.server.api.v1.model.CancelEnrolmentDTO
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.EnrolmentDTO
import ish.oncourse.server.api.v1.service.EnrolmentApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityApiImpl.groovy
index a4cd7f7c5ad..fb214e31f45 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileDynamic
import ish.oncourse.aql.AqlService
import ish.oncourse.server.ICayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityRelationTypeApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityRelationTypeApiImpl.groovy
index 4b170408d82..0ecfd5dd4fe 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityRelationTypeApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/EntityRelationTypeApiImpl.groovy
@@ -1,6 +1,6 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.dao.EntityRelationTypeDao
import ish.oncourse.server.api.service.EntityRelationTypeApiService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportApiImpl.groovy
index 910e9b63462..09d8774b7ba 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.security.api.IPermissionService
import ish.oncourse.types.OutputType
import ish.oncourse.aql.AqlService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportTemplateApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportTemplateApiImpl.groovy
index 074b2ec1096..612e8372c40 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportTemplateApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ExportTemplateApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileDynamic
import ish.oncourse.server.api.service.ExportTemplateApiService
import ish.oncourse.server.api.v1.model.AutomationConfigsDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FacultyApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FacultyApiImpl.groovy
index 6671484a6f6..a9ada2e9e3e 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FacultyApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FacultyApiImpl.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.FacultyApiService
import ish.oncourse.server.api.v1.model.FacultyDTO
import ish.oncourse.server.api.v1.service.FacultyApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FilterApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FilterApiImpl.groovy
index ec33e762f94..566b021f0fb 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FilterApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FilterApiImpl.groovy
@@ -11,13 +11,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.aql.AqlService
import ish.oncourse.server.ICayenneService
-import static ish.oncourse.server.api.v1.function.FilterFunctions.checkForBadRequest
-import static ish.oncourse.server.api.v1.function.FilterFunctions.isFilterNotNull
-import static ish.oncourse.server.api.v1.function.FilterFunctions.isFilterNull
-import static ish.oncourse.server.api.v1.function.FilterFunctions.validateFilter
import ish.oncourse.server.api.v1.model.FilterDTO
import ish.oncourse.server.api.v1.service.FilterApi
import ish.oncourse.server.cayenne.SavedFind
@@ -26,6 +22,11 @@ import org.apache.cayenne.Cayenne
import org.apache.cayenne.ObjectContext
import org.apache.cayenne.query.ObjectSelect
+import static ish.oncourse.server.api.v1.function.FilterFunctions.checkForBadRequest
+import static ish.oncourse.server.api.v1.function.FilterFunctions.isFilterNotNull
+import static ish.oncourse.server.api.v1.function.FilterFunctions.isFilterNull
+import static ish.oncourse.server.api.v1.function.FilterFunctions.validateFilter
+
class FilterApiImpl implements FilterApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FinalisePeriodApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FinalisePeriodApiImpl.groovy
index 75d6527d11a..6eda88e648a 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FinalisePeriodApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FinalisePeriodApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.PaymentStatus
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.v1.model.FinalisePeriodInfoDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingContractApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingContractApiImpl.groovy
index 03e56c5cd50..5c2c9185129 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingContractApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingContractApiImpl.groovy
@@ -11,9 +11,14 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.dao.FundingSourceDao
+import ish.oncourse.server.api.v1.model.FundingSourceDTO
+import ish.oncourse.server.api.v1.service.FundingContractApi
+import ish.oncourse.server.cayenne.FundingSource
+import org.apache.cayenne.ObjectContext
+
import static ish.oncourse.server.api.function.EntityFunctions.checkForBadRequest
import static ish.oncourse.server.api.function.EntityFunctions.validateEntityExistence
import static ish.oncourse.server.api.function.EntityFunctions.validateIdParam
@@ -22,10 +27,6 @@ import static ish.oncourse.server.api.v1.function.FundingContractFunctions.toRes
import static ish.oncourse.server.api.v1.function.FundingContractFunctions.validateForDelete
import static ish.oncourse.server.api.v1.function.FundingContractFunctions.validateForPatch
import static ish.oncourse.server.api.v1.function.FundingContractFunctions.validateForSave
-import ish.oncourse.server.api.v1.model.FundingSourceDTO
-import ish.oncourse.server.api.v1.service.FundingContractApi
-import ish.oncourse.server.cayenne.FundingSource
-import org.apache.cayenne.ObjectContext
class FundingContractApiImpl implements FundingContractApi {
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingUploadApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingUploadApiImpl.groovy
index 7da5e560a9e..d2f0269f336 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingUploadApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/FundingUploadApiImpl.groovy
@@ -11,24 +11,24 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.aql.AqlService
import ish.oncourse.server.ICayenneService
-import static ish.oncourse.server.api.function.CayenneFunctions.getRecordById
-import static ish.oncourse.server.api.function.EntityFunctions.addAqlExp
-import static ish.oncourse.server.api.function.EntityFunctions.checkForBadRequest
-import static ish.oncourse.server.api.function.EntityFunctions.validateEntityExistence
-import static ish.oncourse.server.api.function.EntityFunctions.validateIdParam
import ish.oncourse.server.api.v1.function.FundingUploadFunctions
-import static ish.oncourse.server.api.v1.function.FundingUploadFunctions.validateStatus
import ish.oncourse.server.api.v1.model.FundingUploadDTO
import ish.oncourse.server.api.v1.service.FundingUploadApi
import ish.oncourse.server.cayenne.FundingUpload
-import ish.oncourse.server.cayenne.glue.CayenneDataObject
import ish.oncourse.server.services.ISystemUserService
import org.apache.cayenne.ObjectContext
import org.apache.cayenne.query.ObjectSelect
+import static ish.oncourse.server.api.function.CayenneFunctions.getRecordById
+import static ish.oncourse.server.api.function.EntityFunctions.addAqlExp
+import static ish.oncourse.server.api.function.EntityFunctions.checkForBadRequest
+import static ish.oncourse.server.api.function.EntityFunctions.validateEntityExistence
+import static ish.oncourse.server.api.function.EntityFunctions.validateIdParam
+import static ish.oncourse.server.api.v1.function.FundingUploadFunctions.validateStatus
+
class FundingUploadApiImpl implements FundingUploadApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/GradingApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/GradingApiImpl.groovy
index b5d86bdbd3d..adb56f7e2c7 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/GradingApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/GradingApiImpl.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.GradingApiService
import ish.oncourse.server.api.v1.model.GradingTypeDTO
import ish.oncourse.server.api.v1.service.GradingApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/HolidayApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/HolidayApiImpl.groovy
index 199a35d253a..eb536a1e481 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/HolidayApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/HolidayApiImpl.groovy
@@ -11,14 +11,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.dao.UnavailableRuleDao
-import static ish.oncourse.server.api.v1.function.HolidayFunctions.getHolidayById
-import static ish.oncourse.server.api.v1.function.HolidayFunctions.toDbHoliday
-import static ish.oncourse.server.api.v1.function.HolidayFunctions.toRestHoliday
-import static ish.oncourse.server.api.v1.function.HolidayFunctions.validateFoUpdate
-import static ish.oncourse.server.api.v1.function.HolidayFunctions.validateForDelete
import ish.oncourse.server.api.v1.model.HolidayDTO
import ish.oncourse.server.api.v1.model.ValidationErrorDTO
import ish.oncourse.server.api.v1.service.HolidayApi
@@ -28,6 +23,12 @@ import org.apache.cayenne.ObjectContext
import javax.ws.rs.ClientErrorException
import javax.ws.rs.core.Response
+import static ish.oncourse.server.api.v1.function.HolidayFunctions.getHolidayById
+import static ish.oncourse.server.api.v1.function.HolidayFunctions.toDbHoliday
+import static ish.oncourse.server.api.v1.function.HolidayFunctions.toRestHoliday
+import static ish.oncourse.server.api.v1.function.HolidayFunctions.validateFoUpdate
+import static ish.oncourse.server.api.v1.function.HolidayFunctions.validateForDelete
+
class HolidayApiImpl implements HolidayApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ImportApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ImportApiImpl.groovy
index 23fe6dba4ef..c90b4235a75 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ImportApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ImportApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.json.JsonSlurper
import ish.oncourse.server.api.service.ImportApiService
import ish.oncourse.server.api.v1.model.AutomationConfigsDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/IntegrationApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/IntegrationApiImpl.groovy
index e57c172d31d..733826b3f0d 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/IntegrationApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/IntegrationApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.v1.login.Sso
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/InvoiceApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/InvoiceApiImpl.groovy
index f5f0df512eb..b8265326c4b 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/InvoiceApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/InvoiceApiImpl.groovy
@@ -11,9 +11,8 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.InvoiceApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.InvoiceDTO
import ish.oncourse.server.api.v1.service.InvoiceApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LeadApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LeadApiImpl.groovy
index 239c4d8f82d..4a979174e89 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LeadApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LeadApiImpl.groovy
@@ -8,9 +8,8 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.LeadApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.LeadDTO
import ish.oncourse.server.api.v1.service.LeadApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LogsApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LogsApiImpl.groovy
index c4d7da81ea6..9032919fb94 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LogsApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/LogsApiImpl.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.LogsApiService
import ish.oncourse.server.api.v1.model.DatesIntervalDTO
import ish.oncourse.server.api.v1.model.LogFileDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MembershipProductApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MembershipProductApiImpl.groovy
index c8149a7968b..fe2dc884087 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MembershipProductApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MembershipProductApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.service.MembershipProductApiService
import ish.oncourse.server.api.v1.function.EntityRelationFunctions
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MessageApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MessageApiImpl.groovy
index f81c49da270..291e91fcb1b 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MessageApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/MessageApiImpl.groovy
@@ -11,9 +11,8 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.MessageApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.MessageDTO
import ish.oncourse.server.api.v1.model.RecipientsDTO
import ish.oncourse.server.api.v1.model.SearchQueryDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ModuleApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ModuleApiImpl.groovy
index aaccadf5673..45e85646813 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ModuleApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ModuleApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.api.service.ModuleApiService
import ish.oncourse.server.api.v1.model.ModuleDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/NoteApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/NoteApiImpl.groovy
index 3ce20e5ba06..eb8433aefa3 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/NoteApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/NoteApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.NoteApiService
import ish.oncourse.server.api.v1.model.NoteDTO
import ish.oncourse.server.api.v1.service.NoteApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/OutcomeApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/OutcomeApiImpl.groovy
index faac6d1c861..062e11c6cbe 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/OutcomeApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/OutcomeApiImpl.groovy
@@ -11,9 +11,8 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.OutcomeApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.OutcomeDTO
import ish.oncourse.server.api.v1.service.OutcomeApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentApiImpl.groovy
index 7c04273e00a..e7bc220d995 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentApiImpl.groovy
@@ -11,17 +11,9 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
-import static ish.common.types.PaymentType.CHEQUE
-import static ish.common.types.PaymentType.CREDIT_CARD
-import static ish.common.types.PaymentType.OTHER
import ish.oncourse.server.ICayenneService
-import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.SYSTEM_TYPES
-import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.updateType
-import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.validateData
-import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.validateForDelete
-import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.validateForUpdate
import ish.oncourse.server.api.v1.model.PayTypeDTO
import ish.oncourse.server.api.v1.model.PaymentMethodDTO
import ish.oncourse.server.api.v1.model.ValidationErrorDTO
@@ -37,6 +29,15 @@ import javax.ws.rs.ClientErrorException
import javax.ws.rs.core.Response
import java.time.ZoneOffset
+import static ish.common.types.PaymentType.CHEQUE
+import static ish.common.types.PaymentType.CREDIT_CARD
+import static ish.common.types.PaymentType.OTHER
+import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.SYSTEM_TYPES
+import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.updateType
+import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.validateData
+import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.validateForDelete
+import static ish.oncourse.server.api.v1.function.PaymentTypeFunctions.validateForUpdate
+
@CompileStatic
class PaymentApiImpl implements PaymentApi {
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentInApiImpl.java b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentInApiImpl.java
index 13b5394e2e9..2b0d7db7a8c 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentInApiImpl.java
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentInApiImpl.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.api.service.PaymentInApiService;
import ish.oncourse.server.api.v1.model.BankingParamDTO;
import ish.oncourse.server.api.v1.model.PaymentInDTO;
@@ -27,7 +27,6 @@ public PaymentInDTO get(Long id) {
return service.get(id);
}
-
@Override
public void reverse(Long id) {
service.reverseWithCommit(id);
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentOutApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentOutApiImpl.groovy
index 53bf1eb3792..8c188ad5b73 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentOutApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PaymentOutApiImpl.groovy
@@ -11,12 +11,10 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
-import ish.common.types.PaymentType
+import javax.inject.Inject
import ish.oncourse.server.api.service.PaymentOutApiService
import ish.oncourse.server.api.v1.model.PaymentOutDTO
import ish.oncourse.server.api.v1.service.PaymentOutApi
-import ish.oncourse.server.cayenne.PaymentOut
class PaymentOutApiImpl implements PaymentOutApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayrollApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayrollApiImpl.groovy
index be6c7540375..e8715fe85e1 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayrollApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayrollApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import static ish.oncourse.server.api.function.EntityFunctions.checkForBadRequest
import static ish.oncourse.server.api.v1.function.PayrollFunctions.toPayrollGenerationRequest
import static ish.oncourse.server.api.v1.function.PayrollFunctions.toWagesToProcess
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayslipApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayslipApiImpl.groovy
index 9862c111098..e4abc266aff 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayslipApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PayslipApiImpl.groovy
@@ -11,12 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import static ish.oncourse.server.api.function.CayenneFunctions.getRecordById
import ish.oncourse.server.api.service.PayslipApiService
import static ish.oncourse.server.api.v1.function.PayslipFunctions.markAs
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.PayslipDTO
import ish.oncourse.server.api.v1.model.PayslipRequestDTO
import ish.oncourse.server.api.v1.service.PayslipApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfApiImpl.groovy
index 19d6f05adbe..13291593ed9 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.aql.AqlService
import ish.oncourse.server.ICayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfTemplateApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfTemplateApiImpl.groovy
index 0130288600f..97f2329607b 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfTemplateApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PdfTemplateApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.ReportApiService
import ish.oncourse.server.api.v1.model.AutomationConfigsDTO
import ish.oncourse.server.api.v1.model.ReportDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PreferenceApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PreferenceApiImpl.groovy
index 4cbbb679506..6e6c9f0db36 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PreferenceApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PreferenceApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.ClassFundingSource
import ish.common.types.DeliveryMode
import ish.common.types.MessageStatus
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PriorLearningApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PriorLearningApiImpl.groovy
index 53710323074..978df5fa78f 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PriorLearningApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/PriorLearningApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.PriorLearningApiService
import ish.oncourse.server.api.v1.model.PriorLearningDTO
import ish.oncourse.server.api.v1.service.PriorLearningApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ProductItemApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ProductItemApiImpl.groovy
index 52195ec19e2..b816027bf3e 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ProductItemApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ProductItemApiImpl.groovy
@@ -11,9 +11,8 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.ProductItemApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.ProductItemCancelDTO
import ish.oncourse.server.api.v1.model.ProductItemDTO
import ish.oncourse.server.api.v1.service.ProductItemApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/QualificationApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/QualificationApiImpl.groovy
index 7b623abfa7b..ef81224cacd 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/QualificationApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/QualificationApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.QualificationApiService
import ish.oncourse.server.api.v1.model.QualificationDTO
import ish.oncourse.server.api.v1.service.QualificationApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ReportOverlayApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ReportOverlayApiImpl.groovy
index 06d63ee54c7..9d0f1e74f40 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ReportOverlayApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ReportOverlayApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.v1.model.ReportOverlayDTO
@@ -52,8 +52,6 @@ class ReportOverlayApiImpl implements ReportOverlayApi {
context.commitChanges()
}
-
-
@Override
void remove(Long id) {
ObjectContext context = cayenneService.newContext
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomApiImpl.groovy
index b612fb2ad1c..552dba7f193 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomApiImpl.groovy
@@ -11,13 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.RoomApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.RoomDTO
import ish.oncourse.server.api.v1.service.RoomApi
-
class RoomApiImpl implements RoomApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomValidationApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomValidationApiImpl.groovy
index 785f3fd38a1..3f6f884c391 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomValidationApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/RoomValidationApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.dao.RoomDao
import ish.oncourse.server.api.service.RoomApiService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ScriptApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ScriptApiImpl.groovy
index c19d9fd58d4..57507c1403d 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ScriptApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/ScriptApiImpl.groovy
@@ -12,7 +12,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.v1.model.AutomationConfigsDTO
import ish.oncourse.types.OutputType
import ish.oncourse.aql.AqlService
@@ -23,18 +23,13 @@ import ish.oncourse.server.api.v1.model.ScriptDTO
import ish.oncourse.server.api.v1.service.ScriptApi
import ish.oncourse.server.api.validation.EntityValidator
import ish.scripting.ScriptResult
-import org.apache.logging.log4j.LogManager
-import org.apache.logging.log4j.Logger
import javax.servlet.http.HttpServletResponse
import javax.ws.rs.core.Context
import java.time.LocalDateTime
-
class ScriptApiImpl implements ScriptApi {
- private static final Logger logger = LogManager.getLogger();
-
@Inject
private ICayenneService cayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SessionApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SessionApiImpl.groovy
index bc40051c329..4c2ece24e60 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SessionApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SessionApiImpl.groovy
@@ -13,7 +13,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.SessionApiService
import ish.oncourse.server.api.v1.model.SessionDTO
import ish.oncourse.server.api.v1.model.SessionWarningDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SiteApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SiteApiImpl.groovy
index dab9f9af335..cd1f7f29c5d 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SiteApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SiteApiImpl.groovy
@@ -11,13 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.SiteApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.SiteDTO
import ish.oncourse.server.api.v1.service.SiteApi
-
class SiteApiImpl implements SiteApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SurveyApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SurveyApiImpl.groovy
index 266f0d703a1..83183106fa3 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SurveyApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/SurveyApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.SurveyApiService
import ish.oncourse.server.api.v1.model.SurveyItemDTO
import ish.oncourse.server.api.v1.service.SurveyApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TagApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TagApiImpl.groovy
index 7065493d729..f28aea97a6b 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TagApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TagApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.NodeType
import ish.oncourse.aql.AqlService
import ish.oncourse.cayenne.TaggableClasses
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TaxApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TaxApiImpl.groovy
index bcc483c1bee..48a58063685 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TaxApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TaxApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import static ish.oncourse.server.api.v1.function.TaxFunctions.GST_TAX_CODE
import static ish.oncourse.server.api.v1.function.TaxFunctions.GST_exempt_TAX_CODE
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TimetableApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TimetableApiImpl.groovy
index ef5e84868e8..9e007606278 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TimetableApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TimetableApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.aql.AqlService
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.dao.SessionDao
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TransactionApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TransactionApiImpl.groovy
index 774ea880074..6ae9b335319 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TransactionApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TransactionApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.math.Money
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.accounting.AccountTransactionService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TutorRoleApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TutorRoleApiImpl.groovy
index 8e25291f34d..017015c6262 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TutorRoleApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/TutorRoleApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.TutorRoleApiService
import ish.oncourse.server.api.v1.model.DefinedTutorRoleDTO
import ish.oncourse.server.api.v1.service.TutorRoleApi
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserApiImpl.groovy
index 4f43018b93d..95fb00495a9 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserApiImpl.groovy
@@ -11,8 +11,8 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
-import com.google.inject.Provider
+import javax.inject.Inject
+import javax.inject.Provider
import com.nulabinc.zxcvbn.Strength
import com.nulabinc.zxcvbn.Zxcvbn
import ish.oncourse.server.ICayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserPreferenceApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserPreferenceApiImpl.groovy
index d4660507cbf..2eb3f7158de 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserPreferenceApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserPreferenceApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.PreferenceController
import ish.oncourse.server.api.v1.model.PreferenceEnumDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserRoleApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserRoleApiImpl.groovy
index cc2152e32e5..49ee7691358 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserRoleApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/UserRoleApiImpl.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.function.CayenneFunctions
import static ish.oncourse.server.api.v1.function.UserRoleFunctions.toDbACLRole
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/VoucherProductApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/VoucherProductApiImpl.groovy
index f1576ea2a6a..1e9ab65ab87 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/VoucherProductApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/VoucherProductApiImpl.groovy
@@ -11,11 +11,10 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.service.VoucherProductApiService
import ish.oncourse.server.api.v1.function.EntityRelationFunctions
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.VoucherProductDTO
import ish.oncourse.server.api.v1.service.VoucherProductApi
import ish.oncourse.server.cayenne.Product
@@ -29,7 +28,6 @@ class VoucherProductApiImpl implements VoucherProductApi {
@Inject
private VoucherProductApiService service
-
@Override
void create(VoucherProductDTO voucherProductDTO) {
VoucherProduct dbModel = service.create(voucherProductDTO)
diff --git a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/WaitingListApiImpl.groovy b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/WaitingListApiImpl.groovy
index 567fce92337..1191a4bb688 100644
--- a/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/WaitingListApiImpl.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/api/v1/service/impl/WaitingListApiImpl.groovy
@@ -11,13 +11,11 @@
package ish.oncourse.server.api.v1.service.impl
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.service.WaitingListApiService
-import ish.oncourse.server.api.v1.model.DiffDTO
import ish.oncourse.server.api.v1.model.WaitingListDTO
import ish.oncourse.server.api.v1.service.WaitingListApi
-
class WaitingListApiImpl implements WaitingListApi {
@Inject
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/CertificateTrait.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/CertificateTrait.groovy
index 2b91f80f516..5e92a0f8431 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/CertificateTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/CertificateTrait.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.API
import ish.oncourse.server.api.service.PortalWebsiteService
import ish.util.UrlUtil
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/ContactTrait.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/ContactTrait.groovy
index a08f09eaec4..b476eeca6b7 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/ContactTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/ContactTrait.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.ProductStatus
import ish.oncourse.API
import ish.oncourse.server.PreferenceController
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/CourseTrait.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/CourseTrait.groovy
index 4c5e288d7cb..c614307411a 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/CourseTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/CourseTrait.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.API
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.v1.model.CourseStatusDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/Document.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/Document.groovy
index a50fcf9a317..e316d2cfb44 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/Document.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/Document.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.AttachmentInfoVisibility
import ish.common.types.NodeType
import ish.oncourse.API
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/GradingTypeTrait.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/GradingTypeTrait.groovy
index 0462150a0ca..7f1a4a7f8f0 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/GradingTypeTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/GradingTypeTrait.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.GradingEntryType
import ish.oncourse.server.ICayenneService
import org.apache.cayenne.query.ObjectSelect
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/Invoice.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/Invoice.groovy
index 737929678b1..07b0a7ce03a 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/Invoice.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/Invoice.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.EnrolmentStatus
import ish.common.types.InvoiceType
import ish.math.Money
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/MembershipProductTrait.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/MembershipProductTrait.groovy
index ad7e917c470..0a856096c3e 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/MembershipProductTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/MembershipProductTrait.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.ProductStatus
import ish.oncourse.server.ICayenneService
import org.apache.cayenne.query.ObjectSelect
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/Preference.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/Preference.groovy
index e3be2f42c88..00186fcc3ce 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/Preference.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/Preference.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.API
import ish.oncourse.cayenne.QueueableEntity
import ish.oncourse.entity.services.TagService
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/Quote.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/Quote.groovy
index 665d2fbbed5..48fc6e0671f 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/Quote.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/Quote.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.InvoiceType
import ish.math.Money
import ish.oncourse.API
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/RoomTrait.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/RoomTrait.groovy
index b0fd340419a..b9c5b5d8174 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/RoomTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/RoomTrait.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.CourseClassType
import ish.oncourse.server.ICayenneService
import org.apache.cayenne.query.ObjectSelect
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/Student.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/Student.groovy
index 7eb32317e76..5c8dcd0a8db 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/Student.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/Student.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import com.sun.istack.NotNull
import ish.common.types.AttendanceType
import ish.common.types.AvetmissStudentDisabilityType
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/StudentTrait.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/StudentTrait.groovy
index f21cc772b5e..1189ec64201 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/StudentTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/StudentTrait.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import org.apache.cayenne.ObjectContext
import org.apache.cayenne.query.ObjectSelect
diff --git a/server/src/main/groovy/ish/oncourse/server/cayenne/TagRelation.groovy b/server/src/main/groovy/ish/oncourse/server/cayenne/TagRelation.groovy
index 715959c5a67..0404f015cc4 100644
--- a/server/src/main/groovy/ish/oncourse/server/cayenne/TagRelation.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/cayenne/TagRelation.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.NodeType
import ish.common.types.SystemEventType
import ish.common.types.TypesUtil
@@ -20,7 +20,6 @@ import ish.oncourse.cayenne.QueueableEntity
import ish.oncourse.cayenne.Taggable
import ish.oncourse.cayenne.TaggableClasses
import ish.oncourse.common.SystemEvent
-import ish.oncourse.server.cayenne.glue.TaggableCayenneDataObject
import ish.oncourse.server.cayenne.glue._TagRelation
import ish.oncourse.server.integration.EventService
import ish.validation.ValidationFailure
@@ -28,7 +27,6 @@ import org.apache.cayenne.validation.ValidationResult
import javax.annotation.Nonnull
import javax.annotation.Nullable
-import java.util.Date
/**
* Object representing relation between tag and entity record tagged with it.
diff --git a/server/src/main/groovy/ish/oncourse/server/checkout/CheckoutApiService.groovy b/server/src/main/groovy/ish/oncourse/server/checkout/CheckoutApiService.groovy
index 9e93bd8c49f..fe35419cbb6 100644
--- a/server/src/main/groovy/ish/oncourse/server/checkout/CheckoutApiService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/checkout/CheckoutApiService.groovy
@@ -8,8 +8,8 @@
package ish.oncourse.server.checkout
-import com.google.inject.Inject
-import com.google.inject.Injector
+import javax.inject.Inject
+import io.bootique.di.Injector
import ish.common.checkout.gateway.PaymentGatewayError
import ish.common.types.PaymentGatewayType
import ish.common.types.SystemEventType
diff --git a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentAPI.groovy b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentAPI.groovy
index 269a19daff3..05e2f9563d7 100644
--- a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentAPI.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentAPI.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.checkout.gateway.eway
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.json.JsonOutput
import groovy.transform.CompileStatic
import groovy.transform.TypeCheckingMode
diff --git a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentService.groovy b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentService.groovy
index cd00f523682..653cb1e272a 100644
--- a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/EWayPaymentService.groovy
@@ -8,8 +8,8 @@
package ish.oncourse.server.checkout.gateway.eway
-import com.google.inject.Inject
-import com.google.inject.Injector
+import javax.inject.Inject
+import io.bootique.di.Injector
import ish.math.Money
import ish.oncourse.server.api.checkout.Checkout
import ish.oncourse.server.api.v1.model.CheckoutResponseDTO
diff --git a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/test/EWayTestPaymentService.groovy b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/test/EWayTestPaymentService.groovy
index 9faff0aa104..f6f2c0e2696 100644
--- a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/test/EWayTestPaymentService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/eway/test/EWayTestPaymentService.groovy
@@ -8,8 +8,8 @@
package ish.oncourse.server.checkout.gateway.eway.test
-import com.google.inject.Inject
-import com.google.inject.Injector
+import javax.inject.Inject
+import io.bootique.di.Injector
import ish.oncourse.server.checkout.gateway.eway.EWayPaymentService
class EWayTestPaymentService extends EWayPaymentService {
diff --git a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentAPI.groovy b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentAPI.groovy
index eeb96b3d403..2c9af6fd852 100644
--- a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentAPI.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentAPI.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.checkout.gateway.windcave
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.json.JsonOutput
import groovy.transform.CompileStatic
import groovy.transform.TypeCheckingMode
diff --git a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentService.groovy b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentService.groovy
index d1647e4f65e..d2c412c825e 100644
--- a/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/checkout/gateway/windcave/WindcavePaymentService.groovy
@@ -8,7 +8,7 @@
package ish.oncourse.server.checkout.gateway.windcave
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.checkout.gateway.SessionAttributes
import ish.math.Money
import ish.oncourse.server.PreferenceController
diff --git a/server/src/main/groovy/ish/oncourse/server/dashboard/DashboardSearchManager.groovy b/server/src/main/groovy/ish/oncourse/server/dashboard/DashboardSearchManager.groovy
index 1fcd6895d41..310de4552e7 100644
--- a/server/src/main/groovy/ish/oncourse/server/dashboard/DashboardSearchManager.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/dashboard/DashboardSearchManager.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.dashboard
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.api.v1.model.SearchGroupDTO
class DashboardSearchManager {
diff --git a/server/src/main/groovy/ish/oncourse/server/dashboard/EntitySearchService.groovy b/server/src/main/groovy/ish/oncourse/server/dashboard/EntitySearchService.groovy
index f824a0aa2ed..c447d342ec0 100644
--- a/server/src/main/groovy/ish/oncourse/server/dashboard/EntitySearchService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/dashboard/EntitySearchService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.dashboard
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.types.KeyCode
import ish.common.types.Mask
import ish.oncourse.aql.AqlService
diff --git a/server/src/main/groovy/ish/oncourse/server/deduplication/ContactMergeService.groovy b/server/src/main/groovy/ish/oncourse/server/deduplication/ContactMergeService.groovy
index 2363399efe4..bd5a05acc09 100644
--- a/server/src/main/groovy/ish/oncourse/server/deduplication/ContactMergeService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/deduplication/ContactMergeService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.deduplication
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.CayenneService
import ish.oncourse.server.api.dao.ContactDao
diff --git a/server/src/main/groovy/ish/oncourse/server/document/DocumentModule.groovy b/server/src/main/groovy/ish/oncourse/server/document/DocumentModule.groovy
index 73ae304f9b4..d5e1677438b 100644
--- a/server/src/main/groovy/ish/oncourse/server/document/DocumentModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/document/DocumentModule.groovy
@@ -8,8 +8,8 @@
package ish.oncourse.server.document
-import com.google.inject.Provides
-import com.google.inject.Singleton
+import io.bootique.di.Provides
+import javax.inject.Singleton
import io.bootique.ConfigModule
import io.bootique.config.ConfigurationFactory
import ish.oncourse.server.ICayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/entity/mixins/MixinHelper.groovy b/server/src/main/groovy/ish/oncourse/server/entity/mixins/MixinHelper.groovy
index fac0bd4252d..7a2332c333e 100644
--- a/server/src/main/groovy/ish/oncourse/server/entity/mixins/MixinHelper.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/entity/mixins/MixinHelper.groovy
@@ -11,8 +11,8 @@
package ish.oncourse.server.entity.mixins
-import com.google.inject.Inject
-import com.google.inject.Injector
+import javax.inject.Inject
+import io.bootique.di.Injector
import groovy.transform.CompileDynamic
import ish.oncourse.cayenne.PersistentObjectI
import ish.oncourse.server.cayenne.Account
diff --git a/server/src/main/groovy/ish/oncourse/server/export/ExportService.groovy b/server/src/main/groovy/ish/oncourse/server/export/ExportService.groovy
index f4ca2896685..9ec21a3e5cc 100644
--- a/server/src/main/groovy/ish/oncourse/server/export/ExportService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/export/ExportService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.export
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.json.JsonGenerator
import groovy.json.StreamingJsonBuilder
import groovy.transform.CompileDynamic
diff --git a/server/src/main/groovy/ish/oncourse/server/imports/ImportService.groovy b/server/src/main/groovy/ish/oncourse/server/imports/ImportService.groovy
index 5a59e349411..aa142ca4eae 100644
--- a/server/src/main/groovy/ish/oncourse/server/imports/ImportService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/imports/ImportService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.imports
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileDynamic
import groovy.transform.CompileStatic
import ish.imports.ImportParameter
diff --git a/server/src/main/groovy/ish/oncourse/server/integration/OnConfigure.groovy b/server/src/main/groovy/ish/oncourse/server/integration/OnConfigure.groovy
index 4c7fbe781c4..dff0021d778 100644
--- a/server/src/main/groovy/ish/oncourse/server/integration/OnConfigure.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/integration/OnConfigure.groovy
@@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy
import java.lang.annotation.Target
/**
- * Use this for static void method that accept single com.google.inject.Binder argument
+ * Use this for static void method that accept single io.bootique.di.Binder argument
* Is called on DI configuration phase
*/
diff --git a/server/src/main/groovy/ish/oncourse/server/integration/PluginService.groovy b/server/src/main/groovy/ish/oncourse/server/integration/PluginService.groovy
index a055be1003c..49737f089b6 100644
--- a/server/src/main/groovy/ish/oncourse/server/integration/PluginService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/integration/PluginService.groovy
@@ -11,9 +11,9 @@
package ish.oncourse.server.integration
-import com.google.inject.Binder
-import com.google.inject.Inject
-import com.google.inject.Injector
+import io.bootique.di.Binder
+import javax.inject.Inject
+import io.bootique.di.Injector
import groovy.transform.CompileStatic
import io.bootique.cayenne.CayenneModule
import org.reflections.Reflections
diff --git a/server/src/main/groovy/ish/oncourse/server/integration/PluginTrait.groovy b/server/src/main/groovy/ish/oncourse/server/integration/PluginTrait.groovy
index 8e57812d8d2..b7bee0d2f85 100644
--- a/server/src/main/groovy/ish/oncourse/server/integration/PluginTrait.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/integration/PluginTrait.groovy
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.integration
-import com.google.inject.Injector
+import io.bootique.di.Injector
import ish.oncourse.aql.AqlService
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.PreferenceController
diff --git a/server/src/main/groovy/ish/oncourse/server/messaging/MailDeliveryService.groovy b/server/src/main/groovy/ish/oncourse/server/messaging/MailDeliveryService.groovy
index 4d897e46349..20ab0046f42 100644
--- a/server/src/main/groovy/ish/oncourse/server/messaging/MailDeliveryService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/messaging/MailDeliveryService.groovy
@@ -11,12 +11,11 @@
package ish.oncourse.server.messaging
-import com.google.inject.Inject
-import com.google.inject.name.Named
+import javax.inject.Inject
+import javax.inject.Named
import com.sun.mail.smtp.SMTPMessage
import groovy.transform.CompileDynamic
import ish.oncourse.server.AngelModule
-import ish.oncourse.server.PreferenceController
import static javax.mail.Message.RecipientType
import org.apache.commons.lang3.StringUtils
diff --git a/server/src/main/groovy/ish/oncourse/server/messaging/MailSession.groovy b/server/src/main/groovy/ish/oncourse/server/messaging/MailSession.groovy
index b437b885dc9..e199b4b0880 100644
--- a/server/src/main/groovy/ish/oncourse/server/messaging/MailSession.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/messaging/MailSession.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.messaging
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileDynamic
import org.apache.commons.lang3.StringUtils
import org.apache.logging.log4j.LogManager
diff --git a/server/src/main/groovy/ish/oncourse/server/messaging/MessageService.groovy b/server/src/main/groovy/ish/oncourse/server/messaging/MessageService.groovy
index 9a0ef683232..7ffcf7b334f 100644
--- a/server/src/main/groovy/ish/oncourse/server/messaging/MessageService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/messaging/MessageService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.messaging
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileDynamic
import ish.common.types.MessageStatus
import ish.common.types.MessageType
diff --git a/server/src/main/groovy/ish/oncourse/server/messaging/SMTPModule.groovy b/server/src/main/groovy/ish/oncourse/server/messaging/SMTPModule.groovy
index 337e9b6d9d6..f25334ac082 100644
--- a/server/src/main/groovy/ish/oncourse/server/messaging/SMTPModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/messaging/SMTPModule.groovy
@@ -8,8 +8,8 @@
package ish.oncourse.server.messaging
-import com.google.inject.Provides
-import com.google.inject.Singleton
+import io.bootique.di.Provides
+import javax.inject.Singleton
import io.bootique.ConfigModule
import io.bootique.config.ConfigurationFactory
diff --git a/server/src/main/groovy/ish/oncourse/server/modules/ApiCayenneLayerModule.groovy b/server/src/main/groovy/ish/oncourse/server/modules/ApiCayenneLayerModule.groovy
index 8994fc9b8c9..4d29267fd91 100644
--- a/server/src/main/groovy/ish/oncourse/server/modules/ApiCayenneLayerModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/modules/ApiCayenneLayerModule.groovy
@@ -11,9 +11,8 @@
package ish.oncourse.server.modules
-import com.google.inject.Binder
-import com.google.inject.Module
-import com.google.inject.Scopes
+import io.bootique.di.Binder
+import io.bootique.di.BQModule
import ish.oncourse.server.api.dao.AccountDao
import ish.oncourse.server.api.dao.ApiTokenDao
import ish.oncourse.server.api.dao.ApplicationDao
@@ -71,81 +70,80 @@ import ish.oncourse.server.api.dao.VoucherProductCourseDao
import ish.oncourse.server.api.dao.VoucherProductDao
import ish.oncourse.server.api.dao.WaitingListDao
-class ApiCayenneLayerModule implements Module {
+class ApiCayenneLayerModule implements BQModule {
@Override
void configure(Binder binder) {
- binder.bind(AccountDao).in(Scopes.SINGLETON)
- binder.bind(ApplicationDao).in(Scopes.SINGLETON)
- binder.bind(ArticleProductDao).in(Scopes.SINGLETON)
- binder.bind(AssessmentDao).in(Scopes.SINGLETON)
- binder.bind(AssessmentSubmissionDao).in(Scopes.SINGLETON)
-
-
- binder.bind(CertificateDao).in(Scopes.SINGLETON)
- binder.bind(CertificateOutcomeDao).in(Scopes.SINGLETON)
- binder.bind(ContactDao).in(Scopes.SINGLETON)
- binder.bind(ContactRelationTypeDao).in(Scopes.SINGLETON)
- binder.bind(CorporatePassDao).in(Scopes.SINGLETON)
- binder.bind(CorporatePassProductDao).in(Scopes.SINGLETON)
- binder.bind(CourseDao).in(Scopes.SINGLETON)
- binder.bind(CourseModuleDao).in(Scopes.SINGLETON)
- binder.bind(CourseClassDao).in(Scopes.SINGLETON)
-
- binder.bind(DefinedTutorRoleDao).in(Scopes.SINGLETON)
- binder.bind(DiscountDao).in(Scopes.SINGLETON)
- binder.bind(DiscountMembershipDao).in(Scopes.SINGLETON)
- binder.bind(DiscountMembershipRelationTypeDao).in(Scopes.SINGLETON)
- binder.bind(DocumentDao).in(Scopes.SINGLETON)
-
- binder.bind(EmailTemplateDao).in(Scopes.SINGLETON)
- binder.bind(EnrolmentDao).in(Scopes.SINGLETON)
- binder.bind(EntityRelationDao).in(Scopes.SINGLETON)
- binder.bind(EntityRelationTypeDao).in(Scopes.SINGLETON)
- binder.bind(ExportTemplateDao).in(Scopes.SINGLETON)
-
- binder.bind(FacultyDao).in(Scopes.SINGLETON)
- binder.bind(FieldConfigurationSchemeDao).in(Scopes.SINGLETON)
- binder.bind(GradingTypeDao).in(Scopes.SINGLETON)
-
- binder.bind(ImportDao).in(Scopes.SINGLETON)
- binder.bind(InvoiceDao).in(Scopes.SINGLETON)
- binder.bind(InvoiceDueDateDao).in(Scopes.SINGLETON)
- binder.bind(InvoiceLineDao).in(Scopes.SINGLETON)
-
- binder.bind(LeadDao).in(Scopes.SINGLETON)
- binder.bind(MembershipProductDao).in(Scopes.SINGLETON)
- binder.bind(MessageDao).in(Scopes.SINGLETON)
- binder.bind(ModuleDao).in(Scopes.SINGLETON)
-
- binder.bind(OutcomeDao).in(Scopes.SINGLETON)
-
- binder.bind(PaymentInDao).in(Scopes.SINGLETON)
- binder.bind(PayRateDao).in(Scopes.SINGLETON)
- binder.bind(PriorLearningDao).in(Scopes.SINGLETON)
- binder.bind(ProductDao).in(Scopes.SINGLETON)
- binder.bind(PayslipDao).in(Scopes.SINGLETON)
-
- binder.bind(QualificationDao).in(Scopes.SINGLETON)
-
- binder.bind(SurveyDao).in(Scopes.SINGLETON)
- binder.bind(ScriptDao).in(Scopes.SINGLETON)
-
- binder.bind(TaxDao).in(Scopes.SINGLETON)
-
- binder.bind(VoucherProductCourseDao).in(Scopes.SINGLETON)
- binder.bind(VoucherProductDao).in(Scopes.SINGLETON)
- binder.bind(ReportDao).in(Scopes.SINGLETON)
- binder.bind(ReportOverlayDao).in(Scopes.SINGLETON)
- binder.bind(NoteDao).in(Scopes.SINGLETON)
- binder.bind(CourseClassDao).in(Scopes.SINGLETON)
- binder.bind(CourseClassTutorDao).in(Scopes.SINGLETON)
- binder.bind(ClassCostDao).in(Scopes.SINGLETON)
-
- binder.bind(UnavailableRuleDao).in(Scopes.SINGLETON)
- binder.bind(UserDao).in(Scopes.SINGLETON)
- binder.bind(WaitingListDao).in(Scopes.SINGLETON)
- binder.bind(ApiTokenDao).in(Scopes.SINGLETON)
-
+ binder.bind(AccountDao).inSingletonScope()
+ binder.bind(ApplicationDao).inSingletonScope()
+ binder.bind(ArticleProductDao).inSingletonScope()
+ binder.bind(AssessmentDao).inSingletonScope()
+ binder.bind(AssessmentSubmissionDao).inSingletonScope()
+
+
+ binder.bind(CertificateDao).inSingletonScope()
+ binder.bind(CertificateOutcomeDao).inSingletonScope()
+ binder.bind(ContactDao).inSingletonScope()
+ binder.bind(ContactRelationTypeDao).inSingletonScope()
+ binder.bind(CorporatePassDao).inSingletonScope()
+ binder.bind(CorporatePassProductDao).inSingletonScope()
+ binder.bind(CourseDao).inSingletonScope()
+ binder.bind(CourseModuleDao).inSingletonScope()
+ binder.bind(CourseClassDao).inSingletonScope()
+
+ binder.bind(DefinedTutorRoleDao).inSingletonScope()
+ binder.bind(DiscountDao).inSingletonScope()
+ binder.bind(DiscountMembershipDao).inSingletonScope()
+ binder.bind(DiscountMembershipRelationTypeDao).inSingletonScope()
+ binder.bind(DocumentDao).inSingletonScope()
+
+ binder.bind(EmailTemplateDao).inSingletonScope()
+ binder.bind(EnrolmentDao).inSingletonScope()
+ binder.bind(EntityRelationDao).inSingletonScope()
+ binder.bind(EntityRelationTypeDao).inSingletonScope()
+ binder.bind(ExportTemplateDao).inSingletonScope()
+
+ binder.bind(FacultyDao).inSingletonScope()
+ binder.bind(FieldConfigurationSchemeDao).inSingletonScope()
+ binder.bind(GradingTypeDao).inSingletonScope()
+
+ binder.bind(ImportDao).inSingletonScope()
+ binder.bind(InvoiceDao).inSingletonScope()
+ binder.bind(InvoiceDueDateDao).inSingletonScope()
+ binder.bind(InvoiceLineDao).inSingletonScope()
+
+ binder.bind(LeadDao).inSingletonScope()
+ binder.bind(MembershipProductDao).inSingletonScope()
+ binder.bind(MessageDao).inSingletonScope()
+ binder.bind(ModuleDao).inSingletonScope()
+
+ binder.bind(OutcomeDao).inSingletonScope()
+
+ binder.bind(PaymentInDao).inSingletonScope()
+ binder.bind(PayRateDao).inSingletonScope()
+ binder.bind(PriorLearningDao).inSingletonScope()
+ binder.bind(ProductDao).inSingletonScope()
+ binder.bind(PayslipDao).inSingletonScope()
+
+ binder.bind(QualificationDao).inSingletonScope()
+
+ binder.bind(SurveyDao).inSingletonScope()
+ binder.bind(ScriptDao).inSingletonScope()
+
+ binder.bind(TaxDao).inSingletonScope()
+
+ binder.bind(VoucherProductCourseDao).inSingletonScope()
+ binder.bind(VoucherProductDao).inSingletonScope()
+ binder.bind(ReportDao).inSingletonScope()
+ binder.bind(ReportOverlayDao).inSingletonScope()
+ binder.bind(NoteDao).inSingletonScope()
+ binder.bind(CourseClassDao).inSingletonScope()
+ binder.bind(CourseClassTutorDao).inSingletonScope()
+ binder.bind(ClassCostDao).inSingletonScope()
+
+ binder.bind(UnavailableRuleDao).inSingletonScope()
+ binder.bind(UserDao).inSingletonScope()
+ binder.bind(WaitingListDao).inSingletonScope()
+ binder.bind(ApiTokenDao).inSingletonScope()
}
}
diff --git a/server/src/main/groovy/ish/oncourse/server/modules/ApiImplementationModule.groovy b/server/src/main/groovy/ish/oncourse/server/modules/ApiImplementationModule.groovy
index fe39bda1694..5ed3e51c520 100644
--- a/server/src/main/groovy/ish/oncourse/server/modules/ApiImplementationModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/modules/ApiImplementationModule.groovy
@@ -11,8 +11,8 @@
package ish.oncourse.server.modules
-import com.google.inject.Binder
-import com.google.inject.Module
+import io.bootique.di.Binder
+import io.bootique.di.BQModule
import ish.oncourse.server.api.v1.service.AccessApi
import ish.oncourse.server.api.v1.service.AccountApi
import ish.oncourse.server.api.v1.service.ApplicationApi
@@ -176,7 +176,7 @@ import ish.oncourse.server.api.v1.service.impl.UserRoleApiImpl
import ish.oncourse.server.api.v1.service.impl.VoucherProductApiImpl
import ish.oncourse.server.api.v1.service.impl.WaitingListApiImpl
-class ApiImplementationModule implements Module {
+class ApiImplementationModule implements BQModule {
@Override
void configure(Binder binder) {
diff --git a/server/src/main/groovy/ish/oncourse/server/modules/ApiServiceModule.groovy b/server/src/main/groovy/ish/oncourse/server/modules/ApiServiceModule.groovy
index 140ecfe6cf5..14c7199f0f4 100644
--- a/server/src/main/groovy/ish/oncourse/server/modules/ApiServiceModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/modules/ApiServiceModule.groovy
@@ -11,145 +11,96 @@
package ish.oncourse.server.modules
-import com.google.inject.Binder
-import com.google.inject.Module
-import com.google.inject.Scopes
-import com.google.inject.multibindings.Multibinder
-import ish.oncourse.server.api.service.AccountApiService
-import ish.oncourse.server.api.service.ApiTokenApiService
-import ish.oncourse.server.api.service.ApplicationApiService
-import ish.oncourse.server.api.service.ArticleProductApiService
-import ish.oncourse.server.api.service.AssessmentApiService
-import ish.oncourse.server.api.service.AssessmentSubmissionApiService
-import ish.oncourse.server.api.service.BulkChangeApiService
-import ish.oncourse.server.api.service.CertificateApiService
-import ish.oncourse.server.api.service.ClassCostApiService
-import ish.oncourse.server.api.service.ContactApiService
-import ish.oncourse.server.api.service.CourseApiService
-import ish.oncourse.server.api.service.CourseClassApiService
-import ish.oncourse.server.api.service.CourseClassTutorApiService
-import ish.oncourse.server.api.service.DocumentApiService
-import ish.oncourse.server.api.service.EmailTemplateApiService
-import ish.oncourse.server.api.service.EnrolmentApiService
-import ish.oncourse.server.api.service.EntityApiService
-import ish.oncourse.server.api.service.EntityRelationTypeApiService
-import ish.oncourse.server.api.service.ExportTemplateApiService
-import ish.oncourse.server.api.service.FacultyApiService
-import ish.oncourse.server.api.service.GradingApiService
-import ish.oncourse.server.api.service.ImportApiService
-import ish.oncourse.server.api.service.InvoiceApiService
-import ish.oncourse.server.api.service.LeadApiService
-import ish.oncourse.server.api.service.LogsApiService
-import ish.oncourse.server.api.service.MembershipProductApiService
-import ish.oncourse.server.api.service.MessageApiService
-import ish.oncourse.server.api.service.ModuleApiService
-import ish.oncourse.server.api.service.NoteApiService
-import ish.oncourse.server.api.service.OutcomeApiService
-import ish.oncourse.server.api.service.PayslipApiService
-import ish.oncourse.server.api.service.PortalWebsiteService
-import ish.oncourse.server.api.service.PriorLearningApiService
-import ish.oncourse.server.api.service.QualificationApiService
-import ish.oncourse.server.api.service.ReportApiService
-import ish.oncourse.server.api.service.RoomApiService
-import ish.oncourse.server.api.service.ScriptApiService
-import ish.oncourse.server.api.service.SiteApiService
-import ish.oncourse.server.api.service.SurveyApiService
-import ish.oncourse.server.api.service.TutorRoleApiService
-import ish.oncourse.server.api.service.VoucherProductApiService
-import ish.oncourse.server.api.service.WaitingListApiService
+import io.bootique.di.BQModule
+import io.bootique.di.Binder
+import ish.oncourse.server.api.service.*
import ish.oncourse.server.api.validation.EntityValidator
import ish.oncourse.server.checkout.CheckoutApiService
+import ish.oncourse.server.checkout.gateway.eway.EWayPaymentAPI
+import ish.oncourse.server.checkout.gateway.eway.EWayPaymentService
import ish.oncourse.server.checkout.gateway.eway.test.EWayTestPaymentAPI
import ish.oncourse.server.checkout.gateway.eway.test.EWayTestPaymentService
import ish.oncourse.server.checkout.gateway.offline.OfflinePaymentService
-import ish.oncourse.server.concurrent.ExecutorManager
-import ish.oncourse.server.dashboard.ClassSearchService
-import ish.oncourse.server.dashboard.ContactSearchService
-import ish.oncourse.server.dashboard.CourseSearchService
-import ish.oncourse.server.dashboard.DashboardSearchManager
-import ish.oncourse.server.dashboard.EnrolmentSearchService
-import ish.oncourse.server.dashboard.InvoiceSearchService
-import ish.oncourse.server.checkout.gateway.eway.EWayPaymentAPI
-import ish.oncourse.server.checkout.gateway.eway.EWayPaymentService
import ish.oncourse.server.checkout.gateway.windcave.WindcavePaymentAPI
import ish.oncourse.server.checkout.gateway.windcave.WindcavePaymentService
+import ish.oncourse.server.concurrent.ExecutorManager
+import ish.oncourse.server.dashboard.*
-
-class ApiServiceModule implements Module {
+class ApiServiceModule implements BQModule {
@Override
void configure(Binder binder) {
- binder.bind(ExecutorManager).in(Scopes.SINGLETON)
+ binder.bind(ExecutorManager).inSingletonScope()
- binder.bind(ClassSearchService).in(Scopes.SINGLETON)
- binder.bind(ContactSearchService).in(Scopes.SINGLETON)
- binder.bind(CourseSearchService).in(Scopes.SINGLETON)
- binder.bind(EnrolmentSearchService).in(Scopes.SINGLETON)
- binder.bind(InvoiceSearchService).in(Scopes.SINGLETON)
- binder.bind(DashboardSearchManager).in(Scopes.SINGLETON)
+ binder.bind(ClassSearchService).inSingletonScope()
+ binder.bind(ContactSearchService).inSingletonScope()
+ binder.bind(CourseSearchService).inSingletonScope()
+ binder.bind(EnrolmentSearchService).inSingletonScope()
+ binder.bind(InvoiceSearchService).inSingletonScope()
+ binder.bind(DashboardSearchManager).inSingletonScope()
- binder.bind(EntityValidator).in(Scopes.SINGLETON)
+ binder.bind(EntityValidator).inSingletonScope()
- def entityServicesBinder = Multibinder.newSetBinder(binder, EntityApiService.class)
- entityServicesBinder.addBinding().to(ApplicationApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(ArticleProductApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(AssessmentApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(AssessmentSubmissionApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(ContactApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(CourseApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(CourseClassApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(DocumentApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(EnrolmentApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(ExportTemplateApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(GradingApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(ImportApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(InvoiceApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(LeadApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(MembershipProductApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(MessageApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(ModuleApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(NoteApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(OutcomeApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(PayslipApiService).in(Scopes.NO_SCOPE)
- entityServicesBinder.addBinding().to(RoomApiService).in(Scopes.NO_SCOPE)
- entityServicesBinder.addBinding().to(SiteApiService).in(Scopes.NO_SCOPE)
- entityServicesBinder.addBinding().to(VoucherProductApiService).in(Scopes.SINGLETON)
- entityServicesBinder.addBinding().to(WaitingListApiService).in(Scopes.NO_SCOPE)
- entityServicesBinder.addBinding().to(FacultyApiService).in(Scopes.SINGLETON)
+ def entityServicesBinder = binder.bindSet(EntityApiService.class)
+ entityServicesBinder.add(ApplicationApiService).inSingletonScope()
+ entityServicesBinder.add(ArticleProductApiService).inSingletonScope()
+ entityServicesBinder.add(AssessmentApiService).inSingletonScope()
+ entityServicesBinder.add(AssessmentSubmissionApiService).inSingletonScope()
+ entityServicesBinder.add(ContactApiService).inSingletonScope()
+ entityServicesBinder.add(CourseApiService).inSingletonScope()
+ entityServicesBinder.add(CourseClassApiService).inSingletonScope()
+ entityServicesBinder.add(DocumentApiService).inSingletonScope()
+ entityServicesBinder.add(EnrolmentApiService).inSingletonScope()
+ entityServicesBinder.add(ExportTemplateApiService).inSingletonScope()
+ entityServicesBinder.add(GradingApiService).inSingletonScope()
+ entityServicesBinder.add(ImportApiService).inSingletonScope()
+ entityServicesBinder.add(InvoiceApiService).inSingletonScope()
+ entityServicesBinder.add(LeadApiService).inSingletonScope()
+ entityServicesBinder.add(MembershipProductApiService).inSingletonScope()
+ entityServicesBinder.add(MessageApiService).inSingletonScope()
+ entityServicesBinder.add(ModuleApiService).inSingletonScope()
+ entityServicesBinder.add(NoteApiService).inSingletonScope()
+ entityServicesBinder.add(OutcomeApiService).inSingletonScope()
+ entityServicesBinder.add(PayslipApiService)
+ entityServicesBinder.add(RoomApiService)
+ entityServicesBinder.add(SiteApiService)
+ entityServicesBinder.add(VoucherProductApiService).inSingletonScope()
+ entityServicesBinder.add(WaitingListApiService)
+ entityServicesBinder.add(FacultyApiService).inSingletonScope()
- binder.bind(AccountApiService).in(Scopes.SINGLETON)
- binder.bind(ApiTokenApiService).in(Scopes.NO_SCOPE)
- binder.bind(CertificateApiService).in(Scopes.SINGLETON)
- binder.bind(ClassCostApiService).in(Scopes.SINGLETON)
- binder.bind(CourseClassTutorApiService).in(Scopes.SINGLETON)
- binder.bind(EmailTemplateApiService).in(Scopes.SINGLETON)
- binder.bind(EntityRelationTypeApiService).in(Scopes.NO_SCOPE)
- binder.bind(ExportTemplateApiService).in(Scopes.SINGLETON)
- binder.bind(FacultyApiService).in(Scopes.SINGLETON)
- binder.bind(GradingApiService).in(Scopes.SINGLETON)
- binder.bind(ImportApiService).in(Scopes.SINGLETON)
- binder.bind(InvoiceApiService).in(Scopes.SINGLETON)
- binder.bind(LeadApiService).in(Scopes.SINGLETON)
- binder.bind(LogsApiService).in(Scopes.SINGLETON)
- binder.bind(CheckoutApiService).in(Scopes.SINGLETON)
- binder.bind(EWayPaymentAPI).in(Scopes.SINGLETON)
- binder.bind(EWayPaymentService).in(Scopes.SINGLETON)
- binder.bind(EWayTestPaymentAPI).in(Scopes.SINGLETON)
- binder.bind(EWayTestPaymentService).in(Scopes.SINGLETON)
- binder.bind(OfflinePaymentService).in(Scopes.SINGLETON)
- binder.bind(WindcavePaymentAPI).in(Scopes.SINGLETON)
- binder.bind(WindcavePaymentService).in(Scopes.SINGLETON)
- binder.bind(PriorLearningApiService).in(Scopes.SINGLETON)
- binder.bind(QualificationApiService).in(Scopes.SINGLETON)
- binder.bind(ReportApiService).in(Scopes.SINGLETON)
- binder.bind(RoomApiService).in(Scopes.NO_SCOPE)
- binder.bind(ScriptApiService).in(Scopes.SINGLETON)
- binder.bind(SurveyApiService).in(Scopes.SINGLETON)
- binder.bind(TutorRoleApiService).in(Scopes.SINGLETON)
- binder.bind(BulkChangeApiService).in(Scopes.SINGLETON)
- binder.bind(VoucherProductApiService).in(Scopes.SINGLETON)
- binder.bind(WaitingListApiService).in(Scopes.NO_SCOPE)
- binder.bind(PortalWebsiteService).in(Scopes.SINGLETON)
+ binder.bind(AccountApiService).inSingletonScope()
+ binder.bind(ApiTokenApiService)
+ binder.bind(CertificateApiService).inSingletonScope()
+ binder.bind(ClassCostApiService).inSingletonScope()
+ binder.bind(CourseClassTutorApiService).inSingletonScope()
+ binder.bind(EmailTemplateApiService).inSingletonScope()
+ binder.bind(EntityRelationTypeApiService)
+ binder.bind(ExportTemplateApiService).inSingletonScope()
+ binder.bind(FacultyApiService).inSingletonScope()
+ binder.bind(GradingApiService).inSingletonScope()
+ binder.bind(ImportApiService).inSingletonScope()
+ binder.bind(InvoiceApiService).inSingletonScope()
+ binder.bind(LeadApiService).inSingletonScope()
+ binder.bind(LogsApiService).inSingletonScope()
+ binder.bind(CheckoutApiService).inSingletonScope()
+ binder.bind(EWayPaymentAPI).inSingletonScope()
+ binder.bind(EWayPaymentService).inSingletonScope()
+ binder.bind(EWayTestPaymentAPI).inSingletonScope()
+ binder.bind(EWayTestPaymentService).inSingletonScope()
+ binder.bind(OfflinePaymentService).inSingletonScope()
+ binder.bind(WindcavePaymentAPI).inSingletonScope()
+ binder.bind(WindcavePaymentService).inSingletonScope()
+ binder.bind(PriorLearningApiService).inSingletonScope()
+ binder.bind(QualificationApiService).inSingletonScope()
+ binder.bind(ReportApiService).inSingletonScope()
+ binder.bind(RoomApiService)
+ binder.bind(ScriptApiService).inSingletonScope()
+ binder.bind(SurveyApiService).inSingletonScope()
+ binder.bind(TutorRoleApiService).inSingletonScope()
+ binder.bind(BulkChangeApiService).inSingletonScope()
+ binder.bind(VoucherProductApiService).inSingletonScope()
+ binder.bind(WaitingListApiService)
+ binder.bind(PortalWebsiteService).inSingletonScope()
}
}
diff --git a/server/src/main/groovy/ish/oncourse/server/modules/CustomServicesModule.groovy b/server/src/main/groovy/ish/oncourse/server/modules/CustomServicesModule.groovy
index 5e94286659a..beceb70896c 100644
--- a/server/src/main/groovy/ish/oncourse/server/modules/CustomServicesModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/modules/CustomServicesModule.groovy
@@ -11,17 +11,16 @@
package ish.oncourse.server.modules
-import com.google.inject.Binder
-import com.google.inject.Module
-import com.google.inject.Scopes
+import io.bootique.di.BQModule
+import io.bootique.di.Binder
import ish.oncourse.server.api.service.RefundService
import ish.oncourse.server.duplicate.DuplicateInvoiceService
-class CustomServicesModule implements Module {
+class CustomServicesModule implements BQModule {
@Override
void configure(Binder binder) {
- binder.bind(DuplicateInvoiceService).in(Scopes.SINGLETON)
- binder.bind(RefundService).in(Scopes.SINGLETON)
+ binder.bind(DuplicateInvoiceService).inSingletonScope()
+ binder.bind(RefundService).inSingletonScope()
}
}
diff --git a/server/src/main/groovy/ish/oncourse/server/modules/JasperReportsModule.groovy b/server/src/main/groovy/ish/oncourse/server/modules/JasperReportsModule.groovy
index 395f065c409..b8ca1d2eb61 100644
--- a/server/src/main/groovy/ish/oncourse/server/modules/JasperReportsModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/modules/JasperReportsModule.groovy
@@ -8,11 +8,11 @@
package ish.oncourse.server.modules
-import com.google.inject.Binder
-import com.google.inject.Module
+import io.bootique.di.Binder
+import io.bootique.di.BQModule
import ish.oncourse.server.jasper.JasperReportsConfig
-class JasperReportsModule implements Module {
+class JasperReportsModule implements BQModule {
@Override
void configure(Binder binder) {
diff --git a/server/src/main/groovy/ish/oncourse/server/modules/MonitoringModule.groovy b/server/src/main/groovy/ish/oncourse/server/modules/MonitoringModule.groovy
index 8cc6cc53c92..d4516dae627 100644
--- a/server/src/main/groovy/ish/oncourse/server/modules/MonitoringModule.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/modules/MonitoringModule.groovy
@@ -8,15 +8,14 @@
package ish.oncourse.server.modules
-import com.google.inject.Binder
-import com.google.inject.Provides
-import com.google.inject.Scopes
-import com.google.inject.Singleton
-import com.google.inject.TypeLiteral
+import io.bootique.di.Binder
+import io.bootique.di.Provides
+import javax.inject.Singleton
+import io.bootique.di.TypeLiteral
import io.bootique.ConfigModule
import io.bootique.config.ConfigurationFactory
import io.bootique.jetty.MappedServlet
-import ish.oncourse.server.jetty.AngelJettyModule
+import io.bootique.jetty.AngelJettyModule
import ish.oncourse.server.monitoring.MonitoringService
import ish.oncourse.server.monitoring.MonitoringServiceFactory
import ish.oncourse.server.monitoring.MonitoringServletContextHandlerExtender
@@ -52,9 +51,9 @@ class MonitoringModule extends ConfigModule {
@Override
void configure(Binder binder) {
AngelJettyModule.extend(binder)
- .addMappedServlet(MONITORING_SERVLET)
- .addContextHandlerExtender(MonitoringServletContextHandlerExtender)
+ .addMappedServlet(MONITORING_SERVLET)
+ .addContextHandlerExtender(MonitoringServletContextHandlerExtender)
- binder.bind(MonitoringStatisticService.class).in(Scopes.SINGLETON)
+ binder.bind(MonitoringStatisticService.class).inSingletonScope()
}
}
diff --git a/server/src/main/groovy/ish/oncourse/server/monitoring/MonitoringStatisticService.groovy b/server/src/main/groovy/ish/oncourse/server/monitoring/MonitoringStatisticService.groovy
index eacd3a76243..a88034af7de 100644
--- a/server/src/main/groovy/ish/oncourse/server/monitoring/MonitoringStatisticService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/monitoring/MonitoringStatisticService.groovy
@@ -8,8 +8,7 @@
package ish.oncourse.server.monitoring
-import com.google.inject.Inject
-import com.sun.management.OperatingSystemMXBean
+import javax.inject.Inject
import com.zaxxer.hikari.HikariConfigMXBean
import com.zaxxer.hikari.HikariPoolMXBean
import ish.oncourse.common.ResourcesUtil
diff --git a/server/src/main/groovy/ish/oncourse/server/preference/UserPreferenceService.groovy b/server/src/main/groovy/ish/oncourse/server/preference/UserPreferenceService.groovy
index b4306cea895..88c0f170683 100644
--- a/server/src/main/groovy/ish/oncourse/server/preference/UserPreferenceService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/preference/UserPreferenceService.groovy
@@ -12,8 +12,8 @@
package ish.oncourse.server.preference
import com.fasterxml.jackson.databind.ObjectMapper
-import com.google.inject.Inject
-import com.google.inject.Singleton
+import javax.inject.Inject
+import javax.inject.Singleton
import groovy.transform.CompileStatic
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.PreferenceController
diff --git a/server/src/main/groovy/ish/oncourse/server/quality/QualityCheckJob.groovy b/server/src/main/groovy/ish/oncourse/server/quality/QualityCheckJob.groovy
index 10199309406..2e6cf7c6c73 100644
--- a/server/src/main/groovy/ish/oncourse/server/quality/QualityCheckJob.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/quality/QualityCheckJob.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.quality
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.QualityRule
import org.apache.cayenne.query.ObjectSelect
diff --git a/server/src/main/groovy/ish/oncourse/server/quality/QualityService.groovy b/server/src/main/groovy/ish/oncourse/server/quality/QualityService.groovy
index 7fe82115a06..77c560a95bd 100644
--- a/server/src/main/groovy/ish/oncourse/server/quality/QualityService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/quality/QualityService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.quality
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.PreferenceController
diff --git a/server/src/main/groovy/ish/oncourse/server/querying/QueryService.groovy b/server/src/main/groovy/ish/oncourse/server/querying/QueryService.groovy
index a32adb80638..6a568f6c1cb 100644
--- a/server/src/main/groovy/ish/oncourse/server/querying/QueryService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/querying/QueryService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.querying
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.aql.AqlService
import ish.oncourse.aql.CompilationResult
import ish.oncourse.server.CayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/scripting/GroovyScriptService.groovy b/server/src/main/groovy/ish/oncourse/server/scripting/GroovyScriptService.groovy
index be21e878c99..33f8d3fa816 100644
--- a/server/src/main/groovy/ish/oncourse/server/scripting/GroovyScriptService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/scripting/GroovyScriptService.groovy
@@ -10,8 +10,8 @@
*/
package ish.oncourse.server.scripting
-import com.google.inject.Inject
-import com.google.inject.Injector
+import javax.inject.Inject
+import io.bootique.di.Injector
import groovy.transform.CompileStatic
import io.bootique.BQRuntime
import ish.common.types.AutomationStatus
diff --git a/server/src/main/groovy/ish/oncourse/server/scripting/ScriptClosureFactory.groovy b/server/src/main/groovy/ish/oncourse/server/scripting/ScriptClosureFactory.groovy
index 458456020cf..bcf9ef64719 100644
--- a/server/src/main/groovy/ish/oncourse/server/scripting/ScriptClosureFactory.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/scripting/ScriptClosureFactory.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.scripting
-import com.google.inject.Injector
+import io.bootique.di.Injector
import groovy.transform.CompileDynamic
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.IntegrationConfiguration
@@ -29,7 +29,6 @@ class ScriptClosureFactory {
public ICayenneService cayenneService
public Injector injector
-
void setSpecClass(Class extends ScriptClosureTrait> specClass) {
this.specClass = specClass
this.integrationClass = specClass.getAnnotation(ScriptClosure).integration()
@@ -93,6 +92,4 @@ class ScriptClosureFactory {
.select(cayenneService.newContext)
}
}
-
-
}
diff --git a/server/src/main/groovy/ish/oncourse/server/security/api/permission/ChainPermission.groovy b/server/src/main/groovy/ish/oncourse/server/security/api/permission/ChainPermission.groovy
index ccd9fc1e02f..0a45a11a3e5 100644
--- a/server/src/main/groovy/ish/oncourse/server/security/api/permission/ChainPermission.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/security/api/permission/ChainPermission.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.security.api.permission
-import com.google.inject.Injector
+import io.bootique.di.Injector
import groovy.transform.CompileStatic
/**
diff --git a/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/EmailMassCheckPermission.groovy b/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/EmailMassCheckPermission.groovy
index a331642bcf0..06372c3fb7b 100644
--- a/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/EmailMassCheckPermission.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/EmailMassCheckPermission.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.security.api.permission.custom
-import io.bootique.jetty.servlet.DefaultServletEnvironment
+import io.bootique.jetty.servlet.AngelServletEnvironment
import ish.common.types.KeyCode
import ish.common.types.Mask
import ish.oncourse.server.security.api.IPermissionService
@@ -39,7 +39,7 @@ class EmailMassCheckPermission extends ResourcePermission {
PermissionCheckingResult check() {
IPermissionService permissionService = injector.getInstance(IPermissionService)
if (!permissionService.currentUserCan(KeyCode.SPECIAL_EMAIL_MASS, Mask.VIEW)) {
- String queryString = injector.getInstance(DefaultServletEnvironment)?.request()?.get()?.queryString
+ String queryString = injector.getInstance(AngelServletEnvironment)?.request()?.get()?.queryString
if (trimToEmpty(queryString).contains(PARAM_NAME)) {
String values = queryString.split('&').find{ it.contains(PARAM_NAME) }.split('=')[1]
if (values.split(',').size() > 50) {
diff --git a/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/MessageMassCheckPermission.groovy b/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/MessageMassCheckPermission.groovy
index 3afea0a7786..29c1a4a6e6b 100644
--- a/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/MessageMassCheckPermission.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/security/api/permission/custom/MessageMassCheckPermission.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.security.api.permission.custom
-import io.bootique.jetty.servlet.DefaultServletEnvironment
+import io.bootique.jetty.servlet.AngelServletEnvironment
import ish.common.types.KeyCode
import ish.common.types.Mask
import ish.oncourse.server.api.v1.model.MessageTypeDTO
@@ -43,7 +43,7 @@ class MessageMassCheckPermission extends ResourcePermission {
@Override
PermissionCheckingResult check() {
permissionService = injector.getInstance(IPermissionService)
- queryString = injector.getInstance(DefaultServletEnvironment)?.request()?.get()?.queryString
+ queryString = injector.getInstance(AngelServletEnvironment)?.request()?.get()?.queryString
String messageType = getMessageType()
if (!StringUtils.isEmpty(messageType)) {
if (messageType.equalsIgnoreCase(MessageTypeDTO.EMAIL.toString())) {
diff --git a/server/src/main/groovy/ish/oncourse/server/services/AuditService.groovy b/server/src/main/groovy/ish/oncourse/server/services/AuditService.groovy
index 928cce94137..f16dca3cb22 100644
--- a/server/src/main/groovy/ish/oncourse/server/services/AuditService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/services/AuditService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.services
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.glue.CayenneDataObject
diff --git a/server/src/main/groovy/ish/oncourse/server/services/AuthHelper.groovy b/server/src/main/groovy/ish/oncourse/server/services/AuthHelper.groovy
index 50e71813b7e..3c49f8e4765 100644
--- a/server/src/main/groovy/ish/oncourse/server/services/AuthHelper.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/services/AuthHelper.groovy
@@ -11,7 +11,6 @@
package ish.oncourse.server.services
-import com.google.inject.Inject
import com.nimbusds.jose.JWSAlgorithm
import com.nimbusds.jose.JWSHeader
import com.nimbusds.jose.JWSSigner
diff --git a/server/src/main/groovy/ish/oncourse/server/services/FundingContractUpdateJob.groovy b/server/src/main/groovy/ish/oncourse/server/services/FundingContractUpdateJob.groovy
index a1b3c6d3f1d..f20a34be2bb 100644
--- a/server/src/main/groovy/ish/oncourse/server/services/FundingContractUpdateJob.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/services/FundingContractUpdateJob.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.services
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.types.FundingStatus
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.FundingUpload
diff --git a/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeModule.java b/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeModule.java
index 778af96327d..73010986ac0 100644
--- a/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeModule.java
+++ b/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeModule.java
@@ -8,8 +8,8 @@
package ish.oncourse.server.services.chargebee;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
+import io.bootique.di.Provides;
+import javax.inject.Singleton;
import io.bootique.ConfigModule;
import io.bootique.config.ConfigurationFactory;
import ish.oncourse.server.ICayenneService;
diff --git a/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeService.groovy b/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeService.groovy
index ac15edb9a0f..2a312cac1cf 100644
--- a/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeService.groovy
@@ -8,7 +8,6 @@
package ish.oncourse.server.services.chargebee
-import com.google.inject.Inject
import io.bootique.annotation.BQConfigProperty
import ish.common.chargebee.ChargebeePropertyType
import ish.oncourse.server.ICayenneService
diff --git a/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeUploadJob.groovy b/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeUploadJob.groovy
index 559f23dbe79..ac8a2305900 100644
--- a/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeUploadJob.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/services/chargebee/ChargebeeUploadJob.groovy
@@ -11,14 +11,12 @@ package ish.oncourse.server.services.chargebee
import com.chargebee.Environment
import com.chargebee.models.Subscription
import com.chargebee.models.Usage
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.common.chargebee.ChargebeePropertyType
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.PreferenceController
import ish.oncourse.server.cayenne.Script
import ish.oncourse.server.messaging.MessageService
-import ish.oncourse.server.scripting.api.EmailService
-import ish.oncourse.server.scripting.api.EmailSpec
import ish.oncourse.server.scripting.api.MessageSpec
import ish.oncourse.server.services.AuditService
import ish.oncourse.server.services.chargebee.property.ChargebeePropertyProcessor
diff --git a/server/src/main/groovy/ish/oncourse/server/users/SystemUserService.groovy b/server/src/main/groovy/ish/oncourse/server/users/SystemUserService.groovy
index a3dc37ecd1e..8b3fcce3031 100644
--- a/server/src/main/groovy/ish/oncourse/server/users/SystemUserService.groovy
+++ b/server/src/main/groovy/ish/oncourse/server/users/SystemUserService.groovy
@@ -11,7 +11,7 @@
package ish.oncourse.server.users
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.oncourse.API
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.api.servlet.ApiFilter
@@ -51,7 +51,7 @@ class SystemUserService implements ISystemUserService {
}
SystemUser getCurrentUser() {
- if(ApiFilter.CLIENT_MODE)
+ if (ApiFilter.CLIENT_MODE)
return SelectById.query(SystemUser, 1l).selectOne(cayenneService.newContext)
return sessionManager.currentUser
diff --git a/server/src/main/java/io/bootique/di/spi/GenericTypesUtils.java b/server/src/main/java/io/bootique/di/spi/GenericTypesUtils.java
new file mode 100644
index 00000000000..ef7ce43b4b4
--- /dev/null
+++ b/server/src/main/java/io/bootique/di/spi/GenericTypesUtils.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright ish group pty ltd 2025.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+package io.bootique.di.spi;
+
+import io.bootique.di.TypeLiteral;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+
+// Clone class of io.bootique.di.spi.GenericTypesUtils,
+// in which the method 'resolveVariableType' is fixed to supprt Generic Types in Generics like 'EntityApiService'
+public class GenericTypesUtils {
+
+ public GenericTypesUtils() {}
+
+ static Type getGenericParameterType(Type type) {
+ if (type instanceof ParameterizedType) {
+ ParameterizedType parameterizedType = (ParameterizedType)type;
+ Type[] parameters = parameterizedType.getActualTypeArguments();
+ if (parameters.length == 1) {
+ return parameters[0];
+ }
+ }
+
+ return null;
+ }
+
+ static Class> parameterClass(Type type) {
+ Type parameterType = getGenericParameterType(type);
+ return parameterType == null ? null : typeToClass(parameterType);
+ }
+
+ private static Class> typeToClass(Type type) {
+ if (type instanceof Class) {
+ return (Class)type;
+ } else {
+ return type instanceof ParameterizedType ? (Class)((ParameterizedType)type).getRawType() : Object.class;
+ }
+ }
+
+ static TypeLiteral> resolveVariableType(Class> objectClass, Field field, Type variableType) {
+ Class> declaringClass = field.getDeclaringClass();
+ Type genericSuperclass = getSuperclassDeclaringField(objectClass, declaringClass);
+ if (genericSuperclass == null) {
+ return null;
+ } else {
+ int idx = getTypeVariableIdx(variableType.getTypeName(), declaringClass);
+ if (idx == -1) {
+ return null;
+ } else {
+ Class> superClass = objectClass;
+ Type actualType;
+ do {
+ actualType = ((ParameterizedType) superClass.getGenericSuperclass()).getActualTypeArguments()[idx];
+ if (!(actualType instanceof TypeLiteral)) {
+ return TypeLiteral.of(actualType);
+ }
+ superClass = superClass.getSuperclass();
+ } while (superClass != genericSuperclass.getClass());
+
+ return TypeLiteral.of(actualType);
+ }
+ }
+ }
+
+ private static Type getSuperclassDeclaringField(Class> objectClass, Class> declaringClass) {
+ while(objectClass.getSuperclass() != null && !objectClass.getSuperclass().equals(declaringClass)) {
+ objectClass = objectClass.getSuperclass();
+ }
+
+ Type genericSuperclass = objectClass.getGenericSuperclass();
+ if (!(genericSuperclass instanceof ParameterizedType)) {
+ return null;
+ } else {
+ return genericSuperclass;
+ }
+ }
+
+ private static int getTypeVariableIdx(String typeVariableName, Class> declaringClass) {
+ TypeVariable extends Class>>[] typeParameters = declaringClass.getTypeParameters();
+
+ int idx;
+ for(idx = 0; idx < typeParameters.length && !typeParameters[idx].getName().equals(typeVariableName); ++idx) {
+ }
+
+ return idx == typeParameters.length ? -1 : idx;
+ }
+}
diff --git a/server/src/main/java/io/bootique/jetty/AngelJettyModule.java b/server/src/main/java/io/bootique/jetty/AngelJettyModule.java
new file mode 100644
index 00000000000..cc7833215ea
--- /dev/null
+++ b/server/src/main/java/io/bootique/jetty/AngelJettyModule.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright ish group pty ltd 2025.
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+ */
+
+package io.bootique.jetty;
+
+import io.bootique.config.ConfigurationFactory;
+import io.bootique.di.Provides;
+import io.bootique.jetty.request.RequestMDCItem;
+import io.bootique.jetty.request.RequestMDCManager;
+import io.bootique.jetty.server.ServerFactory;
+import io.bootique.jetty.server.ServerHolder;
+import io.bootique.jetty.server.ServletContextHandlerExtender;
+import io.bootique.jetty.servlet.AngelServletEnvironment;
+import io.bootique.log.BootLogger;
+import io.bootique.shutdown.ShutdownManager;
+import org.eclipse.jetty.server.Server;
+
+import javax.inject.Singleton;
+import javax.servlet.Filter;
+import javax.servlet.Servlet;
+import java.util.EventListener;
+import java.util.Map;
+import java.util.Set;
+
+public class AngelJettyModule extends JettyModule {
+
+ public AngelJettyModule(String configPrefix) {
+ super(configPrefix);
+ }
+
+ public AngelJettyModule() {
+ super("jetty");
+ }
+
+ @Singleton
+ @Provides
+ ServerFactory providerServerFactory(ConfigurationFactory configFactory) {
+ return configFactory.config(AngelServerFactory.class, getConfigPrefix());
+ }
+
+ @Singleton
+ @Provides
+ Server providerServer(ServerHolder holder) {
+ return super.providerServer(holder);
+ }
+
+ @Singleton
+ @Provides
+ ServerHolder provideServerHolder(ServerFactory factory, Set servlets, Set mappedServlets, Set filters, Set mappedFilters, Set listeners, Set mappedListeners, Set contextHandlerExtenders, RequestMDCManager mcdManager, BootLogger bootLogger, ShutdownManager shutdownManager) {
+ return super.provideServerHolder(factory, servlets, mappedServlets, filters, mappedFilters, listeners, mappedListeners, contextHandlerExtenders, mcdManager, bootLogger, shutdownManager);
+ }
+
+ @Provides
+ @Singleton
+ RequestMDCManager provideRequestMDCManager(Map items) {
+ return super.provideRequestMDCManager(items);
+ }
+
+ @Singleton
+ @Provides
+ AngelServletEnvironment createStateTrackerImpl() {
+ return new AngelServletEnvironment();
+ }
+}
diff --git a/server/src/main/java/ish/oncourse/server/jetty/server/AngelServerFactory.java b/server/src/main/java/io/bootique/jetty/AngelServerFactory.java
similarity index 54%
rename from server/src/main/java/ish/oncourse/server/jetty/server/AngelServerFactory.java
rename to server/src/main/java/io/bootique/jetty/AngelServerFactory.java
index 9c371cc1fe0..d77e41c0faa 100644
--- a/server/src/main/java/ish/oncourse/server/jetty/server/AngelServerFactory.java
+++ b/server/src/main/java/io/bootique/jetty/AngelServerFactory.java
@@ -1,21 +1,17 @@
/*
- * Copyright ish group pty ltd 2021.
+ * Copyright ish group pty ltd 2025.
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
*/
-package ish.oncourse.server.jetty.server;
+package io.bootique.jetty;
-import io.bootique.jetty.MappedFilter;
-import io.bootique.jetty.MappedListener;
-import io.bootique.jetty.MappedServlet;
import io.bootique.jetty.connector.ConnectorFactory;
-import io.bootique.jetty.server.ConnectorDescriptor;
-import io.bootique.jetty.server.ServerFactory;
-import io.bootique.jetty.server.ServerLifecycleLogger;
-import io.bootique.jetty.server.ServletContextHandlerExtender;
+import io.bootique.jetty.request.RequestMDCManager;
+import io.bootique.jetty.server.*;
+import ish.oncourse.server.modules.AngelHttpsConnectorFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.eclipse.jetty.server.NetworkConnector;
@@ -26,6 +22,7 @@
import java.util.*;
+// Implementation use Jetty 11.0 instead of 9.0
public class AngelServerFactory extends ServerFactory {
private static final Logger LOGGER = LogManager.getLogger();
@@ -33,64 +30,55 @@ public class AngelServerFactory extends ServerFactory {
private int maxFormContentSize;
private int maxFormKeys;
- public Server createServer(
- Set servlets,
- Set filters,
- Set listeners,
- Set contextHandlerExtenders) {
-
- ThreadPool threadPool = createThreadPool();
- ServletContextHandler contextHandler = createHandler(servlets, filters, listeners);
-
+ @Override
+ public ServerHolder createServerHolder(Set servlets, Set filters, Set listeners, Set contextHandlerExtenders, RequestMDCManager mdcManager) {
+ String context = this.resolveContext();
+ ThreadPool threadPool = this.createThreadPool();
+ ServletContextHandler contextHandler = this.createHandler(context, servlets, filters, listeners);
Server server = new Server(threadPool);
server.setStopAtShutdown(true);
server.setStopTimeout(1000L);
server.setHandler(contextHandler);
-
- // postconfig *after* the handler is associated with the Server. Some extensions like WebSocket require access
- // to the handler's Server
- postConfigHandler(contextHandler, contextHandlerExtenders);
-
- if (maxFormContentSize > 0) {
- server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", maxFormContentSize);
- contextHandler.setMaxFormContentSize(maxFormContentSize);
+ this.postConfigHandler(contextHandler, contextHandlerExtenders);
+ if (this.maxFormContentSize > 0) {
+ server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", this.maxFormContentSize);
+ contextHandler.setMaxFormContentSize(this.maxFormContentSize);
}
- if (maxFormKeys > 0) {
- server.setAttribute("org.eclipse.jetty.server.Request.maxFormKeys", maxFormKeys);
- contextHandler.setMaxFormKeys(maxFormKeys);
+ if (this.maxFormKeys > 0) {
+ server.setAttribute("org.eclipse.jetty.server.Request.maxFormKeys", this.maxFormKeys);
+ contextHandler.setMaxFormKeys(this.maxFormKeys);
}
- createRequestLog(server);
-
- Collection connectorFactories = connectorFactories(server);
-
- Collection connectorDescriptors = new ArrayList<>(2);
-
+ this.createRequestLog(server);
+ Collection connectorFactories = this.connectorFactories(server);
+ Collection connectorHolders = new ArrayList(2);
if (connectorFactories.isEmpty()) {
LOGGER.warn("Jetty starts with no connectors configured. Is that expected?");
} else {
- connectorFactories.forEach(cf -> {
+ connectorFactories.forEach((cf) -> {
NetworkConnector connector = cf.createConnector(server);
+ connector.addBean(mdcManager);
server.addConnector(connector);
- connectorDescriptors.add(new ConnectorDescriptor(connector));
+ connectorHolders.add(new ConnectorHolder(connector));
});
}
- contextHandler.addEventListener(new ServerLifecycleLogger(connectorDescriptors, context));
- return server;
+ ServerHolder serverHolder = new ServerHolder(server, context, connectorHolders);
+ contextHandler.addEventListener(new ServerLifecycleLogger(serverHolder));
+ return serverHolder;
}
+ @Override
protected GzipHandler createGzipHandler() {
return new GzipHandler();
}
+ @Override
protected void installListeners(ServletContextHandler handler, Set listeners) {
-
if (listeners.isEmpty()) {
return;
}
-
sortedListeners(listeners).forEach(listener -> {
LOGGER.info("Adding listener {}", listener.getListener().getClass().getName());
handler.addEventListener(listener.getListener());
@@ -103,4 +91,18 @@ private List sortedListeners(Set unsorted) {
sorted.sort(Comparator.comparing(MappedListener::getOrder));
return sorted;
}
+
+ @Override
+ protected Collection connectorFactories(Server server) {
+ Collection connectorFactories = new ArrayList<>();
+ if (this.connectors != null) {
+ connectorFactories.addAll(this.connectors);
+ }
+
+ if (connectorFactories.isEmpty()) {
+ connectorFactories.add(new AngelHttpsConnectorFactory());
+ }
+
+ return connectorFactories;
+ }
}
diff --git a/server/src/main/java/io/bootique/jetty/servlet/AngelServletEnvironment.java b/server/src/main/java/io/bootique/jetty/servlet/AngelServletEnvironment.java
new file mode 100644
index 00000000000..200860ebec3
--- /dev/null
+++ b/server/src/main/java/io/bootique/jetty/servlet/AngelServletEnvironment.java
@@ -0,0 +1,28 @@
+package io.bootique.jetty.servlet;
+
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Optional;
+
+public class AngelServletEnvironment extends DefaultServletEnvironment {
+
+ // super class requiest variable works incorrect in Bootique version 2.0
+ private static final ThreadLocal request = new ThreadLocal<>();
+
+ public AngelServletEnvironment() {}
+
+ @Override
+ public Optional request() {
+ return Optional.ofNullable(request.get());
+ }
+
+ @Override
+ public void requestInitialized(ServletRequestEvent sre) {
+ request.set((HttpServletRequest)sre.getServletRequest());
+ }
+
+ @Override
+ public void requestDestroyed(ServletRequestEvent sre) {
+ request.remove();
+ }
+}
diff --git a/server/src/main/java/ish/oncourse/GoogleGuiceInjector.java b/server/src/main/java/ish/oncourse/BootiqueInjector.java
similarity index 76%
rename from server/src/main/java/ish/oncourse/GoogleGuiceInjector.java
rename to server/src/main/java/ish/oncourse/BootiqueInjector.java
index c2d0bf46ae7..bdd9d43e3ac 100644
--- a/server/src/main/java/ish/oncourse/GoogleGuiceInjector.java
+++ b/server/src/main/java/ish/oncourse/BootiqueInjector.java
@@ -10,16 +10,16 @@
*/
package ish.oncourse;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
+import io.bootique.di.Injector;
+import javax.inject.Inject;
-public class GoogleGuiceInjector {
+public class BootiqueInjector {
private static Injector injector;
@Inject
- public GoogleGuiceInjector(Injector injector) {
- GoogleGuiceInjector.injector = injector;
+ public BootiqueInjector(Injector injector) {
+ BootiqueInjector.injector = injector;
}
public static Injector getInstance() {
diff --git a/server/src/main/java/ish/oncourse/aql/impl/AntlrAqlService.java b/server/src/main/java/ish/oncourse/aql/impl/AntlrAqlService.java
index d45a74b9e69..c4d2926f6b8 100644
--- a/server/src/main/java/ish/oncourse/aql/impl/AntlrAqlService.java
+++ b/server/src/main/java/ish/oncourse/aql/impl/AntlrAqlService.java
@@ -11,10 +11,9 @@
package ish.oncourse.aql.impl;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.aql.AqlService;
import ish.oncourse.aql.CompilationResult;
-import ish.oncourse.server.cayenne.SystemUser;
import ish.oncourse.server.users.SystemUserService;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CharStreams;
diff --git a/server/src/main/java/ish/oncourse/aql/impl/CompilationContext.java b/server/src/main/java/ish/oncourse/aql/impl/CompilationContext.java
index 7d0ef9e360c..49a80b05dd0 100644
--- a/server/src/main/java/ish/oncourse/aql/impl/CompilationContext.java
+++ b/server/src/main/java/ish/oncourse/aql/impl/CompilationContext.java
@@ -11,7 +11,6 @@
package ish.oncourse.aql.impl;
-import com.google.inject.Inject;
import ish.oncourse.aql.CompilationError;
import ish.oncourse.aql.CompilationResult;
import ish.oncourse.aql.model.Entity;
diff --git a/server/src/main/java/ish/oncourse/entity/services/CourseClassService.java b/server/src/main/java/ish/oncourse/entity/services/CourseClassService.java
index 161a89ad2b8..4ff5394217d 100644
--- a/server/src/main/java/ish/oncourse/entity/services/CourseClassService.java
+++ b/server/src/main/java/ish/oncourse/entity/services/CourseClassService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.entity.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.budget.ClassBudgetUtil;
import ish.common.types.EnrolmentStatus;
import ish.math.Money;
diff --git a/server/src/main/java/ish/oncourse/server/AngelCommand.java b/server/src/main/java/ish/oncourse/server/AngelCommand.java
index 3108c1bd9c3..22899696626 100644
--- a/server/src/main/java/ish/oncourse/server/AngelCommand.java
+++ b/server/src/main/java/ish/oncourse/server/AngelCommand.java
@@ -11,8 +11,8 @@
package ish.oncourse.server;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
+import javax.inject.Inject;
+import javax.inject.Provider;
import io.bootique.cli.Cli;
import io.bootique.command.CommandOutcome;
import io.bootique.command.CommandWithMetadata;
diff --git a/server/src/main/java/ish/oncourse/server/AngelModule.java b/server/src/main/java/ish/oncourse/server/AngelModule.java
index 604d532a496..918d5a10726 100644
--- a/server/src/main/java/ish/oncourse/server/AngelModule.java
+++ b/server/src/main/java/ish/oncourse/server/AngelModule.java
@@ -11,13 +11,16 @@
package ish.oncourse.server;
-import com.google.inject.*;
-import com.google.inject.name.Names;
import io.bootique.BQCoreModule;
import io.bootique.ConfigModule;
import io.bootique.cayenne.CayenneModule;
import io.bootique.command.CommandDecorator;
import io.bootique.config.ConfigurationFactory;
+import io.bootique.di.Binder;
+import io.bootique.di.Injector;
+import io.bootique.di.Provides;
+import io.bootique.di.TypeLiteral;
+import io.bootique.jetty.AngelJettyModule;
import io.bootique.jetty.MappedFilter;
import io.bootique.jetty.MappedServlet;
import io.bootique.jetty.command.ServerCommand;
@@ -27,7 +30,6 @@
import ish.oncourse.server.integration.EventService;
import ish.oncourse.server.integration.PluginService;
import ish.oncourse.server.integration.PluginsPrefsService;
-import ish.oncourse.server.jetty.AngelJettyModule;
import ish.oncourse.server.lifecycle.*;
import ish.oncourse.server.modules.AngelJobFactory;
import ish.oncourse.server.preference.UserPreferenceService;
@@ -52,6 +54,8 @@
import org.quartz.utils.ConnectionProvider;
import org.quartz.utils.DBConnectionManager;
+import javax.inject.Provider;
+import javax.inject.Singleton;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.*;
@@ -157,15 +161,15 @@ public void configure(Binder binder) {
.addMappedServlet(HEALTHCHECK_SERVLET)
.addServlet(new ResourceServlet(),"resources", ROOT_URL_PATTERN);
- binder.bind(ISessionManager.class).to(SessionManager.class).in(Scopes.SINGLETON);
- binder.bind(CertificateUpdateWatcher.class).in(Scopes.SINGLETON);
- binder.bind(ICayenneService.class).to(CayenneService.class).in(Scopes.SINGLETON);
+ binder.bind(ISessionManager.class).to(SessionManager.class).inSingletonScope();
+ binder.bind(CertificateUpdateWatcher.class).inSingletonScope();
+ binder.bind(ICayenneService.class).to(CayenneService.class).inSingletonScope();
binder.bind(PreferenceController.class);
binder.bind(PluginsPrefsService.class);
binder.bind(UserPreferenceService.class);
- binder.bind(String.class).annotatedWith(Names.named(ANGEL_VERSION)).toInstance(getVersion());
- binder.bind(EmailService.class).in(Scopes.SINGLETON);
- binder.bind(PluginService.class).in(Scopes.SINGLETON);
+ binder.bind(String.class, ANGEL_VERSION).toInstance(getVersion());
+ binder.bind(EmailService.class).inSingletonScope();
+ binder.bind(PluginService.class).inSingletonScope();
PluginService.configurePlugin(binder);
}
diff --git a/server/src/main/java/ish/oncourse/server/AngelServer.java b/server/src/main/java/ish/oncourse/server/AngelServer.java
index f7836906ee3..1fce58e9359 100755
--- a/server/src/main/java/ish/oncourse/server/AngelServer.java
+++ b/server/src/main/java/ish/oncourse/server/AngelServer.java
@@ -15,7 +15,7 @@
import io.bootique.cayenne.CayenneModule;
import io.bootique.jdbc.JdbcModule;
import io.bootique.jdbc.hikaricp.JdbcHikariCPModule;
-import ish.oncourse.server.jetty.AngelJettyModule;
+import io.bootique.jetty.AngelJettyModule;
import ish.oncourse.server.api.ServerApiModule;
import ish.oncourse.server.api.cxf.CXFModule;
import ish.oncourse.server.bugsnag.BugsnagModule;
diff --git a/server/src/main/java/ish/oncourse/server/AngelServerFactory.java b/server/src/main/java/ish/oncourse/server/AngelServerFactory.java
index f4a06982417..9bc1174e0fc 100644
--- a/server/src/main/java/ish/oncourse/server/AngelServerFactory.java
+++ b/server/src/main/java/ish/oncourse/server/AngelServerFactory.java
@@ -11,7 +11,7 @@
package ish.oncourse.server;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import io.bootique.annotation.BQConfig;
import ish.math.Country;
import ish.math.CurrencyFormat;
@@ -24,7 +24,6 @@
import ish.oncourse.server.license.LicenseService;
import ish.oncourse.server.messaging.EmailDequeueJob;
import ish.oncourse.server.messaging.MailDeliveryService;
-import ish.oncourse.server.services.ISchedulerService;
import ish.oncourse.server.services.*;
import ish.oncourse.server.security.CertificateUpdateWatcher;
import ish.oncourse.server.services.chargebee.ChargebeeUploadJob;
@@ -61,7 +60,6 @@ public class AngelServerFactory {
public final static String YAML_SYSTEM_USERS_FILE = "createAdminUsers.yaml";
public static boolean QUIT_SIGNAL_CAUGHT = false;
-
@Inject
public AngelServerFactory() {
ResourcesUtil.initialiseLogging(true);
diff --git a/server/src/main/java/ish/oncourse/server/CayenneListenersService.java b/server/src/main/java/ish/oncourse/server/CayenneListenersService.java
index 34d959763c0..ed9b2a7c4e6 100644
--- a/server/src/main/java/ish/oncourse/server/CayenneListenersService.java
+++ b/server/src/main/java/ish/oncourse/server/CayenneListenersService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.accounting.AccountTransactionService;
import ish.oncourse.server.integration.EventService;
import ish.oncourse.server.license.LicenseService;
@@ -20,8 +20,6 @@
import ish.oncourse.server.services.TransactionLockedService;
import org.apache.cayenne.access.ValidationFilter;
-/**
- */
public class CayenneListenersService {
@Inject
diff --git a/server/src/main/java/ish/oncourse/server/CayenneService.java b/server/src/main/java/ish/oncourse/server/CayenneService.java
index 3c1d2387c6c..d659fb23e40 100644
--- a/server/src/main/java/ish/oncourse/server/CayenneService.java
+++ b/server/src/main/java/ish/oncourse/server/CayenneService.java
@@ -10,8 +10,8 @@
*/
package ish.oncourse.server;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
+import javax.inject.Inject;
+import javax.inject.Singleton;
import ish.math.MoneyType;
import ish.oncourse.server.cayenne.glue.CayenneDataObject;
import ish.util.Maps;
diff --git a/server/src/main/java/ish/oncourse/server/DataPopulationCommand.java b/server/src/main/java/ish/oncourse/server/DataPopulationCommand.java
index e57786a8aa7..24f87d58d23 100644
--- a/server/src/main/java/ish/oncourse/server/DataPopulationCommand.java
+++ b/server/src/main/java/ish/oncourse/server/DataPopulationCommand.java
@@ -11,9 +11,9 @@
package ish.oncourse.server;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.name.Named;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import javax.inject.Named;
import io.bootique.cli.Cli;
import io.bootique.command.CommandOutcome;
import io.bootique.command.CommandWithMetadata;
@@ -30,6 +30,7 @@ public class DataPopulationCommand extends CommandWithMetadata {
private String angelVersion;
private Provider cayenneServiceProvider;
private Provider groovyScriptServiceProvider;
+
@Inject
public DataPopulationCommand(@Named(AngelModule.ANGEL_VERSION) String angelVersion,
Provider cayenneServiceProvider,
@@ -55,6 +56,5 @@ public CommandOutcome run(Cli cli) {
}
return CommandOutcome.succeeded();
-
}
}
diff --git a/server/src/main/java/ish/oncourse/server/PreferenceController.java b/server/src/main/java/ish/oncourse/server/PreferenceController.java
index 5d9bdb1f017..ecb3f1d958b 100644
--- a/server/src/main/java/ish/oncourse/server/PreferenceController.java
+++ b/server/src/main/java/ish/oncourse/server/PreferenceController.java
@@ -10,8 +10,8 @@
*/
package ish.oncourse.server;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
+import javax.inject.Inject;
+import javax.inject.Singleton;
import ish.math.Country;
import ish.math.CurrencyFormat;
import ish.oncourse.entity.services.TagService;
diff --git a/server/src/main/java/ish/oncourse/server/SanityCheckCommand.java b/server/src/main/java/ish/oncourse/server/SanityCheckCommand.java
index 5c57052c0e3..ac4937326bb 100644
--- a/server/src/main/java/ish/oncourse/server/SanityCheckCommand.java
+++ b/server/src/main/java/ish/oncourse/server/SanityCheckCommand.java
@@ -11,8 +11,8 @@
package ish.oncourse.server;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
+import javax.inject.Inject;
+import javax.inject.Provider;
import io.bootique.cli.Cli;
import io.bootique.command.CommandOutcome;
import io.bootique.command.CommandWithMetadata;
diff --git a/server/src/main/java/ish/oncourse/server/api/service/ReportApiService.java b/server/src/main/java/ish/oncourse/server/api/service/ReportApiService.java
index e6667f009bf..d054bd4c7ce 100644
--- a/server/src/main/java/ish/oncourse/server/api/service/ReportApiService.java
+++ b/server/src/main/java/ish/oncourse/server/api/service/ReportApiService.java
@@ -11,7 +11,6 @@
package ish.oncourse.server.api.service;
-import com.google.inject.Inject;
import ish.oncourse.server.api.dao.ReportDao;
import ish.oncourse.server.api.dao.ReportOverlayDao;
import ish.oncourse.server.api.v1.model.BindingDTO;
@@ -26,6 +25,7 @@
import ish.util.LocalDateUtils;
import org.apache.cayenne.query.ObjectSelect;
+import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
diff --git a/server/src/main/java/ish/oncourse/server/bugsnag/BugsnagModule.java b/server/src/main/java/ish/oncourse/server/bugsnag/BugsnagModule.java
index d1a312cf621..517c8e71cd2 100644
--- a/server/src/main/java/ish/oncourse/server/bugsnag/BugsnagModule.java
+++ b/server/src/main/java/ish/oncourse/server/bugsnag/BugsnagModule.java
@@ -11,8 +11,8 @@
package ish.oncourse.server.bugsnag;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
+import io.bootique.di.Provides;
+import javax.inject.Singleton;
import io.bootique.ConfigModule;
import io.bootique.config.ConfigurationFactory;
import ish.oncourse.server.license.LicenseService;
diff --git a/server/src/main/java/ish/oncourse/server/cancel/CancelEnrolmentService.java b/server/src/main/java/ish/oncourse/server/cancel/CancelEnrolmentService.java
index fc6973c75cf..4e37fd4528f 100644
--- a/server/src/main/java/ish/oncourse/server/cancel/CancelEnrolmentService.java
+++ b/server/src/main/java/ish/oncourse/server/cancel/CancelEnrolmentService.java
@@ -11,7 +11,6 @@
package ish.oncourse.server.cancel;
-import com.google.inject.Inject;
import ish.cancel.CancelationResult;
import ish.cancel.EnrolmentCancelationRequest;
import ish.common.types.EnrolmentStatus;
@@ -20,7 +19,6 @@
import ish.oncourse.common.SystemEvent;
import ish.oncourse.server.cayenne.Account;
import ish.oncourse.server.cayenne.Enrolment;
-import ish.oncourse.server.cayenne.Invoice;
import ish.oncourse.server.cayenne.InvoiceLine;
import ish.oncourse.server.cayenne.Tax;
import ish.oncourse.server.integration.EventService;
@@ -32,10 +30,10 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
-
public class CancelEnrolmentService {
private static final Logger logger = LogManager.getLogger();
diff --git a/server/src/main/java/ish/oncourse/server/cayenne/glue/CayenneDataObject.java b/server/src/main/java/ish/oncourse/server/cayenne/glue/CayenneDataObject.java
index b4d503cd9fa..f6d66872cc6 100644
--- a/server/src/main/java/ish/oncourse/server/cayenne/glue/CayenneDataObject.java
+++ b/server/src/main/java/ish/oncourse/server/cayenne/glue/CayenneDataObject.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne.glue;
-import ish.oncourse.GoogleGuiceInjector;
+import ish.oncourse.BootiqueInjector;
import ish.oncourse.cayenne.PersistentObjectI;
import ish.util.MapsUtil;
import ish.validation.ValidationFailure;
@@ -31,7 +31,6 @@
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -544,8 +543,8 @@ public static Object getKeyForValue(Object value, Map, ?> map) {
@Override
public void setObjectContext(ObjectContext objectContext) {
super.setObjectContext(objectContext);
- if (GoogleGuiceInjector.getInstance() != null) {
- GoogleGuiceInjector.getInstance().injectMembers(this);
+ if (BootiqueInjector.getInstance() != null) {
+ BootiqueInjector.getInstance().injectMembers(this);
}
}
diff --git a/server/src/main/java/ish/oncourse/server/cayenne/glue/TaggableCayenneDataObject.java b/server/src/main/java/ish/oncourse/server/cayenne/glue/TaggableCayenneDataObject.java
index da294a30f81..5e1a2f78aaa 100644
--- a/server/src/main/java/ish/oncourse/server/cayenne/glue/TaggableCayenneDataObject.java
+++ b/server/src/main/java/ish/oncourse/server/cayenne/glue/TaggableCayenneDataObject.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.cayenne.glue;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.NodeSpecialType;
import ish.common.types.NodeType;
import ish.oncourse.API;
diff --git a/server/src/main/java/ish/oncourse/server/db/DbModule.java b/server/src/main/java/ish/oncourse/server/db/DbModule.java
index d7224e88e40..e8f2667c8dc 100644
--- a/server/src/main/java/ish/oncourse/server/db/DbModule.java
+++ b/server/src/main/java/ish/oncourse/server/db/DbModule.java
@@ -11,20 +11,16 @@
package ish.oncourse.server.db;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
+import io.bootique.di.Provides;
+import javax.inject.Singleton;
import io.bootique.ConfigModule;
import io.bootique.config.ConfigurationFactory;
-
-import java.util.Map;
-
public class DbModule extends ConfigModule {
@Singleton
@Provides
DbUriProvider createDbFactory(ConfigurationFactory configFactory) {
- return configFactory
- .config(DbUriProvider.class, defaultConfigPrefix());
+ return configFactory.config(DbUriProvider.class, defaultConfigPrefix());
}
}
diff --git a/server/src/main/java/ish/oncourse/server/db/SanityCheckService.java b/server/src/main/java/ish/oncourse/server/db/SanityCheckService.java
index 4a0800c7668..e559229a91d 100644
--- a/server/src/main/java/ish/oncourse/server/db/SanityCheckService.java
+++ b/server/src/main/java/ish/oncourse/server/db/SanityCheckService.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.db;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.AccountType;
import ish.oncourse.DefaultAccount;
import ish.oncourse.server.ICayenneService;
diff --git a/server/src/main/java/ish/oncourse/server/db/SchemaUpdateService.java b/server/src/main/java/ish/oncourse/server/db/SchemaUpdateService.java
index 07175d288de..6d943ec9ff4 100644
--- a/server/src/main/java/ish/oncourse/server/db/SchemaUpdateService.java
+++ b/server/src/main/java/ish/oncourse/server/db/SchemaUpdateService.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.db;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.integration.PluginService;
import ish.oncourse.server.license.LicenseService;
diff --git a/server/src/main/java/ish/oncourse/server/db/TransactionCheckService.java b/server/src/main/java/ish/oncourse/server/db/TransactionCheckService.java
index 5371e146b88..6c7a6bb32aa 100644
--- a/server/src/main/java/ish/oncourse/server/db/TransactionCheckService.java
+++ b/server/src/main/java/ish/oncourse/server/db/TransactionCheckService.java
@@ -11,14 +11,13 @@
package ish.oncourse.server.db;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.AccountTransactionType;
import ish.math.Money;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.Account;
import ish.oncourse.server.cayenne.AccountTransaction;
import ish.oncourse.server.cayenne.InvoiceLine;
-import ish.oncourse.server.services.TransactionLockedService;
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.query.ObjectSelect;
import org.apache.cayenne.query.SQLSelect;
diff --git a/server/src/main/java/ish/oncourse/server/db/URIDataSourceFactory.java b/server/src/main/java/ish/oncourse/server/db/URIDataSourceFactory.java
index e668d911de6..5ca8ac29166 100644
--- a/server/src/main/java/ish/oncourse/server/db/URIDataSourceFactory.java
+++ b/server/src/main/java/ish/oncourse/server/db/URIDataSourceFactory.java
@@ -12,7 +12,7 @@
package ish.oncourse.server.db;
import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.google.inject.Injector;
+import io.bootique.di.Injector;
import io.bootique.annotation.BQConfig;
import io.bootique.jdbc.managed.ManagedDataSourceStarter;
import io.bootique.jdbc.hikaricp.HikariCPManagedDataSourceFactory;
@@ -22,6 +22,7 @@
@BQConfig("Pooling Hikari JDBC DataSource configuration.")
@JsonTypeName("uri")
public class URIDataSourceFactory extends HikariCPManagedDataSourceFactory {
+
private static final Logger logger = LogManager.getLogger();
public ManagedDataSourceStarter create(String dataSourceName, Injector injector) {
diff --git a/server/src/main/java/ish/oncourse/server/duplicate/DuplicateClassService.java b/server/src/main/java/ish/oncourse/server/duplicate/DuplicateClassService.java
index 792da278eb9..b334a9f490b 100644
--- a/server/src/main/java/ish/oncourse/server/duplicate/DuplicateClassService.java
+++ b/server/src/main/java/ish/oncourse/server/duplicate/DuplicateClassService.java
@@ -8,14 +8,13 @@
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License for more details.
*/
+
package ish.oncourse.server.duplicate;
-import com.google.inject.Inject;
import ish.duplicate.ClassDuplicationRequest;
import ish.duplicate.DuplicationResult;
import ish.oncourse.entity.services.CourseClassService;
import ish.oncourse.server.ICayenneService;
-import ish.oncourse.server.PreferenceController;
import ish.oncourse.server.api.dao.CourseClassDao;
import ish.oncourse.server.api.v1.model.ClassCostDTO;
import ish.oncourse.server.cayenne.CourseClass;
@@ -25,6 +24,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
@@ -36,9 +36,6 @@ public class DuplicateClassService {
@Inject
private CourseClassService courseClassService;
- @Inject
- private PreferenceController preferenceController;
-
@Inject
private CourseClassDao courseClassDao;
diff --git a/server/src/main/java/ish/oncourse/server/duplicate/DuplicateCourseService.java b/server/src/main/java/ish/oncourse/server/duplicate/DuplicateCourseService.java
index 284e1423d44..ae8ce04b166 100644
--- a/server/src/main/java/ish/oncourse/server/duplicate/DuplicateCourseService.java
+++ b/server/src/main/java/ish/oncourse/server/duplicate/DuplicateCourseService.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.duplicate;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.duplicate.CourseDuplicationRequest;
import ish.duplicate.DuplicationResult;
import ish.oncourse.server.ICayenneService;
diff --git a/server/src/main/java/ish/oncourse/server/http/HttpFactory.java b/server/src/main/java/ish/oncourse/server/http/HttpFactory.java
index 9dcae9bf2c2..e79bbc0b6d8 100644
--- a/server/src/main/java/ish/oncourse/server/http/HttpFactory.java
+++ b/server/src/main/java/ish/oncourse/server/http/HttpFactory.java
@@ -11,12 +11,13 @@
package ish.oncourse.server.http;
-import com.google.inject.Provider;
import io.bootique.annotation.BQConfigProperty;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
+import javax.inject.Provider;
+
public class HttpFactory {
private Integer port;
diff --git a/server/src/main/java/ish/oncourse/server/http/HttpModule.java b/server/src/main/java/ish/oncourse/server/http/HttpModule.java
index c5b7c4314a7..9a5ce5eeac4 100644
--- a/server/src/main/java/ish/oncourse/server/http/HttpModule.java
+++ b/server/src/main/java/ish/oncourse/server/http/HttpModule.java
@@ -11,13 +11,15 @@
package ish.oncourse.server.http;
-import com.google.inject.Provider;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
+import javax.inject.Provider;
+import io.bootique.di.Provides;
+import javax.inject.Singleton;
import io.bootique.ConfigModule;
import io.bootique.config.ConfigurationFactory;
import org.eclipse.jetty.server.Server;
+
+// Configure http settings section from oncCourse.yml
public class HttpModule extends ConfigModule {
@Singleton
diff --git a/server/src/main/java/ish/oncourse/server/integration/GroovyScriptEventListener.java b/server/src/main/java/ish/oncourse/server/integration/GroovyScriptEventListener.java
index 03435a88acc..a4957e5a6ac 100644
--- a/server/src/main/java/ish/oncourse/server/integration/GroovyScriptEventListener.java
+++ b/server/src/main/java/ish/oncourse/server/integration/GroovyScriptEventListener.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.integration;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.AutomationStatus;
import ish.common.types.SystemEventType;
import ish.common.types.TriggerType;
diff --git a/server/src/main/java/ish/oncourse/server/jetty/AngelJettyModule.java b/server/src/main/java/ish/oncourse/server/jetty/AngelJettyModule.java
deleted file mode 100644
index f91eab03c55..00000000000
--- a/server/src/main/java/ish/oncourse/server/jetty/AngelJettyModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright ish group pty ltd 2021.
- *
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
- */
-
-package ish.oncourse.server.jetty;
-
-import io.bootique.config.ConfigurationFactory;
-import io.bootique.jetty.JettyModule;
-import ish.oncourse.server.jetty.server.AngelServerFactory;
-
-public class AngelJettyModule extends JettyModule {
-
- public AngelJettyModule(String configPrefix) {
- super(configPrefix);
- }
-
- public AngelJettyModule() {
- super("jetty");
- }
-
- @Override
- protected T config(Class type, ConfigurationFactory configurationFactory) {
- return (T) configurationFactory.config(AngelServerFactory.class, getConfigPrefix());
- }
-
-}
diff --git a/server/src/main/java/ish/oncourse/server/license/LicenseModule.java b/server/src/main/java/ish/oncourse/server/license/LicenseModule.java
index 058eec85f49..0a4a4e6d690 100644
--- a/server/src/main/java/ish/oncourse/server/license/LicenseModule.java
+++ b/server/src/main/java/ish/oncourse/server/license/LicenseModule.java
@@ -11,8 +11,8 @@
package ish.oncourse.server.license;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
+import io.bootique.di.Provides;
+import javax.inject.Singleton;
import io.bootique.ConfigModule;
import io.bootique.config.ConfigurationFactory;
diff --git a/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLifecycleListener.java b/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLifecycleListener.java
index a3fa84e3b9a..8ab1778011f 100644
--- a/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLifecycleListener.java
+++ b/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLifecycleListener.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.lifecycle;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.PaymentSource;
import ish.common.types.PaymentStatus;
import ish.common.types.PaymentType;
diff --git a/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLineLifecycleListener.java b/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLineLifecycleListener.java
index 6b4fff616e4..5a9aad65988 100644
--- a/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLineLifecycleListener.java
+++ b/server/src/main/java/ish/oncourse/server/lifecycle/PaymentInLineLifecycleListener.java
@@ -10,12 +10,10 @@
*/
package ish.oncourse.server.lifecycle;
-import com.google.inject.Inject;
-import ish.oncourse.server.PreferenceController;
+import javax.inject.Inject;
import ish.oncourse.server.cayenne.Account;
import ish.oncourse.server.cayenne.PaymentInLine;
import ish.util.AccountUtil;
-import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.annotation.PostAdd;
/**
diff --git a/server/src/main/java/ish/oncourse/server/messaging/EmailDequeueJob.java b/server/src/main/java/ish/oncourse/server/messaging/EmailDequeueJob.java
index 6c97122b732..9d6e46d43a5 100644
--- a/server/src/main/java/ish/oncourse/server/messaging/EmailDequeueJob.java
+++ b/server/src/main/java/ish/oncourse/server/messaging/EmailDequeueJob.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.messaging;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import com.sun.mail.smtp.SMTPAddressFailedException;
import ish.common.types.MessageStatus;
import ish.common.types.MessageType;
@@ -43,7 +43,6 @@
import java.util.Collection;
import java.util.Date;
import java.util.List;
-import java.util.Map;
@DisallowConcurrentExecution
public class EmailDequeueJob implements Job {
diff --git a/server/src/main/java/ish/oncourse/server/modules/AngelJobFactory.java b/server/src/main/java/ish/oncourse/server/modules/AngelJobFactory.java
index f76489a6d1a..cdac0395cb9 100644
--- a/server/src/main/java/ish/oncourse/server/modules/AngelJobFactory.java
+++ b/server/src/main/java/ish/oncourse/server/modules/AngelJobFactory.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.modules;
-import com.google.inject.Injector;
+import io.bootique.di.Injector;
import org.quartz.Job;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
diff --git a/server/src/main/java/ish/oncourse/server/modules/ServiceModule.java b/server/src/main/java/ish/oncourse/server/modules/ServiceModule.java
index 833fc2def55..7e58b530799 100644
--- a/server/src/main/java/ish/oncourse/server/modules/ServiceModule.java
+++ b/server/src/main/java/ish/oncourse/server/modules/ServiceModule.java
@@ -10,10 +10,9 @@
*/
package ish.oncourse.server.modules;
-import com.google.inject.Binder;
-import com.google.inject.Module;
-import com.google.inject.Scopes;
-import ish.oncourse.GoogleGuiceInjector;
+import io.bootique.di.BQModule;
+import io.bootique.di.Binder;
+import ish.oncourse.BootiqueInjector;
import ish.oncourse.aql.AqlService;
import ish.oncourse.aql.impl.AntlrAqlService;
import ish.oncourse.entity.services.*;
@@ -36,57 +35,57 @@
/**
*/
-public class ServiceModule implements Module {
+public class ServiceModule implements BQModule {
public ServiceModule() {
}
/**
- * @see com.google.inject.Module#configure(Binder)
+ * @see io.bootique.di.BQModule#configure(Binder)
*/
@Override
public void configure(Binder binder) {
- binder.bind(SanityCheckService.class).in(Scopes.SINGLETON);
- binder.bind(TransactionCheckService.class).in(Scopes.SINGLETON);
- binder.bind(PrintService.class).in(Scopes.SINGLETON);
-
+ binder.bind(SanityCheckService.class).inSingletonScope();
+ binder.bind(TransactionCheckService.class).inSingletonScope();
+ binder.bind(PrintService.class).inSingletonScope();
// jobs
binder.bind(EmailDequeueJob.class);
binder.bind(ChargebeeUploadJob.class);
- binder.bind(StatsService.class).in(Scopes.SINGLETON);
+ binder.bind(StatsService.class).inSingletonScope();
- binder.bind(AccountTransactionService.class).in(Scopes.SINGLETON);
- binder.bind(AuditService.class).in(Scopes.SINGLETON);
- binder.bind(AuditListener.class).in(Scopes.SINGLETON);
- binder.bind(CayenneListenersService.class).asEagerSingleton();
+ binder.bind(AccountTransactionService.class).inSingletonScope();
+ binder.bind(AuditService.class).inSingletonScope();
+ binder.bind(AuditListener.class).inSingletonScope();
+ binder.bind(CayenneListenersService.class).initOnStartup();
- binder.bind(MixinHelper.class).asEagerSingleton();
+ binder.bind(MixinHelper.class).initOnStartup();
binder.bind(InvoiceLineInitHelper.class);
binder.bind(ISchedulerService.class).to(SchedulerService.class);
- binder.bind(GroovyScriptService.class).in(Scopes.SINGLETON);
- binder.bind(QualityService.class).in(Scopes.SINGLETON);
+// binder.bind(GroovyScriptService.class).toProvider(GroovyScriptServiceProvider.class).inSingletonScope();
+ binder.bind(GroovyScriptService.class).inSingletonScope();
+ binder.bind(QualityService.class).inSingletonScope();
- binder.bind(GoogleGuiceInjector.class).asEagerSingleton();
+ binder.bind(BootiqueInjector.class).initOnStartup();
// entity service classes
- binder.bind(CourseClassService.class).in(Scopes.SINGLETON);
- binder.bind(StudentConcessionService.class).in(Scopes.SINGLETON);
- binder.bind(TagService.class).in(Scopes.SINGLETON);
- binder.bind(SessionService.class).in(Scopes.SINGLETON);
- binder.bind(CourseService.class).in(Scopes.SINGLETON);
- binder.bind(CertificateService.class).in(Scopes.SINGLETON);
- binder.bind(StudentService.class).in(Scopes.SINGLETON);
- binder.bind(InvoiceLineService.class).in(Scopes.SINGLETON);
- binder.bind(EnrolmentService.class).in(Scopes.SINGLETON);
- binder.bind(IAutoIncrementService.class).to(ClusteredAutoincrementService.class).in(Scopes.SINGLETON);
- binder.bind(TransactionLockedService.class).in(Scopes.SINGLETON);
- binder.bind(CustomFieldTypeService.class).in(Scopes.SINGLETON);
- binder.bind(ISystemUserService.class).to(SystemUserService.class).in(Scopes.SINGLETON);
- binder.bind(AqlService.class).to(AntlrAqlService.class).in(Scopes.SINGLETON);
- binder.bind(PayrollService.class).in(Scopes.SINGLETON);
- binder.bind(ContactMergeService.class).in(Scopes.SINGLETON);
+ binder.bind(CourseClassService.class).inSingletonScope();
+ binder.bind(StudentConcessionService.class).inSingletonScope();
+ binder.bind(TagService.class).inSingletonScope();
+ binder.bind(SessionService.class).inSingletonScope();
+ binder.bind(CourseService.class).inSingletonScope();
+ binder.bind(CertificateService.class).inSingletonScope();
+ binder.bind(StudentService.class).inSingletonScope();
+ binder.bind(InvoiceLineService.class).inSingletonScope();
+ binder.bind(EnrolmentService.class).inSingletonScope();
+ binder.bind(IAutoIncrementService.class).to(ClusteredAutoincrementService.class).inSingletonScope();
+ binder.bind(TransactionLockedService.class).inSingletonScope();
+ binder.bind(CustomFieldTypeService.class).inSingletonScope();
+ binder.bind(ISystemUserService.class).to(SystemUserService.class).inSingletonScope();
+ binder.bind(AqlService.class).to(AntlrAqlService.class).inSingletonScope();
+ binder.bind(PayrollService.class).inSingletonScope();
+ binder.bind(ContactMergeService.class).inSingletonScope();
}
}
diff --git a/server/src/main/java/ish/oncourse/server/payroll/PayrollService.java b/server/src/main/java/ish/oncourse/server/payroll/PayrollService.java
index 2b080c2ffa3..472ebd84f3d 100644
--- a/server/src/main/java/ish/oncourse/server/payroll/PayrollService.java
+++ b/server/src/main/java/ish/oncourse/server/payroll/PayrollService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.payroll;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.AttendanceType;
import ish.common.types.ClassCostFlowType;
import ish.common.types.CourseClassType;
diff --git a/server/src/main/java/ish/oncourse/server/print/PrintService.java b/server/src/main/java/ish/oncourse/server/print/PrintService.java
index 0a8338fcc01..ec94451df79 100644
--- a/server/src/main/java/ish/oncourse/server/print/PrintService.java
+++ b/server/src/main/java/ish/oncourse/server/print/PrintService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.print;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import groovy.lang.Closure;
import groovy.lang.DelegatesTo;
import ish.oncourse.server.ICayenneService;
diff --git a/server/src/main/java/ish/oncourse/server/scripting/ScriptExecutingJob.java b/server/src/main/java/ish/oncourse/server/scripting/ScriptExecutingJob.java
index a0a308a9104..18e9c5ba846 100644
--- a/server/src/main/java/ish/oncourse/server/scripting/ScriptExecutingJob.java
+++ b/server/src/main/java/ish/oncourse/server/scripting/ScriptExecutingJob.java
@@ -10,9 +10,7 @@
*/
package ish.oncourse.server.scripting;
-import com.google.inject.Inject;
import ish.oncourse.server.ICayenneService;
-import ish.oncourse.server.cayenne.Enrolment;
import ish.oncourse.server.cayenne.Script;
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.query.SelectQuery;
@@ -23,6 +21,8 @@
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
+import javax.inject.Inject;
+
@DisallowConcurrentExecution
public class ScriptExecutingJob implements Job {
diff --git a/server/src/main/java/ish/oncourse/server/scripting/api/CollegePreferenceService.java b/server/src/main/java/ish/oncourse/server/scripting/api/CollegePreferenceService.java
index 4ad39b691fe..b95b14c7a43 100644
--- a/server/src/main/java/ish/oncourse/server/scripting/api/CollegePreferenceService.java
+++ b/server/src/main/java/ish/oncourse/server/scripting/api/CollegePreferenceService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.scripting.api;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.DeliverySchedule;
import ish.oncourse.API;
import ish.oncourse.server.PreferenceController;
diff --git a/server/src/main/java/ish/oncourse/server/scripting/api/EmailService.java b/server/src/main/java/ish/oncourse/server/scripting/api/EmailService.java
index 268572681b7..8026a10fe74 100644
--- a/server/src/main/java/ish/oncourse/server/scripting/api/EmailService.java
+++ b/server/src/main/java/ish/oncourse/server/scripting/api/EmailService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.scripting.api;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import groovy.lang.Closure;
import groovy.lang.DelegatesTo;
import ish.oncourse.server.ICayenneService;
diff --git a/server/src/main/java/ish/oncourse/server/scripting/api/TemplateService.java b/server/src/main/java/ish/oncourse/server/scripting/api/TemplateService.java
index 46b0632eaed..3eec3f70cb9 100644
--- a/server/src/main/java/ish/oncourse/server/scripting/api/TemplateService.java
+++ b/server/src/main/java/ish/oncourse/server/scripting/api/TemplateService.java
@@ -10,21 +10,18 @@
*/
package ish.oncourse.server.scripting.api;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import groovy.text.SimpleTemplateEngine;
import groovy.text.Template;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.*;
import ish.oncourse.server.document.DocumentService;
-import ish.oncourse.server.entity.mixins.ContactMixin;
import ish.oncourse.server.scripting.converter.RenderType;
import ish.util.DateFormatter;
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.query.ObjectSelect;
import java.io.IOException;
-import java.time.LocalDate;
-import java.util.List;
import java.util.Map;
import java.util.TimeZone;
diff --git a/server/src/main/java/ish/oncourse/server/security/LdapAuthConnectionService.java b/server/src/main/java/ish/oncourse/server/security/LdapAuthConnectionService.java
index 4353a914c5b..cd37d5bf8ae 100644
--- a/server/src/main/java/ish/oncourse/server/security/LdapAuthConnectionService.java
+++ b/server/src/main/java/ish/oncourse/server/security/LdapAuthConnectionService.java
@@ -11,10 +11,9 @@
package ish.oncourse.server.security;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.ACLRole;
-import ish.security.LdapAuthConnection;
import ish.security.LdapAuthConnectionRequest;
import ish.security.LdapProperties;
import ish.security.TestLdapAuthConnection;
diff --git a/server/src/main/java/ish/oncourse/server/security/api/PermissionModule.java b/server/src/main/java/ish/oncourse/server/security/api/PermissionModule.java
index 12f22a2c46c..a93c304d63b 100644
--- a/server/src/main/java/ish/oncourse/server/security/api/PermissionModule.java
+++ b/server/src/main/java/ish/oncourse/server/security/api/PermissionModule.java
@@ -11,9 +11,9 @@
package ish.oncourse.server.security.api;
-import com.google.inject.Injector;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
+import io.bootique.di.Injector;
+import io.bootique.di.Provides;
+import javax.inject.Singleton;
import io.bootique.ConfigModule;
import io.bootique.config.ConfigurationFactory;
diff --git a/server/src/main/java/ish/oncourse/server/security/api/PermissionServiceFactory.java b/server/src/main/java/ish/oncourse/server/security/api/PermissionServiceFactory.java
index e913af7a809..03b7f2b213e 100644
--- a/server/src/main/java/ish/oncourse/server/security/api/PermissionServiceFactory.java
+++ b/server/src/main/java/ish/oncourse/server/security/api/PermissionServiceFactory.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.security.api;
-import com.google.inject.Injector;
+import io.bootique.di.Injector;
import ish.oncourse.server.api.security.Permission;
import ish.oncourse.server.security.api.permission.OpenApiPermission;
import ish.oncourse.server.security.api.permission.ResourcePermission;
diff --git a/server/src/main/java/ish/oncourse/server/security/api/permission/LazyApiPermission.java b/server/src/main/java/ish/oncourse/server/security/api/permission/LazyApiPermission.java
index f8cfe2527d9..93dc1edb099 100644
--- a/server/src/main/java/ish/oncourse/server/security/api/permission/LazyApiPermission.java
+++ b/server/src/main/java/ish/oncourse/server/security/api/permission/LazyApiPermission.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.security.api.permission;
-import io.bootique.jetty.servlet.DefaultServletEnvironment;
+import io.bootique.jetty.servlet.AngelServletEnvironment;
import ish.common.types.KeyCode;
import ish.oncourse.server.cayenne.Module;
import ish.oncourse.server.cayenne.*;
@@ -171,7 +171,7 @@ private String getQueryString() {
return reserveQueryString;
}
- var environment = injector.getInstance(DefaultServletEnvironment.class);
+ var environment = injector.getInstance(AngelServletEnvironment.class);
if (!environment.request().isPresent()) {
return null;
}
diff --git a/server/src/main/java/ish/oncourse/server/security/api/permission/QueryParamBasedPermission.java b/server/src/main/java/ish/oncourse/server/security/api/permission/QueryParamBasedPermission.java
index 192fcd689c4..7989f6a7c58 100644
--- a/server/src/main/java/ish/oncourse/server/security/api/permission/QueryParamBasedPermission.java
+++ b/server/src/main/java/ish/oncourse/server/security/api/permission/QueryParamBasedPermission.java
@@ -11,13 +11,11 @@
package ish.oncourse.server.security.api.permission;
-import io.bootique.jetty.servlet.DefaultServletEnvironment;
+import io.bootique.jetty.servlet.AngelServletEnvironment;
import ish.common.types.KeyCode;
import ish.common.types.Mask;
import ish.oncourse.server.security.api.IPermissionService;
-import javax.servlet.http.HttpServletRequest;
-
/**
* Permission which checks permission based on query parameter value.
*/
@@ -71,7 +69,7 @@ public PermissionCheckingResult check() {
}
private String getQueryString() {
- var environment = injector.getInstance(DefaultServletEnvironment.class);
+ var environment = injector.getInstance(AngelServletEnvironment.class);
if (!environment.request().isPresent()) {
return null;
}
diff --git a/server/src/main/java/ish/oncourse/server/security/api/permission/ResourcePermission.java b/server/src/main/java/ish/oncourse/server/security/api/permission/ResourcePermission.java
index aee9162ea13..2d6f541e6d6 100644
--- a/server/src/main/java/ish/oncourse/server/security/api/permission/ResourcePermission.java
+++ b/server/src/main/java/ish/oncourse/server/security/api/permission/ResourcePermission.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.security.api.permission;
-import com.google.inject.Injector;
+import io.bootique.di.Injector;
import ish.validation.AngelUriTemplatePathSpec;
diff --git a/server/src/main/java/ish/oncourse/server/services/AuditPurgeJob.java b/server/src/main/java/ish/oncourse/server/services/AuditPurgeJob.java
index 0044a378e51..3fbcae1b6df 100644
--- a/server/src/main/java/ish/oncourse/server/services/AuditPurgeJob.java
+++ b/server/src/main/java/ish/oncourse/server/services/AuditPurgeJob.java
@@ -8,7 +8,7 @@
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.license.LicenseService;
import org.apache.cayenne.ObjectContext;
diff --git a/server/src/main/java/ish/oncourse/server/services/ClusteredAutoincrementService.java b/server/src/main/java/ish/oncourse/server/services/ClusteredAutoincrementService.java
index 45e61b1d2ac..784f2646633 100644
--- a/server/src/main/java/ish/oncourse/server/services/ClusteredAutoincrementService.java
+++ b/server/src/main/java/ish/oncourse/server/services/ClusteredAutoincrementService.java
@@ -14,7 +14,7 @@
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.query.SQLExec;
diff --git a/server/src/main/java/ish/oncourse/server/services/CustomFieldTypeService.java b/server/src/main/java/ish/oncourse/server/services/CustomFieldTypeService.java
index ece1a1962aa..a063b1e9823 100644
--- a/server/src/main/java/ish/oncourse/server/services/CustomFieldTypeService.java
+++ b/server/src/main/java/ish/oncourse/server/services/CustomFieldTypeService.java
@@ -11,11 +11,10 @@
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.CustomFieldType;
import ish.oncourse.server.function.DeleteCustomFieldTypeWithRelatedFields;
-import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.query.SelectById;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/server/src/main/java/ish/oncourse/server/services/DelayedEnrolmentIncomePostingJob.java b/server/src/main/java/ish/oncourse/server/services/DelayedEnrolmentIncomePostingJob.java
index f4397fb1395..1191e952643 100644
--- a/server/src/main/java/ish/oncourse/server/services/DelayedEnrolmentIncomePostingJob.java
+++ b/server/src/main/java/ish/oncourse/server/services/DelayedEnrolmentIncomePostingJob.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.AccountTransactionType;
import ish.common.types.EnrolmentStatus;
import ish.common.types.InvoiceType;
diff --git a/server/src/main/java/ish/oncourse/server/services/InvoiceOverdueUpdateJob.java b/server/src/main/java/ish/oncourse/server/services/InvoiceOverdueUpdateJob.java
index d1898685058..8b507fe3397 100644
--- a/server/src/main/java/ish/oncourse/server/services/InvoiceOverdueUpdateJob.java
+++ b/server/src/main/java/ish/oncourse/server/services/InvoiceOverdueUpdateJob.java
@@ -11,11 +11,10 @@
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.math.Money;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.Invoice;
-import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.query.ObjectSelect;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -26,7 +25,6 @@
import java.time.LocalDate;
import java.util.Date;
-import java.util.List;
/**
* this job runs nightly and processes invoice lines, posting the delayed income between liability and income accounts.
diff --git a/server/src/main/java/ish/oncourse/server/services/PermanentlyDeleteDocumentsJob.java b/server/src/main/java/ish/oncourse/server/services/PermanentlyDeleteDocumentsJob.java
index 179e879fe88..a90ffbf29fd 100644
--- a/server/src/main/java/ish/oncourse/server/services/PermanentlyDeleteDocumentsJob.java
+++ b/server/src/main/java/ish/oncourse/server/services/PermanentlyDeleteDocumentsJob.java
@@ -8,7 +8,7 @@
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.Document;
import ish.oncourse.server.document.DocumentService;
diff --git a/server/src/main/java/ish/oncourse/server/services/SchedulerService.java b/server/src/main/java/ish/oncourse/server/services/SchedulerService.java
index 1b469bb8d47..c68dc1e44e5 100644
--- a/server/src/main/java/ish/oncourse/server/services/SchedulerService.java
+++ b/server/src/main/java/ish/oncourse/server/services/SchedulerService.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.util.TimeZoneUtil;
import org.apache.cayenne.access.DataContext;
diff --git a/server/src/main/java/ish/oncourse/server/services/StatsService.java b/server/src/main/java/ish/oncourse/server/services/StatsService.java
index 2d08c311d83..8df55b17cb6 100644
--- a/server/src/main/java/ish/oncourse/server/services/StatsService.java
+++ b/server/src/main/java/ish/oncourse/server/services/StatsService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.EnrolmentStatus;
import ish.common.types.PaymentSource;
import ish.math.Money;
diff --git a/server/src/main/java/ish/oncourse/server/services/TestAutoIncrementService.java b/server/src/main/java/ish/oncourse/server/services/TestAutoIncrementService.java
index 2a93391af95..a3a00170333 100644
--- a/server/src/main/java/ish/oncourse/server/services/TestAutoIncrementService.java
+++ b/server/src/main/java/ish/oncourse/server/services/TestAutoIncrementService.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.Invoice;
import ish.oncourse.server.cayenne.Student;
diff --git a/server/src/main/java/ish/oncourse/server/services/TransactionLockedService.java b/server/src/main/java/ish/oncourse/server/services/TransactionLockedService.java
index 3e6c131873b..d237de396a4 100644
--- a/server/src/main/java/ish/oncourse/server/services/TransactionLockedService.java
+++ b/server/src/main/java/ish/oncourse/server/services/TransactionLockedService.java
@@ -11,7 +11,7 @@
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.cayenne.Preference;
import ish.persistence.Preferences;
diff --git a/server/src/main/java/ish/oncourse/server/services/VoucherExpiryJob.java b/server/src/main/java/ish/oncourse/server/services/VoucherExpiryJob.java
index 06a0b8e1469..0bfca9f450c 100644
--- a/server/src/main/java/ish/oncourse/server/services/VoucherExpiryJob.java
+++ b/server/src/main/java/ish/oncourse/server/services/VoucherExpiryJob.java
@@ -10,7 +10,7 @@
*/
package ish.oncourse.server.services;
-import com.google.inject.Inject;
+import javax.inject.Inject;
import ish.common.types.ProductStatus;
import ish.oncourse.server.ICayenneService;
import ish.oncourse.server.accounting.AccountTransactionService;
diff --git a/server/src/main/java/ish/oncourse/server/upgrades/DataPopulation.java b/server/src/main/java/ish/oncourse/server/upgrades/DataPopulation.java
index 7286c94ef7f..6bb422e3334 100644
--- a/server/src/main/java/ish/oncourse/server/upgrades/DataPopulation.java
+++ b/server/src/main/java/ish/oncourse/server/upgrades/DataPopulation.java
@@ -10,8 +10,8 @@
*/
package ish.oncourse.server.upgrades;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
+import javax.inject.Inject;
+import javax.inject.Named;
import ish.oncourse.common.ResourceProperty;
import ish.oncourse.common.ResourceType;
import ish.oncourse.common.ResourcesUtil;
diff --git a/server/src/main/java/ish/oncourse/server/upgrades/liquibase/change/UpdateFavouriteLinks.groovy b/server/src/main/java/ish/oncourse/server/upgrades/liquibase/change/UpdateFavouriteLinks.groovy
index a7de8ace856..c48b90601ce 100644
--- a/server/src/main/java/ish/oncourse/server/upgrades/liquibase/change/UpdateFavouriteLinks.groovy
+++ b/server/src/main/java/ish/oncourse/server/upgrades/liquibase/change/UpdateFavouriteLinks.groovy
@@ -9,7 +9,7 @@
package ish.oncourse.server.upgrades.liquibase.change
import com.google.common.base.CaseFormat
-import com.google.inject.Inject
+import javax.inject.Inject
import ish.liquibase.IshTaskChange
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.Preference
@@ -23,6 +23,7 @@ import org.apache.cayenne.query.ObjectSelect
import static ish.oncourse.server.preference.UserPreferenceService.JOIN_DELIMETER
class UpdateFavouriteLinks extends IshTaskChange {
+
private static final String DASHBOARD_FAVORITE_CATEGORY = "html.dashboard.favorite"
@Inject
diff --git a/server/src/test/groovy/ish/TestWithBootique.groovy b/server/src/test/groovy/ish/TestWithBootique.groovy
index 85fb489b8bc..df96289f0d4 100644
--- a/server/src/test/groovy/ish/TestWithBootique.groovy
+++ b/server/src/test/groovy/ish/TestWithBootique.groovy
@@ -1,9 +1,9 @@
package ish
-import com.google.inject.Binder
-import com.google.inject.Module
-import com.google.inject.Provides
-import com.google.inject.Singleton
+import io.bootique.di.Binder
+import io.bootique.di.BQModule
+import io.bootique.di.Provides
+import javax.inject.Singleton
import groovy.transform.CompileStatic
import io.bootique.BQRuntime
import io.bootique.cayenne.CayenneConfigMerger
@@ -46,7 +46,6 @@ abstract class TestWithBootique {
protected static final String ANGEL_NODE = "AngelNode"
protected static final String MARIADB = "mariadb"
-
private static boolean loggingInitialised = false
public BQRuntime injector
@@ -89,7 +88,7 @@ abstract class TestWithBootique {
.app("--config=classpath:application-test.yml")
.module(AngelModule.class)
.module(TestModule.class)
- .module(new Module() {
+ .module(new BQModule() {
@Provides
@Singleton
@@ -130,7 +129,6 @@ abstract class TestWithBootique {
return runtime
}
-
@Override
void configure(Binder binder) {
diff --git a/server/src/test/groovy/ish/TestWithDatabase.groovy b/server/src/test/groovy/ish/TestWithDatabase.groovy
index a291c1bbab1..bda5f34270b 100644
--- a/server/src/test/groovy/ish/TestWithDatabase.groovy
+++ b/server/src/test/groovy/ish/TestWithDatabase.groovy
@@ -1,8 +1,8 @@
package ish
-import com.google.inject.Binder
-import com.google.inject.Inject
-import com.google.inject.Module
+import io.bootique.di.Binder
+import javax.inject.Inject
+import io.bootique.di.BQModule
import groovy.transform.CompileStatic
import io.bootique.cayenne.CayenneModule
import io.bootique.jdbc.DataSourceListener
@@ -76,7 +76,7 @@ abstract class TestWithDatabase extends TestWithBootique {
@BeforeEach
@Order(2)
- private void setup() throws Exception {
+ void setup() throws Exception {
validateAccountAndTaxDefaults()
checkPaymentMethods()
}
@@ -87,7 +87,7 @@ abstract class TestWithDatabase extends TestWithBootique {
.module(AngelModule.class)
.module(JdbcModule.class)
.module(LicenseModule.class)
- .module(new Module() {
+ .module(new BQModule() {
@Override
void configure(Binder binder) {
JdbcModule.extend(binder).addDataSourceListener(new DataSourceListener() {
@@ -107,7 +107,7 @@ abstract class TestWithDatabase extends TestWithBootique {
})
.module(JdbcHikariCPModule.class)
.module(CayenneModule.class)
- .module(new Module() {
+ .module(new BQModule() {
@Override
void configure(Binder binder) {
CayenneModule.extend(binder).addModule(new org.apache.cayenne.di.Module() {
@@ -122,7 +122,7 @@ abstract class TestWithDatabase extends TestWithBootique {
.module(ish.oncourse.server.modules.TestModule.class)
.module(ApiCayenneLayerModule.class)
- def testModules = new Reflections(PluginService.PLUGIN_PACKAGE).getTypesAnnotatedWith(ish.TestModule) as Set
+ def testModules = new Reflections(PluginService.PLUGIN_PACKAGE).getTypesAnnotatedWith(TestModule) as Set
testModules.each {
builder.module(it)
}
diff --git a/server/src/test/groovy/ish/oncourse/server/modules/TestModule.groovy b/server/src/test/groovy/ish/oncourse/server/modules/TestModule.groovy
index 37fb1266c0e..6ddc4530154 100644
--- a/server/src/test/groovy/ish/oncourse/server/modules/TestModule.groovy
+++ b/server/src/test/groovy/ish/oncourse/server/modules/TestModule.groovy
@@ -1,14 +1,9 @@
-/**
- * Copyright ish group pty ltd. All rights reserved. http://www.ish.com.au
- * No copying or use of this code is allowed without permission in writing from ish.
- */
package ish.oncourse.server.modules
-import com.google.inject.Binder
-import com.google.inject.Module
-import com.google.inject.Scopes
import groovy.transform.CompileStatic
-import ish.oncourse.GoogleGuiceInjector
+import io.bootique.di.BQModule
+import io.bootique.di.Binder
+import ish.oncourse.BootiqueInjector
import ish.oncourse.aql.AqlService
import ish.oncourse.aql.impl.AntlrAqlService
import ish.oncourse.entity.services.*
@@ -30,62 +25,57 @@ import ish.oncourse.server.querying.QueryService
import ish.oncourse.server.scripting.GroovyScriptService
import ish.oncourse.server.services.*
import ish.oncourse.server.upgrades.DataPopulation
-import org.apache.logging.log4j.LogManager
-import org.apache.logging.log4j.Logger
import org.mockito.Mockito
@CompileStatic
-class TestModule implements Module {
-
- private static final Logger logger = LogManager.getLogger()
-
+class TestModule implements BQModule {
@Override
void configure(Binder binder) {
- binder.bind(AccountTransactionService.class).in(Scopes.SINGLETON)
- binder.bind(AuditService.class).in(Scopes.SINGLETON)
+ binder.bind(AccountTransactionService.class).inSingletonScope()
+ binder.bind(AuditService.class).inSingletonScope()
binder.bind(AuditListener.class).toInstance(Mockito.mock(AuditListener.class))
- binder.bind(MixinHelper.class).asEagerSingleton()
+ binder.bind(MixinHelper.class).initOnStartup()
binder.bind(InvoiceLineInitHelper.class)
binder.bind(AqlService.class).to(AntlrAqlService.class)
- binder.bind(QueryService.class).in(Scopes.SINGLETON)
- binder.bind(GroovyScriptService.class).in(Scopes.SINGLETON)
- binder.bind(MessageService.class).in(Scopes.SINGLETON)
+ binder.bind(QueryService.class).inSingletonScope()
+ binder.bind(GroovyScriptService.class).inSingletonScope()
+ binder.bind(MessageService.class).inSingletonScope()
// dummy scheduler service for tests
binder.bind(ISchedulerService.class).toInstance(new TestSchedulerService())
- binder.bind(GoogleGuiceInjector.class).asEagerSingleton()
+ binder.bind(BootiqueInjector.class).initOnStartup()
// entity service classes
- binder.bind(CourseClassService.class).in(Scopes.SINGLETON)
- binder.bind(StudentConcessionService.class).in(Scopes.SINGLETON)
- binder.bind(TagService.class).in(Scopes.SINGLETON)
- binder.bind(SessionService.class).in(Scopes.SINGLETON)
- binder.bind(CourseService.class).in(Scopes.SINGLETON)
- binder.bind(CertificateService.class).in(Scopes.SINGLETON)
- binder.bind(StudentService.class).in(Scopes.SINGLETON)
- binder.bind(InvoiceLineService.class).in(Scopes.SINGLETON)
- binder.bind(IAutoIncrementService.class).to(TestAutoIncrementService.class).in(Scopes.SINGLETON)
- binder.bind(CertificateServiceTest.class).in(Scopes.SINGLETON)
- binder.bind(ISystemUserService.class).to(TestSystemUserService.class).in(Scopes.SINGLETON)
+ binder.bind(CourseClassService.class).inSingletonScope()
+ binder.bind(StudentConcessionService.class).inSingletonScope()
+ binder.bind(TagService.class).inSingletonScope()
+ binder.bind(SessionService.class).inSingletonScope()
+ binder.bind(CourseService.class).inSingletonScope()
+ binder.bind(CertificateService.class).inSingletonScope()
+ binder.bind(StudentService.class).inSingletonScope()
+ binder.bind(InvoiceLineService.class).inSingletonScope()
+ binder.bind(IAutoIncrementService.class).to(TestAutoIncrementService.class).inSingletonScope()
+ binder.bind(CertificateServiceTest.class).inSingletonScope()
+ binder.bind(ISystemUserService.class).to(TestSystemUserService.class).inSingletonScope()
- binder.bind(CustomFieldTypeService.class).in(Scopes.SINGLETON)
- binder.bind(SanityCheckService.class).in(Scopes.SINGLETON)
- binder.bind(QualityService.class).in(Scopes.SINGLETON)
- binder.bind(ExportService.class).in(Scopes.SINGLETON)
- binder.bind(DuplicateCourseService.class).in(Scopes.SINGLETON)
- binder.bind(DuplicateClassService.class).in(Scopes.SINGLETON)
+ binder.bind(CustomFieldTypeService.class).inSingletonScope()
+ binder.bind(SanityCheckService.class).inSingletonScope()
+ binder.bind(QualityService.class).inSingletonScope()
+ binder.bind(ExportService.class).inSingletonScope()
+ binder.bind(DuplicateCourseService.class).inSingletonScope()
+ binder.bind(DuplicateClassService.class).inSingletonScope()
- binder.bind(DataPopulation.class).in(Scopes.SINGLETON)
- binder.bind(ImportService.class).in(Scopes.SINGLETON)
- binder.bind(ContactMergeService.class).in(Scopes.SINGLETON)
- binder.bind(SessionValidator.class).in(Scopes.SINGLETON)
+ binder.bind(DataPopulation.class).inSingletonScope()
+ binder.bind(ImportService.class).inSingletonScope()
+ binder.bind(ContactMergeService.class).inSingletonScope()
+ binder.bind(SessionValidator.class).inSingletonScope()
- binder.bind(CayenneListenersService.class).asEagerSingleton();
+ binder.bind(CayenneListenersService.class).initOnStartup()
}
}
diff --git a/server/src/test/groovy/ish/oncourse/server/security/api/MockModule.groovy b/server/src/test/groovy/ish/oncourse/server/security/api/MockModule.groovy
index 4f7cfc34adc..b6cdbd8dbc7 100644
--- a/server/src/test/groovy/ish/oncourse/server/security/api/MockModule.groovy
+++ b/server/src/test/groovy/ish/oncourse/server/security/api/MockModule.groovy
@@ -1,16 +1,15 @@
package ish.oncourse.server.security.api
-import com.google.inject.Binder
-import com.google.inject.Module
+import io.bootique.di.Binder
+import io.bootique.di.BQModule
import groovy.transform.CompileStatic
import ish.oncourse.server.services.ISystemUserService
@CompileStatic
-class MockModule implements Module {
-
+class MockModule implements BQModule {
@Override
void configure(Binder binder) {
- binder.bind(ISystemUserService.class).to(MockSystemUserService.class).asEagerSingleton()
+ binder.bind(ISystemUserService.class).to(MockSystemUserService.class).initOnStartup()
}
}
diff --git a/server/src/test/groovy/ish/oncourse/server/services/TestSystemUserService.groovy b/server/src/test/groovy/ish/oncourse/server/services/TestSystemUserService.groovy
index fc4f106536b..50b30802892 100644
--- a/server/src/test/groovy/ish/oncourse/server/services/TestSystemUserService.groovy
+++ b/server/src/test/groovy/ish/oncourse/server/services/TestSystemUserService.groovy
@@ -1,20 +1,16 @@
package ish.oncourse.server.services
-import com.google.inject.Inject
+import javax.inject.Inject
import groovy.transform.CompileStatic
import ish.oncourse.API
import ish.oncourse.server.ICayenneService
import ish.oncourse.server.cayenne.ACLRole
import ish.oncourse.server.cayenne.SystemUser
import org.apache.cayenne.query.ObjectSelect
-import org.apache.logging.log4j.LogManager
-import org.apache.logging.log4j.Logger
@CompileStatic
class TestSystemUserService implements ISystemUserService {
- static final Logger logger = LogManager.getLogger()
-
private ICayenneService cayenneService
@Inject
diff --git a/server/src/test/groovy/org/eclipse/jetty/testing/AngelServletTester.java b/server/src/test/groovy/org/eclipse/jetty/testing/AngelServletTester.java
index 662b8cd1fee..916a69fb850 100644
--- a/server/src/test/groovy/org/eclipse/jetty/testing/AngelServletTester.java
+++ b/server/src/test/groovy/org/eclipse/jetty/testing/AngelServletTester.java
@@ -4,7 +4,7 @@
*/
package org.eclipse.jetty.testing;
-import com.google.inject.Provider;
+import javax.inject.Provider;
import groovy.transform.CompileStatic;
import ish.oncourse.server.AngelServerFactory;
import ish.oncourse.server.PreferenceController;
diff --git a/types/build.gradle b/types/build.gradle
index 7ed7b1d6f54..be196e5a63a 100644
--- a/types/build.gradle
+++ b/types/build.gradle
@@ -10,10 +10,16 @@
*/
plugins {
+ id 'java'
id 'java-library'
id 'maven-publish'
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ group = 'ish.oncourse'
+}
+
sourceSets.main.java.srcDirs = []
sourceSets.main.groovy.srcDir 'src/main/java'
@@ -40,14 +46,10 @@ dependencies {
}
task sourceJar(type: Jar, dependsOn: classes) {
- classifier = 'sources'
+ archiveClassifier = 'sources'
from sourceSets.main.allSource
}
-group = 'ish.oncourse'
-sourceCompatibility = 8
-
-
publishing {
publications {
jar(MavenPublication) {