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. <code>public static int[] each(int[] self, Closure closure)</code> + * provides an <code>each({i -> })</code> method for <code>int[]</code>. + * <p> + * 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. + * + * <pre class="groovyTestCase"> + * Serializable[] array = [1,2L,-3G] + * assert array.join("+") == "1+2+-3" + * </pre> + * + * @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<String> DEFAULT_IMPORT_PKGS = new HashSet<>(); + static final Set<String> 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: + * <pre> + * <dl> + * <dt>safe</dt><dd>provides protection if the {@code toString} throws an exception, in which case the exception is swallowed and a dumber default {@code toString} is used</dd> + * <dt>maxSize</dt><dd>will attempt to truncate the output to fit approx the maxSize number of characters, -1 means don't truncate</dd> + * <dt>inspect</dt><dd>if false, render a value by its {@code toString}, otherwise use its {@code inspect} value</dd> + * <dt>escapeBackSlashes</dt><dd>whether characters like tab, newline, etc. are converted to their escaped rendering ('\t', '\n', etc.)</dd> + * <dt>verbose</dt><dd>shorthand to turn on both {@code inspect} and {@code escapeBackslashes}</dd> + * </dl> + * </pre> + * + * @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<String, Object> 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<LinkArgument> links; + private String packagePath; + private SimpleGroovyClassDoc currentClassDoc = null; + private Map<String, GroovyClassDoc> classDocs = new HashMap<>(); + private final Properties properties; + private static final String FS = "/"; + + public GroovydocVisitor(final SourceUnit unit, String packagePath, List<LinkArgument> links) { + this(unit, packagePath, links, new Properties()); + } + + public GroovydocVisitor(final SourceUnit unit, String packagePath, List<LinkArgument> 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<String, String> aliases = new HashMap<>(); + final List<String> 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<InnerClassNode> innerClasses = node.getInnerClasses(); + while (innerClasses.hasNext()) { + visitClass(innerClasses.next()); + parent.addNested(currentClassDoc); + currentClassDoc = parent; + } + } + + private List<String> withDefaultImports(List<String> 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<String, GroovyClassDoc> 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<String, GroovyClassDoc> 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<Object> singletons = new HashSet<>() private Set<Class> classes = new HashSet<>() private Map<String, Object> props = new HashMap<>() - CXFApplication(Set<Object> resources, Set<Object> features, Map<String, String> 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<Object> contributeResources(Binder binder) { - return Multibinder.newSetBinder(binder, Key.get(Object.class, CXFResource)) + static SetBuilder<Object> contributeResources(Binder binder) { + return binder.bindSet(Object.class, CXFResource.class) } - static Multibinder<Object> contributeFeatures(Binder binder) { - return Multibinder.newSetBinder(binder, Key.get(Object.class, CXFFeature)) + static SetBuilder<Object> 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<ObjectMapper> { 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<String> { @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<Integer> { @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<Integer> { */ @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<Integer> { 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<AccountDTO, Account, AccountDao>{ 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<AssessmentDTO, Assessment, AssessmentDao> { @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<AssessmentClassDTO, Ass private AssessmentSubmissionApiService submissionApiService @Inject - private CourseClassApiService classService + private Provider<CourseClassApiService> classServiceProvider @Inject private ContactApiService contactService @@ -65,7 +66,7 @@ class AssessmentClassApiService extends EntityApiService<AssessmentClassDTO, Ass AssessmentClass toCayenneModel(AssessmentClassDTO dto, AssessmentClass cayenneModel) { ObjectContext context = cayenneModel.context cayenneModel.assessment = assessmentService.getEntityAndValidateExistence(context, dto.assessmentId) - cayenneModel.courseClass = classService.getEntityAndValidateExistence(context, dto.courseClassId) + cayenneModel.courseClass = classServiceProvider.get().getEntityAndValidateExistence(context, dto.courseClassId) context.deleteObjects(cayenneModel.assessmentClassTutors.findAll {!(it.tutor.contact.id in dto.contactIds)}) @@ -100,7 +101,7 @@ class AssessmentClassApiService extends EntityApiService<AssessmentClassDTO, Ass } Assessment assessment = assessmentService.getEntityAndValidateExistence(context, dto.assessmentId) - CourseClass courseClass = classService.getEntityAndValidateExistence(context, dto.courseClassId) + CourseClass courseClass = classServiceProvider.get().getEntityAndValidateExistence(context, dto.courseClassId) if (entityDao.hasDuplicates(id, courseClass, assessment)) { validator.throwClientErrorException(id, 'assessmentCode', "$assessment.name already added to class, please remove existing assessment task first") diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentSubmissionApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentSubmissionApiService.groovy index 42553a164cd..f5c69e4e2e6 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentSubmissionApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/AssessmentSubmissionApiService.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.AssessmentSubmissionDao import ish.oncourse.server.api.v1.model.AssessmentSubmissionDTO import ish.oncourse.server.cayenne.AssessmentSubmission diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/BankingService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/BankingService.groovy index 69fdcce0943..2fa889a516b 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/BankingService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/BankingService.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.CreditCardType import ish.common.types.PaymentStatus diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/BulkChangeApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/BulkChangeApiService.groovy index c11f2e14b77..aac9e94fca0 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/BulkChangeApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/BulkChangeApiService.groovy @@ -9,7 +9,7 @@ package ish.oncourse.server.api.service -import com.google.inject.Inject +import javax.inject.Inject import groovy.transform.CompileDynamic import ish.common.types.MessageStatus import ish.oncourse.aql.AqlService diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/CertificateApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/CertificateApiService.groovy index 832865cc1f5..9ce9b6c2d3e 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/CertificateApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/CertificateApiService.groovy @@ -11,12 +11,11 @@ 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.OutcomeStatus import ish.common.types.UsiStatus -import ish.oncourse.server.PreferenceController import ish.oncourse.server.api.dao.* import ish.oncourse.server.api.v1.model.CertificateCreateForEnrolmentsRequestDTO import ish.oncourse.server.api.v1.model.CertificateDTO diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ClassCostApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ClassCostApiService.groovy index 78bbd3455cb..5709fb3f41b 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/ClassCostApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/ClassCostApiService.groovy @@ -11,36 +11,19 @@ package ish.oncourse.server.api.service -import com.google.inject.Inject -import ish.oncourse.server.api.dao.DiscountDao -import static ish.oncourse.server.api.servlet.ApiFilter.validateOnly -import ish.common.types.AccountType -import ish.common.types.ClassCostFlowType -import ish.common.types.ClassCostRepetitionType -import ish.common.types.KeyCode -import ish.common.types.Mask +import javax.inject.Inject +import javax.inject.Provider +import ish.common.types.* import ish.math.Money -import ish.oncourse.server.api.dao.AccountDao -import ish.oncourse.server.api.dao.ClassCostDao -import ish.oncourse.server.api.dao.CourseClassDao -import ish.oncourse.server.api.dao.TaxDao -import ish.oncourse.server.api.v1.function.DiscountFunctions -import ish.oncourse.server.api.v1.model.ClassCostDTO -import ish.oncourse.server.api.v1.model.ClassCostFlowTypeDTO -import ish.oncourse.server.api.v1.model.ClassCostRepetitionTypeDTO -import ish.oncourse.server.api.v1.model.CourseClassDiscountDTO -import ish.oncourse.server.api.v1.model.CourseClassPaymentPlanDTO -import ish.oncourse.server.cayenne.Account -import ish.oncourse.server.cayenne.ClassCost -import ish.oncourse.server.cayenne.CourseClass -import ish.oncourse.server.cayenne.CourseClassPaymentPlanLine -import ish.oncourse.server.cayenne.CourseClassTutor -import ish.oncourse.server.cayenne.DiscountCourseClass -import ish.oncourse.server.cayenne.Tax +import ish.oncourse.server.api.dao.* +import ish.oncourse.server.api.v1.model.* +import ish.oncourse.server.cayenne.* import ish.oncourse.server.security.api.IPermissionService import ish.util.MoneyUtil import org.apache.cayenne.ObjectContext +import static ish.oncourse.server.api.servlet.ApiFilter.validateOnly + class ClassCostApiService extends EntityApiService<ClassCostDTO, ClassCost, ClassCostDao>{ @Inject @@ -50,7 +33,7 @@ class ClassCostApiService extends EntityApiService<ClassCostDTO, ClassCost, Clas private CourseClassDao courseClassDao @Inject - private CourseClassApiService classApiService + private Provider<CourseClassApiService> classApiServiceProvider @Inject private TaxDao taxDao @@ -235,7 +218,7 @@ class ClassCostApiService extends EntityApiService<ClassCostDTO, ClassCost, Clas CourseClass courseClass = null if (!(validateOnly.get() && id == null && dto.courseClassid == null)){ - courseClass = classApiService.getEntityAndValidateExistence(context, dto.courseClassid) + courseClass = classApiServiceProvider.get().getEntityAndValidateExistence(context, dto.courseClassid) } if (dto.flowType == null) { diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/ContactApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/ContactApiService.groovy index 956763e6b47..607531f4edc 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/ContactApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/ContactApiService.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.AttachmentSpecialType import ish.common.types.USIFieldStatus diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/CorporatePassApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/CorporatePassApiService.groovy index 10c7c06e87b..392786b5c35 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/CorporatePassApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/CorporatePassApiService.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.ContactDao import ish.oncourse.server.api.dao.CorporatePassDao import ish.oncourse.server.api.v1.model.CorporatePassDTO diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/CourseApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/CourseApiService.groovy index bd16ab2715f..0a151708154 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/CourseApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/CourseApiService.groovy @@ -11,7 +11,7 @@ package ish.oncourse.server.api.service -import com.google.inject.Inject +import javax.inject.Inject import ish.common.types.KeyCode import ish.common.types.Mask import ish.duplicate.CourseDuplicationRequest diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassApiService.groovy index e2d04e729f4..a33e8e51460 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassApiService.groovy @@ -11,7 +11,7 @@ package ish.oncourse.server.api.service -import com.google.inject.Inject +import javax.inject.Inject import ish.cancel.CancelationResult import ish.common.types.EnrolmentStatus import ish.common.types.OutcomeStatus diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassTutorApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassTutorApiService.groovy index ee4edc7d980..d6cae26abbb 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassTutorApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/CourseClassTutorApiService.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.ContactDao import ish.oncourse.server.api.dao.CourseClassDao import ish.oncourse.server.api.dao.CourseClassTutorDao @@ -23,7 +23,6 @@ import ish.oncourse.server.cayenne.Contact import ish.oncourse.server.cayenne.CourseClass import ish.oncourse.server.cayenne.CourseClassTutor import ish.oncourse.server.cayenne.DefinedTutorRole -import ish.oncourse.server.cayenne.Student import ish.util.LocalDateUtils import org.apache.cayenne.ObjectContext diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/DocumentApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/DocumentApiService.groovy index dd54df823db..f6d68004834 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/DocumentApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/DocumentApiService.groovy @@ -11,11 +11,10 @@ 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.DocumentDao import ish.oncourse.server.api.v1.model.DocumentVisibilityDTO -import ish.oncourse.server.cayenne.DocumentVersion import ish.oncourse.server.document.DocumentService import ish.s3.AmazonS3Service import ish.util.LocalDateUtils diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/EnrolmentApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/EnrolmentApiService.groovy index 5448fbf2e26..d76146decdc 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/EnrolmentApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/EnrolmentApiService.groovy @@ -11,10 +11,9 @@ package ish.oncourse.server.api.service -import com.google.inject.Inject +import javax.inject.Inject import ish.cancel.CancelationResult import ish.cancel.EnrolmentCancelationRequest -import ish.common.types.EnrolmentReportingStatus import ish.common.types.EnrolmentStatus import ish.math.Money import ish.oncourse.server.api.dao.EnrolmentDao diff --git a/server/src/main/groovy/ish/oncourse/server/api/service/EntityApiService.groovy b/server/src/main/groovy/ish/oncourse/server/api/service/EntityApiService.groovy index 246f5528153..7b964a824a1 100644 --- a/server/src/main/groovy/ish/oncourse/server/api/service/EntityApiService.groovy +++ b/server/src/main/groovy/ish/oncourse/server/api/service/EntityApiService.groovy @@ -11,19 +11,15 @@ package ish.oncourse.server.api.service -import com.google.inject.Inject +import javax.inject.Inject import groovy.transform.CompileStatic import ish.oncourse.aql.AqlService import ish.oncourse.server.ICayenneService import ish.oncourse.server.api.dao.CayenneLayer import ish.oncourse.server.api.traits._DTOTrait -import ish.oncourse.server.api.v1.model.DiffDTO import ish.oncourse.server.api.validation.EntityValidator import org.apache.cayenne.ObjectContext import org.apache.cayenne.Persistent -import org.apache.cayenne.query.ObjectSelect - -import static ish.oncourse.server.api.function.EntityFunctions.parseSearchQuery @CompileStatic abstract class EntityApiService<T extends _DTOTrait, K extends Persistent, M extends CayenneLayer<K>> { 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<FacultyDTO, Faculty, FacultyD private DocumentService documentService @Inject - private CourseApiService courseApiService + private Provider<CourseApiService> courseApiServiceProvider @Override Class<Faculty> getPersistentClass() { @@ -129,7 +130,7 @@ class FacultyApiService extends TaggableApiService<FacultyDTO, Faculty, FacultyD List<Long> coursesToSave = courseDTOS*.id ?: [] as List<Long> List<Course> coursesToRemove = faculty.courses.findAll {!coursesToSave.contains(it.id)} List<Course> 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<NoteDTO, Note, NoteDao> { +class NoteApiService extends EntityApiService<NoteDTO, Note, NoteDao> { private Map<String, List<Class>> 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<Servlet> servlets, Set<MappedServlet> mappedServlets, Set<Filter> filters, Set<MappedFilter> mappedFilters, Set<EventListener> listeners, Set<MappedListener> mappedListeners, Set<ServletContextHandlerExtender> 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<String, RequestMDCItem> 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<MappedServlet> servlets, - Set<MappedFilter> filters, - Set<MappedListener> listeners, - Set<ServletContextHandlerExtender> contextHandlerExtenders) { - - ThreadPool threadPool = createThreadPool(); - ServletContextHandler contextHandler = createHandler(servlets, filters, listeners); - + @Override + public ServerHolder createServerHolder(Set<MappedServlet> servlets, Set<MappedFilter> filters, Set<MappedListener> listeners, Set<ServletContextHandlerExtender> 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<ConnectorFactory> connectorFactories = connectorFactories(server); - - Collection<ConnectorDescriptor> connectorDescriptors = new ArrayList<>(2); - + this.createRequestLog(server); + Collection<ConnectorFactory> connectorFactories = this.connectorFactories(server); + Collection<ConnectorHolder> 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<MappedListener> 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<MappedListener> sortedListeners(Set<MappedListener> unsorted) { sorted.sort(Comparator.comparing(MappedListener::getOrder)); return sorted; } + + @Override + protected Collection<ConnectorFactory> connectorFactories(Server server) { + Collection<ConnectorFactory> 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<HttpServletRequest> request = new ThreadLocal<>(); + + public AngelServletEnvironment() {} + + @Override + public Optional<HttpServletRequest> 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<CayenneService> cayenneServiceProvider; private Provider<GroovyScriptService> groovyScriptServiceProvider; + @Inject public DataPopulationCommand(@Named(AngelModule.ANGEL_VERSION) String angelVersion, Provider<CayenneService> 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> T config(Class<T> 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<Class> + def testModules = new Reflections(PluginService.PLUGIN_PACKAGE).getTypesAnnotatedWith(TestModule) as Set<Class> 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) {