diff --git a/.gitignore b/.gitignore index 14fa51a730e6ca3c26ac75cf6d1b35d0bef8187b..09127ca386abb011a63d31df83aca28ae68bc207 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ bin/ .sts4-cache ### IntelliJ IDEA ### +.idea *.iws *.iml *.ipr diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b4208d1f50f3d62744b4eb594d81fb029e332ed4..0000000000000000000000000000000000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml -/sonarlint/ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index c7b7b708dab82c08c005e3bdd77c6b202f9676d5..0000000000000000000000000000000000000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,75 +0,0 @@ -<component name="ProjectCodeStyleConfiguration"> - <code_scheme name="Project" version="173"> - <JavaCodeStyleSettings> - <option name="GENERATE_FINAL_PARAMETERS" value="true" /> - <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" /> - <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="1" /> - <option name="IMPORT_LAYOUT_TABLE"> - <value> - <package name="" withSubpackages="true" static="true" /> - <emptyLine /> - <package name="java" withSubpackages="true" static="false" /> - <emptyLine /> - <package name="jakarta" withSubpackages="true" static="false" /> - <package name="javax" withSubpackages="true" static="false" /> - <emptyLine /> - <package name="org" withSubpackages="true" static="false" /> - <emptyLine /> - <package name="com" withSubpackages="true" static="false" /> - <emptyLine /> - <package name="" withSubpackages="true" static="false" /> - </value> - </option> - <option name="ALIGN_MULTILINE_RECORDS" value="false" /> - <option name="ALIGN_TYPES_IN_MULTI_CATCH" value="false" /> - <option name="JD_P_AT_EMPTY_LINES" value="false" /> - <option name="JD_DO_NOT_WRAP_ONE_LINE_COMMENTS" value="true" /> - </JavaCodeStyleSettings> - <JetCodeStyleSettings> - <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> - </JetCodeStyleSettings> - <codeStyleSettings language="JAVA"> - <option name="RIGHT_MARGIN" value="150" /> - <option name="KEEP_FIRST_COLUMN_COMMENT" value="false" /> - <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" /> - <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> - <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> - <option name="KEEP_BLANK_LINES_BETWEEN_PACKAGE_DECLARATION_AND_HEADER" value="1" /> - <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" /> - <option name="INDENT_CASE_FROM_SWITCH" value="false" /> - <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> - <option name="ALIGN_MULTILINE_RESOURCES" value="false" /> - <option name="ALIGN_MULTILINE_FOR" value="false" /> - <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" /> - <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" /> - <option name="CALL_PARAMETERS_WRAP" value="1" /> - <option name="METHOD_PARAMETERS_WRAP" value="1" /> - <option name="RESOURCE_LIST_WRAP" value="5" /> - <option name="EXTENDS_LIST_WRAP" value="1" /> - <option name="THROWS_LIST_WRAP" value="1" /> - <option name="EXTENDS_KEYWORD_WRAP" value="1" /> - <option name="THROWS_KEYWORD_WRAP" value="1" /> - <option name="METHOD_CALL_CHAIN_WRAP" value="1" /> - <option name="BINARY_OPERATION_WRAP" value="1" /> - <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" /> - <option name="TERNARY_OPERATION_WRAP" value="5" /> - <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" /> - <option name="ARRAY_INITIALIZER_WRAP" value="1" /> - <option name="WRAP_COMMENTS" value="true" /> - <option name="ASSERT_STATEMENT_COLON_ON_NEXT_LINE" value="true" /> - <option name="ENUM_CONSTANTS_WRAP" value="1" /> - <indentOptions> - <option name="CONTINUATION_INDENT_SIZE" value="2" /> - <option name="USE_TAB_CHARACTER" value="true" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="XML"> - <indentOptions> - <option name="USE_TAB_CHARACTER" value="true" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="kotlin"> - <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> - </codeStyleSettings> - </code_scheme> -</component> \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123c2b23e069e35ed634d687e17f731cc702..0000000000000000000000000000000000000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ -<component name="ProjectCodeStyleConfiguration"> - <state> - <option name="USE_PER_PROJECT_SETTINGS" value="true" /> - </state> -</component> \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index a0654ae09e17f0f5fff33dc7aff32511e7628ad8..0000000000000000000000000000000000000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="CompilerConfiguration"> - <annotationProcessing> - <profile default="true" name="Default" enabled="true" /> - <profile name="Gradle Imported" enabled="true"> - <outputRelativeToContentRoot value="true" /> - <processorPath useClasspath="false"> - <entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.30/f195ee86e6c896ea47a1d39defbe20eb59cd149d/lombok-1.18.30.jar" /> - </processorPath> - </profile> - <profile name="Maven default annotation processors profile" enabled="true"> - <sourceOutputDir name="target/generated-sources/annotations" /> - <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> - <outputRelativeToContentRoot value="true" /> - </profile> - <profile name="Annotation profile for OZG-Cloud Antragsraum" enabled="true"> - <sourceOutputDir name="target/generated-sources/annotations" /> - <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> - <outputRelativeToContentRoot value="true" /> - <processorPath useClasspath="false"> - <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.34/lombok-1.18.34.jar" /> - <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.6.0/mapstruct-processor-1.6.0.jar" /> - <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.6.0/mapstruct-1.6.0.jar" /> - <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.34/lombok-1.18.34.jar" /> - <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.6.0/mapstruct-processor-1.6.0.jar" /> - <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.6.0/mapstruct-1.6.0.jar" /> - </processorPath> - <module name="antragsraum-server" /> - </profile> - </annotationProcessing> - <bytecodeTargetLevel target="21" /> - </component> - <component name="JavacSettings"> - <option name="ADDITIONAL_OPTIONS_OVERRIDE"> - <module name="antragsraum-server" options="-parameters -Amapstruct.defaultComponentModel=spring -Amapstruct.unmappedTargetPolicy=WARN" /> - </option> - </component> -</project> \ No newline at end of file diff --git a/.idea/copyright/Eupl1_2.xml b/.idea/copyright/Eupl1_2.xml deleted file mode 100644 index 8b51bb2301fbdd90e6ee5801f4f7713a2a0dac5a..0000000000000000000000000000000000000000 --- a/.idea/copyright/Eupl1_2.xml +++ /dev/null @@ -1,6 +0,0 @@ -<component name="CopyrightManager"> - <copyright> - <option name="notice" value="Copyright (c) &#36;originalComment.match("Copyright \(c\) (\d+)", 1, "-", "&#36;today.year")&#36;today.year. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. Lizenziert unter der EUPL, Version 1.2 oder - sobald diese von der Europäischen Kommission genehmigt wurden - Folgeversionen der EUPL ("Lizenz"); Sie dürfen dieses Werk ausschließlich gemäß dieser Lizenz nutzen. Eine Kopie der Lizenz finden Sie hier: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 Sofern nicht durch anwendbare Rechtsvorschriften gefordert oder in schriftlicher Form vereinbart, wird die unter der Lizenz verbreitete Software "so wie sie ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - ausdrücklich oder stillschweigend - verbreitet. Die sprachspezifischen Genehmigungen und Beschränkungen unter der Lizenz sind dem Lizenztext zu entnehmen. " /> - <option name="myName" value="Eupl1.2" /> - </copyright> -</component> \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index 4c8996918f5c5ce3236fb74f10a56f1ba8bf84fa..0000000000000000000000000000000000000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ -<component name="CopyrightManager"> - <settings> - <module2copyright> - <element module="Project Files" copyright="Eupl1.2" /> - </module2copyright> - </settings> -</component> \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 0dabbbf7bffc5e2c9d4af51b7ab52fb15673d093..0000000000000000000000000000000000000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8"> - <file url="file://$PROJECT_DIR$/server/src/main/java" charset="UTF-8" /> - <file url="file://$PROJECT_DIR$/server/target/generated-sources/openapi" charset="UTF-8" /> - </component> -</project> \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 3e3960b71eaef30230fcaeef29ebc18216501448..0000000000000000000000000000000000000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="GradleMigrationSettings" migrationVersion="1" /> -</project> \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 2f42e537a699dc92219bd00691e0e37d4200b562..0000000000000000000000000000000000000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="RemoteRepositoriesConfiguration"> - <remote-repository> - <option name="id" value="shibboleth" /> - <option name="name" value="Shibboleth Maven Repo" /> - <option name="url" value="https://build.shibboleth.net/nexus/content/repositories/releases" /> - </remote-repository> - <remote-repository> - <option name="id" value="central" /> - <option name="name" value="Central Repository" /> - <option name="url" value="https://repo.maven.apache.org/maven2" /> - </remote-repository> - <remote-repository> - <option name="id" value="shibboleth-releases" /> - <option name="name" value="Shibboleth Releases Repository" /> - <option name="url" value="https://build.shibboleth.net/maven/releases/" /> - </remote-repository> - <remote-repository> - <option name="id" value="central" /> - <option name="name" value="Maven Central" /> - <option name="url" value="https://repo1.maven.org/maven2/" /> - </remote-repository> - <remote-repository> - <option name="id" value="central" /> - <option name="name" value="Maven Central repository" /> - <option name="url" value="https://repo1.maven.org/maven2" /> - </remote-repository> - <remote-repository> - <option name="id" value="nexus" /> - <option name="name" value="Ozg nexus" /> - <option name="url" value="https://nexus.ozg-sh.de/repository/ozg-ozg-releases" /> - </remote-repository> - <remote-repository> - <option name="id" value="maven" /> - <option name="name" value="maven" /> - <option name="url" value="https://artifacts.mgm-tp.com/artifactory/maven-repos" /> - </remote-repository> - <remote-repository> - <option name="id" value="maven2" /> - <option name="name" value="maven2" /> - <option name="url" value="https://build.shibboleth.net/nexus/content/repositories/releases/" /> - </remote-repository> - <remote-repository> - <option name="id" value="MavenRepo" /> - <option name="name" value="MavenRepo" /> - <option name="url" value="https://repo.maven.apache.org/maven2/" /> - </remote-repository> - <remote-repository> - <option name="id" value="project-repository" /> - <option name="name" value="project-repository" /> - <option name="url" value="file://$PROJECT_DIR$/server/tmpRepo" /> - </remote-repository> - <remote-repository> - <option name="id" value="jboss.community" /> - <option name="name" value="JBoss Community repository" /> - <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> - </remote-repository> - <remote-repository> - <option name="id" value="ozg-snapshots-nexus" /> - <option name="name" value="ozg-snapshots" /> - <option name="url" value="https://nexus.ozg-sh.de/repository/ozg-snapshots/" /> - </remote-repository> - <remote-repository> - <option name="id" value="local-repo" /> - <option name="name" value="local-repo" /> - <option name="url" value="file://$PROJECT_DIR$/server/lib" /> - </remote-repository> - <remote-repository> - <option name="id" value="ozg-nexus" /> - <option name="name" value="ozg-releases" /> - <option name="url" value="https://nexus.ozg-sh.de/repository/ozg-releases/" /> - </remote-repository> - <remote-repository> - <option name="id" value="shibboleth-thirdparty" /> - <option name="name" value="Shibboleth Thirdparty Repository" /> - <option name="url" value="https://build.shibboleth.net/maven/thirdparty/" /> - </remote-repository> - <remote-repository> - <option name="id" value="nexus" /> - <option name="name" value="Ozg nexus" /> - <option name="url" value="https://nexus.ozg-sh.de/repository/ozg-releases" /> - </remote-repository> - </component> -</project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 290d6c7b10d9725454ff8e20c97a70786d11f5eb..0000000000000000000000000000000000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ExternalStorageConfigurationManager" enabled="true" /> - <component name="FrameworkDetectionExcludesConfiguration"> - <file type="web" url="file://$PROJECT_DIR$" /> - </component> - <component name="MavenProjectsManager"> - <option name="originalFiles"> - <list> - <option value="$PROJECT_DIR$/pom.xml" /> - </list> - </option> - </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK" /> -</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index b8776654896d4d1276d75b8ea0891a1231fab966..0000000000000000000000000000000000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ProjectModuleManager"> - <modules> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum.integrationTest.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum.integrationTest.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum.main.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum.main.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.integrationTest.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.integrationTest.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.main.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.main.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.test.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum-server/ozg-antragsraum.ozg-antragsraum-server.test.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/keycloak/ozg-antragsraum.ozg-keycloak.iml" filepath="$PROJECT_DIR$/.idea/modules/keycloak/ozg-antragsraum.ozg-keycloak.iml" /> - <module fileurl="file://$PROJECT_DIR$/.idea/modules/ozg-antragsraum.test.iml" filepath="$PROJECT_DIR$/.idea/modules/ozg-antragsraum.test.iml" /> - </modules> - </component> -</project> \ No newline at end of file diff --git a/.idea/sonarlint.xml b/.idea/sonarlint.xml deleted file mode 100644 index 0e83d2e68b218e8d268a339d9812aec0b616780e..0000000000000000000000000000000000000000 --- a/.idea/sonarlint.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="SonarLintProjectSettings"> - <option name="bindingEnabled" value="true" /> - <option name="projectKey" value="de.ozgcloud:antragsraum" /> - <option name="serverId" value="ozg-cloud" /> - </component> -</project> \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index 2b63946d5b31084bbb7dda418ceb3d75eb686373..0000000000000000000000000000000000000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="Palette2"> - <group name="Swing"> - <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> - </item> - <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> - </item> - <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> - </item> - <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true"> - <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> - </item> - <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> - <initial-values> - <property name="text" value="Button" /> - </initial-values> - </item> - <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> - <initial-values> - <property name="text" value="RadioButton" /> - </initial-values> - </item> - <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> - <initial-values> - <property name="text" value="CheckBox" /> - </initial-values> - </item> - <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> - <initial-values> - <property name="text" value="Label" /> - </initial-values> - </item> - <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> - <preferred-size width="150" height="-1" /> - </default-constraints> - </item> - <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> - <preferred-size width="150" height="-1" /> - </default-constraints> - </item> - <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> - <preferred-size width="150" height="-1" /> - </default-constraints> - </item> - <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> - <preferred-size width="150" height="50" /> - </default-constraints> - </item> - <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> - <preferred-size width="150" height="50" /> - </default-constraints> - </item> - <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> - <preferred-size width="150" height="50" /> - </default-constraints> - </item> - <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> - </item> - <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> - <preferred-size width="150" height="50" /> - </default-constraints> - </item> - <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> - <preferred-size width="150" height="50" /> - </default-constraints> - </item> - <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> - <preferred-size width="150" height="50" /> - </default-constraints> - </item> - <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> - <preferred-size width="200" height="200" /> - </default-constraints> - </item> - <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> - <preferred-size width="200" height="200" /> - </default-constraints> - </item> - <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true"> - <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> - </item> - <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> - </item> - <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> - </item> - <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> - </item> - <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> - <preferred-size width="-1" height="20" /> - </default-constraints> - </item> - <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> - <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> - </item> - <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> - <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> - </item> - </group> - </component> -</project> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddfbbc029bcab630581847471d7f238ec53..0000000000000000000000000000000000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="VcsDirectoryMappings"> - <mapping directory="" vcs="Git" /> - </component> -</project> \ No newline at end of file diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileController.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileController.java index 850d16c480a8d57553c3109da01fc9bd2598d1d3..bbe62e4392b2e29ae302db55f225e7c3a2e441db 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileController.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileController.java @@ -55,6 +55,7 @@ import lombok.extern.log4j.Log4j2; @RequiredArgsConstructor @SecurityRequirement(name = "security_auth") public class FileController { + static final String PATH = "/api/file/"; // NOSONAR static final String PATH_PATTERN = PATH + "%s/%s"; @@ -127,4 +128,5 @@ public class FileController { throw new InvalidFileTypeException(file.getName()); } } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileIdentificationData.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileIdentificationData.java index f7a44c19cd3a0fae91e5d34ae353929c39b1f5b5..30522a261ac6b97af7094f92f4970cfa847f349d 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileIdentificationData.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileIdentificationData.java @@ -28,5 +28,7 @@ import lombok.Builder; public record FileIdentificationData( String fileId, String nachrichtId, - String nachrichtEventId) { + String nachrichtEventId +) { + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileProperties.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileProperties.java index 1f2a2411396c18c1ba6ebb282588e5d50a2d5afd..56164c46846009b093aa59fb3ee93d52197569e8 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileProperties.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileProperties.java @@ -20,19 +20,22 @@ package de.ozgcloud.antragsraum.attachments; -import lombok.Getter; -import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.util.unit.DataSize; +import lombok.Getter; +import lombok.Setter; + @Getter @Setter @Configuration @ConfigurationProperties(FileProperties.PREFIX) class FileProperties { - static final String PREFIX = "ozgcloud.upload"; - private DataSize maxFileSize; - private String[] blockedContentTypes; + static final String PREFIX = "ozgcloud.upload"; + + private DataSize maxFileSize; + private String[] blockedContentTypes; + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java index 387b57e63d78e5fe377a49e310fce26848e3ac2a..ecdcdf41917155e3453570f83b74ede2819b915d 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java @@ -34,6 +34,7 @@ import lombok.extern.log4j.Log4j2; @Service @RequiredArgsConstructor class FileRemoteService { + private final @NonNull FileRestClient restClient; private final @NonNull OzgFileMapper ozgFileMapper; @@ -58,4 +59,5 @@ class FileRemoteService { void downloadFileContent(FileIdentificationData fileIdentificationData, String address, OutputStream out) { restClient.downloadFileContent(fileIdentificationData, address, out); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRestClient.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRestClient.java index 9f9eb98599cefa037b2ce5623706d6164aecb9ce..78d53042ad1152fd8936357a525177731929f77a 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRestClient.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRestClient.java @@ -52,6 +52,7 @@ import lombok.extern.log4j.Log4j2; @Log4j2 @Component class FileRestClient { + static final String FIND_FILE_METADATA_API = "/api/v1/file/metadata"; static final String GET_FILE_CONTENT_API = "/api/v1/file/content"; static final String UPLOAD_FILE_API = "/api/v1/file"; @@ -145,4 +146,5 @@ class FileRestClient { throw new TechnicalException(e); } } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileService.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileService.java index f1c616aceebd4325dcb2f8c5ff1743e3d5d9b828..300d239e094e1f8292c5f657e3a2fc8e4fdcbdd3 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileService.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileService.java @@ -36,6 +36,7 @@ import lombok.extern.log4j.Log4j2; @Service @RequiredArgsConstructor public class FileService { + private final @NonNull FileRemoteService fileRemoteService; private final @NonNull VirusScannerClient scanner; private final @NonNull NachrichtEventService nachrichtEventService; @@ -75,4 +76,5 @@ public class FileService { boolean isClean(MultipartFile file) { return scanner.scan(file).isEmpty(); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileValidator.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileValidator.java index e99a8f7590902c8e51c4cfcc28e580b0e7563a32..5b82907087341aa11847100f3e9fcd9fa40176bd 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileValidator.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileValidator.java @@ -31,6 +31,7 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @Component class FileValidator { + private final FileProperties fileProperties; boolean isValid(MultipartFile file) { @@ -48,4 +49,5 @@ class FileValidator { return !Arrays.asList(fileProperties.getBlockedContentTypes()).contains(contentType); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFile.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFile.java index 8d8a5c657aeb1174dbc5cf4073442b5277475312..20faaa5f0b506248c8cc60d47d38e3d65df4ef57 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFile.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFile.java @@ -50,5 +50,7 @@ public record OzgFile( type = "string", example = "text/plain" ) - String contentType) { + String contentType +) { + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgUploadFile.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgUploadFile.java index 690a2372a2b9e86ff20e32ee797b7c3251800306..6809d04b5b86b066ddb4e458c16294c4709047b5 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgUploadFile.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgUploadFile.java @@ -28,4 +28,5 @@ import lombok.Builder; @Validated @Builder record OzgUploadFile(String vorgangId, MultipartFile file) { + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/VirusScannerClient.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/VirusScannerClient.java index 4085c550fd58f8bd9597731b265cea39e6941109..531c3df8d497e79e89c4e819b767e728f7301183 100755 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/VirusScannerClient.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/VirusScannerClient.java @@ -46,6 +46,7 @@ import lombok.extern.log4j.Log4j2; @Service @RequiredArgsConstructor class VirusScannerClient { + private static final String FILE_REQUEST_KEY = "FILES"; @Value("${clamav.scanUrl}") @@ -88,22 +89,29 @@ class VirusScannerClient { @Getter @Setter static class VirusScanResponse { + private VirusScanData data; private boolean success; + } @Getter @Setter static class VirusScanData { + private VirusScanResult[] result; + } @Getter @Setter static class VirusScanResult { + private String name; @JsonProperty("is_infected") private boolean infected; private String[] viruses; + } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/command/Command.java b/server/src/main/java/de/ozgcloud/antragsraum/command/Command.java index aa5345399859e458d9962ab7269292fcb46be814..c60eb0c7ecbbf7da35bedb2df9a721bb316d0d01 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/command/Command.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/command/Command.java @@ -46,5 +46,7 @@ record Command( @Min(0) long createdAt, @Schema(description = "The date on which the command was completed.") - Long finishedAt) { + Long finishedAt +) { + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandController.java b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandController.java index f9d2e37cf287b7681956fa9e3aab6ff8cdb66fc5..d72e5ae4a991e264de829931c72fe49c72d7943a 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandController.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandController.java @@ -37,6 +37,7 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @SecurityRequirement(name = "security_auth") class CommandController { + static final String PATH = "/api"; // NOSONAR private final @NonNull CommandService service; @@ -48,4 +49,5 @@ class CommandController { @Parameter(description = "The id of the NachrichtEvent the command belongs to", example = "60af924b4f1a2560298b4567") @PathVariable String nachrichtEventId) { return service.getCommand(commandId, nachrichtEventId); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandMapper.java b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandMapper.java index f66378a0bda86e8f833a22c826e4959a8a66af85..b573e3c4bda5c18f7fede762bd98cbe6a86e7be5 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandMapper.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandMapper.java @@ -23,32 +23,32 @@ package de.ozgcloud.antragsraum.command; import java.time.ZonedDateTime; -import java.util.Objects; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import de.ozgcloud.antragsraum.proxy.AntragraumproxyGrpcCommand; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -@NoArgsConstructor(access = AccessLevel.PRIVATE) -class CommandMapper { - public static final int IN_MILLISECONDS = 1000; +@Mapper +interface CommandMapper { + + int IN_MILLISECONDS = 1000; - static Command fromRestCommand(final AntragraumproxyGrpcCommand command, String nachrichtEventId) { - var createdAt = ZonedDateTime.now().toEpochSecond() + IN_MILLISECONDS; - if (Objects.nonNull(command.getCreatedAt())) { - createdAt = ZonedDateTime.parse(command.getCreatedAt()).toEpochSecond() * IN_MILLISECONDS; - } + @Mapping(target = "createdAt", expression = "java(convertCreatedAt(command.getCreatedAt()))") + @Mapping(target = "finishedAt", expression = "java(convertFinishedAt(command.getFinishedAt()))") + @Mapping(target = "nachrichtEventId", source = "nachrichtEventId") + Command fromRestCommand(AntragraumproxyGrpcCommand command, String nachrichtEventId); - var finishedAt = Objects.isNull(command.getFinishedAt()) || command.getFinishedAt().isEmpty() + default Long convertCreatedAt(String createdAt) { + return createdAt != null + ? ZonedDateTime.parse(createdAt).toEpochSecond() * IN_MILLISECONDS + : ZonedDateTime.now().toEpochSecond() * IN_MILLISECONDS; + } + + default Long convertFinishedAt(String finishedAt) { + return (finishedAt == null || finishedAt.isEmpty()) ? null - : ZonedDateTime.parse(command.getFinishedAt()).toEpochSecond() * IN_MILLISECONDS; - - return Command.builder() - .id(command.getId()) - .nachrichtEventId(nachrichtEventId) - .status(command.getStatus()) - .createdAt(createdAt) - .finishedAt(finishedAt) - .build(); + : ZonedDateTime.parse(finishedAt).toEpochSecond() * IN_MILLISECONDS; } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandReference.java b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandReference.java index 00e112bc6046822f5d898629f46651866c1a23ba..7480d5df5b1d703de1e07c4aa6b594319b5bc6fd 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandReference.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandReference.java @@ -38,5 +38,7 @@ public record CommandReference( type = "string", example = "60af924b4f1a2560298b4567" ) - String nachrichtEventId) { + String nachrichtEventId +) { + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRemoteService.java b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRemoteService.java index 51793b97671f9656ddf97d1c0c03a4d8203a1563..de5d0ad4ef587b1d083f275d9b5b29bb4956bc2b 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRemoteService.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRemoteService.java @@ -33,11 +33,14 @@ import lombok.extern.log4j.Log4j2; @Service @RequiredArgsConstructor class CommandRemoteService { + private final @NonNull CommandRestClient restClient; + private final @NonNull CommandMapper commandMapper; Command getCommand(NachrichtEvent nachrichtEvent, String commandId) { var response = restClient.getCommand(commandId, nachrichtEvent.address()); - return CommandMapper.fromRestCommand(response, nachrichtEvent.id()); + return commandMapper.fromRestCommand(response, nachrichtEvent.id()); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRestClient.java b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRestClient.java index 8bb9b294d01055b9bbf6ac6549e07b08c4007f56..4f217db9f3ef3edbda1907d4534f5c0c840b41e3 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRestClient.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandRestClient.java @@ -34,6 +34,7 @@ import lombok.extern.log4j.Log4j2; @Log4j2 @Component class CommandRestClient { + static final String COMMAND_URI = "/api/v1/command/{commandId}"; private final RestClient restClient; @@ -48,4 +49,5 @@ class CommandRestClient { .header(X_GRPC_ADDRESS, RestClientUtils.sanitizeAddress(address)) .retrieve().toEntity(AntragraumproxyGrpcCommand.class).getBody(); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandService.java b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandService.java index 999f22bdc9fcebf6f0235bc643b60cebd4df035d..f59b2dec58481dab4bc55e449aa482db021a7cd3 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/command/CommandService.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/command/CommandService.java @@ -33,6 +33,7 @@ import lombok.extern.log4j.Log4j2; @Service @RequiredArgsConstructor class CommandService { + private final @NonNull CommandRemoteService commandRemoteService; private final @NonNull NachrichtEventService nachrichtEventService; @@ -41,4 +42,5 @@ class CommandService { return commandRemoteService.getCommand(nachrichtEvent, commandId); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/AddressNotFoundAdvice.java b/server/src/main/java/de/ozgcloud/antragsraum/common/AddressNotFoundAdvice.java deleted file mode 100644 index 600933f2dcafc71ef2ce984d0f90101e7e8665cb..0000000000000000000000000000000000000000 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/AddressNotFoundAdvice.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.antragsraum.common; - -import jakarta.annotation.Priority; -import lombok.extern.log4j.Log4j2; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; - -@ControllerAdvice -@Log4j2 -@Priority(value = 0) -public class AddressNotFoundAdvice extends ResponseEntityExceptionHandler { - @ResponseBody - @ExceptionHandler(AddressNotFoundException.class) - @ResponseStatus(HttpStatus.NOT_FOUND) - String addressNotFoundHandler(AddressNotFoundException ex) { - LOG.error("Error getting address of target OZG-Cloud instance. Message: " + ex.getMessage(), ex); - return "Target address not found"; - } -} diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/AddressNotFoundException.java b/server/src/main/java/de/ozgcloud/antragsraum/common/AddressNotFoundException.java index 0d596dbcc01e16dd7bf99a360450694857642f9b..20fb9f3e29400e5594be46dfef5f6cd567893bd2 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/AddressNotFoundException.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/AddressNotFoundException.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -23,9 +23,11 @@ package de.ozgcloud.antragsraum.common; public class AddressNotFoundException extends RuntimeException { - private static final String MESSAGE_TEMPLATE = "No NachrichtEvent for id '%s' found"; - public AddressNotFoundException(String replyToId) { - super(String.format(MESSAGE_TEMPLATE, replyToId)); - } + private static final String MESSAGE_TEMPLATE = "No NachrichtEvent for id '%s' found"; + + public AddressNotFoundException(String replyToId) { + super(String.format(MESSAGE_TEMPLATE, replyToId)); + } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/AttachmentNotFoundAdvice.java b/server/src/main/java/de/ozgcloud/antragsraum/common/AttachmentNotFoundAdvice.java deleted file mode 100644 index a3064ebfd134d95e1b20826789a30e8dbf10caf0..0000000000000000000000000000000000000000 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/AttachmentNotFoundAdvice.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.antragsraum.common; - -import jakarta.annotation.Priority; -import lombok.extern.log4j.Log4j2; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; - -@ControllerAdvice -@Log4j2 -@Priority(value = 0) -public class AttachmentNotFoundAdvice extends ResponseEntityExceptionHandler { - @ResponseBody - @ExceptionHandler(NotFoundException.class) - @ResponseStatus(HttpStatus.NOT_FOUND) - String handleNotFound(NotFoundException ex) { - LOG.error("Error loading attachment.", ex); - return "Attachment not found"; - } -} diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/ExceptionController.java b/server/src/main/java/de/ozgcloud/antragsraum/common/ExceptionController.java new file mode 100644 index 0000000000000000000000000000000000000000..d1a6505accb751a92867d34131bcf392d4e5e978 --- /dev/null +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/ExceptionController.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ + +package de.ozgcloud.antragsraum.common; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@ControllerAdvice +public class ExceptionController extends ResponseEntityExceptionHandler { + + @ResponseBody + @ExceptionHandler(AddressNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + String handleAddressNotFoundException(AddressNotFoundException ex) { + LOG.error("Error getting address of target OZG-Cloud instance. Message: {}", ex.getMessage(), ex); + return "Target address not found"; + } + + @ResponseBody + @ExceptionHandler(NotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + String handleNotFoundException(NotFoundException ex) { + LOG.error("Error loading attachment.", ex); + return "Attachment not found"; + } + + @ExceptionHandler(value = { RuntimeException.class, TechnicalException.class }) + @ResponseBody + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + String handleGeneralException(RuntimeException ex) { + LOG.error("General error.", ex); + return "General error processing your request."; + } + + @ExceptionHandler(value = { InvalidFileTypeException.class }) + ResponseEntity<Object> handleInvalidFileTypeException(RuntimeException ex, WebRequest request) { + LOG.error("Uploaded file is not valid.", ex); + return handleExceptionInternal(ex, "File not acceptable", new HttpHeaders(), HttpStatus.NOT_ACCEPTABLE, request); + } + + @ExceptionHandler(value = { VirusFoundException.class }) + ResponseEntity<Object> handleVirusFoundException(RuntimeException ex, WebRequest request) { + LOG.error("Virus found in uploaded file.", ex); + return handleExceptionInternal(ex, "Virus found", new HttpHeaders(), HttpStatus.NOT_ACCEPTABLE, request); + } + +} diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/GeneralExceptionAdvice.java b/server/src/main/java/de/ozgcloud/antragsraum/common/GeneralExceptionAdvice.java deleted file mode 100755 index 57e7374408a86c008afb86479291fadc96b5fe88..0000000000000000000000000000000000000000 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/GeneralExceptionAdvice.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.antragsraum.common; - -import jakarta.annotation.Priority; -import lombok.extern.log4j.Log4j2; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; - -@ControllerAdvice -@Log4j2 -@Priority(value = 9) -public class GeneralExceptionAdvice extends ResponseEntityExceptionHandler { - @ExceptionHandler(value = {RuntimeException.class, TechnicalException.class}) - @ResponseBody - @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) - String handleException(RuntimeException ex) { - LOG.error("General error.", ex); - return "General error processing your request."; - } -} diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/InvalidFileAdvice.java b/server/src/main/java/de/ozgcloud/antragsraum/common/InvalidFileAdvice.java deleted file mode 100755 index e24bea7c2cd28b6e85cf79cc0d37d40c86a69552..0000000000000000000000000000000000000000 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/InvalidFileAdvice.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.antragsraum.common; - -import jakarta.annotation.Priority; - -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.context.request.WebRequest; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; - -import lombok.extern.log4j.Log4j2; - -@ControllerAdvice -@Log4j2 -@Priority(value = 0) -public class InvalidFileAdvice extends ResponseEntityExceptionHandler { - @ExceptionHandler(value = { InvalidFileTypeException.class }) - protected ResponseEntity<Object> handleInvalidFile(RuntimeException ex, WebRequest request) { - LOG.error("Uploaded file is not valid.", ex); - return handleExceptionInternal(ex, "File not acceptable", new HttpHeaders(), HttpStatus.NOT_ACCEPTABLE, request); - } -} diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/InvalidFileTypeException.java b/server/src/main/java/de/ozgcloud/antragsraum/common/InvalidFileTypeException.java index ef2d2293003de12924bc282b13dd1edf25e7f924..bfab6ca9557804c82f7d0c9e66177ab248cbd87e 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/InvalidFileTypeException.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/InvalidFileTypeException.java @@ -1,5 +1,7 @@ /* - * Copyright (c) 2023-2024. + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. + * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - * Folgeversionen der EUPL ("Lizenz"); @@ -21,9 +23,11 @@ package de.ozgcloud.antragsraum.common; public class InvalidFileTypeException extends RuntimeException { - private static final String MESSAGE_TEMPLATE = "File '%s' has an unsupported file type"; - public InvalidFileTypeException(String fileName) { - super(String.format(MESSAGE_TEMPLATE, fileName)); - } + private static final String MESSAGE_TEMPLATE = "File '%s' has an unsupported file type"; + + public InvalidFileTypeException(String fileName) { + super(String.format(MESSAGE_TEMPLATE, fileName)); + } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/NotAccessibleException.java b/server/src/main/java/de/ozgcloud/antragsraum/common/NotAccessibleException.java index 88398b40b1b089bb25a30a9250b27c377311542c..2d974e5ae9f9857d48f679f9b1b6927527bb6520 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/NotAccessibleException.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/NotAccessibleException.java @@ -23,9 +23,11 @@ package de.ozgcloud.antragsraum.common; public class NotAccessibleException extends RuntimeException { + private static final String MESSAGE_TEMPLATE = "Current user does not have the required trust level for the Rueckfrage with id '%s'."; public NotAccessibleException(String rueckfrageId) { super(String.format(MESSAGE_TEMPLATE, rueckfrageId)); } + } \ No newline at end of file diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/NotFoundException.java b/server/src/main/java/de/ozgcloud/antragsraum/common/NotFoundException.java index 543be5a1a1b074101087f240a9d8c6f05402616b..a0cbaf2a8e30db5e707ff81f4c8bea54eecaf4c8 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/NotFoundException.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/NotFoundException.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -23,9 +23,11 @@ package de.ozgcloud.antragsraum.common; public class NotFoundException extends RuntimeException { - private static final String MESSAGE_TEMPLATE = "Object '%s' with id '%s' not found."; - public NotFoundException(Class<?> resource, String id) { - super(String.format(MESSAGE_TEMPLATE, resource.getSimpleName(), id)); - } + private static final String MESSAGE_TEMPLATE = "Object '%s' with id '%s' not found."; + + public NotFoundException(Class<?> resource, String id) { + super(String.format(MESSAGE_TEMPLATE, resource.getSimpleName(), id)); + } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/RestClientUtils.java b/server/src/main/java/de/ozgcloud/antragsraum/common/RestClientUtils.java index c0930e849f62a161560d89545be020db837020a9..b94e1cf8dcfc20485636d3efb72e032f0498b549 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/RestClientUtils.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/RestClientUtils.java @@ -27,9 +27,11 @@ import lombok.NoArgsConstructor; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class RestClientUtils { + public static String sanitizeAddress(String address) { address = address.replaceAll(":\\d{4}$", ""); address = address.replaceAll("^static://", ""); return address; } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/SendTimeoutAdvice.java b/server/src/main/java/de/ozgcloud/antragsraum/common/SendTimeoutAdvice.java deleted file mode 100755 index 39ee5a627bc762039f6ff9414f21fd46258e595f..0000000000000000000000000000000000000000 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/SendTimeoutAdvice.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.antragsraum.common; - -import jakarta.annotation.Priority; -import lombok.extern.log4j.Log4j2; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; - -@ControllerAdvice -@Log4j2 -@Priority(value = 0) -public class SendTimeoutAdvice extends ResponseEntityExceptionHandler { - @ResponseBody - @ExceptionHandler(SendTimeoutException.class) - @ResponseStatus(HttpStatus.GATEWAY_TIMEOUT) - String sendTimeoutHandler(SendTimeoutException ex) { - LOG.error("Timeout while sending answer. Message: " + ex.getMessage(), ex); - return "Timeout while sending answer"; - } -} diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/TechnicalException.java b/server/src/main/java/de/ozgcloud/antragsraum/common/TechnicalException.java index f3fd6b1923808c818b893c2879c3e002f129d950..ecb333f0bb1c2092ce7a3297678dbc053eed88bf 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/TechnicalException.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/TechnicalException.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -23,9 +23,11 @@ package de.ozgcloud.antragsraum.common; public class TechnicalException extends RuntimeException { - private static final String MESSAGE_TEMPLATE = "TechnicalException happened! Message: "; - public TechnicalException(Throwable ex) { - super(MESSAGE_TEMPLATE + ex.getMessage(), ex); - } + private static final String MESSAGE_TEMPLATE = "TechnicalException happened! Message: "; + + public TechnicalException(Throwable ex) { + super(MESSAGE_TEMPLATE + ex.getMessage(), ex); + } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/VirusFoundAdvice.java b/server/src/main/java/de/ozgcloud/antragsraum/common/VirusFoundAdvice.java deleted file mode 100755 index 6dc0b12e0e0ed8e2b511b9d43a9158b395a16568..0000000000000000000000000000000000000000 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/VirusFoundAdvice.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.antragsraum.common; - -import jakarta.annotation.Priority; -import lombok.extern.log4j.Log4j2; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.context.request.WebRequest; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; - -@ControllerAdvice -@Log4j2 -@Priority(value = 0) -public class VirusFoundAdvice extends ResponseEntityExceptionHandler { - @ExceptionHandler(value = {VirusFoundException.class}) - protected ResponseEntity<Object> handleVirusFound(RuntimeException ex, WebRequest request) { - LOG.error("Virus found in uploaded file.", ex); - return handleExceptionInternal(ex, "Virus found", new HttpHeaders(), HttpStatus.NOT_ACCEPTABLE, request); - } -} diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/VirusFoundException.java b/server/src/main/java/de/ozgcloud/antragsraum/common/VirusFoundException.java old mode 100755 new mode 100644 index 6ca6e78da97efc6fe13a267e446a3553efea24c2..d5e3887f4151542b0ac10c97c8c3de4daf5ec1a1 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/VirusFoundException.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/VirusFoundException.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -23,9 +23,11 @@ package de.ozgcloud.antragsraum.common; public class VirusFoundException extends RuntimeException { - private static final String MESSAGE_TEMPLATE = "File with nachrichtId '%s' contains virus."; - public VirusFoundException(String id) { - super(String.format(MESSAGE_TEMPLATE, id)); - } + private static final String MESSAGE_TEMPLATE = "File with nachrichtId '%s' contains virus."; + + public VirusFoundException(String id) { + super(String.format(MESSAGE_TEMPLATE, id)); + } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/VirusScanException.java b/server/src/main/java/de/ozgcloud/antragsraum/common/VirusScanException.java index f130b513e469ebc25ef9be032e1a0f2165de0267..14a0a555549f4106a8b769e61966780ea55e62dc 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/VirusScanException.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/VirusScanException.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -23,9 +23,11 @@ package de.ozgcloud.antragsraum.common; public class VirusScanException extends RuntimeException { + private static final String MESSAGE_TEMPLATE = "Virus scan for file with name '%s' failed."; public VirusScanException(String fileName) { super(String.format(MESSAGE_TEMPLATE, fileName)); } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryAspectPointcut.java b/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryAspectPointcut.java index 47f0bcdda4fca053d060bed639c87e17a27441aa..e0ffdb8515551923824ea2fb583d0dae677d5db0 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryAspectPointcut.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryAspectPointcut.java @@ -31,4 +31,5 @@ public class RepositoryAspectPointcut { void anyPublicRepositoryMethod() { // aspect pointcut - no implementation needed } + } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryLoggingAspect.java b/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryLoggingAspect.java index efb41906f2b1771743030b3fd3fdbd6d50aaa9c9..4a2566afc52badce37d5a0d754e614f7fc9f01da 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryLoggingAspect.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/common/logging/RepositoryLoggingAspect.java @@ -36,4 +36,5 @@ public class RepositoryLoggingAspect extends RepositoryAspectPointcut { public void onRepositoryMethod(JoinPoint joinPoint) { AspectLoggingUtils.log(joinPoint); } + } \ No newline at end of file diff --git a/server/src/main/java/de/ozgcloud/antragsraum/security/InMemoryUserDetailService.java b/server/src/main/java/de/ozgcloud/antragsraum/security/InMemoryUserDetailService.java index 3cf3fb6d54c788490d00144859e396445259deb5..c89d01e0f220079c9bb9a36bbf59e8d01df32b0d 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/security/InMemoryUserDetailService.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/security/InMemoryUserDetailService.java @@ -49,6 +49,7 @@ import lombok.extern.log4j.Log4j2; @NoArgsConstructor @Log4j2 public class InMemoryUserDetailService implements UserDetailsService { + @Value("${ozgcloud.code.expire.seconds:10}") private long codeExpireSeconds; @Value("${ozgcloud.jwt.expiration.minutes}") @@ -138,4 +139,5 @@ public class InMemoryUserDetailService implements UserDetailsService { public void logout(User user) { usersMap.remove(user.getId()); } + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/AntragraumproxyGrpcCommandTestFactory.java b/server/src/test/java/de/ozgcloud/antragsraum/command/AntragraumproxyGrpcCommandTestFactory.java index 0221cc6cf0132dfa0ccaacf2f759b8ec3f1a25a1..e0262ceba979d63b5f76a82a8a77a64e67814879 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/AntragraumproxyGrpcCommandTestFactory.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/AntragraumproxyGrpcCommandTestFactory.java @@ -30,6 +30,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor(access = AccessLevel.PRIVATE) class AntragraumproxyGrpcCommandTestFactory { + public static final String ID = CommandTestFactory.ID; static final String CREATED_BY = UUID.randomUUID().toString(); static final String STATUS = CommandTestFactory.STATUS; @@ -45,4 +46,5 @@ class AntragraumproxyGrpcCommandTestFactory { command.setStatus(STATUS); return command; } + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerITCase.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerITCase.java index c098e33402df2c5f57766133ea662e033f2c11b0..4e35daad68c1c58a6bbf4d5bf02fb9c43b359e3f 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerITCase.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerITCase.java @@ -46,6 +46,7 @@ import de.ozgcloud.antragsraum.events.NachrichtEventTestFactory; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) @SpringJUnitConfig(classes = { CommandControllerTestConfiguration.class }) public class CommandControllerITCase { + @SpyBean private CommandController commandController; @@ -57,9 +58,10 @@ public class CommandControllerITCase { @Nested class TestGetCommand { + @BeforeEach void init() { - when(commandService.getCommand(CommandTestFactory.ID, NachrichtEventTestFactory.ID)).thenReturn(CommandTestFactory.createCommand()); + when(commandService.getCommand(CommandTestFactory.ID, NachrichtEventTestFactory.ID)).thenReturn(CommandTestFactory.create()); } @Test @@ -96,5 +98,7 @@ public class CommandControllerITCase { get(CommandController.PATH + "/command/" + CommandTestFactory.ID + "/" + NachrichtEventTestFactory.ID) .contentType(MediaType.APPLICATION_JSON).characterEncoding(Charset.defaultCharset())); } + } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTest.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTest.java index 4506a65dbd117175714cbb81faa648938dddff2f..ae25cb8b8aff51bff1641b9f5959a4807eb21d37 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTest.java @@ -37,6 +37,7 @@ import de.ozgcloud.antragsraum.events.NachrichtEventTestFactory; @ExtendWith(MockitoExtension.class) class CommandControllerTest { + @Spy @InjectMocks private CommandController commandController; @@ -46,9 +47,10 @@ class CommandControllerTest { @Nested class TestGetCommand { + @BeforeEach void init() { - when(commandService.getCommand(CommandTestFactory.ID, NachrichtEventTestFactory.ID)).thenReturn(CommandTestFactory.createCommand()); + when(commandService.getCommand(CommandTestFactory.ID, NachrichtEventTestFactory.ID)).thenReturn(CommandTestFactory.create()); } @Test @@ -64,5 +66,7 @@ class CommandControllerTest { assertThat(result).isInstanceOf(Command.class); } + } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTestConfiguration.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTestConfiguration.java index a2d0064a158a0e4f45f9e96485a0376792bd06c8..f3d9409416143b4900cbbca3e1c7be1640cbeab5 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTestConfiguration.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandControllerTestConfiguration.java @@ -39,6 +39,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; classes = { CommandRestClientTestConfiguration.class, CommandRemoteServiceTestConfiguration.class })) @Configuration public class CommandControllerTestConfiguration { + @Bean CommandRestClient commandRestClient() { CommandRestClient restClient = mock(CommandRestClient.class); @@ -48,4 +49,5 @@ public class CommandControllerTestConfiguration { return restClient; } + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandMapperTest.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandMapperTest.java index ee9fb45a00233b7a08b60ce17135f73cab983fe3..7b99cc596b8267862aaefd85d478b2be5b250502 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandMapperTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandMapperTest.java @@ -25,47 +25,54 @@ import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; import de.ozgcloud.antragsraum.proxy.AntragraumproxyGrpcCommand; class CommandMapperTest { + + private final CommandMapper mapper = Mappers.getMapper(CommandMapper.class); + @Nested - class TestFromGrpcCommand { - private final AntragraumproxyGrpcCommand restCommand = CommandTestFactory.createRestCommand(); + class TestFromRestCommand { + + private final AntragraumproxyGrpcCommand restCommand = GrpcCommandTestFactory.create(); @Test void shouldMapCommandId() { - var command = CommandMapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); + var command = mapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); assertThat(command.id()).isEqualTo(CommandTestFactory.ID); } @Test void shouldMapNachrichtEventId() { - var command = CommandMapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); + var command = mapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); assertThat(command.nachrichtEventId()).isEqualTo(CommandTestFactory.NACHRICHT_EVENT_ID); } @Test void shouldMapStatus() { - var command = CommandMapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); + var command = mapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); assertThat(command.status()).isEqualTo(CommandTestFactory.STATUS); } @Test void shouldMapCreatedAt() { - var command = CommandMapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); + var command = mapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); assertThat(command.createdAt()).isEqualTo(CommandTestFactory.CREATED_AT_DATE); } @Test void shouldMapFinishedAt() { - var command = CommandMapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); + var command = mapper.fromRestCommand(restCommand, CommandTestFactory.NACHRICHT_EVENT_ID); assertThat(command.finishedAt()).isEqualTo(CommandTestFactory.FINISHED_AT_DATE); } + } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandReferenceTestFactory.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandReferenceTestFactory.java index 1dfbd06d5d538f4e3bbc9c2037ab6f2e715d0257..76e0b6a45f33470ecd378c5559286536c6e0eb97 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandReferenceTestFactory.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandReferenceTestFactory.java @@ -24,6 +24,7 @@ package de.ozgcloud.antragsraum.command; import java.util.UUID; public class CommandReferenceTestFactory { + public static final String ID = UUID.randomUUID().toString(); public static final String NACHRICHT_EVENT_ID = UUID.randomUUID().toString(); @@ -36,4 +37,5 @@ public class CommandReferenceTestFactory { .id(ID) .nachrichtEventId(NACHRICHT_EVENT_ID); } + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceITCase.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceITCase.java index 180813913c99c8814157a618ce77ca2b1d953ca4..5a3318bfc7f439720fced5a248dc93c4ed0579b0 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceITCase.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceITCase.java @@ -41,6 +41,7 @@ import lombok.extern.log4j.Log4j2; @DirtiesContext @Log4j2 class CommandRemoteServiceITCase { + private static final String ADDRESS = "http://localhost:8080"; @SpyBean @@ -48,6 +49,7 @@ class CommandRemoteServiceITCase { @Nested class TestGetCommand { + private final NachrichtEvent nachrichtEvent = NachrichtEventTestFactory.createNachrichtEventBuilder().address(ADDRESS).build(); @BeforeEach @@ -98,5 +100,7 @@ class CommandRemoteServiceITCase { assertThat(command.finishedAt()).isEqualTo(CommandTestFactory.FINISHED_AT_DATE); } + } + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTest.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTest.java index 0e015886e2bf1122a211ccd0ae926e9bdcaf2b83..1cba2470cb154a098797342b375e42427902b244 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTest.java @@ -36,9 +36,11 @@ import org.mockito.junit.jupiter.MockitoExtension; import de.ozgcloud.antragsraum.common.AddressNotFoundException; import de.ozgcloud.antragsraum.events.NachrichtEventTestFactory; +import de.ozgcloud.antragsraum.proxy.AntragraumproxyGrpcCommand; @ExtendWith(MockitoExtension.class) public class CommandRemoteServiceTest { + @Spy @InjectMocks private CommandRemoteService commandRemoteService; @@ -46,11 +48,16 @@ public class CommandRemoteServiceTest { @Mock private CommandRestClient commandRestClient; + @Mock + private CommandMapper commandMapper; + @Nested class TestGetCommand { + @BeforeEach void init() { - when(commandRestClient.getCommand(anyString(), anyString())).thenReturn(CommandTestFactory.createRestCommand()); + when(commandRestClient.getCommand(anyString(), anyString())).thenReturn(GrpcCommandTestFactory.create()); + when(commandMapper.fromRestCommand(any(AntragraumproxyGrpcCommand.class), anyString())).thenReturn(CommandTestFactory.create()); } @Test @@ -59,10 +66,12 @@ public class CommandRemoteServiceTest { assertThat(command).isInstanceOf(Command.class); } + } @Nested class TestNoTargetAddressAvailable { + @BeforeEach void init() { doThrow(AddressNotFoundException.class).when(commandRestClient).getCommand(anyString(), anyString()); @@ -75,5 +84,7 @@ public class CommandRemoteServiceTest { assertThatExceptionOfType(AddressNotFoundException.class).isThrownBy( () -> commandRemoteService.getCommand(nachrichtEvent, CommandTestFactory.ID)); } + } + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTestConfiguration.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTestConfiguration.java index 7287f61a8b30a51d20ffb55778b98e0b3d8bd187..644d54ff8bcdf41e5acefcb5ee46d81a6c0fbcbd 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTestConfiguration.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRemoteServiceTestConfiguration.java @@ -40,7 +40,8 @@ public class CommandRemoteServiceTestConfiguration { private NachrichtEventService nachrichtEventService; @Bean - CommandRemoteService commandRemoteService(@Autowired CommandRestClient commandRestClient) { - return new CommandRemoteService(commandRestClient); + CommandRemoteService commandRemoteService(@Autowired CommandRestClient commandRestClient, @Autowired CommandMapper commandMapper) { + return new CommandRemoteService(commandRestClient, commandMapper); } + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRestClientTest.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRestClientTest.java index 0a99eff18ed770c6f34b8d255f3542aede8d704d..119ecda83dff1969b4d40dd34a62621d6c9f9d74 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRestClientTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandRestClientTest.java @@ -44,6 +44,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; @SpringJUnitConfig(classes = { CommandRestClientTestConfiguration.class }) @RestClientTest(CommandRestClient.class) class CommandRestClientTest { + final static String ADDRESS = "http://localhost:8382"; private static final String COMMAND_ID = UUID.randomUUID().toString(); @@ -76,4 +77,5 @@ class CommandRestClientTest { assertThat(command.getId()).isEqualTo(AntragraumproxyGrpcCommandTestFactory.ID); } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandServiceTest.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandServiceTest.java index 9b92ed59efcc385dc9ce8058e79af86d101e962e..b4545f1f8754f979f088897ca36a0eba2e28e1c2 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandServiceTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandServiceTest.java @@ -39,6 +39,7 @@ import de.ozgcloud.antragsraum.events.NachrichtEventTestFactory; @ExtendWith(MockitoExtension.class) class CommandServiceTest { + @Spy @InjectMocks private CommandService commandService; @@ -49,11 +50,12 @@ class CommandServiceTest { @Nested class TestGetCommand { + @BeforeEach void init() { final NachrichtEvent nachrichtEvent = NachrichtEventTestFactory.createNachrichtEvent(); when(nachrichtEventService.getNachrichtEventById(NachrichtEventTestFactory.ID)).thenReturn(nachrichtEvent); - when(commandRemoteService.getCommand(nachrichtEvent, CommandTestFactory.ID)).thenReturn(CommandTestFactory.createCommand()); + when(commandRemoteService.getCommand(nachrichtEvent, CommandTestFactory.ID)).thenReturn(CommandTestFactory.create()); } @Test @@ -62,5 +64,7 @@ class CommandServiceTest { assertThat(result).isInstanceOf(Command.class); } + } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandTestFactory.java b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandTestFactory.java index d76c60e82c839b8f2c17037e00d80ee653826ec0..b732c1bbf7491761ca74909b78254395b48ee26c 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/command/CommandTestFactory.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/CommandTestFactory.java @@ -24,9 +24,8 @@ package de.ozgcloud.antragsraum.command; import java.time.ZonedDateTime; import java.util.UUID; -import de.ozgcloud.antragsraum.proxy.AntragraumproxyGrpcCommand; - public class CommandTestFactory { + public static final String ID = UUID.randomUUID().toString(); static final String NACHRICHT_EVENT_ID = UUID.randomUUID().toString(); static final String STATUS = "FINISHED"; @@ -35,11 +34,11 @@ public class CommandTestFactory { static final String FINISHED_AT = "2024-06-24T08:10:13.076Z"; static final long FINISHED_AT_DATE = ZonedDateTime.parse(FINISHED_AT).toEpochSecond() * 1000; - static Command createCommand() { - return createCommandBuilder().build(); + static Command create() { + return createBuilder().build(); } - static Command.CommandBuilder createCommandBuilder() { + static Command.CommandBuilder createBuilder() { return Command.builder() .id(ID) .nachrichtEventId(NACHRICHT_EVENT_ID) @@ -48,12 +47,4 @@ public class CommandTestFactory { .finishedAt(FINISHED_AT_DATE); } - public static AntragraumproxyGrpcCommand createRestCommand() { - var command = new AntragraumproxyGrpcCommand(); - command.setId(ID); - command.setStatus(STATUS); - command.setCreatedAt(CREATED_AT); - command.setFinishedAt(FINISHED_AT); - return command; - } } diff --git a/server/src/main/java/de/ozgcloud/antragsraum/common/SendTimeoutException.java b/server/src/test/java/de/ozgcloud/antragsraum/command/GrpcCommandTestFactory.java old mode 100755 new mode 100644 similarity index 70% rename from server/src/main/java/de/ozgcloud/antragsraum/common/SendTimeoutException.java rename to server/src/test/java/de/ozgcloud/antragsraum/command/GrpcCommandTestFactory.java index 88db4a8b78b738b2ecddffd6c43a4d703e40ddf1..94d697dc208efbb84e888c3bafe256bacc704462 --- a/server/src/main/java/de/ozgcloud/antragsraum/common/SendTimeoutException.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/command/GrpcCommandTestFactory.java @@ -19,13 +19,18 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +package de.ozgcloud.antragsraum.command; -package de.ozgcloud.antragsraum.common; +import de.ozgcloud.antragsraum.proxy.AntragraumproxyGrpcCommand; -public class SendTimeoutException extends RuntimeException { - private static final String MESSAGE_TEMPLATE = "A timeout sending a nachricht happened. Command %s did not finish in time! Message: %s"; +public class GrpcCommandTestFactory { + + public static AntragraumproxyGrpcCommand create() { + return new AntragraumproxyGrpcCommand() + .id(CommandTestFactory.ID) + .status(CommandTestFactory.STATUS) + .createdAt(CommandTestFactory.CREATED_AT) + .finishedAt(CommandTestFactory.FINISHED_AT); + } - public SendTimeoutException(String commandId, Throwable ex) { - super(String.format(MESSAGE_TEMPLATE, commandId, ex.getMessage()), ex); - } } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/AddressNotFoundExceptionTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/AddressNotFoundExceptionTest.java index 91ea19e6768b7ac0053a1806e8e7a276eef50224..b8c3673735227e6794ed440dcf942720df7f54d0 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/AddressNotFoundExceptionTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/AddressNotFoundExceptionTest.java @@ -29,6 +29,7 @@ import java.util.UUID; import org.junit.jupiter.api.Test; class AddressNotFoundExceptionTest { + @Test void shouldCreateException() { var id = UUID.randomUUID().toString(); @@ -36,4 +37,5 @@ class AddressNotFoundExceptionTest { assertThat(exception.getMessage()).isEqualTo("No NachrichtEvent for id '" + id + "' found"); } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/ExceptionControllerTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/ExceptionControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ef54f0c33aaa737db155c9d91557b689fcdedd56 --- /dev/null +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/ExceptionControllerTest.java @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ + +package de.ozgcloud.antragsraum.common; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; +import org.springframework.web.context.request.WebRequest; + +@ExtendWith(MockitoExtension.class) +public class ExceptionControllerTest { + + @InjectMocks + private ExceptionController exceptionController; + + @Nested + class TestHandleAddressNotFoundException { + + @Mock + private AddressNotFoundException exception; + + @Test + void shouldReturnMessage() { + var message = exceptionController.handleAddressNotFoundException(exception); + + assertThat(message).isNotNull(); + } + + } + + @Nested + class TestHandleNotFoundException { + + @Mock + private NotFoundException exception; + + @Test + void shouldReturnMessage() { + var message = exceptionController.handleNotFoundException(exception); + + assertThat(message).isNotNull(); + } + + } + + @Nested + class TestHandleGeneralException { + + @Mock + private TechnicalException exception; + + @Test + void shouldReturnMessage() { + var message = exceptionController.handleGeneralException(exception); + + assertThat(message).isNotNull(); + } + + } + + @Nested + class TestHandleInvalidFileTypeException { + + @Mock + private InvalidFileTypeException exception; + + @Mock + private WebRequest webRequest; + + @Test + void shouldHaveResponse() { + var response = exceptionController.handleInvalidFileTypeException(exception, webRequest); + + assertThat(response).isNotNull(); + } + + @Test + void shouldHaveNotAcceptableError() { + var response = exceptionController.handleInvalidFileTypeException(exception, webRequest); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NOT_ACCEPTABLE); + } + + @Test + void shouldHaveMessage() { + var response = exceptionController.handleInvalidFileTypeException(exception, webRequest); + + assertThat(response.getBody()).isEqualTo("File not acceptable"); + } + + } + + @Nested + class TestHandleVirusFoundException { + + @Mock + private VirusFoundException exception; + + @Mock + private WebRequest webRequest; + + @Test + void shouldHaveResponse() { + var response = exceptionController.handleVirusFoundException(exception, webRequest); + + assertThat(response).isNotNull(); + } + + @Test + void shouldHaveNotAcceptableError() { + var response = exceptionController.handleVirusFoundException(exception, webRequest); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NOT_ACCEPTABLE); + } + + @Test + void shouldHaveMessage() { + var response = exceptionController.handleVirusFoundException(exception, webRequest); + + assertThat(response.getBody()).isEqualTo("Virus found"); + } + + } + +} diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/SendTimeoutExceptionTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/InvalidFileTypeExceptionTest.java old mode 100755 new mode 100644 similarity index 58% rename from server/src/test/java/de/ozgcloud/antragsraum/common/SendTimeoutExceptionTest.java rename to server/src/test/java/de/ozgcloud/antragsraum/common/InvalidFileTypeExceptionTest.java index 214bd6489c4373acab84799313461113b57c2cb2..22080cff4396d21d72d38f5fbb321bf97e872c31 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/SendTimeoutExceptionTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/InvalidFileTypeExceptionTest.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -19,21 +19,21 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ + package de.ozgcloud.antragsraum.common; -import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.*; -import java.util.UUID; +import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.*; +class InvalidFileTypeExceptionTest { -class SendTimeoutExceptionTest { + @Test + void shouldCreateException() { + var fileName = "TestFileName.txt"; + var exception = new InvalidFileTypeException(fileName); - @Test - void shouldCreateException() { - var id = UUID.randomUUID().toString(); - var exception = new SendTimeoutException(id, new RuntimeException("test")); + assertThat(exception.getMessage()).isEqualTo("File '" + fileName + "' has an unsupported file type"); + } - assertThat(exception.getMessage()).isEqualTo("A timeout sending a nachricht happened. Command " + id + " did not finish in time! Message: test"); - } } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/NotAccessibleExceptionTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/NotAccessibleExceptionTest.java index 1c92b68d628b88f86c5b02d2c430d7b2e76298ec..4a12239c858106bf36abb41620d65c6172e3bcee 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/NotAccessibleExceptionTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/NotAccessibleExceptionTest.java @@ -28,6 +28,7 @@ import java.util.UUID; import org.junit.jupiter.api.Test; class NotAccessibleExceptionTest { + @Test void shouldCreateException() { var rueckfrageId = UUID.randomUUID().toString(); @@ -36,4 +37,5 @@ class NotAccessibleExceptionTest { assertThat(exception.getMessage()).isEqualTo( "Current user does not have the required trust level for the Rueckfrage with id '" + rueckfrageId + "'."); } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/NotFoundExceptionTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/NotFoundExceptionTest.java index d2837d49881c9e4664d6c488742b7bdc31691ec5..e9d06570fb61c928367a306ab8213e809eb072a5 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/NotFoundExceptionTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/NotFoundExceptionTest.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -21,18 +21,20 @@ */ package de.ozgcloud.antragsraum.common; -import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.*; import java.util.UUID; -import static org.assertj.core.api.Assertions.*; +import org.junit.jupiter.api.Test; class NotFoundExceptionTest { - @Test - void shouldCreateException() { - var id = UUID.randomUUID().toString(); - var exception = new NotFoundException(String.class, id); - assertThat(exception.getMessage()).isEqualTo("Object 'String' with id '" + id + "' not found."); - } + @Test + void shouldCreateException() { + var id = UUID.randomUUID().toString(); + var exception = new NotFoundException(String.class, id); + + assertThat(exception.getMessage()).isEqualTo("Object 'String' with id '" + id + "' not found."); + } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/RestClientUtilsTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/RestClientUtilsTest.java index f5aace46e9de92e679393dd642abc16448a8e799..cf2495fb69dde5b67935ef59cb204fd79c9b957b 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/RestClientUtilsTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/RestClientUtilsTest.java @@ -26,24 +26,19 @@ import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.antragsraum.nachricht.NachrichtenRestClient; class RestClientUtilsTest { - @Spy - @InjectMocks - private NachrichtenRestClient restClient; @Nested class TestGrpcAddressSanitizer { + @Test void shouldSanitizeAddress() { var address = RestClientUtils.sanitizeAddress("static://localhost:9090"); assertThat(address).isEqualTo("localhost"); } + } } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/TechnicalExceptionTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/TechnicalExceptionTest.java index 44ed5387a84695c615d5c30433a08991f3994834..83e4e79c4446bc587ab803f25296e90452cdb3cf 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/TechnicalExceptionTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/TechnicalExceptionTest.java @@ -39,4 +39,5 @@ class TechnicalExceptionTest { assertThat(exception.getMessage()).isEqualTo("TechnicalException happened! Message: " + MESSAGE); } + } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/SecurityExceptionAdviceTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/VirusFoundExceptionTest.java similarity index 64% rename from server/src/test/java/de/ozgcloud/antragsraum/common/SecurityExceptionAdviceTest.java rename to server/src/test/java/de/ozgcloud/antragsraum/common/VirusFoundExceptionTest.java index 36be2b73108e9f4aa4d2d63fab7967d25e08f033..820a0ee56a095ac79173328e735243335d384cc9 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/SecurityExceptionAdviceTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/VirusFoundExceptionTest.java @@ -1,5 +1,7 @@ /* - * Copyright (c) 2024. + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. + * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - * Folgeversionen der EUPL ("Lizenz"); @@ -17,23 +19,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ - package de.ozgcloud.antragsraum.common; -import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.*; import java.util.UUID; -import static org.assertj.core.api.Assertions.*; +import org.junit.jupiter.api.Test; -class SecurityExceptionAdviceTest { - @Test - void shouldCreateException() { - var message = UUID.randomUUID().toString(); +class VirusFoundExceptionTest { - var exception = new SecurityException(message, new RuntimeException("test")); + @Test + void shouldCreateException() { + var id = UUID.randomUUID().toString(); + var exception = new VirusFoundException(id); - assertThat(exception.getMessage()).isEqualTo(message); - } + assertThat(exception.getMessage()).isEqualTo("File with nachrichtId '" + id + "' contains virus."); + } } \ No newline at end of file diff --git a/server/src/test/java/de/ozgcloud/antragsraum/common/VirusScanExceptionTest.java b/server/src/test/java/de/ozgcloud/antragsraum/common/VirusScanExceptionTest.java index 340b6336c0b7b29554fbb7630c5f151df077f519..0d5515b02cc1c3d7162ac93a1e5395d72eb4df24 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/common/VirusScanExceptionTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/common/VirusScanExceptionTest.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2023-2024. - * Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * Copyright (c) 2023-2024. Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten + * des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung. * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - @@ -26,6 +26,7 @@ import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Test; class VirusScanExceptionTest { + @Test void shouldCreateException() { var fileName = "TestFileName.pdf"; @@ -33,4 +34,5 @@ class VirusScanExceptionTest { assertThat(exception.getMessage()).isEqualTo("Virus scan for file with name '" + fileName + "' failed."); } + } \ No newline at end of file