From 0d2a65df05704e6bff1e518aac15a358017b8dcf Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Tue, 21 Jan 2025 13:53:05 +0100 Subject: [PATCH] OZG-7491 Entferne xta-adapter und DFoerdermittelEngineBasedSemantikAdapter aus dem eingang-manager Repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Befindet sich nun in eigenständigen Repos eingang/xta-adapter und eingang/dfoerdermittel-semantik --- Jenkinsfile | 42 +- pom.xml | 1 - release-startdev.sh | 1 - ...erdermittelEngineBasedSemantikAdapter.java | 206 ------ ...rmittelEngineBasedSemantikAdapterTest.java | 363 ---------- .../DFoerdermittelFormDataTestFactory.java | 98 --- .../xta/Beispieldatensatz_Fachnachricht.xml | 32 - ...ple-response-getmessages-items-pending.xml | 76 --- ...onse-getmessages-no-messages-available.xml | 36 - xta-adapter/pom.xml | 219 ------- xta-adapter/readme.md | 48 -- xta-adapter/run_helm_test.sh | 31 - xta-adapter/src/main/helm/Chart.yaml | 31 - xta-adapter/src/main/helm/README.md | 35 - xta-adapter/src/main/helm/app-readme.md | 1 - .../src/main/helm/templates/_helpers.tpl | 103 --- .../main/helm/templates/network_policy.yaml | 98 --- .../main/helm/templates/service_account.yaml | 31 - .../helm/templates/xta_adapter_cronjob.yaml | 179 ----- .../xta_bindings_type_configmap.yaml | 34 - .../helm/templates/xta_keystore_secret.yaml | 36 - .../helm/templates/xta_root_ca_secret.yaml | 34 - xta-adapter/src/main/helm/values.yaml | 36 - .../de/ozgcloud/eingang/xdomea/XMLHelper.java | 86 --- .../eingang/xdomea/XdomeaMessageData.java | 40 -- .../xdomea/XdomeaMessageDataMapper.java | 175 ----- .../eingang/xdomea/XdomeaXMLValueReader.java | 87 --- .../MsgStatusListTypeAndHeaderResponse.java | 42 -- .../xta/RepresentationsAttachmentsPair.java | 37 -- .../xta/WsHeaderAddingInterceptor.java | 98 --- .../xta/XtaCurrentIdentifierService.java | 51 -- .../java/de/ozgcloud/eingang/xta/XtaFile.java | 37 -- .../eingang/xta/XtaIncomingFilesMapper.java | 72 -- .../ozgcloud/eingang/xta/XtaMapperHelper.java | 54 -- .../de/ozgcloud/eingang/xta/XtaMessage.java | 42 -- .../de/ozgcloud/eingang/xta/XtaMessageId.java | 37 -- .../eingang/xta/XtaMessageMapper.java | 73 --- .../eingang/xta/XtaMessageMetaData.java | 82 --- .../eingang/xta/XtaMessageMetaDataMapper.java | 59 -- .../xta/XtaMessageMetaDatasAndHeader.java | 38 -- .../xta/XtaMessageMetadataRemoteIterator.java | 65 -- .../ozgcloud/eingang/xta/XtaProperties.java | 108 --- .../eingang/xta/XtaRemoteService.java | 319 --------- .../xta/XtaRemoteServiceConfiguration.java | 149 ----- .../de/ozgcloud/eingang/xta/XtaRunner.java | 71 -- .../de/ozgcloud/eingang/xta/XtaService.java | 175 ----- .../eingang/xta/zip/LimitedInputStream.java | 65 -- .../eingang/xta/zip/ReadableZipEntry.java | 51 -- .../eingang/xta/zip/ZipFileExtractor.java | 142 ---- xta-adapter/src/main/resources/XTA.wsdl | 620 ------------------ .../src/main/resources/application-local.yml | 18 - .../src/main/resources/application.yml | 19 - xta-adapter/src/main/wsdl/XTA-synchron.wsdl | 201 ------ xta-adapter/src/main/xsd/OSCI2_02.xsd | 328 --------- .../main/xsd/OSCI_MessageMetaData_V2.02.xsd | 379 ----------- .../main/xsd/XTA-Webservice-Datentypen.xsd | 544 --------------- .../main/xsd/XTA-Webservice-Exceptions.xsd | 133 ---- .../xsd/XTA-Webservice-Globale-Elemente.xsd | 137 ---- ...oasis-200401-wss-wssecurity-secext-1.0.xsd | 195 ------ ...asis-200401-wss-wssecurity-utility-1.0.xsd | 216 ------ xta-adapter/src/main/xsd/soap-envelope.xsd | 111 ---- xta-adapter/src/main/xsd/ws-addr-wsdl.xsd | 42 -- xta-adapter/src/main/xsd/ws-addr.xsd | 109 --- xta-adapter/src/main/xsd/ws-policy.xsd | 141 ---- xta-adapter/src/main/xsd/xenc-schema.xsd | 126 ---- xta-adapter/src/main/xsd/xml.xsd | 145 ---- .../src/main/xsd/xmldsig-core-schema.xsd | 293 --------- xta-adapter/src/main/xsd/xmlmime.xsd | 32 - .../src/main/xsd/xoev-basisdatentypen.xsd | 18 - .../src/main/xsd/xoev1_0-basisdatentypen.xsd | 32 - xta-adapter/src/test/helm-linter-values.yaml | 33 - .../src/test/helm/network_policy_test.yaml | 239 ------- .../src/test/helm/service_account_test.yaml | 66 -- .../test/helm/xta_adapter_63_chars_test.yaml | 56 -- .../helm/xta_adapter_cronjob_basic_test.yaml | 148 ----- .../xta_adapter_cronjob_bindings_test.yaml | 47 -- ...xta_adapter_cronjob_dummy_probes_test.yaml | 85 --- .../helm/xta_adapter_cronjob_env_test.yaml | 202 ------ .../xta_adapter_cronjob_image_pull_test.yaml | 45 -- .../xta_adapter_cronjob_resources_test.yaml | 56 -- ...xta_adapter_cronjob_routing_zufi_test.yaml | 88 --- ..._adapter_cronjob_service_account_test.yaml | 55 -- .../xta_adapter_cronjob_volumes_test.yaml | 93 --- .../src/test/helm/xta_bindings_type_test.yaml | 56 -- .../test/helm/xta_keystore_secret_test.yaml | 64 -- .../test/helm/xta_root_ca_secret_test.yaml | 58 -- .../xdomea/XdomeaMessageDataMapperTest.java | 240 ------- .../xdomea/XdomeaMessageDataTestFactory.java | 68 -- .../xdomea/XdomeaXMLValueReaderTest.java | 82 --- .../eingang/xta/FormDataTestFactory.java | 40 -- .../eingang/xta/FormHeaderTestFactory.java | 50 -- .../xta/MessageMetaDataTestFactory.java | 45 -- ...sListTypeAndHeaderResponseTestFactory.java | 43 -- .../xta/MsgStatusListTypeTestFactory.java | 36 - ...esentationsAttachmentsPairTestFactory.java | 54 -- .../eingang/xta/XtaApplicationTest.java | 44 -- .../xta/XtaCurrentIdentifierServiceTest.java | 67 -- .../eingang/xta/XtaFileTestFactory.java | 70 -- .../de/ozgcloud/eingang/xta/XtaITCase.java | 350 ---------- .../xta/XtaIncomingFilesMapperTest.java | 139 ---- .../eingang/xta/XtaMessageMapperTest.java | 148 ----- .../xta/XtaMessageMetaDataMapperTest.java | 62 -- .../xta/XtaMessageMetaDataTestFactory.java | 62 -- ...aMessageMetaDatasAndHeaderTestFactory.java | 44 -- .../XtaMessageMetadataRemoteIteratorTest.java | 143 ---- .../eingang/xta/XtaMessageTestFactory.java | 44 -- .../eingang/xta/XtaPropertiesTestFactory.java | 52 -- .../XtaRemoteServiceConfigurationTest.java | 45 -- .../xta/XtaRemoteServiceFunctionalCase.java | 94 --- .../eingang/xta/XtaRemoteServiceTest.java | 169 ----- .../eingang/xta/XtaResponseTestFactory.java | 163 ----- .../ozgcloud/eingang/xta/XtaRunnerTest.java | 80 --- .../ozgcloud/eingang/xta/XtaServiceTest.java | 494 -------------- .../xta/zip/LimitedInputStreamTest.java | 164 ----- .../eingang/xta/zip/ReadableZipEntryTest.java | 103 --- .../eingang/xta/zip/TestZipFileFactory.java | 136 ---- .../eingang/xta/zip/ZipFileExtractorTest.java | 394 ----------- .../org.junit.jupiter.api.extension.Extension | 1 - .../src/test/resources/application-itcase.yml | 22 - .../test/resources/junit-platform.properties | 1 - ...2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf | Bin 32384 -> 0 bytes ...-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf | Bin 185689 -> 0 bytes ...e03_Geschaeftsgang.Geschaeftsgang.0201.xml | 107 --- ...-c97b-4823-bad1-60401b112a9f_XML-Daten.xml | 89 --- ...27e_Geschaeftsgang.Geschaeftsgang.0201.xml | 89 --- ...baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf | Bin 32200 -> 0 bytes ...-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml | 3 - ...g-01f903b0-c61e-429d-807f-5011d180c073.pdf | Bin 54283 -> 0 bytes ...a22a-9d20-4507-aa5e-b764bb5642f0_Admin.png | Bin 64973 -> 0 bytes ...2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml | 32 - ...b95_Geschaeftsgang.Geschaeftsgang.0201.xml | 128 ---- ...2-45b8-9bd2-db840b8322bf_Fachnachricht.xml | 32 - ...4d94-afdf-62c89b9e1557_Zusammenfassung.pdf | Bin 51229 -> 0 bytes ...345_Geschaeftsgang.Geschaeftsgang.0201.xml | 111 ---- ...fcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf | Bin 39794 -> 0 bytes ...a22a-9d20-4507-aa5e-b764bb5642f0_Admin.png | Bin 64973 -> 0 bytes ...400cc0301a_Antrag_Max_Mustermann_SGBIX.xml | 229 ------- ...ef2_Geschaeftsgang.Geschaeftsgang.0201.xml | 123 ---- ...fcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf | Bin 39794 -> 0 bytes ...400cc0301a_Antrag_Max_Mustermann_SGBIX.xml | 229 ------- ...ef2_Geschaeftsgang.Geschaeftsgang.0201.xml | 101 --- ...-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml | 132 ---- ...4d2_Geschaeftsgang.Geschaeftsgang.0201.xml | 79 --- .../versammlungsanzeige.xml | 1 - ...tel_Geschaeftsgang.Geschaeftsgang.0201.xml | 138 ---- ...rag_Geschaeftsgang.Geschaeftsgang.0201.xml | 132 ---- .../src/test/resources/xtaTestStore.p12 | Bin 2768 -> 0 bytes 147 files changed, 3 insertions(+), 14757 deletions(-) delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java delete mode 100644 semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml delete mode 100644 xta-adapter/doc/example-response-getmessages-items-pending.xml delete mode 100644 xta-adapter/doc/example-response-getmessages-no-messages-available.xml delete mode 100644 xta-adapter/pom.xml delete mode 100644 xta-adapter/readme.md delete mode 100755 xta-adapter/run_helm_test.sh delete mode 100644 xta-adapter/src/main/helm/Chart.yaml delete mode 100644 xta-adapter/src/main/helm/README.md delete mode 100644 xta-adapter/src/main/helm/app-readme.md delete mode 100644 xta-adapter/src/main/helm/templates/_helpers.tpl delete mode 100644 xta-adapter/src/main/helm/templates/network_policy.yaml delete mode 100644 xta-adapter/src/main/helm/templates/service_account.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml delete mode 100644 xta-adapter/src/main/helm/values.yaml delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java delete mode 100644 xta-adapter/src/main/resources/XTA.wsdl delete mode 100644 xta-adapter/src/main/resources/application-local.yml delete mode 100644 xta-adapter/src/main/resources/application.yml delete mode 100644 xta-adapter/src/main/wsdl/XTA-synchron.wsdl delete mode 100644 xta-adapter/src/main/xsd/OSCI2_02.xsd delete mode 100644 xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd delete mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd delete mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd delete mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd delete mode 100644 xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd delete mode 100644 xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd delete mode 100644 xta-adapter/src/main/xsd/soap-envelope.xsd delete mode 100644 xta-adapter/src/main/xsd/ws-addr-wsdl.xsd delete mode 100644 xta-adapter/src/main/xsd/ws-addr.xsd delete mode 100644 xta-adapter/src/main/xsd/ws-policy.xsd delete mode 100644 xta-adapter/src/main/xsd/xenc-schema.xsd delete mode 100644 xta-adapter/src/main/xsd/xml.xsd delete mode 100644 xta-adapter/src/main/xsd/xmldsig-core-schema.xsd delete mode 100644 xta-adapter/src/main/xsd/xmlmime.xsd delete mode 100644 xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd delete mode 100644 xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd delete mode 100644 xta-adapter/src/test/helm-linter-values.yaml delete mode 100644 xta-adapter/src/test/helm/network_policy_test.yaml delete mode 100644 xta-adapter/src/test/helm/service_account_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_bindings_type_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_keystore_secret_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java delete mode 100644 xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 xta-adapter/src/test/resources/application-itcase.yml delete mode 100644 xta-adapter/src/test/resources/junit-platform.properties delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml delete mode 100644 xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/xtaTestStore.p12 diff --git a/Jenkinsfile b/Jenkinsfile index bfc99ee1c..57c2fc6b9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -56,20 +56,19 @@ pipeline { def ifAdapterVersion = getParentPomVersion('intelliform-adapter/pom.xml') def fsAdapterVersion = getParentPomVersion('formsolutions-adapter/pom.xml') def formCycleAdapterVersion = getParentPomVersion('formcycle-adapter/pom.xml') - def xtaAdapterVersion = getParentPomVersion('xta-adapter/pom.xml') def enterpriseAdapterVersion = getParentPomVersion('enterprise-adapter/pom.xml') if(env.BRANCH_NAME == 'release'){ - if ( !isReleaseVersion([rootVersion, vorgangManagerVersion, commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, xtaAdapterVersion, enterpriseAdapterVersion])) { + if ( !isReleaseVersion([rootVersion, vorgangManagerVersion, commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, enterpriseAdapterVersion])) { error("Keine Release Version für Branch ${env.BRANCH_NAME}.") } } else { - if ( !isSnapshotVersion([rootVersion, commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, xtaAdapterVersion, enterpriseAdapterVersion])) { + if ( !isSnapshotVersion([rootVersion, commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, enterpriseAdapterVersion])) { error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.") } } - if ( !isSameVersion([commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, xtaAdapterVersion, enterpriseAdapterVersion], rootVersion)) { + if ( !isSameVersion([commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, enterpriseAdapterVersion], rootVersion)) { error("Versionen sind nicht identisch") } } @@ -145,21 +144,18 @@ pipeline { tagAndPushDockerImage('intelliform-adapter', IMAGE_TAG) tagAndPushDockerImage('formsolutions-adapter', IMAGE_TAG) tagAndPushDockerImage('formcycle-adapter', IMAGE_TAG) - tagAndPushDockerImage('xta-adapter', IMAGE_TAG) tagAndPushDockerImage('enterprise-adapter', IMAGE_TAG) if (env.BRANCH_NAME == 'main') { tagAndPushDockerImage('intelliform-adapter', 'snapshot-latest') tagAndPushDockerImage('formsolutions-adapter', 'snapshot-latest') tagAndPushDockerImage('formcycle-adapter', 'snapshot-latest') - tagAndPushDockerImage('xta-adapter', 'snapshot-latest') tagAndPushDockerImage('enterprise-adapter', 'snapshot-latest') } else if (env.BRANCH_NAME == 'release') { tagAndPushDockerImage('intelliform-adapter', 'latest') tagAndPushDockerImage('formsolutions-adapter', 'latest') tagAndPushDockerImage('formcycle-adapter', 'latest') - tagAndPushDockerImage('xta-adapter', 'latest') tagAndPushDockerImage('enterprise-adapter', 'latest') } } @@ -183,25 +179,6 @@ pipeline { } } - stage('Test, build and deploy Xta-Adapter Helm Chart') { - steps { - script { - FAILED_STAGE=env.STAGE_NAME - HELM_CHART_VERSION = buildVersionName() - - dir('xta-adapter') { - sh "./run_helm_test.sh" - } - - dir('xta-adapter/src/main/helm') { - sh "helm package --version=${HELM_CHART_VERSION} ." - - deployHelmChart("xta-adapter", HELM_CHART_VERSION) - } - } - } - } - stage('Trigger Dev rollout') { when { branch 'main' @@ -325,7 +302,6 @@ Void setNewDevAdapterVersion() { setNewAfmAdapterVersion('dev') setNewFsAdapterVersion('dev') setNewFormcycleAdapterVersion('dev') - setNewXtaAdapterVersion('dev') setNewEnterpriseAdapterVersion('dev') } @@ -372,18 +348,6 @@ Void setNewFormcycleAdapterVersion(String environment) { } } -Void setNewXtaAdapterVersion(String environment) { - dir("gitops") { - def envFile = "${environment}/application/values/xta-adapter-values.yaml" - def envVersions = readYaml file: envFile - - envVersions.xta_adapter.image.tag = IMAGE_TAG - envVersions.xta_adapter.helm.version = HELM_CHART_VERSION - - writeYaml file: envFile, data: envVersions, overwrite: true - } -} - Void setNewEnterpriseAdapterVersion(String environment) { dir("gitops") { def envFile = "${environment}/application/values/enterprise-adapter-values.yaml" diff --git a/pom.xml b/pom.xml index a04f8b8d7..9be2ec35b 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,6 @@ <module>forwarder</module> <module>semantik-adapter</module> <module>formcycle-adapter</module> - <module>xta-adapter</module> <module>enterprise-adapter</module> <module>fim-adapter</module> </modules> diff --git a/release-startdev.sh b/release-startdev.sh index d5634451c..c3579421c 100755 --- a/release-startdev.sh +++ b/release-startdev.sh @@ -46,7 +46,6 @@ PROJECTS="pom.xml:main formcycle-adapter/formcycle-adapter-interface/pom.xml:main formcycle-adapter/pom.xml:parent formsolutions-adapter/pom.xml:parent - xta-adapter/pom.xml:parent forwarder/pom.xml:parent intelliform-adapter/pom.xml:parent router/pom.xml:parent diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java deleted file mode 100644 index 6879afba4..000000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * 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.eingang.semantik.enginebased.dfoerdermittel; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Predicate; -import java.util.function.UnaryOperator; -import java.util.stream.Stream; - -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.dataformat.xml.XmlMapper; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSemantikAdapter { - - private static final String FACHNACHRICHT_SUFFIX = "Fachnachricht.xml"; - private static final Predicate<IncomingFile> IS_FACHNACHRICHT = inFile -> StringUtils.endsWith(inFile.getName(), FACHNACHRICHT_SUFFIX); - - private static final String KEY_FACHNACHRICHT = "Fachnachricht"; - private static final String KEY_POSTFACH_ID = "InboxReference"; - private static final String KEY_ORGANISATIONS_EINHEIT_ID = "MetaText1"; - private static final String KEY_FORM_NAME = "Title"; - private static final String KEY_FORM_ID = "ProjectTitle"; - - static final String DEFAULT_FORM_NAME = "dFördermittelantrag"; - static final String DEFAULT_FORM_ID = "dFördermittelantrag"; - - @Autowired - private ServiceKontoFactory serviceKontoFactory; - - @Override - public FormData parseFormData(FormData formData) { - return formData.getRepresentations().stream().filter(IS_FACHNACHRICHT).findAny() - .map(inFile -> parseFachnachricht(formData, inFile)) - .map(this::processFachnachricht) - .orElse(formData); - } - - FormData processFachnachricht(FormData formData) { - return pipe( - Stream.of( - this::addFormName, - this::addFormEngineName, - this::addServiceKonto, - this::addOrganisationsEinheitId, - this::addFormId - ) - ).apply(formData); - } - - private UnaryOperator<FormData> pipe(Stream<UnaryOperator<FormData>> functions) { - return (formData) -> functions - .reduce(formData, (acc, f) -> f.apply(acc), (a, b) -> a); - } - - FormData addFormId(FormData formData) { - return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formId( - getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_ID) - .orElse(DEFAULT_FORM_ID) - )); - } - - private Optional<String> getNonEmptyFachnachrichtValueByKey(FormData formData, String key) { - return Optional.ofNullable((String) getFachnachricht(formData).get(key)) - .filter(StringUtils::isNotBlank); - } - - private FormData mapWithModifiedHeader(FormData formData, UnaryOperator<FormHeader.FormHeaderBuilder> headerBuilderOperator) { - return formData.toBuilder() - .header(headerBuilderOperator.apply(formData.getHeader().toBuilder()).build()) - .build(); - } - - FormData addServiceKonto(FormData formData) { - return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_POSTFACH_ID)) - .map(this::extractPrefix) - .map(this::createServiceKonto) - .map(serviceKonto -> mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.serviceKonto(serviceKonto))) - .orElse(formData); - } - - FormData addOrganisationsEinheitId(FormData formData) { - return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_ORGANISATIONS_EINHEIT_ID)) - .map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelles())) - .map(zustStelle -> formData.toBuilder() - .zustaendigeStelle(zustStelle) - .build()) - .orElse(formData); - } - - private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, Collection<ZustaendigeStelle> zustaendigeStelles) { - ZustaendigeStelle.ZustaendigeStelleBuilder zustaendigeStelleBuilder; - if (Objects.isNull(zustaendigeStelles) || zustaendigeStelles.isEmpty()) { - zustaendigeStelleBuilder = ZustaendigeStelle.builder(); - } else { - var zustaendigeStellesIterator = zustaendigeStelles.iterator(); - var zustaendigeStelle = zustaendigeStellesIterator.next(); - logErrorForExistingZustaendigeStelle(); - zustaendigeStelleBuilder = zustaendigeStelle.toBuilder(); - } - - return zustaendigeStelleBuilder.organisationseinheitenId(orgaId).build(); - } - - void logErrorForExistingZustaendigeStelle() { - LOG.error( - "Expect no existing ZustaendigeStelle for DFoerdermittel! Continuing with two ZustaendigeStelles, the original(s) and a copy of the first with overridden OrganisationsEinheitId."); - } - - FormData addFormName(FormData formData) { - return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formName( - getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_NAME) - .orElse(DEFAULT_FORM_NAME) - )); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getFachnachricht(FormData formData) { - return (Map<String, Object>) MapUtils.getMap(formData.getFormData(), KEY_FACHNACHRICHT, Collections.<String, Object>emptyMap()); - } - - FormData addFormEngineName(FormData formData) { - return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formEngineName("dFördermittelantrag")); - } - - String extractPrefix(@NonNull String postfachId) { - return postfachId.substring(postfachId.lastIndexOf("/") + 1); - } - - private ServiceKonto createServiceKonto(String postfachId) { - return serviceKontoFactory.buildOsiServiceKonto(postfachId); - } - - FormData parseFachnachricht(FormData formData, IncomingFile fachnachrichtFile) { - var fachnachrichtData = extractFormDataFormXML(fachnachrichtFile.getContentStream()); - - if (MapUtils.isNotEmpty(fachnachrichtData)) { - var editable = new HashMap<>(formData.getFormData()); - editable.put(KEY_FACHNACHRICHT, fachnachrichtData); - return formData.toBuilder().formData(Collections.unmodifiableMap(editable)).build(); - } - - return formData; - } - - @SuppressWarnings("unchecked") - Map<String, Object> extractFormDataFormXML(InputStream xmlFileStream) { - - XmlMapper xmlMapper = new XmlMapper(); - try { - return xmlMapper.readValue(xmlFileStream, Map.class); - } catch (IOException e) { - LOG.error("Error reading xml fachnachricht.", e); - } - return Collections.emptyMap(); - } - - @Override - public boolean isResponsible(FormData formData) { - return formData.getRepresentations().stream().anyMatch(IS_FACHNACHRICHT); - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java deleted file mode 100644 index 1ef26cff3..000000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java +++ /dev/null @@ -1,363 +0,0 @@ -/* - * 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.eingang.semantik.enginebased.dfoerdermittel; - -import static de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel.DFoerdermittelEngineBasedSemantikAdapter.*; -import static de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel.DFoerdermittelFormDataTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.assertj.core.api.InstanceOfAssertFactories.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Collections; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -class DFoerdermittelEngineBasedSemantikAdapterTest { - - @Spy - @InjectMocks - private DFoerdermittelEngineBasedSemantikAdapter adapter; - - @Mock - private ServiceKontoFactory serviceKontoFactory; - - @Nested - class TestIsResponsible { - - @Test - void shouldBeTrueWithFachnachricht() { - var responsible = adapter.isResponsible(createWithFachnachricht()); - - assertThat(responsible).isTrue(); - } - - @Test - void shouldBeFalseForOuther() { - var responsible = adapter.isResponsible(FormDataTestFactory.create()); - - assertThat(responsible).isFalse(); - } - } - - @Nested - class TestParseFachnachricht { - - @Nested - class ExtractData { - @Test - void shouldHaveFormData() { - var result = adapter.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - assertThat(result).isNotNull(); - } - - @Test - void shouldHavePages() { - var result = adapter.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - assertThat(result).containsKey("Pages"); - } - - @Test - void shouldHaveInboxRef() { - var result = adapter.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - assertThat(result).containsEntry("InboxReference", "sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a"); - } - } - - @Nested - class HandleFachnachrichtData { - - private final Map<String, Object> extracted = Map.of("name", "Theo"); - - @Test - void shouldCallExtractData() { - doReturn(extracted).when(adapter).extractFormDataFormXML(any()); - - adapter.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); - - verify(adapter).extractFormDataFormXML(notNull()); - } - - @Test - void shouldAddMap() { - doReturn(extracted).when(adapter).extractFormDataFormXML(any()); - - var result = adapter.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); - - assertThat(result.getFormData()).containsEntry("Fachnachricht", extracted); - } - - @Test - void shouldIgnoreEmptyData() { - doReturn(Collections.emptyMap()).when(adapter).extractFormDataFormXML(any()); - - var result = adapter.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); - - assertThat(result.getFormData()).doesNotContainKey("Fachnachricht"); - } - } - } - - FormData createWithFachnachricht() { - - return FormData.builder() - .formData(Collections.emptyMap()) - .representation(createFachnachrichtFile()).build(); - } - - IncomingFile createFachnachrichtFile() { - var tmpFile = TempFileUtils.writeTmpFile(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - return IncomingFile.builder() - .file(tmpFile) - .contentType("application/xml") - .size(1283) - .name("Beispieldatensatz_Fachnachricht.xml") - .build(); - } - - @Nested - class TestProcessFachnachricht { - - @Mock - FormData formData0; - - @Mock - FormData formData1; - - @Mock - FormData formData2; - - @Mock - FormData formData3; - - @Mock - FormData formData4; - - @Mock - FormData formData5; - - @BeforeEach - void mock() { - doReturn(formData1).when(adapter).addFormName(formData0); - doReturn(formData2).when(adapter).addFormEngineName(formData1); - doReturn(formData3).when(adapter).addServiceKonto(formData2); - doReturn(formData4).when(adapter).addOrganisationsEinheitId(formData3); - doReturn(formData5).when(adapter).addFormId(formData4); - } - - @Test - void shouldReturn() { - var processedFormData = adapter.processFachnachricht(formData0); - - assertThat(processedFormData).isEqualTo(formData5); - } - } - - @Nested - class TestAddServiceKonto { - - @BeforeEach - void init() { - when(serviceKontoFactory.buildOsiServiceKonto(any())).thenReturn(ServiceKontoTestFactory.create()); - } - - @Test - void shouldHaveServiceKonto() { - var formData = adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create()); - - assertThat(formData.getHeader().getServiceKonto().getPostfachAddresses().getFirst().getIdentifier()) - .asInstanceOf(type(StringBasedIdentifier.class)).extracting(StringBasedIdentifier::getPostfachId) - .isEqualTo(PostfachAddressTestFactory.POSTFACH_ID); - } - - @Test - void shouldRemovePrefix() { - adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create()); - - verify(serviceKontoFactory).buildOsiServiceKonto(DFoerdermittelFormDataTestFactory.POSTFACH_ID); - } - } - - @Nested - class TestExtractPrefix { - @Test - void shouldRemoveAllBeforeLastSlash() { - var result = adapter.extractPrefix("bla/bla/bla/12345"); - - assertThat(result).isEqualTo("12345"); - } - - @Test - void shouldBeFineWithoutSlash() { - var result = adapter.extractPrefix("12345"); - - assertThat(result).isEqualTo("12345"); - } - } - - @Nested - class TestAddOrganisationsEinheitId { - - @DisplayName("with no existing zustaendige stelles") - @Nested - class TestWithNoExistingZustaendigeStelles { - @Test - void shouldHaveOrganisationsEinheitId() { - var inputFormData = DFoerdermittelFormDataTestFactory.createBuilder() - .clearZustaendigeStelles() - .build(); - - var formData = adapter.addOrganisationsEinheitId(inputFormData); - - assertThat(formData.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .containsExactly(ORGANISATIONS_EINHEIT_ID); - } - } - - @DisplayName("with one existing zustaendige stelle") - @Nested - class TestWithOneExistingZustaendigeStelle { - - @Test - void shouldHaveOrganisationsEinheitId() { - var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create()); - - assertThat(formData.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .containsExactly(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, ORGANISATIONS_EINHEIT_ID); - } - - @DisplayName("should log error for existing zustaendige stelle") - @Test - void shouldLogErrorForExistingZustaendigeStelle() { - adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create()); - - verify(adapter).logErrorForExistingZustaendigeStelle(); - } - } - } - - @Nested - class TestAddFormName { - - @DisplayName("should have form name from title") - @Test - void shouldHaveFormNameFromTitle() { - var formData = adapter.addFormName(createFormDataWithTitle(FORM_NAME)); - - assertThat(formData.getHeader().getFormName()).isEqualTo(FORM_NAME); - } - - @DisplayName("should have default form name for empty title") - @Test - void shouldHaveDefaultFormNameForEmptyTitle() { - var formData = adapter.addFormName(createFormDataWithTitle("")); - - assertThat(formData.getHeader().getFormName()).isEqualTo(DEFAULT_FORM_NAME); - } - - @DisplayName("should have default form name for missing title") - @Test - void shouldHaveDefaultFormNameForMissingTitle() { - var formData = adapter.addFormName(createFormDataWithTitle(null)); - - assertThat(formData.getHeader().getFormName()).isEqualTo(DEFAULT_FORM_NAME); - } - - FormData createFormDataWithTitle(String title) { - return createFachnachrichtBuilder().title(title).build().createFormData(); - } - - } - - @DisplayName("add form id") - @Nested - class TestAddFormId { - - @DisplayName("should get form id from project title") - @Test - void shouldGetFormIdFromProjectTitle() { - var formData = adapter.addFormId(createFormDataWithProjectTitle(FORM_ID)); - - assertThat(formData.getHeader().getFormId()).isEqualTo(FORM_ID); - } - - @DisplayName("should keep form id if project title is empty") - @Test - void shouldKeepFormIdIfProjectTitleIsEmpty() { - var formData = adapter.addFormId(createFormDataWithProjectTitle("")); - - assertThat(formData.getHeader().getFormId()).isEqualTo(DEFAULT_FORM_ID); - } - - @DisplayName("should keep form id if project title is null") - @Test - void shouldKeepFormIdIfProjectTitleIsNull() { - var formData = adapter.addFormId(createFormDataWithProjectTitle(null)); - - assertThat(formData.getHeader().getFormId()).isEqualTo(DEFAULT_FORM_ID); - } - - FormData createFormDataWithProjectTitle(String projectTitle) { - return createFachnachrichtBuilder().projectTitle(projectTitle).build().createFormData(); - } - - } - - @Nested - class TestAddFormEngineName { - - @Test - void shouldHaveFormEngineName() { - var formData = adapter.addFormEngineName(DFoerdermittelFormDataTestFactory.create()); - - assertThat(formData.getHeader().getFormEngineName()).isEqualTo("dFördermittelantrag"); - } - - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java deleted file mode 100644 index 3f044ce75..000000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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.eingang.semantik.enginebased.dfoerdermittel; - -import static java.util.stream.Collectors.*; - -import java.util.Map; -import java.util.Objects; -import java.util.function.Predicate; -import java.util.stream.IntStream; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import lombok.Builder; - -class DFoerdermittelFormDataTestFactory { - - static final String FORM_NAME = "Name of form"; - static final String FORM_ID = "Wert von ProjectTitle"; - static final String POSTFACH_ID = "4dd01647-b9d9-4775-1b50-08da3d83800a"; - static final String ORGANISATIONS_EINHEIT_ID = "9795669"; - - static Fachnachricht.FachnachrichtBuilder createFachnachrichtBuilder() { - return Fachnachricht.builder() - .title(FORM_NAME) - .projectTitle(FORM_ID) - .postfachId(POSTFACH_ID) - .organisationsEinheitId(ORGANISATIONS_EINHEIT_ID); - } - - static FormData create() { - return createBuilder().build(); - } - - static FormData.FormDataBuilder createBuilder() { - return createBuilderWithFachnachricht(createFachnachrichtBuilder().build()); - } - - static FormData.FormDataBuilder createBuilderWithFachnachricht(Fachnachricht fachnachricht) { - return FormDataTestFactory.createBuilder() - .header(FormHeaderTestFactory.create()) - .formData(Map.of("Fachnachricht", createFachnachrichtMapWithFachnachricht(fachnachricht))); - } - - static Map<String, Object> createFachnachrichtMap() { - return createFachnachrichtMapWithFachnachricht(createFachnachrichtBuilder().build()); - } - - static Map<String, Object> createFachnachrichtMapWithFachnachricht(Fachnachricht fachnachricht) { - return createMapWithValueFilter( - Objects::nonNull, - "Title", fachnachricht.title(), - "ProjectTitle", fachnachricht.projectTitle(), - "InboxReference", "sh/sh/" + fachnachricht.postfachId(), - "MetaText1", fachnachricht.organisationsEinheitId() - ); - } - - private static Map<String, Object> createMapWithValueFilter(Predicate<String> valuePredicate, String... keyValuePairs) { - if (keyValuePairs.length % 2 != 0) { - throw new IllegalArgumentException("Array length must be even to form key-value pairs."); - } - - return IntStream.range(0, keyValuePairs.length / 2) - .boxed() - .filter(i -> valuePredicate.test(keyValuePairs[2 * i + 1])) - .collect(toMap(i -> keyValuePairs[2 * i], i -> keyValuePairs[2 * i + 1])); - } - - @Builder - record Fachnachricht(String title, String projectTitle, String postfachId, String organisationsEinheitId) { - FormData createFormData() { - return createBuilderWithFachnachricht(this).build(); - } - } -} diff --git a/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml b/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml deleted file mode 100644 index 618c4813e..000000000 --- a/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dataport.de/dFAD/ApplicationDataMessageSchema"> - <ApplicationFormId>08db3c1c-db1f-4d27-8dec-73af167e87f2</ApplicationFormId> - <Timestamp>2023-04-18T11:40:24.9940624+02:00</Timestamp> - <ApplicationDataMessageVersion>1</ApplicationDataMessageVersion> - <Title>Testantrag XML-Fachnachricht-Erweiterung</Title> - <ProjectName>XML-Fachnachricht-Erweiterung</ProjectName> - <ProjectTitle>XML-Fachnachricht-Erweiterung</ProjectTitle> - <TransmittedApplicationId>7AtSMHpx3LfJp4</TransmittedApplicationId> - <InboxReference>sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a</InboxReference> - <MetaText1>9795669</MetaText1> - <Pages> - <Page> - <Title>Beispiel Seite 1</Title> - <Navigation>Beispiel Seite 1</Navigation> - <Controls> - <Control> - <RadioButtonGroup> - <Label>Beispiel-Steuerelement</Label> - <Alias>beispiel-element</Alias> - <SelectedItems> - <SelectedItem> - <Label>Beispielwert 2</Label> - <Value>bsp-2</Value> - </SelectedItem> - </SelectedItems> - </RadioButtonGroup> - </Control> - </Controls> - </Page> - </Pages> -</application> \ No newline at end of file diff --git a/xta-adapter/doc/example-response-getmessages-items-pending.xml b/xta-adapter/doc/example-response-getmessages-items-pending.xml deleted file mode 100644 index 134b5929c..000000000 --- a/xta-adapter/doc/example-response-getmessages-items-pending.xml +++ /dev/null @@ -1,76 +0,0 @@ -<!-- - - Copyright (C) 2023 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. - ---> -<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> - <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> - <tran:MsgBoxResponse xmlns:tran="http://www.osci.eu/ws/2008/05/transport"> - <tran:MsgBoxResponse MsgBoxRequestID="urn:de:xta:requestid:xta-tester:e8959968-a8c3-4ba4-aad1-5928ad6030dc"> - <tran:ItemsPending>1</tran:ItemsPending> - </tran:MsgBoxResponse> - </tran:MsgBoxResponse> - <wsa:Action>http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest</wsa:Action> - <wsa:RelatesTo>uuid:d30e3dbd-4724-4a08-84b9-55e61ce1b404</wsa:RelatesTo> - </soapenv:Header> - <soapenv:Body> - <tran:MsgStatusList xmlns:tran="http://www.osci.eu/ws/2008/05/transport" xmlns:tran1="http://www.osci.eu/ws/2014/10/transport" xmlns:add="http://www.w3.org/2005/08/addressing"> - <tran1:MessageMetaData> - <tran1:DeliveryAttributes> - <tran1:Origin>2022-02-25T14:13:57.613+01:00</tran1:Origin> - <tran1:InitialSend>2022-02-25T14:13:57.613+01:00</tran1:InitialSend> - <tran1:Delivery>2022-02-25T14:13:57.613+01:00</tran1:Delivery> - <tran1:InitialFetch>2022-02-25T14:13:57.613+01:00</tran1:InitialFetch> - </tran1:DeliveryAttributes> - <tran1:Originators> - <tran1:Author> - <tran1:Identifier category="category" type="type"/> - </tran1:Author> - <tran1:Sender> - <tran1:Identifier category="category" type="type"/> - </tran1:Sender> - </tran1:Originators> - <tran1:Destinations> - <tran1:Reader> - <tran1:Identifier category="category" type="type"/> - </tran1:Reader> - </tran1:Destinations> - <tran1:MsgIdentification> - <add:MessageID>urn:de:xta:messageid:xta-tester:0149cd17-a905-4b4b-83c6-10b5ca04a96b</add:MessageID> - </tran1:MsgIdentification> - <tran1:Qualifier> - <tran1:Service>urn:service</tran1:Service> - <tran1:BusinessScenario> - <tran1:Defined> - <name>test</name> - </tran1:Defined> - </tran1:BusinessScenario> - <tran1:MessageType> - <name>mytype</name> - </tran1:MessageType> - </tran1:Qualifier> - <tran1:MsgSize>10</tran1:MsgSize> - </tran1:MessageMetaData> - </tran:MsgStatusList> - </soapenv:Body> -</soapenv:Envelope> \ No newline at end of file diff --git a/xta-adapter/doc/example-response-getmessages-no-messages-available.xml b/xta-adapter/doc/example-response-getmessages-no-messages-available.xml deleted file mode 100644 index 06556c7f5..000000000 --- a/xta-adapter/doc/example-response-getmessages-no-messages-available.xml +++ /dev/null @@ -1,36 +0,0 @@ -<!-- - - Copyright (C) 2023 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. - ---> -<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> - <s:Header> - <a:Action s:mustUnderstand="1">http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest</a:Action> - <h:MsgBoxResponse MsgBoxRequestID="1" xmlns:h="http://www.osci.eu/ws/2008/05/transport" xmlns="http://www.osci.eu/ws/2008/05/transport" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <NoMessageAvailable reason="Keine Nachrichten gefunden."/> - </h:MsgBoxResponse> - </s:Header> - <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <MsgStatusList xmlns="http://www.osci.eu/ws/2008/05/transport"/> - </s:Body> -</s:Envelope> \ No newline at end of file diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml deleted file mode 100644 index 117d8411c..000000000 --- a/xta-adapter/pom.xml +++ /dev/null @@ -1,219 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2023 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. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - </parent> - <artifactId>xta-adapter</artifactId> - <name>Eingangs Adapter - XTA</name> - <packaging>jar</packaging> - - <properties> - <spring-boot.build-image.imageName>docker.ozg-sh.de/xta-adapter:build-latest</spring-boot.build-image.imageName> - </properties> - - <dependencies> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web-services</artifactId> - <exclusions> - <exclusion> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-security</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-log4j2</artifactId> - </dependency> - <!-- own projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>fim-adapter</artifactId> - </dependency> - <!--mapstruct--> - <dependency> - <groupId>org.mapstruct</groupId> - <artifactId>mapstruct</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-core</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-support</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-test</artifactId> - <scope>test</scope> - </dependency> - <!-- JAXB API only --> - <dependency> - <groupId>jakarta.xml.bind</groupId> - <artifactId>jakarta.xml.bind-api</artifactId> - </dependency> - <dependency> - <groupId>com.sun.xml.bind</groupId> - <artifactId>jaxb-impl</artifactId> - </dependency> - <!-- Dev --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-devtools</artifactId> - <scope>runtime</scope> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-configuration-processor</artifactId> - <optional>true</optional> - </dependency> - <!-- Test --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <configuration> - <profiles>local,sec</profiles> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>unpack</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>fim-adapter</artifactId> - <version>${project.version}</version> - <includes>**/*.yml,**/*.xml,**/*.xsd</includes> - </artifactItem> - </artifactItems> - <outputDirectory>${project.build.directory}/classes/</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>pl.project13.maven</groupId> - <artifactId>git-commit-id-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>jaxb2-maven-plugin</artifactId> - <executions> - <execution> - <id>wsdl1</id> - <goals> - <goal>xjc</goal> - </goals> - <configuration> - <sourceType>wsdl</sourceType> - <sources> - <source>${basedir}/src/main/resources/XTA.wsdl</source> - </sources> - <clearOutputDir>false</clearOutputDir> - <arguments>-wsdl</arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>ci-build</id> - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <id>build-image</id> - <phase>install</phase> - <goals> - <goal>build-image-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project> diff --git a/xta-adapter/readme.md b/xta-adapter/readme.md deleted file mode 100644 index 90aae8797..000000000 --- a/xta-adapter/readme.md +++ /dev/null @@ -1,48 +0,0 @@ -# Keystore passwort - -Das Keystore und Passwort müssen extra hinzugefügt werden. Keystore irgendwo im Dateisystem ablegen. -Dazu eine Datei 'application-sec.yml' anlegen: - -ozgcloud: - xta: - keystore: - store: file:<pfad zum keystore> - password: <geheim> - -Den Dienst dann mit dem Spring-Profile 'sec' starten. - -# P12 Datei erzeugen und als Umgerbungsvariable umwandeln - -Wir haben eine pfx Datei bekommen und wandeln diese in eine P12 Cert Datei um: - - keytool -importkeystore -srckeystore KOP_SH_KIEL_DEV.pfx -srcstoretype pkcs12 -destkeystore KOP_SH_KIEL_DEV.p12 -deststoretype PKCS12 - -Dann in Base64 umwandeln, damit es als Umgebungsvariable gesetzt werden kann: - - base64 KOP_SH_KIEL_DEV.p12 - -# Lokale Installation -Lokal das Root CA in keystore laden (https://ddatabox.dataport.de/public/download-shares/XUok5Wk3EDGWyYaoFGldOeJfGu0J8pke): - - sudo keytool -trustcacerts -keystore /lib/jvm/java-1.17.0-openjdk-amd64/lib/security/cacerts -storepass changeit -importcert -alias dataportRoot -file DataportRootCA02.crt - -Port forwarding aktivieren. Um eine Verbindung zum Nachrichtenbroker aufbauen zu können, muss diese über den Hetzner-Server geroutet werden: - - ssh -L 3000:141.91.184.67:443 ozg-sh.de (ggf ssh -L 0.0.0.0:3000:141.91.184.67:443 ozg-sh.de) - -## Alternative Dataport Zertifikat Installation -Zertifikate direkt vom Endpunkt anfragen: -```shell -openssl s_client -showcerts -connect li33-0005.dp.dsecurecloud.de:443 </dev/null -``` -und das `Dataport Root CA` Zertifikat unter `/etc/ssl/certs/dataport-root-ca.pem` abspeichern, dann `sudo update-ca-certificates` aufrufen. - -## deprecated - -DEPRECATED, da wir den HostNameVerifier deaktiviert haben: Hosts Datei erzeugen, damit der Hostname passt: - - 127.0.0.1 LI33-0005 - -# SoapUi Projekt zum manuellen Abrufen des Nachrichtenbrokers -Im Dokumentation Repo unter `Entwicklungsumgebung/Beistellungen/soapUiXTA` liegt ein SoapUi Projekt, -dass manuelle XTA-Aufrufe des Nachrichtenbrokers ermöglicht. diff --git a/xta-adapter/run_helm_test.sh b/xta-adapter/run_helm_test.sh deleted file mode 100755 index e0b1c7cf9..000000000 --- a/xta-adapter/run_helm_test.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2023 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. -# - - -set -e - -helm template ./src/main/helm/ -f src/test/helm-linter-values.yaml -helm lint -f src/test/helm-linter-values.yaml ./src/main/helm/ -cd src/main/helm && helm unittest -f '../../test/helm/**/*.yaml' . diff --git a/xta-adapter/src/main/helm/Chart.yaml b/xta-adapter/src/main/helm/Chart.yaml deleted file mode 100644 index d9965ef64..000000000 --- a/xta-adapter/src/main/helm/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -apiVersion: v1 -appVersion: "1.1" -description: A Helm chart for Xta-Adapter -name: xta-adapter -version: 0.0.0-MANAGED-BY-JENKINS -icon: https://simpleicons.org/icons/helm.svg - diff --git a/xta-adapter/src/main/helm/README.md b/xta-adapter/src/main/helm/README.md deleted file mode 100644 index e0a7cdacb..000000000 --- a/xta-adapter/src/main/helm/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Helm - -## Linter - -`helm lint -f test-values.yaml` - -## Unit-Tests - -Für Unit-Tests wird das helm [helm-unittest](https://github.com/quintush/helm-unittest) plugin benötigt. Die Unit-Tests liegen im Verzeichnis src/test/helm - -`helm unittest -f '../../test/helm/*.yaml' -v '../../test/helm/values/unit-values.yaml' .` - -## SyntaxCheck - -`helm template --debug -f test-values.yaml .` - -## Package - -`helm package --version=[version] .` - -## Versionierung - -Jenkins verwendet die Version aus der pom.xml - -### Master Branch - -Im master Branch werden die ersten 7 Zeichen vom git commit hash an die Version gehangen. - -### Release Branch - -Ist nur die Version aus der pom.xml - -### Feature Branch - -In einem feature Branch wird der Branchname an die Version gehangen. \ No newline at end of file diff --git a/xta-adapter/src/main/helm/app-readme.md b/xta-adapter/src/main/helm/app-readme.md deleted file mode 100644 index 8d33e802a..000000000 --- a/xta-adapter/src/main/helm/app-readme.md +++ /dev/null @@ -1 +0,0 @@ -# Xta-Adapter \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/_helpers.tpl b/xta-adapter/src/main/helm/templates/_helpers.tpl deleted file mode 100644 index e2be5fd71..000000000 --- a/xta-adapter/src/main/helm/templates/_helpers.tpl +++ /dev/null @@ -1,103 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -{{/* vim: set filetype=mustache: */}} - -{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}} -{{/* Namespace */}} -{{- define "app.namespace" -}} -{{- if gt (len (.Release.Namespace)) 63 -}} -{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}} -{{- end -}} -{{ printf "%s" .Release.Namespace }} -{{- end -}} - -{{/* Chart: Name + Version */}} -{{- define "app.chart" -}} -{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}} -{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}} -{{- end -}} -{{ printf "%s-%s" .Chart.Name .Chart.Version }} -{{- end -}} - -{{/* Managed-by -> On Helm, this value is always Helm */}} -{{- define "app.managedBy" -}} -{{- if gt (len (.Release.Service)) 63 -}} -{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}} -{{- end -}} -{{ printf "%s" .Release.Service }} -{{- end -}} - -{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} -{{- define "app.defaultLabels" }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/managed-by: {{ include "app.managedBy" . }} -app.kubernetes.io/name: {{ .Release.Name }} -app.kubernetes.io/part-of: ozgcloud -app.kubernetes.io/version: {{ .Chart.Version }} -app.kubernetes.io/namespace: {{ include "app.namespace" . }} -helm.sh/chart: {{ include "app.chart" . }} -{{- end -}} - -{{- define "app.envSpringProfiles" }} -{{- if (.Values.env).overrideSpringProfiles -}} -{{ printf "%s" (.Values.env).overrideSpringProfiles }} -{{- else -}} -{{ printf "oc, %s" (include "app.kopEnvironment" . ) }} -{{- end -}} -{{- end -}} - -{{- define "app.kopEnvironment" -}} -{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}} -{{- end -}} - -{{- define "app.xtaSchedule" -}} -{{- if (.Values.xta).schedule -}} -{{ .Values.xta.schedule | quote }} -{{- else if eq (include "app.kopEnvironment" . ) "dev" -}} -{{ "*/15 * * * *" | quote }} -{{- end -}} -{{- end -}} - -{{- define "app.serviceAccountName" -}} -{{ printf "%s" ( (.Values.serviceAccount).name | default "xta-adapter-service-account" ) }} -{{- end -}} - -{{- define "app.getCustomList" -}} -{{- with (.Values.env).customList -}} -{{- if kindIs "map" . -}} -{{ include "app.dictToList" . }} -{{- else if kindIs "slice" . -}} -{{ . | toYaml }} -{{- end -}} -{{- end -}} -{{- end -}} - -{{- define "app.dictToList" -}} -{{- $customList := list -}} -{{- range $key, $value := . -}} -{{- $customList = append $customList (dict "name" $key "value" $value) }} -{{- end -}} -{{- $customList | toYaml -}} -{{- end -}} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/network_policy.yaml b/xta-adapter/src/main/helm/templates/network_policy.yaml deleted file mode 100644 index d188904dc..000000000 --- a/xta-adapter/src/main/helm/templates/network_policy.yaml +++ /dev/null @@ -1,98 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -{{- if not (.Values.networkPolicy).disabled }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: network-policy-xta-adapter - namespace: {{ .Release.Namespace }} -spec: - podSelector: - matchLabels: - ozg-component: xta-adapter - policyTypes: - - Egress - egress: - - to: - - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }} - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - port: 5353 - protocol: UDP - - port: 5353 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: ssh-port-forward - ports: - - port: 443 - protocol: TCP - - port: 80 - protocol: TCP - - port: 9000 - protocol: TCP - -{{- if eq (.Values.routing).routingStrategy "ZUFI" }} - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: {{ required "routing.zufiManager.namespace must be set if routingStrategy=ZUFI" ((.Values.routing).zufiManager).namespace }} - podSelector: - matchLabels: - component: zufi-server - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP -{{- end }} - -{{- with (.Values.networkPolicy).additionalEgressConfigLocal }} -{{ toYaml . | indent 2 }} -{{- end }} -{{- with (.Values.networkPolicy).additionalEgressConfigGlobal }} -{{ toYaml . | indent 2 }} -{{- end }} - -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/service_account.yaml b/xta-adapter/src/main/helm/templates/service_account.yaml deleted file mode 100644 index 3bac8e223..000000000 --- a/xta-adapter/src/main/helm/templates/service_account.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# 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. -# - -{{- if (.Values.serviceAccount).create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "app.serviceAccountName" . }} - namespace: {{ include "app.namespace" . }} -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml deleted file mode 100644 index 20eb48681..000000000 --- a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml +++ /dev/null @@ -1,179 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -apiVersion: batch/v1 -kind: CronJob -metadata: - name: {{ .Release.Name }} - namespace: {{ include "app.namespace" . }} - labels: - {{- include "app.defaultLabels" . | indent 4 }} -spec: - schedule: {{ include "app.xtaSchedule" . }} - successfulJobsHistoryLimit: 3 - failedJobsHistoryLimit: 3 - concurrencyPolicy: Forbid - startingDeadlineSeconds: 120 - jobTemplate: - spec: - backoffLimit: 1 - template: - metadata: - labels: - workload: xta-adapter-cronjob - ozg-component: xta-adapter - spec: - {{- if (.Values.serviceAccount).create }} - serviceAccountName: {{ include "app.serviceAccountName" . }} - {{- end }} - restartPolicy: Never - containers: - - name: xta-adapter - image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ (.Values.image).tag }}" - imagePullPolicy: Always - env: - - name: spring_profiles_active - value: {{ include "app.envSpringProfiles" . }} - - name: SERVICE_BINDING_ROOT - value: "/bindings" - - name: ozgcloud_xta_server_name - value: {{ (.Values.xta).server.name }} - - name: ozgcloud_xta_server_address - value: {{ (.Values.xta).server.address }} - - name: ozgcloud_xta_server_protocol - value: {{ (.Values.xta).server.protocol }} - - name: ozgcloud_xta_identifiers - value: {{ (.Values.xta).identifiers | join "," | quote }} - - name: ozgcloud_xta_keystore_file - value: "keystore/xta-keystore.p12" - - name: ozgcloud_xta_keystore_password - valueFrom: - secretKeyRef: - name: "xta-keystore" - key: password - optional: false - - name: ozgcloud_adapter_fallbackStrategy - value: {{ (.Values.routing).fallbackStrategy | default "DENY"}} - - name: ozgcloud_adapter_routingStrategy - value: {{ (.Values.routing).routingStrategy | default "SINGLE"}} - {{- if (.Values.routing).targetVorgangManagerName }} - - name: ozgcloud_adapter_targetVorgangManagerName - value: {{ (.Values.routing).targetVorgangManagerName}} - - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_address - value: 'dns:///vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090' - - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_negotiationType - value: {{ (.Values.routing).negotiationType | default "PLAINTEXT" }} - {{- end }} - {{- if eq (.Values.routing).routingStrategy "ZUFI" }} - - name: grpc_client_zufi-manager_address - value: {{ required "routing.zufiManager.address must be set when routingStrategy=ZUFI" ((.Values.routing).zufiManager).address | quote }} - - name: grpc_client_zufi-manager_negotiationType - value: {{ ((.Values.routing).zufiManager).negotiationType | default "PLAINTEXT" }} - {{- end }} - {{- with include "app.getCustomList" . }} -{{ . | indent 16 }} - {{- end }} - volumeMounts: - - name: bindings - mountPath: "/bindings/ca-certificates/type" - subPath: type - readOnly: true - - name: xta-root-ca - mountPath: "/bindings/ca-certificates/xta-root-ca.crt" - subPath: ca.crt - readOnly: true - - name: xta-keystore - mountPath: "/workspace/keystore/xta-keystore.p12" - subPath: file - readOnly: true - - name: temp-dir - mountPath: "/tmp" - securityContext: - allowPrivilegeEscalation: false - privileged: false - readOnlyRootFilesystem: false - runAsNonRoot: true - {{- with (.Values.securityContext).runAsUser }} - runAsUser: {{ . }} - {{- end }} - {{- with (.Values.securityContext).runAsGroup }} - runAsGroup: {{ . }} - {{- end }} - {{- with (.Values.securityContext).capabilities }} - capabilities: -{{ toYaml . | indent 18 }} - {{- end }} - resources: - {{- with .Values.resources }} -{{ toYaml . | indent 16 }} - {{- end }} - - {{- if (.Values.dummyProbesEnabled) }} - livenessProbe: - exec: - command: - - echo - - '>' - - /dev/null - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - readinessProbe: - exec: - command: - - echo - - '>' - - /dev/null - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - startupProbe: - exec: - command: - - echo - - '>' - - /dev/null - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - {{- end }} - - volumes: - - name: bindings - configMap: - name: xta-adapter-bindings-type - - name: xta-root-ca - secret: - secretName: xta-root-ca - - name: xta-keystore - secret: - secretName: xta-keystore - - name: temp-dir - emptyDir: {} - imagePullSecrets: - - name: {{ required "imagePullSecret must be set" .Values.imagePullSecret }} - {{- with .Values.podSecurityContext }} - securityContext: -{{ toYaml . | indent 12 }} - {{- end }} diff --git a/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml b/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml deleted file mode 100644 index d2756d660..000000000 --- a/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -{{- if (.Values.xta).rootCa }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: xta-adapter-bindings-type - namespace: {{ include "app.namespace" . }} -data: - type: | - ca-certificates -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml b/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml deleted file mode 100644 index 3055ff053..000000000 --- a/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -{{- if (.Values.xta).keystore }} -apiVersion: v1 -kind: Secret -metadata: - name: xta-keystore - namespace: {{ include "app.namespace" . }} -type: Opaque -stringData: - password: {{ .Values.xta.keystore.password }} -data: - file: {{ .Values.xta.keystore.file }} -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml b/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml deleted file mode 100644 index 4a001d791..000000000 --- a/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -{{- if (.Values.xta).rootCa }} -apiVersion: v1 -kind: Secret -metadata: - name: xta-root-ca - namespace: {{ include "app.namespace" . }} -type: Opaque -data: - ca.crt: {{ .Values.xta.rootCa }} -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/values.yaml b/xta-adapter/src/main/helm/values.yaml deleted file mode 100644 index 79c2f28c0..000000000 --- a/xta-adapter/src/main/helm/values.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -image: - repo: docker.ozg-sh.de - name: xta-adapter - tag: 9.9.99 - -# env: -# overrideSpringProfiles: "oc,prod" - -routing: - targetVorgangManagerName: vorgang-manager - fallbackStrategy: DENY - routingStrategy: SINGLE \ No newline at end of file diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java deleted file mode 100644 index 928b976eb..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.eingang.xdomea; - -import java.io.IOException; - -import javax.xml.XMLConstants; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; -import javax.xml.xpath.XPathFactoryConfigurationException; - -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class XMLHelper { - - private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder(); - private static final XPathFactory X_PATH_FACTORY = createXPathFactory(); - - public static Document parseDocument(IncomingFile incomingFile) { - try (var inputStream = incomingFile.getContentStream()) { - return DOCUMENT_BUILDER.parse(inputStream); - } catch (SAXException | IOException e) { - throw new TechnicalException("Failed to parse xml document!", e); - } - } - - public static XPathExpression compileXPathExpression(String xPathString) { - try { - return X_PATH_FACTORY.newXPath().compile(xPathString); - } catch (XPathExpressionException e) { - throw new TechnicalException("Failed to compile xpath expression!", e); - } - } - - private static DocumentBuilder createDocumentBuilder() { - var documentBuilderFactory = DocumentBuilderFactory.newInstance(); - try { - documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - return documentBuilderFactory.newDocumentBuilder(); - } catch (ParserConfigurationException e) { - throw new TechnicalException("Failed to configure document builder", e); - } - } - - private static XPathFactory createXPathFactory() { - var xPathFactory = XPathFactory.newInstance(); - try { - xPathFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE); - return xPathFactory; - } catch (XPathFactoryConfigurationException e) { - throw new TechnicalException("Failed to configure xpath factory!", e); - } - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java deleted file mode 100644 index e800da61b..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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.eingang.xdomea; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import lombok.Builder; -import lombok.Singular; - -@Builder -public record XdomeaMessageData( - IncomingFile metadataFile, - List<IncomingFile> representations, - @Singular - List<IncomingFileGroup> attachments -) { -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java deleted file mode 100644 index df75de378..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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.eingang.xdomea; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.xta.RepresentationsAttachmentsPair; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Component -@Log4j2 -@RequiredArgsConstructor -public class XdomeaMessageDataMapper { - static final String XDOMEA_0201_XML_FILE_NAME_SUFFIX = "_Geschaeftsgang.Geschaeftsgang.0201.xml"; - static final String ATTACHMENT_GROUP_NAME = "Dokument"; - - private final XdomeaXMLValueReader valueReader; - - public RepresentationsAttachmentsPair mapIncomingFilesToRepresentationsAttachmentsPair(List<IncomingFile> incomingFileList) { - var xdomeaMessageData = mapIncomingFilesToXdomeaMessageData(incomingFileList); - return RepresentationsAttachmentsPair.builder() - .representations(removeUuidPrefixFromIncomingFiles(getPairRepresentations(xdomeaMessageData))) - .attachments(removeUuidPrefixFromIncomingFileGroups(xdomeaMessageData.attachments())) - .build(); - } - - private List<IncomingFileGroup> removeUuidPrefixFromIncomingFileGroups(List<IncomingFileGroup> incomingFileGroups) { - return incomingFileGroups.stream() - .map(group -> group.toBuilder() - .clearFiles() - .files(removeUuidPrefixFromIncomingFiles(group.getFiles())) - .build()) - .toList(); - } - - private List<IncomingFile> removeUuidPrefixFromIncomingFiles(List<IncomingFile> incomingFiles) { - return incomingFiles.stream() - .map(this::removeUuidPrefixFromIncomingFile) - .toList(); - } - - private IncomingFile removeUuidPrefixFromIncomingFile(IncomingFile incomingFile) { - return incomingFile.toBuilder() - .name(removeUuidPrefix(incomingFile.getName())) - .build(); - } - - private String removeUuidPrefix(String name) { - return name.replaceFirst("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}_", ""); - } - - private List<IncomingFile> getPairRepresentations(XdomeaMessageData xdomeaMessageData) { - return Stream.concat( - Stream.of(xdomeaMessageData.metadataFile()), - xdomeaMessageData.representations().stream() - ).toList(); - } - - XdomeaMessageData mapIncomingFilesToXdomeaMessageData(List<IncomingFile> incomingFileList) { - var xdomeaXMLFile = findXdomeaXMLFile(incomingFileList); - var representationFileNames = valueReader.readRepresentationFileNames(xdomeaXMLFile); - var attachmentFileNames = getFileNamesExcluding( - incomingFileList, - Stream.concat(Stream.of(xdomeaXMLFile.getName()), representationFileNames.stream()) - ); - - var fileNameToFileMap = createFileNameToIncomingFileMap(incomingFileList); - return XdomeaMessageData.builder() - .metadataFile(xdomeaXMLFile) - .representations(getRepresentations(representationFileNames, fileNameToFileMap)) - .attachments(getAttachments(attachmentFileNames, fileNameToFileMap)) - .build(); - } - - private Map<String, IncomingFile> createFileNameToIncomingFileMap(List<IncomingFile> incomingFileList) { - return incomingFileList.stream() - .collect(Collectors.toMap(IncomingFile::getName, file -> file)); - } - - private Stream<String> getFileNamesExcluding(List<IncomingFile> incomingFileList, Stream<String> excludedFileNames) { - return dropNames( - incomingFileList.stream().map(IncomingFile::getName), - excludedFileNames.collect(Collectors.toSet()) - ); - } - - private List<IncomingFile> getRepresentations(List<String> representationFileNames, Map<String, IncomingFile> fileNameToFileMap) { - return getFilesByName( - movePrimaryRepresentationFileNameToFirstPosition(representationFileNames), - fileNameToFileMap - ); - } - - private List<IncomingFileGroup> getAttachments(Stream<String> attachmentFileNames, Map<String, IncomingFile> fileNameToFileMap) { - return Stream.of(IncomingFileGroup.builder() - .name(ATTACHMENT_GROUP_NAME) - .files( - getFilesByName( - attachmentFileNames, - fileNameToFileMap - ) - ) - .build()) - // Do not include empty attachment group - .filter(group -> !group.getFiles().isEmpty()) - .toList(); - } - - private Stream<String> movePrimaryRepresentationFileNameToFirstPosition(List<String> representationFileNames) { - var primaryRepresentationFileName = findPrimaryRepresentationName(representationFileNames); - return Stream.concat( - Stream.of(primaryRepresentationFileName), - dropNames(representationFileNames.stream(), Set.of(primaryRepresentationFileName)) - ); - } - - private List<IncomingFile> getFilesByName(Stream<String> names, Map<String, IncomingFile> fileNameToFileMap) { - return names.map(fileNameToFileMap::get).toList(); - } - - private Stream<String> dropNames(Stream<String> names, Set<String> namesToDrop) { - return names.filter(name -> !namesToDrop.contains(name)); - } - - String findPrimaryRepresentationName(List<String> representationFileNames) { - var xmlFileNames = representationFileNames.stream() - .filter(name -> name.endsWith(".xml")) - .toList(); - if (xmlFileNames.isEmpty()) { - throw new TechnicalException("No xml representation file name found!"); - } else if (xmlFileNames.size() > 1) { - LOG.warn("There is more than one xml representations. Choosing the first of {}.", xmlFileNames.size()); - } - return xmlFileNames.getFirst(); - } - - IncomingFile findXdomeaXMLFile(List<IncomingFile> incomingFileList) { - return incomingFileList.stream() - .filter(file -> file.getName().endsWith(XDOMEA_0201_XML_FILE_NAME_SUFFIX)) - .findFirst() - .orElseThrow(() -> new TechnicalException("Primary xdomea xml representation not found!")); - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java deleted file mode 100644 index 77bdb07a8..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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.eingang.xdomea; - -import static de.ozgcloud.eingang.xdomea.XMLHelper.*; - -import java.util.List; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; - -import org.springframework.stereotype.Component; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; - -@Component -public class XdomeaXMLValueReader { - - private static final String DATEINAME_NODE_QUERY_STRING = "//Hauptobjekt//Dateiname"; - // Interpret XML-Attachments as representations - // XML filetype code: 030 (see https://www.xrepository.de/details/urn:xoev-de:xdomea:codeliste:dateiformat) - private static final String DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING = "//Anlage//Format/Name[contains(., '030')]/..//Dateiname"; - private static final XPathExpression DATEINAME_NODE_QUERY = compileXPathExpression( - DATEINAME_NODE_QUERY_STRING + "|" + DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING); - - public List<String> readRepresentationFileNames(IncomingFile xdomeaXMLFile) { - return getTextsFromNodes( - queryDateinameNodeList( - XMLHelper.parseDocument(xdomeaXMLFile) - .getDocumentElement() - ) - ); - } - - private NodeList queryDateinameNodeList(Element contextElement) { - try { - return (NodeList) DATEINAME_NODE_QUERY - .evaluate( - contextElement, - XPathConstants.NODESET - ); - } catch (XPathExpressionException e) { - throw new TechnicalException("Failed to execute xpath search!", e); - } - } - - private List<String> getTextsFromNodes(NodeList nodeList) { - return streamNodeList(nodeList) - .map(Node::getTextContent) - .map(String::trim) - .toList(); - } - - private Stream<Node> streamNodeList(NodeList nodeList) { - return IntStream.range(0, nodeList.getLength()) - .mapToObj(nodeList::item); - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java deleted file mode 100644 index 5cc1ec99f..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.math.BigInteger; -import java.util.stream.Stream; - -import eu.osci.ws._2014._10.transport.MessageMetaData; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@AllArgsConstructor -@Getter -@Builder -class MsgStatusListTypeAndHeaderResponse { - private String msgBoxRequestID; - private boolean noMessageAvailable; - private BigInteger messageItemsPending; - private Stream<MessageMetaData> messages; -} \ No newline at end of file diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java deleted file mode 100644 index 075e9a35d..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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.eingang.xta; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import lombok.Builder; - -@Builder -public record RepresentationsAttachmentsPair( - List<IncomingFile> representations, - List<IncomingFileGroup> attachments -) { -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java deleted file mode 100644 index 88720f62e..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.Objects; - -import jakarta.xml.bind.JAXBContext; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.ws.client.WebServiceClientException; -import org.springframework.ws.client.support.interceptor.ClientInterceptor; -import org.springframework.ws.context.MessageContext; -import org.springframework.ws.soap.SoapMessage; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import eu.osci.ws._2014._10.transport.OriginatorsType; -import eu.osci.ws._2014._10.transport.PartyIdentifierType; -import eu.osci.ws._2014._10.transport.PartyType; - -@Component -class WsHeaderAddingInterceptor implements ClientInterceptor { - - @Autowired - private XtaCurrentIdentifierService xtaCurrentIdentifierService; - - @Override - public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException { - var soapMessage = (SoapMessage) messageContext.getRequest(); - var header = soapMessage.getSoapHeader(); - - try { - JAXBContext context = JAXBContext.newInstance(PartyType.class); - var marshaller = context.createMarshaller(); - marshaller.marshal(createAuthor(), header.getResult()); - } catch (JAXBException e) { - throw new TechnicalException("Error on handling Request for adding Header.", e); - } - - return true; - } - - JAXBElement<PartyType> createAuthor() { - eu.osci.ws._2014._10.transport.ObjectFactory objectFactory = new eu.osci.ws._2014._10.transport.ObjectFactory(); - - PartyType partyType = new PartyType(); - PartyIdentifierType identifier = new PartyIdentifierType(); - identifier.setValue(Objects.requireNonNull( - xtaCurrentIdentifierService.getCurrentIdentifier(), - "Expect current identifier to be set!") - ); - partyType.setIdentifier(identifier); - - var origin = new OriginatorsType(); - origin.setAuthor(partyType); - - return objectFactory.createAuthor(partyType); - } - - @Override - public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException { - return true; - } - - @Override - public boolean handleFault(MessageContext messageContext) throws WebServiceClientException { - return true; - } - - @Override - public void afterCompletion(MessageContext messageContext, Exception ex) throws WebServiceClientException { - // nothing to do here - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java deleted file mode 100644 index cbf1532cd..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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.eingang.xta; - -import java.util.List; - -import jakarta.validation.Valid; - -import org.springframework.stereotype.Service; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Setter; - -@Service -@RequiredArgsConstructor -public class XtaCurrentIdentifierService { - - @Setter - @Getter - private String currentIdentifier; - - @Valid - private final XtaProperties properties; - - public List<String> getIdentifiers() { - return properties.getIdentifiers(); - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java deleted file mode 100644 index b29853145..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.io.File; -import java.math.BigInteger; - -import lombok.Builder; - -@Builder -public record XtaFile(File file, - String contentType, - String name, - BigInteger size) { - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java deleted file mode 100644 index bcdd2138b..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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.eingang.xta; - -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.stream.Stream; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.xta.zip.ZipFileExtractor; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -@RequiredArgsConstructor -class XtaIncomingFilesMapper { - - private final ZipFileExtractor zipFileExtractor; - - public List<IncomingFile> toIncomingFiles(Collection<XtaFile> messageFiles) { - if (Objects.nonNull(messageFiles)) { - return messageFiles.stream() - .map(this::toIncomingFile) - .flatMap(this::tryToExtractZip) - .toList(); - } - return List.of(); - } - - IncomingFile toIncomingFile(XtaFile messageFile) { - return IncomingFile.builder() - .name(messageFile.name()) - .contentType(messageFile.contentType()) - .file(messageFile.file()) - .size(messageFile.file().length()) - .build(); - } - - Stream<IncomingFile> tryToExtractZip(IncomingFile incomingFile) { - try { - List<IncomingFile> extractedZips = zipFileExtractor.extractIncomingFilesSafely(incomingFile); - return extractedZips.stream(); - } catch (RuntimeException e) { - return Stream.of(incomingFile); - } - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java deleted file mode 100644 index 6cda79d8b..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.eingang.xta; - -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -import org.apache.commons.lang3.StringUtils; - -import java.time.ZonedDateTime; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class XtaMapperHelper { - - public static String getFormEngineName(XtaMessageMetaData metaData) { - if (StringUtils.equals(metaData.getMessageType(), XtaService.XDOMEA_0201_MESSAGE_TYPE)) { - // TODO OZG-5778 verify the correct engine name - return "XDOMEA"; - } - - if (StringUtils.startsWith(metaData.getMessageType(), XtaService.FIM_MESSAGE_TYPE_PREFIX)) { - return "FIM"; - } - return null; - } - - // TODO OZG-6176 Check if the problem can be fixed elsewhere - public static ZonedDateTime getCreatedAt(XtaMessageMetaData metaData) { - if (metaData.getOrigin() != null) { - return metaData.getOrigin(); - } - return ZonedDateTime.now(); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java deleted file mode 100644 index 71010a068..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.Collection; - -import lombok.Builder; -import lombok.Getter; -import lombok.Singular; - -@Builder(toBuilder = true) -@Getter -public class XtaMessage { - private String primaryFormDataMessage; - - private XtaMessageMetaData metaData; - @Singular - private Collection<XtaFile> messageFiles; - @Singular - private Collection<XtaFile> attachments; -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java deleted file mode 100644 index f9873c8c9..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import de.ozgcloud.common.datatype.StringBasedValue; - -public class XtaMessageId extends StringBasedValue { - - public XtaMessageId(String messageId) { - super(messageId); - } - - public static XtaMessageId from(String messageId) { - return new XtaMessageId(messageId); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java deleted file mode 100644 index 9475d9cf0..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.Optional; - -import org.mapstruct.Context; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.FormMetaData; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; - -@Mapper(imports = { FilesMapperHelper.class, XtaMapperHelper.class }) -interface XtaMessageMapper { - int VORGANG_NUMMER_SUFFIX_LENGTH = 4; - - @Mapping(target = "antragsteller", ignore = true) - @Mapping(target = "formData", ignore = true) - @Mapping(target = "id", ignore = true) - @Mapping(target = "zustaendigeStelle", ignore = true) - @Mapping(target = "header", source = "metaData") - @Mapping(target = "numberOfAttachments", expression = "java(FilesMapperHelper.countAttachedFiles(representationsAttachmentsPair.attachments()))") - @Mapping(target = "numberOfRepresentations", dependsOn = "representations", expression = "java(representationsAttachmentsPair.representations().size())") - @Mapping(target = "representation", ignore = true) - @Mapping(target = "attachment", ignore = true) - @Mapping(target = "control.metaData", source = "metaData") - FormData toFormData(RepresentationsAttachmentsPair representationsAttachmentsPair, XtaMessageMetaData metaData, - @Context VorgangNummerSupplier vorgangNummerSupplier); - - @Mapping(target = "formId", source = "messageType") - @Mapping(target = "requestId", source = "messageId") - @Mapping(target = "vorgangNummer", expression = "java(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH))") - @Mapping(target = "serviceKonto", ignore = true) - @Mapping(target = "createdAt", expression = "java(XtaMapperHelper.getCreatedAt(metaData))") - @Mapping(target = "sender", constant = "XTA") - @Mapping(target = "channel", constant = "XTA") - @Mapping(target = "formName", ignore = true) - @Mapping(target = "formEngineName", expression = "java(XtaMapperHelper.getFormEngineName(metaData))") - FormHeader formHeaderFromMetaData(XtaMessageMetaData metaData, @Context VorgangNummerSupplier vorgangNummerSupplier); - - default String fromId(XtaMessageId id) { - return id.toString(); - } - - default Optional<FormMetaData> mapMetaData(XtaMessageMetaData value) { - return Optional.ofNullable(value); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java deleted file mode 100644 index d2457b501..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.time.ZonedDateTime; - -import de.ozgcloud.eingang.common.formdata.FormMetaData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; - -@Builder -@Getter -@ToString -class XtaMessageMetaData implements FormMetaData { - static final String SERVICE = "service"; - static final String MESSAGE_TYPE_ENTRY_NAME = "messageType"; - static final String MESSAGE_TYPE_LIST_VERSION = "messageTypeListVersion"; - static final String MESSAGE_ID_ENTRY_NAME = "messageId"; - static final String XTA_IDENTIFIER_ENTRY_NAME = "xtaIdentifier"; - - // MsgIdentification.MessageId - private XtaMessageId messageId; - - // DeliveryAttributes.origin - private ZonedDateTime origin; - // DeliveryAttributes.delivery - private ZonedDateTime delivery; - - // Qualifier.MessageType.code - private String messageType; - // Qualifier.MessageType.listVersion - private String messageTypeListVersion; - // Qualifier.Service - private String service; - - private String xtaIdentifier; - - private IncomingFile metaDataFile; - - @Override - public String getEntry(String name) { - switch (name) { - case MESSAGE_TYPE_ENTRY_NAME: - return getMessageType(); - case MESSAGE_TYPE_LIST_VERSION: - return getMessageTypeListVersion(); - case MESSAGE_ID_ENTRY_NAME: - return getMessageId().toString(); - case XTA_IDENTIFIER_ENTRY_NAME: - return getXtaIdentifier(); - case SERVICE: - return getService(); - - default: - return null; - } - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java deleted file mode 100644 index 51aa43af3..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.stream.Stream; - -import jakarta.xml.bind.JAXBElement; - -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import eu.osci.ws._2008._05.transport.MsgStatusListType; -import eu.osci.ws._2014._10.transport.MessageMetaData; - -@Mapper -interface XtaMessageMetaDataMapper { - - @Mapping(target = "messageTypeListVersion", ignore = true) - @Mapping(target = "metaDataFile", ignore = true) - @Mapping(target = "service", ignore = true) - @Mapping(target = "origin", source = "deliveryAttributes.origin") - @Mapping(target = "delivery", source = "deliveryAttributes.delivery") - @Mapping(target = "messageId", source = "msgIdentification.messageID.value") - @Mapping(target = "messageType", source = "qualifier.messageType.code") - @Mapping(target = "xtaIdentifier", source = "destinations.reader.identifier.value") - XtaMessageMetaData fromSoap(MessageMetaData metaData); - - default XtaMessageId fromString(String id) { - return XtaMessageId.from(id); - } - - @Mapping(target = "moreMessagesAvailable", constant = "false") - XtaMessageMetaDatasAndHeader msgStatusListFromSoap(MsgStatusListTypeAndHeaderResponse statusList); - - default Stream<XtaMessageMetaData> map(JAXBElement<MsgStatusListType> msgStatusListResponse) { - return msgStatusListResponse.getValue().getMessageMetaData().stream().map(this::fromSoap); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java deleted file mode 100644 index 0922ce78c..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.stream.Stream; - -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -class XtaMessageMetaDatasAndHeader { - - private String msgBoxRequestID; - private boolean moreMessagesAvailable; - private Stream<XtaMessageMetaData> messages; -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java deleted file mode 100644 index b12ce91b9..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.Iterator; - -public class XtaMessageMetadataRemoteIterator implements Iterator<XtaMessageMetaData> { - - private final XtaRemoteService xtaRemoteService; - private XtaMessageMetaDatasAndHeader messagesMetadata; - private Iterator<XtaMessageMetaData> remoteMessageIterator; - - public XtaMessageMetadataRemoteIterator(XtaRemoteService xtaRemoteService) { - this.xtaRemoteService = xtaRemoteService; - messagesMetadata = this.xtaRemoteService.getMessagesMetadata(); - remoteMessageIterator = getRemoteMessageIterator(messagesMetadata); - } - - @Override - public boolean hasNext() { - if (remoteMessageIterator.hasNext()) { - return true; - } - if (messagesMetadata.isMoreMessagesAvailable()) { - loadNextMessages(); - return remoteMessageIterator.hasNext(); - } - return false; - } - - void loadNextMessages() { - messagesMetadata = xtaRemoteService.getNextMessagesMetadata(messagesMetadata.getMsgBoxRequestID()); - remoteMessageIterator = getRemoteMessageIterator(messagesMetadata); - } - - Iterator<XtaMessageMetaData> getRemoteMessageIterator(XtaMessageMetaDatasAndHeader messagesMetadata) { - return messagesMetadata.getMessages().iterator(); - } - - @Override - public XtaMessageMetaData next() { - return remoteMessageIterator.next(); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java deleted file mode 100644 index 64a5dafc4..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.math.BigInteger; -import java.net.URI; -import java.util.List; - -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; -import org.springframework.validation.annotation.Validated; - -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -@Validated -@ToString -@Setter -@Getter -@Configuration -@ConfigurationProperties(prefix = XtaProperties.PROPERTIES_PREFIX) -class XtaProperties { - static final String PROPERTIES_PREFIX = "ozgcloud.xta"; - - private Server server; - private BigInteger maxListElements; - - private KeyStore keyStore; - private Actions actions; - @NotEmpty - private List<String> identifiers; -} - -@Validated -@ToString -@Getter -@Setter -@Component -@ConfigurationProperties(prefix = Server.PROPERTIES_PREFIX) -class Server { - static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".server"; - - @NotEmpty - private String name; - private String address; - @NotEmpty - private String protocol; -} - -@Validated -@ToString -@Getter -@Setter -@Component -@ConfigurationProperties(prefix = KeyStore.PROPERTIES_PREFIX) -class KeyStore { - static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".keystore"; - - @NotNull - private Resource file; - private String type = "PKCS12"; - @NotEmpty - private char[] password; -} - -@Validated -@ToString -@Setter -@Getter -@Configuration -@ConfigurationProperties(prefix = Actions.PROPERTIES_PREFIX) -class Actions { - static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".actions"; - - @NotNull - private URI statusList; - @NotNull - private URI fetchRequest; - @NotNull - private URI closeRequest; -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java deleted file mode 100644 index 28bd9c195..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collections; -import java.util.Iterator; -import java.util.stream.Stream; - -import javax.xml.namespace.QName; -import javax.xml.transform.TransformerException; - -import jakarta.validation.Valid; -import jakarta.xml.bind.JAXBElement; - -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.webservices.client.WebServiceTemplateBuilder; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.stereotype.Service; -import org.springframework.ws.WebServiceMessage; -import org.springframework.ws.client.core.WebServiceMessageCallback; -import org.springframework.ws.client.core.WebServiceMessageExtractor; -import org.springframework.ws.soap.SoapFaultDetailElement; -import org.springframework.ws.soap.SoapHeader; -import org.springframework.ws.soap.SoapHeaderElement; -import org.springframework.ws.soap.SoapMessage; -import org.springframework.ws.soap.addressing.client.ActionCallback; -import org.springframework.ws.soap.addressing.version.Addressing10; -import org.springframework.ws.soap.client.SoapFaultClientException; -import org.springframework.ws.support.MarshallingUtils; -import org.w3._2005._08.addressing.AttributedURIType; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.xoev.transport.xta._211.ContentType; -import de.xoev.transport.xta._211.ExceptionType; -import de.xoev.transport.xta._211.GenericContentContainer; -import eu.osci.ws._2008._05.transport.MsgBoxCloseRequestType; -import eu.osci.ws._2008._05.transport.MsgBoxFetchRequest; -import eu.osci.ws._2008._05.transport.MsgBoxGetNextRequestType; -import eu.osci.ws._2008._05.transport.MsgBoxResponseType; -import eu.osci.ws._2008._05.transport.MsgBoxStatusListRequestType; -import eu.osci.ws._2008._05.transport.MsgSelector; -import eu.osci.ws._2008._05.transport.MsgStatusListType; -import eu.osci.ws._2008._05.transport.ObjectFactory; -import eu.osci.ws._2014._10.transport.MessageMetaData; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Service -class XtaRemoteService { - - private static final String ERROR_ON_CLOSE_LOG_TEMPLATE = "Error result on close request.\nReason: %s"; - private static final String DETAIL_LOG_TEMPLATE = "Code: %s, Message: %s"; - - @Autowired - @Valid - private XtaProperties properties; - - @Autowired - private XtaMessageMetaDataMapper mapper; - - @Autowired - private WebServiceTemplateBuilder webServiceTemplateBuilder; - - @Autowired - @Qualifier("osciTransportMarshaller") - private Jaxb2Marshaller osciMarshaller; - - @Autowired - @Qualifier("xoevTransportMarshaller") - private Jaxb2Marshaller xoevMarshaller; - - public XtaMessageMetaDatasAndHeader getMessagesMetadata() { - return mapper.msgStatusListFromSoap(getStatusList()); - } - - public XtaMessageMetaDatasAndHeader getNextMessagesMetadata(String msgBoxRequestId) { - return mapper.msgStatusListFromSoap(getNextStatusList(msgBoxRequestId)); - } - - MsgStatusListTypeAndHeaderResponse getStatusList() { - var request = buildListRequest(); - return getGenericStatusList(request); - } - - MsgStatusListTypeAndHeaderResponse getNextStatusList(String msgBoxRequestId) { - var request = buildNextListRequest(msgBoxRequestId); - return getGenericStatusList(request); - } - - MsgStatusListTypeAndHeaderResponse getGenericStatusList(Object request) { - var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(osciMarshaller).build(); - - return template.sendAndReceive(buildMarshalCallBack(request, buildActionCallback()), buildHeaderExtractor()); - } - - private ActionCallback buildActionCallback() { - return new ActionCallback(properties.getActions().getStatusList(), new Addressing10(), getTargetUri()); - } - - WebServiceMessageCallback buildMarshalCallBack(Object jaxbElement, ActionCallback callback) { - return new WebServiceMessageCallback() { - @Override - public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException { - MarshallingUtils.marshal(osciMarshaller, jaxbElement, message); - callback.doWithMessage(message); - } - }; - } - - WebServiceMessageExtractor<MsgStatusListTypeAndHeaderResponse> buildHeaderExtractor() { - return new WebServiceMessageExtractor<MsgStatusListTypeAndHeaderResponse>() { - @Override - public MsgStatusListTypeAndHeaderResponse extractData(WebServiceMessage message) throws IOException, TransformerException { - - MsgBoxResponseType header = extractHeader(message); - - return MsgStatusListTypeAndHeaderResponse.builder() - .msgBoxRequestID(header.getMsgBoxRequestID()) - .noMessageAvailable(header.getNoMessageAvailable() != null) - .messageItemsPending(header.getItemsPending()) - .messages(extractMessages(message)) - .build(); - } - - @SuppressWarnings("unchecked") - private MsgBoxResponseType extractHeader(WebServiceMessage message) { - SoapHeader soapHeader = ((SoapMessage) message).getSoapHeader(); - Iterator<SoapHeaderElement> it = soapHeader - .examineHeaderElements(new QName("http://www.osci.eu/ws/2008/05/transport", "MsgBoxResponse")); - validateHasHeader(it); - return ((JAXBElement<MsgBoxResponseType>) osciMarshaller.unmarshal(it.next().getSource())).getValue(); - } - - private void validateHasHeader(Iterator<SoapHeaderElement> it) { - if (!it.hasNext()) { - throw new TechnicalException("Response from XTA GetStatusList has no header"); - } - } - - @SuppressWarnings("unchecked") - private Stream<MessageMetaData> extractMessages(WebServiceMessage message) throws IOException { - return ((JAXBElement<MsgStatusListType>) MarshallingUtils.unmarshal(osciMarshaller, message)).getValue().getMessageMetaData() - .stream(); - } - }; - } - - private JAXBElement<MsgBoxStatusListRequestType> buildListRequest() { - ObjectFactory objectFactory = new ObjectFactory(); - - MsgBoxStatusListRequestType msg = new MsgBoxStatusListRequestType(); - msg.setMaxListItems(properties.getMaxListElements()); - return objectFactory.createMsgBoxStatusListRequest(msg); - } - - private JAXBElement<MsgBoxGetNextRequestType> buildNextListRequest(String msgBoxRequestId) { - ObjectFactory objectFactory = new ObjectFactory(); - - MsgBoxGetNextRequestType msg = new MsgBoxGetNextRequestType(); - msg.setMsgBoxRequestID(msgBoxRequestId); - return objectFactory.createMsgBoxGetNextRequest(msg); - } - - private URI getTargetUri() { - try { - return new URI(buildServerAddressUri()); - } catch (URISyntaxException e) { - throw new TechnicalException("Error building target url: " + e); - } - } - - String buildServerAddressUri() { - return XtaRemoteServiceConfiguration.URI_TEMPLATE.formatted(properties.getServer().getProtocol(), - properties.getServer().getName()); - } - - public XtaMessage getMessage(XtaMessageId messageId) { - var contentContainer = loadContentContainer(messageId.toString()); - XtaFile formDataFile = getMessage(contentContainer); - - return XtaMessage.builder() - .metaData(null) - .primaryFormDataMessage(formDataFile.name()) - .messageFiles(Collections.singleton(formDataFile)) - .attachments(getAttachments(contentContainer).toList()) - .build(); - } - - GenericContentContainer loadContentContainer(String messageId) { - var callback = new ActionCallback(properties.getActions().getFetchRequest(), new Addressing10(), getTargetUri()); - var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(xoevMarshaller).build(); - - return (GenericContentContainer) template.marshalSendAndReceive(buildFetchRequest(messageId), callback); - } - - XtaFile getMessage(GenericContentContainer container) { - return toXtaFile(container.getContentContainer().getMessage()); - } - - Stream<XtaFile> getAttachments(GenericContentContainer container) { - return container.getContentContainer().getAttachment().stream().map(this::toXtaFile); - } - - private XtaFile toXtaFile(ContentType type) { - return XtaFile.builder() - .file(persistToFile(type.getValue())) - .name(type.getFilename()) - .contentType(type.getContentType()) - .size(type.getSize()) - .build(); - } - - private File persistToFile(byte[] data) { - try { - var file = File.createTempFile("xta", ".data"); - file.deleteOnExit(); - var out = new FileOutputStream(file); - IOUtils.write(data, out); - out.flush(); - out.close(); - return file; - } catch (IOException e) { - throw new TechnicalException("Error writing Attachment to temp file", e); - } - } - - private JAXBElement<MsgBoxFetchRequest> buildFetchRequest(String msgId) { - MsgSelector msgSelector = new MsgSelector(); - AttributedURIType attribute = new AttributedURIType(); - attribute.setValue(msgId); - msgSelector.getMessageID().add(attribute); - - var request = new MsgBoxFetchRequest(); - request.setMsgSelector(msgSelector); - - return wrapAsJaxBElemement(request); - } - - private JAXBElement<MsgBoxFetchRequest> wrapAsJaxBElemement(MsgBoxFetchRequest request) { - QName qname = new QName("http://www.osci.eu/ws/2008/05/transport", "MsgBoxFetchRequest"); - - return new JAXBElement<>(qname, MsgBoxFetchRequest.class, request); - } - - public void close(@NonNull XtaMessageId messageId) { - var callback = new ActionCallback(properties.getActions().getCloseRequest(), new Addressing10(), getTargetUri()); - var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(xoevMarshaller).build(); - - try { - template.marshalSendAndReceive(buildCloseRequest(messageId.toString()), callback); - } catch (SoapFaultClientException e) { - logErrorOnClose(e); - } - } - - private JAXBElement<MsgBoxCloseRequestType> buildCloseRequest(String msgId) { - MsgBoxCloseRequestType request = new MsgBoxCloseRequestType(); - var lastMsgReceived = request.getLastMsgReceived(); - - AttributedURIType attribute = new AttributedURIType(); - attribute.setValue(msgId); - lastMsgReceived.add(attribute); - - return new ObjectFactory().createMsgBoxCloseRequest(request); - } - - private void logErrorOnClose(SoapFaultClientException e) { - try { - var fault = e.getSoapFault(); - StringBuilder logBuilder = new StringBuilder(ERROR_ON_CLOSE_LOG_TEMPLATE.formatted(e.getSoapFault().getFaultStringOrReason())); - - var entries = fault.getFaultDetail().getDetailEntries(); - entries.forEachRemaining(entry -> logBuilder.append("\n").append(formatFaultEntry(entry))); - - LOG.error(logBuilder.toString(), e); - } catch (Exception e1) { - LOG.error("Error on loggging close error", e1); - LOG.error("origin error was", e); - } - } - - private String formatFaultEntry(SoapFaultDetailElement soapfaultdetailelement1) { - @SuppressWarnings("unchecked") - ExceptionType exceptionType = ((JAXBElement<ExceptionType>) xoevMarshaller.unmarshal(soapfaultdetailelement1.getSource())).getValue(); - - return DETAIL_LOG_TEMPLATE.formatted(exceptionType.getErrorCode().getCode(), exceptionType.getErrorCode().getName().toString()); - - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java deleted file mode 100644 index 3dec78f31..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; - -import javax.net.ssl.KeyManagerFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.webservices.client.WebServiceTemplateCustomizer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.ws.client.support.destination.DestinationProvider; -import org.springframework.ws.client.support.interceptor.ClientInterceptor; -import org.springframework.ws.soap.SoapVersion; -import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; -import org.springframework.ws.transport.WebServiceMessageSender; -import org.springframework.ws.transport.http.HttpsUrlConnectionMessageSender; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Configuration -public class XtaRemoteServiceConfiguration { - - static final String URI_TEMPLATE = "%s://%s/MB_XTA-WS/XTA210msgBoxPort.svc"; - - @Autowired - private XtaProperties properties; - - @Bean - Jaxb2Marshaller osciTransportMarshaller() { - Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); - marshaller.setContextPath("eu.osci.ws._2008._05.transport"); - marshaller.setMtomEnabled(true); - return marshaller; - } - - @Bean - Jaxb2Marshaller xoevTransportMarshaller() { - Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller(); - unmarshaller.setContextPath("de.xoev.transport.xta._211"); - unmarshaller.setMtomEnabled(true); - return unmarshaller; - } - - @Bean - WebServiceTemplateCustomizer webServiceTemplateCustomizer() { - return template -> template.setMessageSender(messageSender()); - } - - @Bean - WebServiceTemplateCustomizer setMessageFactoryCustomizer() { - return template -> template.setMessageFactory(messageFactory()); - } - - @Bean - WebServiceTemplateCustomizer addingInterceptorCustomizer(WsHeaderAddingInterceptor interceptor) { - return template -> template.setInterceptors(new ClientInterceptor[] { interceptor }); - } - - @Bean - WebServiceTemplateCustomizer setDestionationProvider() { - return template -> template.setDestinationProvider(destinationProvider()); - } - - @Bean - DestinationProvider destinationProvider() { - return () -> { - try { - String serverUri = buildServerAddressUri(properties.getServer()); - LOG.trace("Xta Service remote URI: {}", serverUri); - return new URI(serverUri); - } catch (URISyntaxException e) { - throw new TechnicalException("Error building URI", e); - } - }; - } - - String buildServerAddressUri(Server server) { - return URI_TEMPLATE.formatted(server.getProtocol(), server.getAddress()); - } - - @Bean - SaajSoapMessageFactory messageFactory() { - SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory(); - messageFactory.setSoapVersion(SoapVersion.SOAP_12); - return messageFactory; - } - - @Bean - WebServiceMessageSender messageSender() { - try { - var keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - keyManagerFactory.init(xtaKeyStore(), properties.getKeyStore().getPassword()); - - var messageSender1 = new HttpsUrlConnectionMessageSender(); - messageSender1.setKeyManagers(keyManagerFactory.getKeyManagers()); - messageSender1.setHostnameVerifier((hostname, session) -> true); // NOSONAR hostname verification is senseless due missing DNS for - // Dataport XTA Server - - return messageSender1; - } catch (Exception e) { - throw new TechnicalException("Error initializating message sender.", e); - } - } - - @Bean - KeyStore xtaKeyStore() throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException { - var keyStoreResource = properties.getKeyStore().getFile(); - var keyStore = KeyStore.getInstance(properties.getKeyStore().getType()); - try (InputStream keyStoreStream = keyStoreResource.getInputStream()) { - keyStore.load(keyStoreStream, properties.getKeyStore().getPassword()); - } - - return keyStore; - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java deleted file mode 100644 index ea2c8a0d4..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationListener; -import org.springframework.context.annotation.Profile; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Profile({ "!itcase" }) -@Log4j2 -@Component -class XtaRunner implements ApplicationListener<ContextRefreshedEvent> { - - @Autowired - private XtaService service; - @Autowired - private SemantikAdapter semantikAdapter; - - @Override - public void onApplicationEvent(ContextRefreshedEvent event) { - LOG.info("Fetching XTA Messages"); - runGetXtaMessages(); - } - - void runGetXtaMessages() { - try { - service.getMessages().forEach(this::processAndAcknowledge); - } catch (RuntimeException e) { - LOG.error("Error fetch XTA Message List.", e); - } - } - - private void processAndAcknowledge(@NonNull FormData formData) { - try { - LOG.info("Process XTA-Message '{}'.", formData.getHeader().getRequestId()); - semantikAdapter.processFormData(formData); - service.acknowledgeReceive(XtaMessageId.from(formData.getHeader().getRequestId())); - } catch (RuntimeException e) { - LOG.error("Error on processing XTA-Message. Continue with next message.", e); - } - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java deleted file mode 100644 index 1aeb67aa7..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static java.util.Collections.*; - -import java.util.Collection; -import java.util.List; -import java.util.Optional; -import java.util.Spliterators; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Service -@Log4j2 -class XtaService { - - static final String XDOMEA_0201_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; - - static final String FIM_MESSAGE_TYPE_PREFIX = "fim."; - - @Autowired - private XtaRemoteService remoteService; - @Autowired - private XtaMessageMapper mapper; - @Autowired - private VorgangNummerSupplier vorgangNummerSupplier; - @Autowired - private XdomeaMessageDataMapper xdomeaMessageDataMapper; - @Autowired - private XtaIncomingFilesMapper xtaIncomingFilesMapper; - @Autowired - private XtaCurrentIdentifierService service; - - public Stream<FormData> getMessages() { - return createXtaMessageStream() - .filter(this::isSupportedMessageType) - .map(this::getFormDataIfNoRuntimeException) - .flatMap(Optional::stream); - } - - Stream<XtaMessageMetaData> createXtaMessageStream() { - return service.getIdentifiers().stream() - .flatMap(this::createXtaMessageStreamForIdentifier); - } - - private Stream<XtaMessageMetaData> createXtaMessageStreamForIdentifier(String identifier) { - service.setCurrentIdentifier(identifier); - var iterator = new XtaMessageMetadataRemoteIterator(remoteService); - return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false); - } - - boolean isSupportedMessageType(XtaMessageMetaData metaData) { - if (isXDomeaMessageType(metaData.getMessageType()) || isFimMessageType(metaData.getMessageType())) { - return true; - } - LOG.warn("Ignoring XTA-Message of type '{}'.", metaData.getMessageType()); - return false; - } - - Optional<FormData> getFormDataIfNoRuntimeException(@NonNull XtaMessageMetaData metaData) { - try { - return Optional.of(getFormData(metaData)); - } catch (RuntimeException exception) { - LOG.error("Failed to process xta message (id: %s)".formatted(metaData.getMessageId()), exception); - return Optional.empty(); - } - } - - FormData getFormData(@NonNull XtaMessageMetaData metaData) { - var msg = remoteService.getMessage(metaData.getMessageId()); - var incomingFiles = xtaIncomingFilesMapper.toIncomingFiles(msg.getMessageFiles()); - var representationsAttachmentsPair = getRepresentationsAttachmentsPair(metaData, incomingFiles); - - var formData = mapper.toFormData(representationsAttachmentsPair, metaData, vorgangNummerSupplier); - formData = addAttachments(msg, formData); - - return addRepresentations(formData, msg); - } - - FormData addRepresentations(FormData formData, XtaMessage msg) { - return formData.toBuilder().control( - formData.getControl().toBuilder() - .representations(Optional.of(buildRepresentations(formData.getControl().getRepresentations(), msg))) - .build()) - .build(); - } - - private Representations buildRepresentations(Optional<Representations> base, XtaMessage msg) { - return base.map(Representations::toBuilder).orElseGet(Representations::builder) - .primaryFormDataRepresentation(msg.getPrimaryFormDataMessage()) - .build(); - } - - FormData addAttachments(XtaMessage msg, FormData inFormData) { - var attachments = buildAttachmentsInFiles(msg.getAttachments()); - if (CollectionUtils.isNotEmpty(attachments)) { - return inFormData.toBuilder() - .attachment(IncomingFileGroup.builder().name("sonstige").files(attachments).build()) - .numberOfAttachments(attachments.size()) - .build(); - } - return inFormData; - } - - private List<IncomingFile> buildAttachmentsInFiles(Collection<XtaFile> attachmentFiles) { - return attachmentFiles.stream().map(xtaIncomingFilesMapper::toIncomingFile).toList(); - } - - RepresentationsAttachmentsPair getRepresentationsAttachmentsPair(XtaMessageMetaData metaData, List<IncomingFile> incomingFiles) { - if (isXDomeaMessageType(metaData.getMessageType())) { - return xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles); - } - if (isFimMessageType(metaData.getMessageType())) { - return mapIncomingFilesToRepresentations(incomingFiles); - } - - throw new TechnicalException("Unexpected XTA message type: %s".formatted(metaData.getMessageType())); - } - - private boolean isXDomeaMessageType(String messageType) { - return StringUtils.equals(messageType, XDOMEA_0201_MESSAGE_TYPE); - } - - private boolean isFimMessageType(String messageType) { - return StringUtils.startsWith(messageType, FIM_MESSAGE_TYPE_PREFIX); - } - - RepresentationsAttachmentsPair mapIncomingFilesToRepresentations(List<IncomingFile> incomingFiles) { - return RepresentationsAttachmentsPair.builder() - .representations(incomingFiles) - .attachments(emptyList()) - .build(); - } - - public void acknowledgeReceive(@NonNull XtaMessageId messageId) { - remoteService.close(messageId); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java deleted file mode 100644 index 7a57a9ea0..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.eingang.xta.zip; - -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -public class LimitedInputStream extends FilterInputStream { - static final String LIMITED_EXCEEDED_MESSAGE = "Read limit exceeded"; - - private final long maxSize; - long bytesRead; - - public LimitedInputStream(InputStream in, long maxSize) { - super(in); - this.maxSize = maxSize; - this.bytesRead = 0; - } - - @Override - public int read() throws IOException { - var byteValue = super.read(); - if (byteValue != -1) { - updateAndVerifyReadLimit(1); - } - return byteValue; - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - return updateAndVerifyReadLimit(super.read(b, off, len)); - } - - private int updateAndVerifyReadLimit(int newBytesRead) throws IOException { - if (newBytesRead != -1) { - bytesRead += newBytesRead; - if (bytesRead > maxSize) { - throw new IOException(LIMITED_EXCEEDED_MESSAGE); - } - } - return newBytesRead; - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java deleted file mode 100644 index 7795d5a8b..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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.eingang.xta.zip; - -import java.io.IOException; -import java.io.InputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import lombok.Builder; - -@Builder -record ReadableZipEntry(ZipEntry zipEntry, ZipFile parentZip) { - public InputStream getInputStream() throws IOException { - return parentZip.getInputStream(zipEntry); - } - - public Long getPositiveSize() { - var size = zipEntry.getSize(); - if (size < 0) { - throw new TechnicalException("Size of ZIP entry is unknown."); - } - return size; - } - - public String getName() { - return zipEntry.getName(); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java deleted file mode 100644 index e33004844..000000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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.eingang.xta.zip; - -import java.io.File; -import java.io.IOException; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Function; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import org.springframework.stereotype.Component; -import org.springframework.util.MimeTypeUtils; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; - -// TODO Resolve code duplication with ZipAttachmentReader in semantik-adapter common.zip -// Note: In contrast to the ZipAttachmentReader, here, the zip file is not included in list of extracted files -// Further, the suspicious compression ratio ZIP_MAX_THRESHOLD is evaluated on the whole zipFile, instead of individual entries -@Component -public class ZipFileExtractor { - - static final double ZIP_MAX_THRESHOLD = 100; - static final int ZIP_MAX_TOTAL_SIZE = 500 * 1024 * 1024; - static final int ZIP_MAX_ENTRIES = 100; - - public List<IncomingFile> extractIncomingFilesSafely(IncomingFile zipIncomingFile) { - var zipFile = zipIncomingFile.getFile(); - verifyLimits(zipFile); - return extractIncomingFiles(zipFile); - } - - void verifyLimits(File zipFile) { - var uncompressedSize = sumUncompressedEntrySizes(zipFile); - verifySizeLimit(uncompressedSize); - verifyCompressionRatio(zipFile, uncompressedSize); - } - - private void verifySizeLimit(long uncompressedSize) { - if (uncompressedSize > getZipMaxTotalSize()) { - throw new TechnicalException("Expect uncompressed size %s to be smaller than %d!".formatted(uncompressedSize, getZipMaxTotalSize())); - } - } - - private void verifyCompressionRatio(File zipFile, long totalSize) { - var compressionRatio = (double) totalSize / zipFile.length(); - if (compressionRatio > ZIP_MAX_THRESHOLD) { - throw new TechnicalException( - "Expect compression ratio %s to be smaller than %s! A zip bomb attack is suspected!".formatted(compressionRatio, - ZIP_MAX_THRESHOLD)); - } - } - - int getZipMaxTotalSize() { - return ZIP_MAX_TOTAL_SIZE; - } - - Long sumUncompressedEntrySizes(File zipFile) { - return mapZipEntries(zipFile, ReadableZipEntry::getPositiveSize) - .stream() - .mapToLong(Long::longValue) - .sum(); - } - - List<IncomingFile> extractIncomingFiles(File zipFile) { - return mapZipEntries(zipFile, this::mapReadableEntryToIncomingFile); - } - - private IncomingFile mapReadableEntryToIncomingFile(ReadableZipEntry entry) { - File file; - try (var inputStream = new LimitedInputStream(entry.getInputStream(), entry.getPositiveSize())) { - file = TempFileUtils.writeTmpFile(inputStream); - } catch (IOException | de.ozgcloud.common.errorhandling.TechnicalException e) { - throw new TechnicalException("Failed reading zip file element %s!".formatted(entry.getName()), e); - } - return createIncomingFile(file, entry.zipEntry()); - } - - <T> List<T> mapZipEntries(File zipFile, Function<ReadableZipEntry, T> mappingFunction) { - try (ZipFile zip = new ZipFile(zipFile)) { - var index = new AtomicInteger(); - var mappedElements = new ArrayList<T>(); - zip.stream().forEach(element -> { - if (index.getAndIncrement() >= ZIP_MAX_ENTRIES) { - throw new TechnicalException("Expect zip files to have at most %d entries!".formatted(ZIP_MAX_ENTRIES)); - } - mappedElements.add( - mappingFunction.apply( - ReadableZipEntry.builder() - .parentZip(zip) - .zipEntry(element) - .build() - ) - ); - }); - return mappedElements; - } catch (IOException e) { - throw new TechnicalException("Failed reading zip file!", e); - } - } - - IncomingFile createIncomingFile(File file, ZipEntry zipEntry) { - return IncomingFile.builder() - .name(zipEntry.getName()) - .size(zipEntry.getSize()) - .contentType(getContentType(zipEntry.getName())) - .file(file) - .build(); - } - - String getContentType(String name) { - Objects.requireNonNull(name); - return Objects.requireNonNullElse(URLConnection.guessContentTypeFromName(name), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } -} diff --git a/xta-adapter/src/main/resources/XTA.wsdl b/xta-adapter/src/main/resources/XTA.wsdl deleted file mode 100644 index d7ca5a364..000000000 --- a/xta-adapter/src/main/resources/XTA.wsdl +++ /dev/null @@ -1,620 +0,0 @@ -<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xoev.de/transport/xta/211" - xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" - xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:wsa="http://www.w3.org/2005/08/addressing" - xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" - xmlns:wspmtom="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" - xmlns:osci="http://www.osci.eu/ws/2008/05/transport" - xmlns:wsp="http://www.w3.org/ns/ws-policy" - xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" - xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" - xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" - xmlns:s12="http://www.w3.org/2003/05/soap-envelope" - xmlns:xta="http://xoev.de/transport/xta/211" name="XTA-Webservice"> - <wsp:Policy wsu:Id="osciCommon"> - <!--###### general osci policies ##########--> - <wsp:All> - <wsam:Addressing wsp:Optional="false"> - <wsp:Policy> - <wsam:AnonymousResponses/> - </wsp:Policy> - </wsam:Addressing> - <wspmtom:OptimizedMimeSerialization/> - <sp:Wss11> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - <sp:MustSupportRefIssuerSerial/> - <sp:MustSupportRefThumbprint/> - <sp:MustSupportRefEncryptedKey/> - <sp:RequireSignatureConfirmation/> - </wsp:Policy> - </sp:Wss11> - <sp:Trust13> - <wsp:Policy> - <sp:MustSupportIssuedTokens/> - <sp:RequireClientEntropy/> - <sp:RequireServerEntropy/> - </wsp:Policy> - </sp:Trust13> - </wsp:All> - </wsp:Policy> - <wsp:Policy wsu:Id="TransportBindingPolicy"> - <wsp:ExactlyOne> - <wsp:All> - <sp:TransportBinding> - <wsp:Policy> - <sp:TransportToken> - <wsp:Policy> - <sp:HttpsToken RequireClientCertificate="true"/> - </wsp:Policy> - </sp:TransportToken> - <sp:AlgorithmSuite> - <wsp:Policy> - <sp:Basic256/> - </wsp:Policy> - </sp:AlgorithmSuite> - <sp:Layout> - <wsp:Policy> - <sp:Lax/> - </wsp:Policy> - </sp:Layout> - <!-- sp:IncludeTimestamp/ --> - </wsp:Policy> - </sp:TransportBinding> - <!-- sp:Wss10> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - </wsp:Policy> - </sp:Wss10 --> - </wsp:All> - </wsp:ExactlyOne> - </wsp:Policy> - <!--Datenstrukturen --> - <types> - <xsd:schema targetNamespace="http://xoev.de/transport/xta/211"> - <xsd:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="../xsd/OSCI_MessageMetaData_V2.02.xsd"/> - <xsd:import namespace="http://www.osci.eu/ws/2008/05/transport" schemaLocation="../xsd/OSCI2_02.xsd"/> - <xsd:include schemaLocation="../xsd/XTA-Webservice-Globale-Elemente.xsd"/> - <xsd:include schemaLocation="../xsd/XTA-Webservice-Exceptions.xsd"/> - </xsd:schema> - </types> - <!--Nachrichten --> - <message name="EmptyBody"/> - <message name="XTAHeader"> - <part name="AuthorIdentifier" element="oscimeta:Author"/> - <part name="MessageMetaData" element="oscimeta:MessageMetaData"/> - </message> - <message name="LookupServiceRequest"> - <part name="LookupServiceRequest" element="xta:LookupServiceRequest"/> - </message> - <message name="LookupServiceResponse"> - <part name="LookupServiceResponse" element="xta:LookupServiceResponse"/> - </message> - <message name="GetTransportReportResponse"> - <part name="GetTransportReportResponse" element="xta:TransportReport"/> - </message> - <message name="GenericContainerBody"> - <part name="GenericContainer" element="xta:GenericContentContainer"/> - </message> - <message name="MessageID"> - <part name="MessageID" element="wsa:MessageID"/> - </message> - <message name="OptHeaders"> - <part name="FetchResponseHeader" element="osci:MsgBoxResponse"/> - <part name="X509TokenContainer" element="osci:X509TokenContainer"/> - </message> - <message name="FetchMsgRequest"> - <part name="FetchRequest" element="osci:MsgBoxFetchRequest"/> - </message> - <message name="GetNextRequest"> - <part name="FetchRequest" element="osci:MsgBoxGetNextRequest"/> - </message> - <message name="CloseRequest"> - <part name="FetchRequest" element="osci:MsgBoxCloseRequest"/> - </message> - <message name="FetchListRequest"> - <part name="FetchRequest" element="osci:MsgBoxStatusListRequest"/> - </message> - <message name="FetchListResponse"> - <part name="FetchResponse" element="osci:MsgStatusList"/> - </message> - <message name="GetNextRequest"> - <part name="FetchRequest" element="osci:MsgBoxGetNextListRequest"/> - </message> - <!--Nachrichten - SOAP-Exceptions--> - <message name="PermissionDeniedException"> - <part name="permissionDeniedException" element="xta:PermissionDeniedException"/> - </message> - <message name="XTAWSTechnicalProblemException"> - <part name="xtawsTechnicalProblem" element="xta:XTAWSTechnicalProblemException"/> - </message> - <message name="ParameterIsNotValidException"> - <part name="parameterIsNotValidException" element="xta:ParameterIsNotValidException"/> - </message> - <message name="MessageSchemaViolationException"> - <part name="messageSchemaViolationException" element="xta:MessageSchemaViolationException"/> - </message> - <message name="MessageVirusDetectionException"> - <part name="messageVirusDetectionException" element="xta:MessageVirusDetectionException"/> - </message> - <message name="SyncAsyncException"> - <part name="syncAsyncException" element="xta:SyncAsyncException"/> - </message> - <message name="InvalidMessageIDException"> - <!-- <part name="invalidMessageIDException" element="xta:InvalidMessageIdException"/> ---> - <part name="invalidMessageIDException" element="xta:InvalidMessageIDException"/> - </message> - <message name="CancelDeniedException"> - <part name="cancelDeniedException" element="xta:CancelDeniedException"/> - </message> - <!--Interfaces --> - <portType name="managementPortType"> - <documentation>xta managementPort</documentation> - <operation name="checkAccountActive"> - <input message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> - <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"> - <documentation>only for exception handling</documentation> - </output> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> - </operation> - <operation name="lookupService"> - <input message="xta:LookupServiceRequest" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <output message="xta:LookupServiceResponse" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <fault name="ParameterIsNotValid" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - </operation> - <operation name="getTransportReport"> - <input message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <output message="xta:GetTransportReportResponse" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - </operation> - <operation name="cancelMessage"> - <input message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CancelMessage"> - <documentation>only for exception handling</documentation> - </output> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <fault name="CancelDeniedException" message="xta:CancelDeniedException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - </operation> - <operation name="createMessageId"> - <input message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - <output message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - </operation> - </portType> - <portType name="sendPortType"> - <documentation>sendPort</documentation> - <operation name="sendMessage"> - <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - </operation> - <operation name="sendMessageSync"> - <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - </operation> - </portType> - <portType name="msgBoxPortType"> - <documentation>msgboxfetchPort</documentation> - <operation name="getMessage"> - <input message="xta:FetchMsgRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - </operation> - <operation name="getStatusList"> - <input message="xta:FetchListRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - <output message="xta:FetchListResponse" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - </operation> - <operation name="getNextMessage"> - <input message="xta:GetNextRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <!-- Stand 13.05.2016 Vorgabe fehlt in Abschnitt B1.1.1, Annahme: Es werden - dieselben Exceptions benötigt, wie für getMessage --> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - </operation> - <operation name="getNextStatusList"> - <input message="xta:GetNextRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - <output message="xta:FetchListResponse" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - </operation> - <operation name="close"> - <input message="xta:CloseRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - <output message="xta:EmptyBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"> - <documentation>only for exception handling</documentation> - </output> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - </operation> - </portType> - <!--Bindung von Protokoll und Interface --> - <binding name="sendXTAHttpsBinding" type="xta:sendPortType"> - <documentation>https binding for the sendPort</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="sendMessage"> - <documentation>The sendMessage method delivers a content message to the sending - hub.</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/SendMessage" soapActionRequired="true" style="document"/> - <input> - <documentation>Input Header: MessageMetaData header contains additional information - for the for the given payload. Body: The GenericContainerBody containins the - "xöv" message.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="MessageSchemaViolationException"> - <soap:fault name="MessageSchemaViolationException" use="literal"/> - </fault> - <fault name="MessageVirusDetectionException"> - <soap:fault name="MessageVirusDetectionException" use="literal"/> - </fault> - <fault name="SyncAsyncException"> - <soap:fault name="SyncAsyncException" use="literal"/> - </fault> - </operation> - <operation name="sendMessageSync"> - <documentation>The sendMessage method delivers a content message to the sending - hub.</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/SendMessageSync" soapActionRequired="true" style="document"/> - <input> - <documentation>Input Header: MessageMetaData header contains additional information - for the for the given payload. Body: The GenericContainerBody contains the "xöv" - message.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </input> - <output> - <documentation>Output body: A GenericContainerBody in the body, containing the - synchronous "xöv" message response.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="MessageSchemaViolationException"> - <soap:fault name="MessageSchemaViolationException" use="literal"/> - </fault> - <fault name="MessageVirusDetectionException"> - <soap:fault name="MessageVirusDetectionException" use="literal"/> - </fault> - <fault name="SyncAsyncException"> - <soap:fault name="SyncAsyncException" use="literal"/> - </fault> - </operation> - </binding> - <binding name="managementHttpsBinding" type="xta:managementPortType"> - <documentation>https binding for the managementPort</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="getTransportReport"> - <documentation>Method to get the transport report for the given - MessageID</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/GetTransportReport" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and the MessageID in the - body part.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output body: The Transport report containing the detailed information - for the related message.</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - <operation name="cancelMessage"> - <documentation>Method to cancel disptach order (if not yet finalied - successfully)</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/CancelMessage" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and the MessageID in the - body part.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="CancelDeniedException"> - <soap:fault name="CancelDeniedException" use="literal"/> - </fault> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="lookupService"> - <documentation>Method to get further information about the given address - information</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/IsServiceAvailable" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and a list of address - information in the body part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output body: further information for the given address - list.</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValid"> - <soap:fault name="ParameterIsNotValid" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="checkAccountActive"> - <documentation>Method to check whether the account is activ</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/CheckAccountActive" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="createMessageId"> - <documentation>Method to obtain new created MesMessageID</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/CreateMessageID" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output body: The created MesMessageID</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - </binding> - <binding name="msgBoxHttpsBinding" type="xta:msgBoxPortType"> - <documentation>https binding for the msgBox</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="getMessage"> - <documentation>The getMethode method returns the first message relating to the given - parameter</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and OSCI 2 - MsgBoxFetchRequest parameter in the body part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: Optional xta:AuthorIdentifier header or OSCI2 Header - MsgBoxResponse with addional information and related GenericContentContainer in - the body part</documentation> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - <operation name="getStatusList"> - <documentation>getStatusList returns the list of related message - information</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and OSCI 2 - MsgStatusListRequest parameter in the body part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: OSCI2 Header MsgBoxResponse with addional information - and related MsgStatusList in the body part</documentation> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="getNextMessage"> - <documentation>getNextMessage returns next message relates to fetch - iterator</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest" soapActionRequired="true"/> - <input> - <documentation>Input: Optional xta:AuthorIdentifier header and in the body part the - MsgBoxNextRequest element conatining the fetch iterator</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: Optional xta:AuthorIdentifier header or OSCI2 Header - MsgBoxResponse with addional information and related MsgStatusList in the body - part</documentation> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - <operation name="getNextStatusList"> - <documentation>getNextStatusList returns the next list of related message information - related to the fetch iterator</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and in the body part the - MsgBoxNextRequest element conatining the fetch iterator</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: OSCI2 Header MsgBoxResponse with addional information - and next related MsgStatusList in the body part</documentation> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="close"> - <documentation>The close method returns close the fetch iterator</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and the - MsgBoxCloseRequest element conatining the fetch iterator in the body - part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - </binding> - <!--Endpoints des Services --> - <service name="XTAService"> - <port name="MsgBoxPort" binding="xta:msgBoxHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - <port name="SendXtaPort" binding="xta:sendXTAHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - <port name="ManagementPort" binding="xta:managementHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - </service> -</definitions> diff --git a/xta-adapter/src/main/resources/application-local.yml b/xta-adapter/src/main/resources/application-local.yml deleted file mode 100644 index b35125c65..000000000 --- a/xta-adapter/src/main/resources/application-local.yml +++ /dev/null @@ -1,18 +0,0 @@ -ozgcloud: - xta: - identifiers: - - gae:jens.reese@mgm-tp.com - server: - address: localhost:3000 - name: LI33-0005 - protocol: https - adapter: - targetVorgangManagerName: local - fallbackStrategy: DENY - routingStrategy: SINGLE - -grpc: - client: - vorgang-manager-local: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT diff --git a/xta-adapter/src/main/resources/application.yml b/xta-adapter/src/main/resources/application.yml deleted file mode 100644 index fd1f72982..000000000 --- a/xta-adapter/src/main/resources/application.yml +++ /dev/null @@ -1,19 +0,0 @@ -logging: - level: - ROOT: WARN - '[de.ozgcloud]': INFO - '[org.springframework.ws]': WARN - -ozgcloud: - xta: - max-list-elements: 100 - keystore: - type: PKCS12 - actions: - status-list: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest" - fetch-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest" - close-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest" - -fim: - schemeLocations: - - fim-s17000652_1.4/S17000652V1.4_xfall.xsd \ No newline at end of file diff --git a/xta-adapter/src/main/wsdl/XTA-synchron.wsdl b/xta-adapter/src/main/wsdl/XTA-synchron.wsdl deleted file mode 100644 index 5653c4553..000000000 --- a/xta-adapter/src/main/wsdl/XTA-synchron.wsdl +++ /dev/null @@ -1,201 +0,0 @@ -<!-- - - Copyright (C) 2023 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. - ---> -<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xoev.de/transport/xta/211" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wspmtom="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" xmlns:osci="http://www.osci.eu/ws/2008/05/transport" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:xta="http://xoev.de/transport/xta/211" name="XTA-Webservice"> - <wsp:Policy wsu:Id="osciCommon"> - <!--###### general osci policies ##########--> - <wsp:All> - <wsam:Addressing wsp:Optional="false"> - <wsp:Policy> - <wsam:AnonymousResponses/> - </wsp:Policy> - </wsam:Addressing> - <wspmtom:OptimizedMimeSerialization/> - <sp:Wss11> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - <sp:MustSupportRefIssuerSerial/> - <sp:MustSupportRefThumbprint/> - <sp:MustSupportRefEncryptedKey/> - <sp:RequireSignatureConfirmation/> - </wsp:Policy> - </sp:Wss11> - <sp:Trust13> - <wsp:Policy> - <sp:MustSupportIssuedTokens/> - <sp:RequireClientEntropy/> - <sp:RequireServerEntropy/> - </wsp:Policy> - </sp:Trust13> - </wsp:All> - </wsp:Policy> - <wsp:Policy wsu:Id="TransportBindingPolicy"> - <wsp:ExactlyOne> - <wsp:All> - <sp:TransportBinding> - <wsp:Policy> - <sp:TransportToken> - <wsp:Policy> - <sp:HttpsToken RequireClientCertificate="true"/> - </wsp:Policy> - </sp:TransportToken> - <sp:AlgorithmSuite> - <wsp:Policy> - <sp:Basic256/> - </wsp:Policy> - </sp:AlgorithmSuite> - <sp:Layout> - <wsp:Policy> - <sp:Lax/> - </wsp:Policy> - </sp:Layout> - <!-- sp:IncludeTimestamp/ --> - </wsp:Policy> - </sp:TransportBinding> - <!-- sp:Wss10> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - </wsp:Policy> - </sp:Wss10 --> - </wsp:All> - </wsp:ExactlyOne> - </wsp:Policy> - <!--Datenstrukturen --> - <types> - <xsd:schema targetNamespace="http://xoev.de/transport/xta/211"> - <xsd:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="http://www.osci.eu/ws/2014/10/transport/OSCI_MessageMetaData_V2.02.xsd"/> - <xsd:import namespace="http://www.osci.eu/ws/2008/05/transport" schemaLocation="http://www.osci.eu/ws/2014/10/transport/OSCI2_02.xsd"/> - <xsd:include schemaLocation="http://xoev.de/transport/xta/211/XTA-Webservice-Globale-Elemente.xsd"/> - <xsd:include schemaLocation="http://xoev.de/transport/xta/211/XTA-Webservice-Exceptions.xsd"/> - </xsd:schema> - </types> - <!--Nachrichten --> - <message name="EmptyBody"/> - <message name="XTAHeader"> - <part name="MessageMetaData" element="oscimeta:MessageMetaData"/> - <part name="AuthorIdentifier" element="oscimeta:Author"/> - </message> - <message name="GenericContainerBody"> - <part name="GenericContainer" element="xta:GenericContentContainer"/> - </message> - <message name="OptHeaders"> - <part name="FetchResponseHeader" element="osci:MsgBoxResponse"/> - <part name="X509TokenContainer" element="osci:X509TokenContainer"/> - </message> - <!--Nachrichten - SOAP-Exceptions--> - <message name="PermissionDeniedException"> - <part name="permissionDeniedException" element="xta:PermissionDeniedException"/> - </message> - <message name="XTAWSTechnicalProblemException"> - <part name="xtawsTechnicalProblem" element="xta:XTAWSTechnicalProblemException"/> - </message> - <message name="ParameterIsNotValidException"> - <part name="parameterIsNotValidException" element="xta:ParameterIsNotValidException"/> - </message> - <message name="MessageSchemaViolationException"> - <part name="messageSchemaViolationException" element="xta:MessageSchemaViolationException"/> - </message> - <message name="MessageVirusDetectionException"> - <part name="messageVirusDetectionException" element="xta:MessageVirusDetectionException"/> - </message> - <message name="SyncAsyncException"> - <part name="syncAsyncException" element="xta:SyncAsyncException"/> - </message> - <message name="CancelDeniedException"> - <part name="cancelDeniedException" element="xta:CancelDeniedException"/> - </message> - <message name="InvalidMessageIDException"> - <part name="invalidMessageIDException" element="xta:InvalidMessageIDException"/> - </message> - <!--Interfaces --> - <portType name="sendSynchronPortType"> - <documentation>sendPort</documentation> - <operation name="sendMessageSync"> - <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - </operation> - </portType> - <binding name="sendXTAHttpsBinding" type="xta:sendSynchronPortType"> - <documentation>https binding for the sendPort</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="sendMessageSync"> - <documentation>The sendMessage method delivers a content message to the sending - hub</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/SendMessageSync" soapActionRequired="true" style="document"/> - <input> - <documentation>Input Header: MessageMetaData header contains additional information - for the for the given payload. Body: The GenericContainerBody contains the "xöv" - message</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </input> - <output> - <documentation>Output body: A GenericContainerBody in the body, containing the - synchronous "xöv" message response</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </output> - <fault name="MessageSchemaViolationException"> - <soap:fault name="MessageSchemaViolationException" use="literal"/> - </fault> - <fault name="MessageVirusDetectionException"> - <soap:fault name="MessageVirusDetectionException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="SyncAsyncException"> - <soap:fault name="SyncAsyncException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - </binding> - <service name="XTAServiceSynchron"> - <port name="SendXtaSynchronPort" binding="xta:sendXTAHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - </service> -</definitions> diff --git a/xta-adapter/src/main/xsd/OSCI2_02.xsd b/xta-adapter/src/main/xsd/OSCI2_02.xsd deleted file mode 100644 index 244fc7f8b..000000000 --- a/xta-adapter/src/main/xsd/OSCI2_02.xsd +++ /dev/null @@ -1,328 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:osci="http://www.osci.eu/ws/2008/05/transport" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:wsp="http://www.w3.org/ns/ws-policy" targetNamespace="http://www.osci.eu/ws/2008/05/transport" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <!--OSCI Transport Version 2.02 schema - last edited 2015-01-23 --> - <!--OSCI Transport 2.02 schema extended by metadata header for OSCI2.0, according modification for MsgBoxStatusList; MsgBoxFetchRequest attributed for reqeuesting whole envelope, headers of body of original message only--> - <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> - <xs:import namespace="http://www.w3.org/ns/ws-policy" schemaLocation="ws-policy.xsd"/> - <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="ws-addr.xsd"/> - <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xs:import namespace="http://www.w3.org/2003/05/soap-envelope" schemaLocation="soap-envelope.xsd"/> - <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd"/> - <!--WSA-Extension: BusinessScenarioType--> - <xs:complexType name="TypeOfBusinessScenarioType"> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute ref="wsa:IsReferenceParameter" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="TypeOfBusinessScenario" type="osci:TypeOfBusinessScenarioType"/> - <!--General header-part of OSCI messages: timestamps--> - <xs:complexType name="MsgTimeStampsType"> - <xs:sequence> - <xs:element name="ObsoleteAfter" type="xs:date" minOccurs="0"> - <xs:annotation> - <xs:documentation>Date, when this message is obsolete; may be set by Initiator</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Delivery" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of entry in a Recipient MsgBox</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InitialFetch" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of first comitted fetch from MsgBox by the Recipient</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reception" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Reception Time set by the Recipient</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:element name="MsgTimeStamps" type="osci:MsgTimeStampsType"/> - <!--Types and Elements for MsgBox request/responses--> - <xs:annotation> - <xs:documentation>Template for MsgBox-Requests</xs:documentation> - </xs:annotation> - <xs:complexType name="MsgBoxRequestType"> - <xs:sequence> - <xs:element ref="osci:MsgSelector" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="MsgBoxReasonEnum"> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/NoMatch"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/SearchArgsInvalid"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/RequestIdInvalid"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="MsgBoxReasonOpenEnum"> - <xs:union memberTypes="osci:MsgBoxReasonEnum xs:anyURI"/> - </xs:simpleType> - <xs:complexType name="MsgBoxResponseType"> - <xs:choice> - <xs:element name="NoMessageAvailable"> - <xs:complexType> - <xs:attribute name="reason" type="osci:MsgBoxReasonOpenEnum" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="ItemsPending" type="xs:nonNegativeInteger"/> - </xs:choice> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> - </xs:complexType> - <xs:complexType name="MsgAttributeListType"> - <xs:sequence> - <xs:element ref="wsa:MessageID"/> - <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> - <xs:element ref="wsa:From" minOccurs="0"/> - <xs:element ref="osci:TypeOfBusinessScenario"/> - <xs:element name="MsgSize" type="xs:int"/> - <!--xs:element ref="osci:MsgTimeStamps"/--> - <xs:element name="ObsoleteAfterDate" type="xs:date" minOccurs="0"/> - <xs:element name="DeliveryTime" type="xs:dateTime"/> - <xs:element name="InitialFetchedTime" type="xs:dateTime" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI"/> - <xs:element name="MsgSelector"> - <xs:complexType> - <xs:sequence minOccurs="0"> - <xs:element ref="wsa:MessageID" minOccurs="0" maxOccurs="unbounded"/> - <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="MsgBoxEntryTimeFrom" type="xs:dateTime" minOccurs="0"/> - <xs:element name="MsgBoxEntryTimeTo" type="xs:dateTime" minOccurs="0"/> - <xs:element name="Extension" type="xs:anyType" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="newEntry" type="xs:boolean"/> - </xs:complexType> - </xs:element> - <xs:element name="MsgStatusList" type="osci:MsgStatusListType"/> - <xs:complexType name="MsgStatusListType"> - <xs:sequence> - <xs:element name="MsgAttributes" type="osci:MsgAttributeListType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element ref="oscimeta:MessageMetaData" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:element name="MsgBoxFetchRequest"> - <xs:complexType> - <xs:complexContent> - <xs:extension base="osci:MsgBoxRequestType"> - <xs:attribute name="MsgPart" default="Envelope"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="Envelope"/> - <xs:enumeration value="Header"/> - <xs:enumeration value="Body"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - <xs:element name="MsgBoxStatusListRequest" type="osci:MsgBoxStatusListRequestType"/> - <xs:complexType name="MsgBoxStatusListRequestType"> - <xs:complexContent> - <xs:extension base="osci:MsgBoxRequestType"> - <xs:attribute name="maxListItems" type="xs:positiveInteger"/> - <xs:attribute name="ListForm"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="MsgAtrributes"/> - <xs:enumeration value="MessageMetaData"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:element name="MsgBoxResponse" type="osci:MsgBoxResponseType"/> - <xs:element name="MsgBoxGetNextRequest" type="osci:MsgBoxGetNextRequestType"/> - <xs:complexType name="MsgBoxGetNextRequestType"> - <xs:sequence minOccurs="0"> - <xs:element name="LastMsgReceived" type="wsa:AttributedURIType" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> - </xs:complexType> - <xs:element name="MsgBoxCloseRequest" type="osci:MsgBoxCloseRequestType"/> - <xs:complexType name="MsgBoxCloseRequestType"> - <xs:sequence minOccurs="0"> - <xs:element name="LastMsgReceived" type="wsa:AttributedURIType" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> - </xs:complexType> - <!--Types and Elements for Receipt- and Notification Handling--> - <xs:attribute name="qualTSPForReceipt" type="xs:boolean" default="false"/> - <xs:attribute name="echoRequest" type="xs:boolean" default="false"/> - <xs:complexType name="ReceiptDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - <xs:attribute name="qualTSPForReceipt" type="xs:boolean" default="false"/> - <xs:attribute name="echoRequest" type="xs:boolean" default="false"/> - </xs:complexType> - <xs:element name="DeliveryReceiptDemand" type="osci:DeliveryReceiptDemandType"/> - <xs:element name="ReceptionReceiptDemand" type="osci:ReceptionReceiptDemandType"/> - <xs:element name="ReceiptInfo" type="osci:ReceiptInfoType"/> - <xs:complexType name="ReceiptInfoType"> - <xs:sequence> - <xs:element ref="wsa:MessageID"/> - <xs:element ref="osci:MsgTimeStamps"/> - <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="To" type="wsa:EndpointReferenceType"/> - <xs:element ref="wsa:From" minOccurs="0"/> - <xs:element ref="wsa:ReplyTo"/> - <xs:element name="RequestEcho" type="xs:base64Binary" minOccurs="0"/> - <xs:element ref="oscimeta:MessageMetaData" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="Id" type="xs:ID" use="required"/> - <xs:attribute name="ReceiptIssuerRole" use="optional"> - <xs:simpleType> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/MsgBox"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Recipient"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Sender -"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Relay -"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:complexType> - <xs:complexType name="DeliveryReceiptDemandType"> - <xs:complexContent> - <xs:restriction base="osci:ReceiptDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ReceptionReceiptDemandType"> - <xs:complexContent> - <xs:restriction base="osci:ReceiptDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - </xs:restriction> - <!-- xs:attribute ref="s12:role" fixed="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"/--> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="DeliveryReceiptType"> - <xs:sequence> - <xs:element ref="osci:ReceiptInfo"/> - <xs:element ref="ds:Signature"/> - </xs:sequence> - </xs:complexType> - <xs:element name="DeliveryReceipt" type="osci:DeliveryReceiptType"/> - <xs:element name="SubmissionReceipt" type="osci:DeliveryReceiptType"/> - <xs:element name="RelayReceipt" type="osci:DeliveryReceiptType"/> - <xs:complexType name="ReceptionReceiptType"> - <xs:sequence> - <xs:element ref="osci:ReceiptInfo"/> - <xs:element ref="ds:Signature"/> - </xs:sequence> - </xs:complexType> - <xs:element name="ReceptionReceipt" type="osci:ReceptionReceiptType"/> - <xs:complexType name="FetchedNotificationDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - <xs:attribute ref="s12:role" default="http://www.osci.eu/ws/2008/05/transport/role/MsgBox"/> - </xs:complexType> - <xs:element name="FetchedNotificationDemand" type="osci:FetchedNotificationDemandType"/> - <xs:complexType name="FetchedNotificationType"> - <xs:sequence> - <xs:element name="FetchedTime" type="xs:dateTime"/> - <xs:element ref="wsa:MessageID"/> - <xs:element ref="wsa:To"/> - <xs:element ref="wsa:From"/> - </xs:sequence> - </xs:complexType> - <xs:element name="FetchedNotification" type="osci:FetchedNotificationType"/> - <!--Extentensions for Key usage context--> - <xs:complexType name="X509TokenContainerType"> - <xs:sequence maxOccurs="unbounded"> - <xs:element ref="osci:X509TokenInfo"/> - </xs:sequence> - <xs:attribute name="validateCompleted" type="xs:boolean" default="false"/> - </xs:complexType> - <xs:element name="X509TokenContainer" type="osci:X509TokenContainerType"/> - <xs:element name="X509TokenInfo"> - <xs:complexType> - <xs:sequence> - <xs:element ref="ds:X509Data"/> - <xs:element name="TokenApplication" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="TimeInstant" type="xs:dateTime"/> - <xs:element name="MsgItemRef" type="xs:IDREF" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="validateResultRef" type="xs:IDREF"/> - <xs:attribute name="ocspNoCache" type="xs:boolean"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="validated" type="xs:boolean" default="false"/> - <xs:attribute name="Id" type="xs:ID" use="required"/> - <!-- RFC 3280 for KeyUsage with Extentensions Attribute Certificate and usage for Authentication --> - </xs:complexType> - <!--OSCI Policy Asserstions--> - <!--Policy qualified Timestamp Servcie available--> - </xs:element> - <!--Poliy Assertion carrying Endpoints X509Certificates--> - <xs:element name="X509CertificateAssertion"> - <xs:complexType> - <xs:sequence> - <xs:element ref="wsp:All"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <!--Policy, when qualified TSP service can be requested from this node--> - <xs:element name="QualTspAssertion"> - <xs:complexType> - <xs:attribute name="PolicyRef" type="xs:anyURI"/> - </xs:complexType> - </xs:element> - <!--Policy if and how MsgTimeStamps:OsoleteAfter is handled--> - <xs:element name="ObsoleteAfterAssertion"> - <xs:complexType> - <xs:sequence> - <xs:element name="MsgRetainDays" type="xs:positiveInteger"/> - <xs:element name="WarningBeforeMsgObsolete" type="xs:positiveInteger" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="PolicyRef" type="xs:anyURI"/> - </xs:complexType> - </xs:element> - <!--Poliy for MakeConnection: Response Retention Days--> - <xs:element name="MsgRetainDays" type="xs:positiveInteger"/> - <!--Enumeration for possible X509 Token Usages--> - <xs:attribute name="TokenUsage"> - <xs:simpleType> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/e2eContentEncryption"/> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/TransportEncryption"/> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/ReceiptSigning"/> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/TSPSigning"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <!--Opaque Body Type - not used--> - <!--Policy maximum accepted Message size and Frequency per hour--> - <xs:element name="AcceptedMsgLimits"> - <xs:complexType> - <xs:sequence> - <xs:element name="MaxSize" type="xs:positiveInteger"/> - <xs:element name="MaxPerHour" type="xs:positiveInteger"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:complexType name="MessageBody"> - <xs:sequence> - <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd b/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd deleted file mode 100644 index fd04e3edc..000000000 --- a/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd +++ /dev/null @@ -1,379 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--Schema for OSCI Message Meta Data - last edited 2015-02-19 --> -<!-- Change 2015-02-19: MessageType amended by mandatory attribte @payloadSchema --> -<!-- Change 2015-01-23: Alignment with XTA/KoSIT: introduced KeyCodeType, changed PropertyType, BusinessScenarioType, MessageType; ServiceQuality (to #any type), SecurityToken may carry IDREF attribute to token in payload now; usage attribute mandatory now --> -<!-- Change 2014-11-30: xoev basis data type schema version changed from 1_0 to 1_1 --> -<!-- Last recent changes: Codelist for BusinessScenarioTypes defined and imported --> -<!-- Changes: 2.0.2: Adoption of xoev:Codelist type for some elements; eliminating QName typed attributes/elements; PartyType elements now may include optional SecurityTokens (as e.g. used in XVergabe) --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://www.osci.eu/ws/2014/10/transport" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="ws-addr.xsd"/> - <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd"/> - <xs:import namespace="http://xoev.de/schemata/basisdatentypen/1_1" schemaLocation="xoev-basisdatentypen.xsd"/> - <xs:simpleType name="NonEmptyStringType"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="NonEmptyURIType"> - <xs:restriction base="xs:anyURI"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AnyType" mixed="true"> - <xs:sequence minOccurs="0" maxOccurs="unbounded"> - <xs:any namespace="##any" processContents="lax"/> - </xs:sequence> - <xs:anyAttribute namespace="##any"/> - </xs:complexType> - <!-- End AnyType --> - <xs:complexType name="ReceiptRequestType"> - <xs:sequence> - <xs:element name="Submission" minOccurs="0"> - <xs:annotation> - <xs:documentation>Sending node: Message accepted for delivery and submitted</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Relay" minOccurs="0"> - <xs:annotation> - <xs:documentation>Active node on the delivery route: Message forwarded to next hop</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Delivery" minOccurs="0"> - <xs:annotation> - <xs:documentation>Destination node:Successful delivery to Recipient in synchronous scenarios, to MsgBox if asynchronous</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Fetch" minOccurs="0"> - <xs:annotation> - <xs:documentation>Only MsgBox node: Initial fetch of Message by Recipient from his MsgBox</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reception" minOccurs="0"> - <xs:annotation> - <xs:documentation>Ultimate Recipient node, after acceptance of message, after successful decryption of payload</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ReceiptTo" type="wsa:EndpointReferenceType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DeliveryAttributesType"> - <xs:annotation> - <xs:documentation>Message delivery time instants, quality and receipts requested</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:annotation> - <xs:documentation>Timestamps, priority etc.</xs:documentation> - </xs:annotation> - <xs:element name="Origin" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Production of content by Requester respective (response) Provider</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InitialSend" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time when delivery was started (submission by Senders node)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NotBefore" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time when sending node should submit message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ObsoleteAfter" type="xs:date" minOccurs="0"> - <xs:annotation> - <xs:documentation>Date, when this message is obsolete; may be set by Initiator</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Delivery" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of entry in a Recipients MsgBox or reception by Recipient in synchronous case</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InitialFetch" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of first comitted fetch from MsgBox by recipient</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reception" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Reception time set by the Ultimate Recipient ("Reader", target application)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceQuality" type="oscimeta:NonEmptyStringType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Property like priority etc. - XTA here points to "Service Profile"</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ReceiptRequests" type="oscimeta:ReceiptRequestType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Receipts requested by sender or author</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:element name="SecurityToken"> - <xs:complexType> - <xs:choice> - <xs:element ref="wsse:BinarySecurityToken"/> - <xs:element ref="wsse:SecurityTokenReference"/> - <xs:element ref="wsse:UsernameToken"/> - </xs:choice> - <xs:attribute name="usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="AUTHENTICATION"/> - <xs:enumeration value="ENCRYPTION"/> - <xs:enumeration value="SIGNATURE"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="payloadRef" type="xs:IDREF"/> - </xs:complexType> - </xs:element> - <xs:complexType name="PartyType"> - <xs:annotation> - <xs:documentation>Logical identifier and optional security tokens of that entity (binary, may carry SAML, too) </xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Identifier" type="oscimeta:PartyIdentifierType"/> - <xs:element ref="oscimeta:SecurityToken" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentifierType"> - <xs:annotation> - <xs:documentation>Value of generic party identifier, as classified by @type attribute, e.g.: Prefix:Kennung</xs:documentation> - </xs:annotation> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="type" type="oscimeta:NonEmptyStringType" use="required"> - <xs:annotation> - <xs:documentation>Orientation: ebMS Core: type, how to interpret Party-Id value, e.g.: xöv oder Justiz</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="name" type="oscimeta:NonEmptyStringType"> - <xs:annotation> - <xs:documentation>optional "friendly name" value for displaying in user agents (as e.g. known from eMail)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="category" type="oscimeta:NonEmptyStringType"> - <xs:annotation> - <xs:documentation>Concrete role of party in business scenario (e.g. "buyer", "Meldehörde", "Standesamt"...)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="Author" type="oscimeta:PartyType"> - <xs:annotation> - <xs:documentation>Requester resp. (response-) Provider</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reader" type="oscimeta:PartyType"> - <xs:annotation> - <xs:documentation>Destinations of the message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:complexType name="OriginatorsType"> - <xs:sequence> - <xs:element ref="oscimeta:Author"/> - <xs:element ref="oscimeta:Sender" minOccurs="0"/> - <xs:element name="ReplyTo" type="oscimeta:PartyType" minOccurs="0"> - <xs:annotation> - <xs:documentation>If response expected different from value outlined in "From" address</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DestinationsType"> - <xs:sequence> - <xs:element ref="oscimeta:Reader"> - <xs:annotation> - <xs:documentation>Ultimate target of the message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="oscimeta:OtherDestinations" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProcessIdentifierType"> - <xs:annotation> - <xs:documentation>Process ID message is realated to</xs:documentation> - </xs:annotation> - <xs:simpleContent> - <xs:extension base="oscimeta:NonEmptyStringType"> - <xs:attribute name="ProccesName" type="oscimeta:NonEmptyStringType"> - <xs:annotation> - <xs:documentation>Process may have a name, e.g. "order"</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="MsgIdentificationType"> - <xs:sequence> - <xs:element ref="wsa:MessageID"/> - <xs:element name="In-Reply-To" type="wsa:AttributedURIType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Referenced application level Message-Id(s)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ProcessRef" minOccurs="0"> - <xs:annotation> - <xs:documentation>References to business process-id's (like ebMS Conversation-Id, "Aktenzeichen" in Germany)</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Requester" type="oscimeta:ProcessIdentifierType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Ref on requester (Source Application) side</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Responder" type="oscimeta:ProcessIdentifierType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Ref on responder (Target Application) side, if different</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="KeyCodeType"> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"/> - <xs:element name="name" type="xs:normalizedString" form="unqualified" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"/> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"/> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PropertyType"> - <xs:sequence> - <xs:element name="Key" type="oscimeta:KeyCodeType"/> - <xs:element name="Value" type="oscimeta:NonEmptyStringType"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="MessagePropertiesType"> - <xs:sequence> - <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="QualifierType"> - <xs:sequence> - <xs:element name="Subject" type="xs:string" minOccurs="0"> - <xs:annotation> - <xs:documentation>Message subject text (informational)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Service" type="xs:anyURI"> - <xs:annotation> - <xs:documentation>Distinct service in a certain business scenario context; in the XÖV context this is the "Dienste URI"</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="BusinessScenario"> - <xs:annotation> - <xs:documentation>Domain qualifier, e.g. Meldewesen, XVergabe...</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:choice> - <xs:element name="Defined" type="oscimeta:KeyCodeType"/> - <xs:element name="Undefined" type="xs:normalizedString"/> - </xs:choice> - </xs:complexType> - </xs:element> - <xs:element name="MessageType"> - <xs:annotation> - <xs:documentation>Payload: Type of document or message. MessageTypes normally bound to specific BusinessScenario</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:complexContent> - <xs:extension base="oscimeta:KeyCodeType"> - <xs:attribute name="payloadSchema" type="oscimeta:NonEmptyURIType" use="required"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:element name="DeliveryAttributes" type="oscimeta:DeliveryAttributesType"> - <xs:annotation> - <xs:documentation>Time stamps, receipts to be generated, service quality</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Originators" type="oscimeta:OriginatorsType"> - <xs:annotation> - <xs:documentation>Message originators and reply address</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Destinations" type="oscimeta:DestinationsType"> - <xs:annotation> - <xs:documentation>Actual and other destinations of Message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MsgIdentification" type="oscimeta:MsgIdentificationType"> - <xs:annotation> - <xs:documentation>Message ID and Message relations</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Qualifier" type="oscimeta:QualifierType"> - <xs:annotation> - <xs:documentation>General payload properties, common to all scenarios</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageProperties"> - <xs:annotation> - <xs:documentation>Scenarios specific payload properties, to be agreed upon per scenario</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="Sender" type="oscimeta:PartyType"> - <xs:annotation> - <xs:documentation>Sending node, entry may be added by Sender node</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="OtherDestinations"> - <xs:annotation> - <xs:documentation>Other destinations of message - informational, as known from e-mail</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element ref="oscimeta:OtherReaders" maxOccurs="unbounded"/> - <xs:element ref="oscimeta:CcReaders" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="OtherReaders" type="oscimeta:PartyIdentifierType"/> - <xs:element name="CcReaders" type="oscimeta:PartyIdentifierType"> - <xs:annotation> - <xs:documentation>Destinations in cc role</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageMetaData"> - <xs:complexType> - <xs:sequence> - <xs:element ref="oscimeta:DeliveryAttributes"/> - <xs:element ref="oscimeta:Originators"/> - <xs:element ref="oscimeta:Destinations"/> - <xs:element ref="oscimeta:MsgIdentification"/> - <xs:element ref="oscimeta:Qualifier"/> - <xs:element ref="oscimeta:MessageProperties" minOccurs="0"/> - <xs:element name="MsgSize" type="xs:positiveInteger" minOccurs="0"> - <xs:annotation> - <xs:documentation>Message size in bytes</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="TestMsg" type="xs:boolean" default="false"> - <xs:annotation> - <xs:documentation>"true", if test-message; defaults to "false"</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd deleted file mode 100644 index 69902b496..000000000 --- a/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd +++ /dev/null @@ -1,544 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://xoev.de/transport/xta/211" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1.1"> - <xs:annotation> - <xs:documentation>Hier wird die Sammlung von Typen dargestellt, welche innerhalb des Standards XTA definiert und verwendet werden.</xs:documentation> - </xs:annotation> - <xs:import namespace="http://xoev.de/schemata/basisdatentypen/1_1" schemaLocation="xoev-basisdatentypen.xsd"/> - <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> - <xs:complexType name="AdditionalReportListType"> - <xs:annotation> - <xs:documentation>Dieser Typ gestattet das Ablegen weiterer Prüfberichte, welche das XTA-Protokoll (TransportReport) ergänzen sollen.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Report" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein zusätzlicher Report abgelegt, der das XTA-Protokoll (TransportReport) ergänzt. Die Art des Reports (z. B. OSCI Process Card) und der Inhalt des Reports werden bzw. sind in separaten Bereichen dieses Containers eingetragen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Key" type="xta:Code.ReportType"> - <xs:annotation> - <xs:documentation>Dieses Element benennt den Typ des Reports, um dem Leser die Interpretation der Reportdaten zu ermöglichen. Die Benennung des Typs des Reports geschieht auf der Basis einer Codeliste.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Data" type="xs:base64Binary"> - <xs:annotation> - <xs:documentation>Hier wird der zusätzliche Report in einem technisch neutralen Format eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Code.Fehlernummer"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>Koordinierungsstelle für IT-Standards (KoSIT)</listAgencyName> - <listName>XTA-WS Fehlernummer</listName> - </xs:appinfo> - <xs:documentation>Diese Codeliste gibt eine Übersicht über die in XTA-WS zu verwendenden Fehlernummern (ErrorCodes) und ordnet sie den Exceptions zu, in deren Kontext sie auftreten können.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"/> - <xs:element name="name" type="xs:normalizedString" form="unqualified"/> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="optional" fixed="urn:de:xta:webservice:codeliste:fehlernummer"/> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional" fixed="1.0"/> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Code.RecordType"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>N.N.</listAgencyName> - <listName>Record Type</listName> - </xs:appinfo> - <xs:documentation>In diesen Typ ist eine auszuwählende bzw. selbst zu definierende Codeliste einzubinden, die Arten von Meldungen benennt, welche in das Protokoll zur Abarbeitung eines Transportauftrags (TransportReport) eingetragen werden. Dort können die Meldungen als Fehler-, Warn- oder Informationseinträge eingeordnet sein. -In die Attribute des vorliegenden Typs sind die Codelisten-URI und die Nummer der Version der ausgewählten Codeliste einzutragen. - -Die KoSIT hat die Absicht, für den Standard XTA eine passende Codeliste zu definieren und als einheitliches Angebot zur Einbindung für diesen Typ bereitzustellen. Diese Codeliste ist, wenn die Bereitstellung erfolgt ist, im XRepository (www.xrepository.de) unter der Codelisten-URI urn:de:xta:codeliste:record.type auffindbar und kann von dort im XML-Format OASIS Genericode abgerufen werden.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"> - <xs:annotation> - <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> - <xs:annotation> - <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssels zu Grunde gelegt werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Code.ReportType"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>N.N.</listAgencyName> - <listName>Report Type</listName> - </xs:appinfo> - <xs:documentation>Dieser Typ gestattet die Kennzeichnung der Art eines zusätzlichen Reports. Es wird eine zu wählende Codeliste eingebunden, die mögliche Arten von Reports nennt (spezielles Format, innerhalb oder außerhalb von XTA definiert), die in das XTA-Protokoll (TransportReport) eingefügt werden können. -Die KoSIT gibt für den Standard XTA eine Codeliste heraus, welche Einträge für einschlägige Arten von Reports auflistet. Diese Codeliste kann auf Antrag erweitert bzw. geändert werden. Sie ist durch XTA-konforme Systeme für übergreifende Prozesse zu verwenden. -Diese Codeliste ist im XRepository (www.xrepository.de) unter Nennung ihrer Codelisten-URI urn:de:xta:codeliste:report.type auffindbar und kann dort im XML-Format OASIS Genericode in der aktuellen Version abgerufen werden (ggf. sind auch frühere Versionen verfügbar). In die Attribute des vorliegenden Typs sind entsprechend ihre Codelisten-URI und die Nummer der ausgewählten Version einzutragen. -Für lokale Zwecke können XTA-Kommunikationspartner auch eigene Codelisten definieren (welche bilateral abgestimmte Reportformate benennen) und an dieser Stelle einbinden. In die Attribute des vorliegenden Typs werden dann Codelisten-URI und Versionsnummer der selbstdefinierten Codeliste eingetragen.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"> - <xs:annotation> - <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> - <xs:annotation> - <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssel zu Grunde gelegt werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Code.ServiceParameterType"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>N.N.</listAgencyName> - <listName>Service Parameter Type</listName> - </xs:appinfo> - <xs:documentation>Dieser Typ gestattet die Kennzeichnung der Art eines Parameters für die technische Erreichbarkeit des Dienstes, der adressiert werden soll. -Hier wird eine zu wählende Codeliste eingebunden, die mögliche Parameterarten nennt. -Die KoSIT gibt für den Standard XTA eine Codeliste heraus, welche einschlägige solcher Parameterarten auflistet. Diese Codeliste kann auf Antrag erweitert bzw. geändert werden. Sie ist durch XTA-konforme Systeme für übergreifende Prozesse zu verwenden. -Diese Codeliste ist im XRepository (www.xrepository.de) unter Nennung ihrer Codelisten-URI urn:de:xta:codeliste:service.parameter.type auffindbar und kann dort im XML-Format OASIS Genericode in der aktuellen Version abgerufen werden (ggf. sind auch frühere Versionen verfügbar). In die Attribute des vorliegenden Typs sind entsprechend ihre Codelisten-URI und die Nummer der ausgewählten Version einzutragen. -Für lokale Zwecke können XTA-Kommunikationspartner auch eigene Codelisten definieren (welche bilateral abgestimmte Parameterarten benennen) und an dieser Stelle einbinden. In die Attribute des vorliegenden Typs werden dann Codelisten-URI und Versionsnummer der selbstdefinierten Codeliste eingetragen.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"> - <xs:annotation> - <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> - <xs:annotation> - <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssel zu Grunde gelegt werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="Codelist.Fehlernummer"> - <xs:annotation/> - <xs:restriction base="xs:token"> - <xs:enumeration value="9000"> - <xs:annotation> - <xs:appinfo> - <codeName>Unspezifizierter Fehler, als Freitext beschrieben</codeName> - </xs:appinfo> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9010"> - <xs:annotation> - <xs:appinfo> - <codeName>Authentisierung/Zertifikat ist abgelaufen.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9011"> - <xs:annotation> - <xs:appinfo> - <codeName>Account ist gesperrt.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9012"> - <xs:annotation> - <xs:appinfo> - <codeName>Account nicht vorhanden.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9013"> - <xs:annotation> - <xs:appinfo> - <codeName>Dienst ist nicht gebucht.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9014"> - <xs:annotation> - <xs:appinfo> - <codeName>Authentisierung/Zertifikat passt nicht zur Absenderkennung.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9020"> - <xs:annotation> - <xs:appinfo> - <codeName>Keine Parameter vorhanden</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidExeption</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9021"> - <xs:annotation> - <xs:appinfo> - <codeName>Keine gültige URI</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidExeption</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9022"> - <xs:annotation> - <xs:appinfo> - <codeName>Ungültige Parameterkombination</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9023"> - <xs:annotation> - <xs:appinfo> - <codeName>Die Nachricht überschreitet die Größenbeschränkung.</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9024"> - <xs:annotation> - <xs:appinfo> - <codeName>MessageID ist bereits vergeben.</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9030"> - <xs:annotation> - <xs:appinfo> - <codeName>Interner Fehler beim XTA-Server bzw. XTA-Dienstleister</codeName> - </xs:appinfo> - <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9031"> - <xs:annotation> - <xs:appinfo> - <codeName>Fehler beim externen Verzeichnisdienst</codeName> - </xs:appinfo> - <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9032"> - <xs:annotation> - <xs:appinfo> - <codeName>Fehler bei der Zustellung</codeName> - </xs:appinfo> - <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9050"> - <xs:annotation> - <xs:appinfo> - <codeName>Fachnachricht ist nicht schemakonform</codeName> - </xs:appinfo> - <xs:documentation>MessageSchemaViolationException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9051"> - <xs:annotation> - <xs:appinfo> - <codeName>Fachnachricht trägt ein falsches Encoding.</codeName> - </xs:appinfo> - <xs:documentation>MessageSchemaViolationException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9052"> - <xs:annotation> - <xs:appinfo> - <codeName>Nachricht verletzt das entsprechende Service Profil.</codeName> - </xs:appinfo> - <xs:documentation>MessageSchemaViolationException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9060"> - <xs:annotation> - <xs:appinfo> - <codeName>Es wurde schadhafter Code ermittelt.</codeName> - </xs:appinfo> - <xs:documentation>MessageVirusDetectionException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9070"> - <xs:annotation> - <xs:appinfo> - <codeName>MessageID für den Account nicht bekannt.</codeName> - </xs:appinfo> - <xs:documentation>InvalidMessageIDException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9080"> - <xs:annotation> - <xs:appinfo> - <codeName>Der Dienst wird nur asynchron angeboten.</codeName> - </xs:appinfo> - <xs:documentation>SyncAsyncException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9081"> - <xs:annotation> - <xs:appinfo> - <codeName>Der Dienst wird nur synchron angeboten.</codeName> - </xs:appinfo> - <xs:documentation>SyncAsyncException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9100"> - <xs:annotation> - <xs:appinfo> - <codeName>Der durch den Schalter NotBefore gesetzte Termin ist -verstrichen.</codeName> - </xs:appinfo> - <xs:documentation>CancelDeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9101"> - <xs:annotation> - <xs:appinfo> - <codeName>Der Schalter NotBefore wurde nicht gesetzt.</codeName> - </xs:appinfo> - <xs:documentation>CancelDeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ContentType"> - <xs:annotation> - <xs:documentation>Typ für die technisch neutrale (base64-kodierte) Darstellung von Information. Enthält den base64-kodierten Inhalt (Fachnachricht), der zwischen WebService-Client und XTA-Server transportiert wird. Die Attribute sind der MIME-Spezifikation (RFC 2183) entnommen. -Die Belegung der Attribute ist für verschiedene Fachlichkeiten unterschiedlich und ist durch den Fachstandard festzulegen, der für die Fachnachricht verantwortlich ist.</xs:documentation> - </xs:annotation> - <xs:simpleContent> - <xs:extension base="xs:base64Binary"> - <xs:attribute name="contentDescription" type="oscimeta:NonEmptyStringType" use="optional"> - <xs:annotation> - <xs:documentation>Beschreibung des fachlichen Inhalts, z.B. 'Angebot' oder 'Rechnung'.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="contentType" type="oscimeta:NonEmptyStringType" use="required"> - <xs:annotation> - <xs:documentation>Dieses Attribut nennt den MIME-Typ des enthaltenen Inhalts, hat also Einträge wie text/xml, text/plain, application/gzip oder application/pdf. Mandatorisch, weil besonders wichtige Information (wird in E-Mail analog gehandhabt).</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="encoding" type="oscimeta:NonEmptyStringType" use="optional"> - <xs:annotation> - <xs:documentation>Der Zeichensatz, der der Kodierung des Inhalts zugrunde gelegen hat.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="filename" type="oscimeta:NonEmptyStringType" use="optional"> - <xs:annotation> - <xs:documentation>Der Dateiname der Datenquelle, falls der Inhalt einer Datei entnommen worden ist. Bsp.: Für die Übermittlung von xdomea-Nachrichten ist dieses Attribut Pflicht.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="id" type="xs:ID" use="optional"> - <xs:annotation> - <xs:documentation>Bietet die Möglichkeit, den Inhalt über z.B. eine laufende Nummer zu referenzieren.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="lang" type="xs:language" use="optional"> - <xs:annotation> - <xs:documentation>Sprache, in der der Inhalt formuliert ist.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="size" type="xs:positiveInteger" use="optional"> - <xs:annotation> - <xs:documentation>Die Größe des Inhalts in Bytes.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="IsServiceAvailableValueType"> - <xs:annotation> - <xs:documentation>Das Feld enthält die benötigten Attribute zum Ergebnis der Dienstanfrage: ob der Dienst angeboten wird oder nicht, oder ob diese Information generell nicht bekannt ist.</xs:documentation> - </xs:annotation> - <xs:choice> - <xs:element name="ServiceIsAvailable" type="xs:boolean"> - <xs:annotation> - <xs:documentation>Der Dienst wird angeboten (true) oder nicht angeboten (false).</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceIsAvailableUnknown" type="xs:boolean" fixed="true"> - <xs:annotation> - <xs:documentation>Es ist nicht bekannt, ob der Dienst angeboten wird oder nicht.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:choice> - </xs:complexType> - <xs:complexType name="LookupServiceResultType"> - <xs:annotation> - <xs:documentation>Das Ergebnis zu einer Dienstanfrage, das die Information enthält, ob der Dienst angeboten wird. Außerdem sind die nötigen technischen Paramter für die Erreichbarkeit vorhanden.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:LookupServiceType"> - <xs:sequence> - <xs:element name="IsServiceAvailableValue" type="xta:IsServiceAvailableValueType"> - <xs:annotation> - <xs:documentation>Enthält das Ergebnis der Dienstanfrage: ob der Dienst angeboten wird oder nicht oder ob diese Information generell nicht bekannt ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceParameter" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Dieses Element enthält im Erfolgsfall die benötigten technischen Parameter für die elektronische Kommunikation mit dem Leser, z.B. das öffentliche Zertifikat des Lesers zur Inhaltsdatenverschlüsselung. Das Feld ist zu füllen, falls der angefragte Dienst angeboten und in diesem Kontext der Parameter benötigt wird. -Vom Fachszenario ist zu beschreiben, welche Parameter für die Erreichbarkeit der Dienste in diesem Fachszenario anzuwenden sind.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="ParameterType" type="xta:Code.ServiceParameterType"> - <xs:annotation> - <xs:documentation>Dieses Element steht für die Art des Parameters, welche ins passende Kindelement einzutragen bzw. eingetragen ist. Die vorgesehenen Parameterarten werden auf der Basis einer Codeliste interpretiert, welche durch die Attribute listURI und listVersionID referenziert ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Resource" type="xs:base64Binary"> - <xs:annotation> - <xs:documentation>Hier ist der Parameter enthalten bzw. einnzutragen in technisch neutraler Darstellung.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="LookupServiceType"> - <xs:annotation> - <xs:documentation>Dies ist die Struktur einer Service-Anfrage: Sie enthält die Daten über den Diensteanbieter (Leser) und den Dienst des Lesers, den der Autor in Anspruch nehmen will. Diese Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element ref="oscimeta:Reader"> - <xs:annotation> - <xs:documentation>Dies ist die fachliche Identifizierung des Lesers. Der Wert entspricht z.B. dem DVDV-Behördenschlüssel.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceType" type="xs:anyURI"> - <xs:annotation> - <xs:documentation>Dies ist die Bezeichnung des anzufordernden Dienstes. Sie wird im Format einer URL übergeben, was den Vorteil hat, dass damit auch eine Versionsnummer eingeschlossen ist. Beispiel für Dienstebezeichnungen, wie sie im DVDV verwendet werden: http://www.osci.de/xmeld181/xmeld181Rueckmeldung.wsdl - - -Abgrenzung: "Dienst" ist das, was gemäß Diensteeinteilung der Fachdomäne im Verzeichnisdienst als Service (im Sinne eines Web Service) eingetragen ist. Dadurch ist die Dienstebezeichnung weniger differenziert als der Nachrichtentyp. Typischerweise sind im Verzeichnisdienst mehrere Nachrichtentypen in einer Service-WSDL zusammengefasst.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="MessageStatusType"> - <xs:annotation> - <xs:documentation>Gibt die Struktur für die Meldungen (Logging-Informationen) über den Transportverlauf vor. Er sieht Meldungszeilen für Infos, Warnungen und Fehler vor.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Status" type="xs:integer"> - <xs:annotation> - <xs:documentation>Wird durch Sender bzw. Empfänger fortgeschrieben. Wird der TransportReport noch fortgeschrieben, wird er hier mit 0=offen markiert. Nach Abschluss des TransportReports wird nach dem Max-Prinzip der höchste Ampelstatus aus den Elementen ErrorList, WarnList, InfoList hier numerisch dargestellt. - - - - -0=offen: Die Nachricht befindet sich noch in der Verarbeitung. -1=grün: Es sind keine Fehler oder Warnungen aufgetreten. -2=gelb: Es sind Warnungen, aber keine kritischen Fehler aufgetreten. -3=rot: Es sind kritische Fehler aufgetreten.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ErrorList" minOccurs="0"> - <xs:annotation> - <xs:documentation>Liste der Fehlermeldungen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Error" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier wird die Fehlermeldung mit ihren Parametern eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="WarnList" minOccurs="0"> - <xs:annotation> - <xs:documentation>Liste der Warnungen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Warning" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier wird die Warnung mit ihren Paramtern eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="InfoList" minOccurs="0"> - <xs:annotation> - <xs:documentation>Liste der Informationsmeldungen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Info" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier wird die Informationsmeldung mit ihren Parametern eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RecordType"> - <xs:annotation> - <xs:documentation>Der Typ zur Kennzeichnung und Erläuterung einer Meldung (anwendbar auf Info-, Fehlermeldungen und Warnungen).</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Timestamp" type="xs:dateTime"> - <xs:annotation> - <xs:documentation>Zeitstempel für den Zeitpunkt der Aufzeichnung der Meldung.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Code" type="xta:Code.RecordType"> - <xs:annotation> - <xs:documentation>Schlüssel, der die Bedeutung der Meldung kodiert. Dieser Schlüssel muss aus einer eingebundenen Codeliste stammen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reason" type="xs:string"> - <xs:annotation> - <xs:documentation>Hier wird zur weiteren Erläuterung der Grund der Meldung als Freitext eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd deleted file mode 100644 index 65ab844aa..000000000 --- a/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd +++ /dev/null @@ -1,133 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" targetNamespace="http://xoev.de/transport/xta/211" version="2.1.1" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <xs:annotation> - <xs:documentation>Hier wird die Sammlung von Typen dargestellt, welche innerhalb des Standards XTA verwendet werden, um SOAP Exceptions zu definieren und zu verwenden.</xs:documentation> - </xs:annotation> - <xs:include schemaLocation="XTA-Webservice-Datentypen.xsd" /> - <xs:complexType name="CancelDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objeikt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ExceptionType"> - <xs:annotation> - <xs:documentation>Dieser Datentyp legt die grundlegende Struktur einer Exception im Rahmen des XTA Webservice fest. Sie kapselt Information zu Identität und Bedeutung eines aufgetretenen Fehlers.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="errorCode" type="xta:Code.Fehlernummer"> - <xs:annotation> - <xs:documentation>In diesem Element werden Fehlernummer und Fehlertext übermittelt, die einen Fehler näher beschreiben (gemäß verlinkter Codeliste). -In das Unterelement code ist die Fehlernummer einzutragen, ins Unterelement name die entsprechende textuelle Repräsentation.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="InvalidMessageIDExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="MessageSchemaViolationExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="MessageVirusDetectionExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ParameterIsNotValidExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PermissionDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="SyncAsyncExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="XTAWSTechnicalProblemExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:element name="CancelDeniedException" type="xta:CancelDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, falls die Methode cancelMessage aufgerufen wurde, aber der Transportauftrag aus einem der folgenden Gründe nicht zurückgezogen werden kann: - - Der bei Erteilung des Transportauftrags über den Schalter NotBefore gesetzte Termin ist erreicht. - -Der Schalter NotBefore wurde bei Erteilung des Transportauftrags nicht gesetzt.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InvalidMessageIDException" type="xta:InvalidMessageIDExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn in einem gegebenen Kontext die anhand der ID bezeichnete Nachricht nicht bekannt ist, also beispielsweise nicht geliefert werden kann.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageSchemaViolationException" type="xta:MessageSchemaViolationExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn eine Fachnachricht nicht der jeweiligen Schema-Definition entspricht.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageVirusDetectionException" type="xta:MessageVirusDetectionExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn schadhafter Code in einem der übergebenen Container ermittelt wurde.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ParameterIsNotValidException" type="xta:ParameterIsNotValidExceptionType"> - <xs:annotation> - <xs:documentation>Diese Fehlermeldung wird geworfen, wenn ein Parameter nicht korrekt an die Methode übergeben wurde.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="PermissionDeniedException" type="xta:PermissionDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn der Account gesperrt oder nicht vorhanden ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="SyncAsyncException" type="xta:SyncAsyncExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen falls dem XTA-Webservice - - eine Nachricht, die nur für die synchrone Weiterleitung gültig ist, für die asynchrone Weiterleitung übergeben wurde oder - -eine Nachricht für die synchrone Weiterleitung übergeben wurde, die nur für die asynchrone Weiterleitung gültig ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="XTAWSTechnicalProblemException" type="xta:XTAWSTechnicalProblemExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird allgemein geworfen, wenn ein technisches Problem im XTA-WS aufgetreten ist. Sie kann z. B. durch ein Problem beim Zugriff auf die interne Datenbank des XTA-Servers ausgelöst worden sein.</xs:documentation> - </xs:annotation> - </xs:element> -</xs:schema> - diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd deleted file mode 100644 index 96d583000..000000000 --- a/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd +++ /dev/null @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://xoev.de/transport/xta/211" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1.1"> - <xs:annotation> - <xs:documentation>Dies ist die Liste der globalen Elemente, welche durch die Operationen des XTA-WS verwendet werden .</xs:documentation> - </xs:annotation> - <xs:include schemaLocation="XTA-Webservice-Datentypen.xsd"/> - <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="xenc-schema.xsd"/> - <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> - <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xs:element name="GenericContentContainer"> - <xs:annotation> - <xs:documentation>Der GenericContentContainer nimmt den zu transportierenden oder abzuliefernden Inhalt auf, z.B. eine XÖV-Nachricht mit ihren Anlagen. Diese Inhalte können unverschlüsselt (Element ContentContainer) oder auch verschlüsselt (Element xenc:EncryptedData) hinterlegt werden. Die Verschlüsselung an dieser Stelle eignet sich für Ende-zu-Ende-Verschlüsselung durch den Autor, wenn dieses Objekt durch den Autor erstellt wird.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:choice> - <xs:element ref="xenc:EncryptedData"> - <xs:annotation> - <xs:documentation>Dieses Objekt ist dafür vorgesehen, den Container-Inhalt verschlüsselt zu hinterlegen. Im entschlüsselten Zustand müssen die Daten dem Schwester-Element ContentContainer entsprechen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ContentContainer"> - <xs:annotation> - <xs:documentation>Der ContentContainer enthält genau eine Nachricht (Element Message) und null bis beliebig viele Anlagen, die alle in technisch neutraler Darstellung (base64-kodiert) eingefügt werden (Element Attachment). Die Gesamtgröße des Containers darf 40 MB nicht überschreiten.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Message" type="xta:ContentType"> - <xs:annotation> - <xs:documentation>Enthält den base64-kodierten Inhalt, der zwischen WebService-Client und XTA-Server transportiert wird. Die Attribute sind der MIME-Spezifikation (RFC 2183) entnommen. -Die zu übermittelnde Nachricht als primärer Inhalt dieses Containers ist optional durch Anhänge (Element Attachment) zu ergänzen. -In die Attribute wird je nach Kontext Metainformation zur Nachricht eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Attachment" type="xta:ContentType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier können optional ergänzende Anhänge zur übermittelnden Nachricht eingefügt werden. -Die Attribute transportieren je nach Kontext Metainformation zum enthaltenen Anhang.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:choice> - </xs:complexType> - </xs:element> - <xs:element name="LookupServiceRequest"> - <xs:annotation> - <xs:documentation>Dies ist eine Liste von Dienstanfragen. -Jede Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird, und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupServiceRequestList" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Dies ist die Struktur für eine Liste von Dienstanfragen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupService" type="xta:LookupServiceType"> - <xs:annotation> - <xs:documentation>Dies ist eine Service-Anfrage. Sie enthält Daten zum potentiellen Diensteanbieter (Leser) und dem Dienst, der angefragt werden soll. Diese Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird, und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="LookupServiceResponse"> - <xs:annotation> - <xs:documentation>Dies ist das Ergebnis zu einer Liste von Dienstanfragen, also eine Liste von Dienstanfrageergebnissen. Die Anfrage wird jeweils zitiert und das zugehörige Ergebnis ausgegeben.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupServiceResultList"> - <xs:annotation> - <xs:documentation>Die Struktur einer Liste von Dienstanfrageergebnissen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupServiceResult" type="xta:LookupServiceResultType" nillable="true" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Dies ist die Struktur der Liste von Ergebnissen zur Liste von Diensteanfragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="TransportReport"> - <xs:annotation> - <xs:documentation>Der TransportReport ist die Struktur des durch XTA standardisierten Transportprotokolls. Neben den übermittelten Nachrichten ruft das Fachverfahren (in den Rollen Autor und Leser) über den Webservice-Client Zusatzinformationen über den Transportauftrag und die Transportereignisse vom XTA-WS ab. - - Um Autor und Leser die Möglichkeit zu geben, die Abarbeitung ihrer Transportaufträge zu überwachen, erstellen Sender und Empfänger Transportprotokolle, die in einer XML-Struktur des Typs TransportReport dargestellt und für Abruf und Auswertung bereit liegen. - -Die Datenstruktur aggregiert die Information zum erteilten Transportauftrag, zum Verlauf des sich anschließenden Transports einschließlich Zertifikatsüberprüfungen mit Ergebnissen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element ref="oscimeta:MessageMetaData"> - <xs:annotation> - <xs:documentation>Dieser Container umfasst alle Daten des Transportauftrags, auf dessen Ausführung sich der TransportReport bezieht. Zu den Informationen gehören die Identifizierung von Absender und (einem oder mehreren) Empfängern, Metainformation zu Inhalt und Identität der zu transportierenden Fachnachricht (Payload) sowie weitere Attribute, die Auslieferung, Quittungen und Service Qualität betreffen. -Weitere Informationen zu diesem Objekt sind in zu finden.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ReportTime" type="xs:dateTime"> - <xs:annotation> - <xs:documentation>Zeitpunkt der letzten Aktualisierung des Protokolls. Ist bei Fortschreibung des Protokolls zu überschreiben.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="XTAServerIdentity" type="xs:token"> - <xs:annotation> - <xs:documentation>Hier protokolliert der den TransportReport erstellende Prozess seine Identität als Software-Instanz, indem er z.B. die Server-IP-Adresse oder die URI seines XTA-WS einträgt.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageStatus" type="xta:MessageStatusType"> - <xs:annotation> - <xs:documentation>Enthält Information über den Veraluf des Transports. Es werden hier Listen mit aufgetretenen Fehler-, Warnungs- und Informationsmeldungen geführt. Außerdem ist nach Schließung des Transportauftrags im Feld Status eine "Schnell-Info" verfügbar.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AdditionalReports" type="xta:AdditionalReportListType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Hier sind weitere Prüfberichte abgelegt bzw. abzulegen, welche das XTA-Protokoll (TransportReport) ergänzen sollen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="ds:Signature" minOccurs="0"> - <xs:annotation> - <xs:documentation>Falls der TransportReport signiert ist, findet sich hier die Signatur.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd deleted file mode 100644 index 6681571b2..000000000 --- a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd +++ /dev/null @@ -1,195 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. -OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. -Copyright © OASIS Open 2002-2004. All Rights Reserved. -This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself does not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. -The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. -This document and the information contained herein is provided on an “AS IS” basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ---> -<xsd:schema targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all" version="0.2"> - <xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd"/> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> - <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xsd:complexType name="AttributedString"> - <xsd:annotation> - <xsd:documentation>This type represents an element with arbitrary attributes.</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="xsd:string"> - <xsd:attribute ref="wsu:Id"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="PasswordString"> - <xsd:annotation> - <xsd:documentation>This type is used for password elements per Section 4.1.</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:AttributedString"> - <xsd:attribute name="Type" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="EncodedString"> - <xsd:annotation> - <xsd:documentation>This type is used for elements containing stringified binary data.</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:AttributedString"> - <xsd:attribute name="EncodingType" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="UsernameTokenType"> - <xsd:annotation> - <xsd:documentation>This type represents a username token per Section 4.1</xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:element name="Username" type="wsse:AttributedString"/> - <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute ref="wsu:Id"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="BinarySecurityTokenType"> - <xsd:annotation> - <xsd:documentation>A security token that is encoded in binary</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:EncodedString"> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="KeyIdentifierType"> - <xsd:annotation> - <xsd:documentation>A security token key identifier</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:EncodedString"> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:simpleType name="tUsage"> - <xsd:annotation> - <xsd:documentation>Typedef to allow a list of usages (as URIs).</xsd:documentation> - </xsd:annotation> - <xsd:list itemType="xsd:anyURI"/> - </xsd:simpleType> - <xsd:attribute name="Usage" type="tUsage"> - <xsd:annotation> - <xsd:documentation>This global attribute is used to indicate the usage of a referenced or indicated token within the containing context</xsd:documentation> - </xsd:annotation> - </xsd:attribute> - <xsd:complexType name="ReferenceType"> - <xsd:annotation> - <xsd:documentation>This type represents a reference to an external security token.</xsd:documentation> - </xsd:annotation> - <xsd:attribute name="URI" type="xsd:anyURI"/> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="EmbeddedType"> - <xsd:annotation> - <xsd:documentation>This type represents a reference to an embedded security token.</xsd:documentation> - </xsd:annotation> - <xsd:choice minOccurs="0" maxOccurs="unbounded"> - <xsd:any processContents="lax"/> - </xsd:choice> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="SecurityTokenReferenceType"> - <xsd:annotation> - <xsd:documentation>This type is used reference a security token.</xsd:documentation> - </xsd:annotation> - <xsd:choice minOccurs="0" maxOccurs="unbounded"> - <xsd:any processContents="lax"/> - </xsd:choice> - <xsd:attribute ref="wsu:Id"/> - <xsd:attribute ref="wsse:Usage"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="SecurityHeaderType"> - <xsd:annotation> - <xsd:documentation>This complexType defines header block to use for security-relevant data directed at a specific SOAP actor.</xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"> - <xsd:annotation> - <xsd:documentation>The use of "any" is to allow extensibility and different forms of security data.</xsd:documentation> - </xsd:annotation> - </xsd:any> - </xsd:sequence> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="TransformationParametersType"> - <xsd:annotation> - <xsd:documentation>This complexType defines a container for elements to be specified from any namespace as properties/parameters of a DSIG transformation.</xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"> - <xsd:annotation> - <xsd:documentation>The use of "any" is to allow extensibility from any namespace.</xsd:documentation> - </xsd:annotation> - </xsd:any> - </xsd:sequence> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:element name="UsernameToken" type="wsse:UsernameTokenType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:UsernameToken element per Section 4.1.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="BinarySecurityToken" type="wsse:BinarySecurityTokenType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:BinarySecurityToken element per Section 4.2.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Reference" type="wsse:ReferenceType"> - <xsd:annotation> - <xsd:documentation>This element defines a security token reference</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Embedded" type="wsse:EmbeddedType"> - <xsd:annotation> - <xsd:documentation>This element defines a security token embedded reference</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="KeyIdentifier" type="wsse:KeyIdentifierType"> - <xsd:annotation> - <xsd:documentation>This element defines a key identifier reference</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="SecurityTokenReference" type="wsse:SecurityTokenReferenceType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:SecurityTokenReference per Section 4.3.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Security" type="wsse:SecurityHeaderType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:Security SOAP header element per Section 4.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="TransformationParameters" type="wsse:TransformationParametersType"> - <xsd:annotation> - <xsd:documentation>This element contains properties for transformations from any namespace, including DSIG.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Password" type="wsse:PasswordString"/> - <xsd:element name="Nonce" type="wsse:EncodedString"/> - <xsd:simpleType name="FaultcodeEnum"> - <xsd:restriction base="xsd:QName"> - <xsd:enumeration value="wsse:UnsupportedSecurityToken"/> - <xsd:enumeration value="wsse:UnsupportedAlgorithm"/> - <xsd:enumeration value="wsse:InvalidSecurity"/> - <xsd:enumeration value="wsse:InvalidSecurityToken"/> - <xsd:enumeration value="wsse:FailedAuthentication"/> - <xsd:enumeration value="wsse:FailedCheck"/> - <xsd:enumeration value="wsse:SecurityTokenUnavailable"/> - </xsd:restriction> - </xsd:simpleType> -</xsd:schema> diff --git a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd deleted file mode 100644 index 7fb8ec023..000000000 --- a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd +++ /dev/null @@ -1,216 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - -OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. - -OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. - -Copyright © OASIS Open 2002-2004. All Rights Reserved. - -This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself does not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. - -The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. - -This document and the information contained herein is provided on an “AS IS” basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - ---> - -<xsd:schema targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" - - - - - - - -xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" - -elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1"> - - <!-- // Fault Codes /////////////////////////////////////////// --> - - <xsd:simpleType name="tTimestampFault"> - - <xsd:annotation> - - <xsd:documentation> - -This type defines the fault code value for Timestamp message expiration. - - </xsd:documentation> - - </xsd:annotation> - - <xsd:restriction base="xsd:QName"> - - <xsd:enumeration value="wsu:MessageExpired"/> - - </xsd:restriction> - - </xsd:simpleType> - - <!-- // Global attributes //////////////////////////////////// --> - - <xsd:attribute name="Id" type="xsd:ID"> - - <xsd:annotation> - - <xsd:documentation> - -This global attribute supports annotating arbitrary elements with an ID. - - </xsd:documentation> - - </xsd:annotation> - - </xsd:attribute> - - <xsd:attributeGroup name="commonAtts"> - - <xsd:annotation> - - <xsd:documentation> - -Convenience attribute group used to simplify this schema. - - </xsd:documentation> - - </xsd:annotation> - - <xsd:attribute ref="wsu:Id" use="optional"/> - - <xsd:anyAttribute namespace="##other" processContents="lax"/> - - </xsd:attributeGroup> - - <!-- // Utility types //////////////////////////////////////// --> - - <xsd:complexType name="AttributedDateTime"> - - <xsd:annotation> - - <xsd:documentation> - -This type is for elements whose [children] is a psuedo-dateTime and can have arbitrary attributes. - - </xsd:documentation> - - </xsd:annotation> - - <xsd:simpleContent> - - <xsd:extension base="xsd:string"> - - <xsd:attributeGroup ref="wsu:commonAtts"/> - - </xsd:extension> - - </xsd:simpleContent> - - </xsd:complexType> - - <xsd:complexType name="AttributedURI"> - - <xsd:annotation> - - <xsd:documentation> - -This type is for elements whose [children] is an anyURI and can have arbitrary attributes. - - </xsd:documentation> - - </xsd:annotation> - - <xsd:simpleContent> - - <xsd:extension base="xsd:anyURI"> - - <xsd:attributeGroup ref="wsu:commonAtts"/> - - </xsd:extension> - - </xsd:simpleContent> - - </xsd:complexType> - - <!-- // Timestamp header components /////////////////////////// --> - - <xsd:complexType name="TimestampType"> - - <xsd:annotation> - - <xsd:documentation> - -This complex type ties together the timestamp related elements into a composite type. - - </xsd:documentation> - - </xsd:annotation> - - <xsd:sequence> - - <xsd:element ref="wsu:Created" minOccurs="0"/> - - <xsd:element ref="wsu:Expires" minOccurs="0"/> - - <xsd:choice minOccurs="0" maxOccurs="unbounded"> - - <xsd:any namespace="##other" processContents="lax"/> - - </xsd:choice> - - </xsd:sequence> - - <xsd:attributeGroup ref="wsu:commonAtts"/> - - </xsd:complexType> - - <xsd:element name="Timestamp" type="wsu:TimestampType"> - - <xsd:annotation> - - <xsd:documentation> - -This element allows Timestamps to be applied anywhere element wildcards are present, - -including as a SOAP header. - - </xsd:documentation> - - </xsd:annotation> - - </xsd:element> - - <!-- global element decls to allow individual elements to appear anywhere --> - - <xsd:element name="Expires" type="wsu:AttributedDateTime"> - - <xsd:annotation> - - <xsd:documentation> - -This element allows an expiration time to be applied anywhere element wildcards are present. - - </xsd:documentation> - - </xsd:annotation> - - </xsd:element> - - <xsd:element name="Created" type="wsu:AttributedDateTime"> - - <xsd:annotation> - - <xsd:documentation> - -This element allows a creation time to be applied anywhere element wildcards are present. - - </xsd:documentation> - - </xsd:annotation> - - </xsd:element> - -</xsd:schema> - diff --git a/xta-adapter/src/main/xsd/soap-envelope.xsd b/xta-adapter/src/main/xsd/soap-envelope.xsd deleted file mode 100644 index c67e28b92..000000000 --- a/xta-adapter/src/main/xsd/soap-envelope.xsd +++ /dev/null @@ -1,111 +0,0 @@ -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2003/05/soap-envelope" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://www.w3.org/2003/05/soap-envelope" elementFormDefault="qualified"> - <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> - <!-- Envelope, header and body --> - <xs:element name="Envelope" type="tns:Envelope"/> - <xs:complexType name="Envelope"> - <xs:sequence> - <xs:element ref="tns:Header" minOccurs="0"/> - <xs:element ref="tns:Body"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="Header" type="tns:Header"/> - <xs:complexType name="Header"> - <xs:annotation> - <xs:documentation> - Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace - </xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="Body" type="tns:Body"/> - <xs:complexType name="Body"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <!-- Global Attributes. The following attributes are intended to be - usable via qualified attribute names on any complex type referencing - them. --> - <xs:attribute name="mustUnderstand" type="xs:boolean" default="0"/> - <xs:attribute name="relay" type="xs:boolean" default="0"/> - <xs:attribute name="role" type="xs:anyURI"/> - <!-- 'encodingStyle' indicates any canonicalization conventions - followed in the contents of the containing element. For example, the - value 'http://www.w3.org/2003/05/soap-encoding' indicates the pattern - described in the SOAP Version 1.2 Part 2: Adjuncts Recommendation --> - <xs:attribute name="encodingStyle" type="xs:anyURI"/> - <xs:element name="Fault" type="tns:Fault"/> - <xs:complexType name="Fault" final="extension"> - <xs:annotation> - <xs:documentation> - Fault reporting structure - </xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Code" type="tns:faultcode"/> - <xs:element name="Reason" type="tns:faultreason"/> - <xs:element name="Node" type="xs:anyURI" minOccurs="0"/> - <xs:element name="Role" type="xs:anyURI" minOccurs="0"/> - <xs:element name="Detail" type="tns:detail" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="faultreason"> - <xs:sequence> - <xs:element name="Text" type="tns:reasontext" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="reasontext"> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute ref="xml:lang" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="faultcode"> - <xs:sequence> - <xs:element name="Value" type="tns:faultcodeEnum"/> - <xs:element name="Subcode" type="tns:subcode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="faultcodeEnum"> - <xs:restriction base="xs:QName"> - <xs:enumeration value="tns:DataEncodingUnknown"/> - <xs:enumeration value="tns:MustUnderstand"/> - <xs:enumeration value="tns:Receiver"/> - <xs:enumeration value="tns:Sender"/> - <xs:enumeration value="tns:VersionMismatch"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="subcode"> - <xs:sequence> - <xs:element name="Value" type="xs:QName"/> - <xs:element name="Subcode" type="tns:subcode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="detail"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <!-- Global element declaration and complex type definition for header entry returned due to a mustUnderstand fault --> - <xs:element name="NotUnderstood" type="tns:NotUnderstoodType"/> - <xs:complexType name="NotUnderstoodType"> - <xs:attribute name="qname" type="xs:QName" use="required"/> - </xs:complexType> - <!-- Global element and associated types for managing version transition as described in Appendix A of the SOAP Version 1.2 Part 1 Recommendation --> - <xs:complexType name="SupportedEnvType"> - <xs:attribute name="qname" type="xs:QName" use="required"/> - </xs:complexType> - <xs:element name="Upgrade" type="tns:UpgradeType"/> - <xs:complexType name="UpgradeType"> - <xs:sequence> - <xs:element name="SupportedEnvelope" type="tns:SupportedEnvType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd b/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd deleted file mode 100644 index 1e25e015f..000000000 --- a/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2006/05/addressing/wsdl" targetNamespace="http://www.w3.org/2006/05/addressing/wsdl" elementFormDefault="qualified" blockDefault="#all"> - <xs:element name="ServiceName" type="tns:ServiceNameType"/> - <xs:complexType name="ServiceNameType"> - <xs:simpleContent> - <xs:extension base="xs:QName"> - <xs:attribute name="EndpointName" type="xs:NCName" use="optional"/> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="InterfaceName" type="tns:AttributedQNameType"/> - <xs:complexType name="AttributedQNameType"> - <xs:simpleContent> - <xs:extension base="xs:QName"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:attribute name="Action" type="xs:anyURI"/> - <xs:element name="UsingAddressing"> - <xs:complexType> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - </xs:element> - <xs:simpleType name="AnonymousType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="optional"/> - <xs:enumeration value="required"/> - <xs:enumeration value="prohibited"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="Anonymous"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="tns:AnonymousType"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-addr.xsd b/xta-adapter/src/main/xsd/ws-addr.xsd deleted file mode 100644 index 0de771f70..000000000 --- a/xta-adapter/src/main/xsd/ws-addr.xsd +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2005/08/addressing" targetNamespace="http://www.w3.org/2005/08/addressing" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> - <!-- Constructs from the WS-Addressing Core --> - <xs:element name="EndpointReference" type="tns:EndpointReferenceType"/> - <xs:complexType name="EndpointReferenceType" mixed="false"> - <xs:sequence> - <xs:element name="Address" type="tns:AttributedURIType"/> - <xs:element name="ReferenceParameters" type="tns:ReferenceParametersType" minOccurs="0"/> - <xs:element ref="tns:Metadata" minOccurs="0"/> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:complexType name="ReferenceParametersType" mixed="false"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="Metadata" type="tns:MetadataType"/> - <xs:complexType name="MetadataType" mixed="false"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="MessageID" type="tns:AttributedURIType"/> - <xs:element name="RelatesTo" type="tns:RelatesToType"/> - <xs:complexType name="RelatesToType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional" default="http://www.w3.org/2005/08/addressing/reply"/> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="RelationshipTypeOpenEnum"> - <xs:union memberTypes="tns:RelationshipType xs:anyURI"/> - </xs:simpleType> - <xs:simpleType name="RelationshipType"> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.w3.org/2005/08/addressing/reply"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="ReplyTo" type="tns:EndpointReferenceType"/> - <xs:element name="From" type="tns:EndpointReferenceType"/> - <xs:element name="FaultTo" type="tns:EndpointReferenceType"/> - <xs:element name="To" type="tns:AttributedURIType"/> - <xs:element name="Action" type="tns:AttributedURIType"/> - <xs:complexType name="AttributedURIType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <!-- Constructs from the WS-Addressing SOAP binding --> - <xs:attribute name="IsReferenceParameter" type="xs:boolean"/> - <xs:simpleType name="FaultCodesOpenEnumType"> - <xs:union memberTypes="tns:FaultCodesType xs:QName"/> - </xs:simpleType> - <xs:simpleType name="FaultCodesType"> - <xs:restriction base="xs:QName"> - <xs:enumeration value="tns:InvalidAddressingHeader"/> - <xs:enumeration value="tns:InvalidAddress"/> - <xs:enumeration value="tns:InvalidEPR"/> - <xs:enumeration value="tns:InvalidCardinality"/> - <xs:enumeration value="tns:MissingAddressInEPR"/> - <xs:enumeration value="tns:DuplicateMessageID"/> - <xs:enumeration value="tns:ActionMismatch"/> - <xs:enumeration value="tns:MessageAddressingHeaderRequired"/> - <xs:enumeration value="tns:DestinationUnreachable"/> - <xs:enumeration value="tns:ActionNotSupported"/> - <xs:enumeration value="tns:EndpointUnavailable"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType"/> - <xs:complexType name="AttributedUnsignedLongType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:unsignedLong"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType"/> - <xs:complexType name="AttributedQNameType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:QName"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="ProblemHeader" type="tns:AttributedAnyType"/> - <xs:complexType name="AttributedAnyType" mixed="false"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="ProblemIRI" type="tns:AttributedURIType"/> - <xs:element name="ProblemAction" type="tns:ProblemActionType"/> - <xs:complexType name="ProblemActionType" mixed="false"> - <xs:sequence> - <xs:element ref="tns:Action" minOccurs="0"/> - <xs:element name="SoapAction" type="xs:anyURI" minOccurs="0"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-policy.xsd b/xta-adapter/src/main/xsd/ws-policy.xsd deleted file mode 100644 index 90f71e886..000000000 --- a/xta-adapter/src/main/xsd/ws-policy.xsd +++ /dev/null @@ -1,141 +0,0 @@ -<?xml version='1.0' encoding='utf-8' ?> -<!-- - - W3C XML Schema defined in the Web Services Policy 1.5 - Framework specification - - http://www.w3.org/TR/ws-policy-framework - - Copyright © 2006 World Wide Web Consortium, - - (Massachusetts Institute of Technology, European Research Consortium for - Informatics and Mathematics, Keio University). All Rights Reserved. This - work is distributed under the W3C® Software License [1] in the hope that - it will be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 - - $Id: ws-policy.xsd,v 1.2 2013/01/22 15:18:58 lindemann Exp $ ---> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:tns="http://www.w3.org/ns/ws-policy" - xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" - xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" - targetNamespace="http://www.w3.org/ns/ws-policy" blockDefault="#all" - elementFormDefault="qualified"> - - <xs:import - namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" - schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd" /> - - <xs:import - namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" - schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd" /> - - <xs:import - namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="xml.xsd" /> - - <!-- Constructs from the Web Services Policy 1.5 Framework --> - - <xs:element name="Policy" > - <xs:complexType> - - <xs:complexContent> - <xs:extension base="tns:OperatorContentType" > - <xs:attribute name="Name" type="xs:anyURI" /> - <xs:anyAttribute namespace="##any" processContents="lax" /> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="All" type="tns:OperatorContentType" /> - <xs:element name="ExactlyOne" type="tns:OperatorContentType" /> - - <xs:complexType name="OperatorContentType" > - <xs:sequence> - <xs:choice minOccurs="0" maxOccurs="unbounded" > - <xs:element ref="tns:Policy" /> - <xs:element ref="tns:All" /> - <xs:element ref="tns:ExactlyOne" /> - - <xs:element ref="tns:PolicyReference" /> - <xs:any namespace="##other" processContents="lax" /> - </xs:choice> - </xs:sequence> - </xs:complexType> - - <xs:element name="PolicyReference" > - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="URI" type="xs:anyURI" use="required" /> - - <xs:attribute name="Digest" type="xs:base64Binary" /> - <xs:attribute name="DigestAlgorithm" - type="xs:anyURI" - default="http://www.w3.org/ns/ws-policy/Sha1Exc" - /> - <xs:anyAttribute namespace="##any" processContents="lax" /> - </xs:complexType> - </xs:element> - - <xs:attribute name="Optional" type="xs:boolean" default="false" /> - <xs:attribute name="Ignorable" type="xs:boolean" default="false" /> - - <!-- Constructs from the Web Services Policy 1.5 Attachment --> - - <xs:attribute name="PolicyURIs" > - <xs:simpleType> - <xs:list itemType="xs:anyURI" /> - </xs:simpleType> - </xs:attribute> - - <xs:element name="PolicyAttachment" > - <xs:complexType> - <xs:sequence> - - <xs:element ref="tns:AppliesTo" /> - <xs:choice maxOccurs="unbounded" > - <xs:element ref="tns:Policy" /> - <xs:element ref="tns:PolicyReference" /> - </xs:choice> - <!-- omitted only because it causes the content model to be non-determistic - <xs:element ref="wsse:Security" minOccurs="0" /> ---> - <xs:any namespace="##other" - processContents="lax" - minOccurs="0" - maxOccurs="unbounded" /> - </xs:sequence> - <xs:anyAttribute namespace="##any" processContents="lax" /> - - </xs:complexType> - </xs:element> - - <xs:element name="AppliesTo" > - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" - processContents="lax" - maxOccurs="unbounded" /> - </xs:sequence> - <xs:anyAttribute namespace="##any" processContents="lax" /> - - </xs:complexType> - </xs:element> - - <xs:element name="URI"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:anyAttribute namespace="##any" processContents="lax" /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - -</xs:schema> diff --git a/xta-adapter/src/main/xsd/xenc-schema.xsd b/xta-adapter/src/main/xsd/xenc-schema.xsd deleted file mode 100644 index 3f0b4bf0e..000000000 --- a/xta-adapter/src/main/xsd/xenc-schema.xsd +++ /dev/null @@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified" version="1.0"> - <import namespace='http://www.w3.org/2000/09/xmldsig#' schemaLocation='xmldsig-core-schema.xsd'/> - <complexType name="EncryptedType" abstract="true"> - <sequence> - <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/> - <element ref="ds:KeyInfo" minOccurs="0"/> - <element ref="xenc:CipherData"/> - <element ref="xenc:EncryptionProperties" minOccurs="0"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="Type" type="anyURI" use="optional"/> - <attribute name="MimeType" type="string" use="optional"/> - <attribute name="Encoding" type="anyURI" use="optional"/> - </complexType> - <complexType name="EncryptionMethodType" mixed="true"> - <sequence> - <element name="KeySize" type="xenc:KeySizeType" minOccurs="0"/> - <element name="OAEPparams" type="base64Binary" minOccurs="0"/> - <!-- note that optional xenc11:MGF element may be used here for - RSA-OAEP, when appropriate --> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - <simpleType name="KeySizeType"> - <restriction base="integer"/> - </simpleType> - <element name="CipherData" type="xenc:CipherDataType"/> - <complexType name="CipherDataType"> - <choice> - <element name="CipherValue" type="base64Binary"/> - <element ref="xenc:CipherReference"/> - </choice> - </complexType> - <element name="CipherReference" type="xenc:CipherReferenceType"/> - <complexType name="CipherReferenceType"> - <choice> - <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/> - </choice> - <attribute name="URI" type="anyURI" use="required"/> - </complexType> - <complexType name="TransformsType"> - <sequence> - <element ref="ds:Transform" maxOccurs="unbounded"/> - </sequence> - </complexType> - <element name="EncryptedData" type="xenc:EncryptedDataType"/> - <complexType name="EncryptedDataType"> - <complexContent> - <extension base="xenc:EncryptedType"/> - </complexContent> - </complexType> - <!-- Children of ds:KeyInfo --> - <element name="EncryptedKey" type="xenc:EncryptedKeyType"/> - <complexType name="EncryptedKeyType"> - <complexContent> - <extension base="xenc:EncryptedType"> - <sequence> - <element ref="xenc:ReferenceList" minOccurs="0"/> - <element name="CarriedKeyName" type="string" minOccurs="0"/> - </sequence> - <attribute name="Recipient" type="string" use="optional"/> - </extension> - </complexContent> - </complexType> - <element name="AgreementMethod" type="xenc:AgreementMethodType"/> - <complexType name="AgreementMethodType" mixed="true"> - <sequence> - <element name="KA-Nonce" type="base64Binary" minOccurs="0"/> - <!-- <element ref="ds:DigestMethod" minOccurs="0"/> --> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - <element name="OriginatorKeyInfo" type="ds:KeyInfoType" minOccurs="0"/> - <element name="RecipientKeyInfo" type="ds:KeyInfoType" minOccurs="0"/> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - <!-- End Children of ds:KeyInfo --> - <element name="ReferenceList"> - <complexType> - <choice maxOccurs="unbounded"> - <element name="DataReference" type="xenc:ReferenceType"/> - <element name="KeyReference" type="xenc:ReferenceType"/> - </choice> - </complexType> - </element> - <complexType name="ReferenceType"> - <sequence> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="URI" type="anyURI" use="required"/> - </complexType> - <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/> - <complexType name="EncryptionPropertiesType"> - <sequence> - <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - </complexType> - <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/> - <complexType name="EncryptionPropertyType" mixed="true"> - <choice maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - </choice> - <attribute name="Target" type="anyURI" use="optional"/> - <attribute name="Id" type="ID" use="optional"/> - <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/> - </complexType> - <!-- Children of ds:KeyValue --> - <element name="DHKeyValue" type="xenc:DHKeyValueType"/> - <complexType name="DHKeyValueType"> - <sequence> - <sequence minOccurs="0"> - <element name="P" type="ds:CryptoBinary"/> - <element name="Q" type="ds:CryptoBinary"/> - <element name="Generator" type="ds:CryptoBinary"/> - </sequence> - <element name="Public" type="ds:CryptoBinary"/> - <sequence minOccurs="0"> - <element name="seed" type="ds:CryptoBinary"/> - <element name="pgenCounter" type="ds:CryptoBinary"/> - </sequence> - </sequence> - </complexType> - <!-- End Children of ds:KeyValue --> -</schema> diff --git a/xta-adapter/src/main/xsd/xml.xsd b/xta-adapter/src/main/xsd/xml.xsd deleted file mode 100644 index 77bfc7afb..000000000 --- a/xta-adapter/src/main/xsd/xml.xsd +++ /dev/null @@ -1,145 +0,0 @@ -<?xml version='1.0'?> -<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> - - <xs:annotation> - <xs:documentation> - See http://www.w3.org/XML/1998/namespace.html and - http://www.w3.org/TR/REC-xml for information about this namespace. - - This schema document describes the XML namespace, in a form - suitable for import by other schema documents. - - Note that local names in this namespace are intended to be defined - only by the World Wide Web Consortium or its subgroups. The - following names are currently defined in this namespace and should - not be used with conflicting semantics by any Working Group, - specification, or document instance: - - base (as an attribute name): denotes an attribute whose value - provides a URI to be used as the base for interpreting any - relative URIs in the scope of the element on which it - appears; its value is inherited. This name is reserved - by virtue of its definition in the XML Base specification. - - id (as an attribute name): denotes an attribute whose value - should be interpreted as if declared to be of type ID. - This name is reserved by virtue of its definition in the - xml:id specification. - - lang (as an attribute name): denotes an attribute whose value - is a language code for the natural language of the content of - any element; its value is inherited. This name is reserved - by virtue of its definition in the XML specification. - - space (as an attribute name): denotes an attribute whose - value is a keyword indicating what whitespace processing - discipline is intended for the content of the element; its - value is inherited. This name is reserved by virtue of its - definition in the XML specification. - - Father (in any context at all): denotes Jon Bosak, the chair of - the original XML Working Group. This name is reserved by - the following decision of the W3C XML Plenary and - XML Coordination groups: - - In appreciation for his vision, leadership and dedication - the W3C XML Plenary on this 10th day of February, 2000 - reserves for Jon Bosak in perpetuity the XML name - xml:Father - </xs:documentation> - </xs:annotation> - - <xs:annotation> - <xs:documentation>This schema defines attributes and an attribute group - suitable for use by - schemas wishing to allow xml:base, xml:lang, xml:space or xml:id - attributes on elements they define. - - To enable this, such a schema must import this schema - for the XML namespace, e.g. as follows: - <schema . . .> - . . . - <import namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="http://www.w3.org/2001/xml.xsd"/> - - Subsequently, qualified reference to any of the attributes - or the group defined below will have the desired effect, e.g. - - <type . . .> - . . . - <attributeGroup ref="xml:specialAttrs"/> - - will define a type which will schema-validate an instance - element with any of those attributes</xs:documentation> - </xs:annotation> - - <xs:annotation> - <xs:documentation>In keeping with the XML Schema WG's standard versioning - policy, this schema document will persist at - http://www.w3.org/2007/08/xml.xsd. - At the date of issue it can also be found at - http://www.w3.org/2001/xml.xsd. - The schema document at that URI may however change in the future, - in order to remain compatible with the latest version of XML Schema - itself, or with the XML namespace itself. In other words, if the XML - Schema or XML namespaces change, the version of this document at - http://www.w3.org/2001/xml.xsd will change - accordingly; the version at - http://www.w3.org/2007/08/xml.xsd will not change. - </xs:documentation> - </xs:annotation> - - <xs:attribute name="lang"> - <xs:annotation> - <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter - codes as the enumerated possible values is probably never - going to be a realistic possibility. See - RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry - at http://www.iana.org/assignments/lang-tag-apps.htm for - further information. - - The union allows for the 'un-declaration' of xml:lang with - the empty string.</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:union memberTypes="xs:language"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value=""/> - </xs:restriction> - </xs:simpleType> - </xs:union> - </xs:simpleType> - </xs:attribute> - - <xs:attribute name="space"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="default"/> - <xs:enumeration value="preserve"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - - <xs:attribute name="base" type="xs:anyURI"> - <xs:annotation> - <xs:documentation>See http://www.w3.org/TR/xmlbase/ for - information about this attribute.</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:ID"> - <xs:annotation> - <xs:documentation>See http://www.w3.org/TR/xml-id/ for - information about this attribute.</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attributeGroup name="specialAttrs"> - <xs:attribute ref="xml:base"/> - <xs:attribute ref="xml:lang"/> - <xs:attribute ref="xml:space"/> - <xs:attribute ref="xml:id"/> - </xs:attributeGroup> - -</xs:schema> diff --git a/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd b/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd deleted file mode 100644 index 74158b85f..000000000 --- a/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd +++ /dev/null @@ -1,293 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:ds="http://www.w3.org/2000/09/xmldsig#" - targetNamespace="http://www.w3.org/2000/09/xmldsig#" - version="0.1" elementFormDefault="qualified"> - -<!-- Basic Types Defined for Signatures --> - -<simpleType name="CryptoBinary"> - <restriction base="base64Binary"> - </restriction> -</simpleType> - -<!-- Start Signature --> - -<element name="Signature" type="ds:SignatureType"/> -<complexType name="SignatureType"> - <sequence> - <element ref="ds:SignedInfo"/> - <element ref="ds:SignatureValue"/> - <element ref="ds:KeyInfo" minOccurs="0"/> - <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="SignatureValue" type="ds:SignatureValueType"/> - <complexType name="SignatureValueType"> - <simpleContent> - <extension base="base64Binary"> - <attribute name="Id" type="ID" use="optional"/> - </extension> - </simpleContent> - </complexType> - -<!-- Start SignedInfo --> - -<element name="SignedInfo" type="ds:SignedInfoType"/> -<complexType name="SignedInfoType"> - <sequence> - <element ref="ds:CanonicalizationMethod"/> - <element ref="ds:SignatureMethod"/> - <element ref="ds:Reference" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> - <complexType name="CanonicalizationMethodType" mixed="true"> - <sequence> - <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> - <!-- (0,unbounded) elements from (1,1) namespace --> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - - <element name="SignatureMethod" type="ds:SignatureMethodType"/> - <complexType name="SignatureMethodType" mixed="true"> - <sequence> - <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - <!-- (0,unbounded) elements from (1,1) external namespace --> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - -<!-- Start Reference --> - -<element name="Reference" type="ds:ReferenceType"/> -<complexType name="ReferenceType"> - <sequence> - <element ref="ds:Transforms" minOccurs="0"/> - <element ref="ds:DigestMethod"/> - <element ref="ds:DigestValue"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="URI" type="anyURI" use="optional"/> - <attribute name="Type" type="anyURI" use="optional"/> -</complexType> - - <element name="Transforms" type="ds:TransformsType"/> - <complexType name="TransformsType"> - <sequence> - <element ref="ds:Transform" maxOccurs="unbounded"/> - </sequence> - </complexType> - - <element name="Transform" type="ds:TransformType"/> - <complexType name="TransformType" mixed="true"> - <choice minOccurs="0" maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - <!-- (1,1) elements from (0,unbounded) namespaces --> - <element name="XPath" type="string"/> - </choice> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - -<!-- End Reference --> - -<element name="DigestMethod" type="ds:DigestMethodType"/> -<complexType name="DigestMethodType" mixed="true"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> -</complexType> - -<element name="DigestValue" type="ds:DigestValueType"/> -<simpleType name="DigestValueType"> - <restriction base="base64Binary"/> -</simpleType> - -<!-- End SignedInfo --> - -<!-- Start KeyInfo --> - -<element name="KeyInfo" type="ds:KeyInfoType"/> -<complexType name="KeyInfoType" mixed="true"> - <choice maxOccurs="unbounded"> - <element ref="ds:KeyName"/> - <element ref="ds:KeyValue"/> - <element ref="ds:RetrievalMethod"/> - <element ref="ds:X509Data"/> - <element ref="ds:PGPData"/> - <element ref="ds:SPKIData"/> - <element ref="ds:MgmtData"/> - <any processContents="lax" namespace="##other"/> - <!-- (1,1) elements from (0,unbounded) namespaces --> - </choice> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="KeyName" type="string"/> - <element name="MgmtData" type="string"/> - - <element name="KeyValue" type="ds:KeyValueType"/> - <complexType name="KeyValueType" mixed="true"> - <choice> - <element ref="ds:DSAKeyValue"/> - <element ref="ds:RSAKeyValue"/> - <any namespace="##other" processContents="lax"/> - </choice> - </complexType> - - <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> - <complexType name="RetrievalMethodType"> - <sequence> - <element ref="ds:Transforms" minOccurs="0"/> - </sequence> - <attribute name="URI" type="anyURI"/> - <attribute name="Type" type="anyURI" use="optional"/> - </complexType> - -<!-- Start X509Data --> - -<element name="X509Data" type="ds:X509DataType"/> -<complexType name="X509DataType"> - <sequence maxOccurs="unbounded"> - <choice> - <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/> - <element name="X509SKI" type="base64Binary"/> - <element name="X509SubjectName" type="string"/> - <element name="X509Certificate" type="base64Binary"/> - <element name="X509CRL" type="base64Binary"/> - <any namespace="##other" processContents="lax"/> - </choice> - </sequence> -</complexType> - -<complexType name="X509IssuerSerialType"> - <sequence> - <element name="X509IssuerName" type="string"/> - <element name="X509SerialNumber" type="integer"/> - </sequence> -</complexType> - -<!-- End X509Data --> - -<!-- Begin PGPData --> - -<element name="PGPData" type="ds:PGPDataType"/> -<complexType name="PGPDataType"> - <choice> - <sequence> - <element name="PGPKeyID" type="base64Binary"/> - <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> - <any namespace="##other" processContents="lax" minOccurs="0" - maxOccurs="unbounded"/> - </sequence> - <sequence> - <element name="PGPKeyPacket" type="base64Binary"/> - <any namespace="##other" processContents="lax" minOccurs="0" - maxOccurs="unbounded"/> - </sequence> - </choice> -</complexType> - -<!-- End PGPData --> - -<!-- Begin SPKIData --> - -<element name="SPKIData" type="ds:SPKIDataType"/> -<complexType name="SPKIDataType"> - <sequence maxOccurs="unbounded"> - <element name="SPKISexp" type="base64Binary"/> - <any namespace="##other" processContents="lax" minOccurs="0"/> - </sequence> -</complexType> - -<!-- End SPKIData --> - -<!-- End KeyInfo --> - -<!-- Start Object (Manifest, SignatureProperty) --> - -<element name="Object" type="ds:ObjectType"/> -<complexType name="ObjectType" mixed="true"> - <sequence minOccurs="0" maxOccurs="unbounded"> - <any namespace="##any" processContents="lax"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet --> - <attribute name="Encoding" type="anyURI" use="optional"/> -</complexType> - -<element name="Manifest" type="ds:ManifestType"/> -<complexType name="ManifestType"> - <sequence> - <element ref="ds:Reference" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - -<element name="SignatureProperties" type="ds:SignaturePropertiesType"/> -<complexType name="SignaturePropertiesType"> - <sequence> - <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="SignatureProperty" type="ds:SignaturePropertyType"/> - <complexType name="SignaturePropertyType" mixed="true"> - <choice maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - <!-- (1,1) elements from (1,unbounded) namespaces --> - </choice> - <attribute name="Target" type="anyURI" use="required"/> - <attribute name="Id" type="ID" use="optional"/> - </complexType> - -<!-- End Object (Manifest, SignatureProperty) --> - -<!-- Start Algorithm Parameters --> - -<simpleType name="HMACOutputLengthType"> - <restriction base="integer"/> -</simpleType> - -<!-- Start KeyValue Element-types --> - -<element name="DSAKeyValue" type="ds:DSAKeyValueType"/> -<complexType name="DSAKeyValueType"> - <sequence> - <sequence minOccurs="0"> - <element name="P" type="ds:CryptoBinary"/> - <element name="Q" type="ds:CryptoBinary"/> - </sequence> - <element name="G" type="ds:CryptoBinary" minOccurs="0"/> - <element name="Y" type="ds:CryptoBinary"/> - <element name="J" type="ds:CryptoBinary" minOccurs="0"/> - <sequence minOccurs="0"> - <element name="Seed" type="ds:CryptoBinary"/> - <element name="PgenCounter" type="ds:CryptoBinary"/> - </sequence> - </sequence> -</complexType> - -<element name="RSAKeyValue" type="ds:RSAKeyValueType"/> -<complexType name="RSAKeyValueType"> - <sequence> - <element name="Modulus" type="ds:CryptoBinary"/> - <element name="Exponent" type="ds:CryptoBinary"/> - </sequence> -</complexType> - -<!-- End KeyValue Element-types --> - -<!-- End Signature --> - -</schema> diff --git a/xta-adapter/src/main/xsd/xmlmime.xsd b/xta-adapter/src/main/xsd/xmlmime.xsd deleted file mode 100644 index 351ad27d2..000000000 --- a/xta-adapter/src/main/xsd/xmlmime.xsd +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" ?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:xmime="http://www.w3.org/2005/05/xmlmime" - targetNamespace="http://www.w3.org/2005/05/xmlmime" > - - <xs:attribute name="contentType"> - <xs:simpleType> - <xs:restriction base="xs:string" > - <xs:minLength value="3" /> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - - <xs:attribute name="expectedContentTypes" type="xs:string" /> - - <xs:complexType name="base64Binary" > - <xs:simpleContent> - <xs:extension base="xs:base64Binary" > - <xs:attribute ref="xmime:contentType" /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:complexType name="hexBinary" > - <xs:simpleContent> - <xs:extension base="xs:hexBinary" > - <xs:attribute ref="xmime:contentType" /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - -</xs:schema> \ No newline at end of file diff --git a/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd b/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd deleted file mode 100644 index 4da4268bf..000000000 --- a/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://xoev.de/schemata/basisdatentypen/1_1" version="1.1" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <xs:complexType name="Code"> - <xs:annotation> - <xs:appinfo> - <title>Datentyp für die Übermittlung von Codes</title> - </xs:appinfo> - <xs:documentation>Datentyp für die Übermittlung von Codes (vgl. XÖV-Handbuch).</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified" /> - <xs:element name="name" minOccurs="0" type="xs:normalizedString" form="unqualified" /> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="optional" /> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional" /> - </xs:complexType> -</xs:schema> - diff --git a/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd b/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd deleted file mode 100644 index 9e3cee807..000000000 --- a/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema targetNamespace="http://xoev.de/schemata/basisdatentypen/1_0" version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_0"> - <xs:complexType name="Code"> - <xs:annotation> - <xs:appinfo> - <title>Datentyp für die Übermittlung von Codes</title> - </xs:appinfo> - <xs:documentation>Datentyp für die Übermittlung von Codes (vgl. XÖV-Handbuch).</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - </xs:element> - <xs:element name="name" minOccurs="0" type="xs:normalizedString" form="unqualified"> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="optional"> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional"> - </xs:attribute> - </xs:complexType> - <xs:simpleType name="String.Latin"> - <xs:annotation> - <xs:appinfo> - <title>Datentyp für lateinische Zeichen in Unicode</title> - </xs:appinfo> - <xs:documentation>Einschränkung auf alle lateinischen Zeichen innerhalb Unicode (vgl. XÖV-Handbuch).</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:normalizedString"> - <xs:pattern value="[	-

 -~¡-¬®-ıĴ-ſƇ-ƈƏƠ-ơƯ-ưƷƿǍ-ǔǞ-ǟǢ-ǯǴ-ǵǷǺ-ȟȪ-ȳəʒḂ-ḃḊ-ḋḐ-ḑḞ-ḡḤ-ḧḰ-ḱṀ-ṁṄ-ṅṖ-ṗṠ-ṣṪ-ṫẀ-ẅẌ-ẓẛẞẠ-ạẪ-ẬẽỄ-ễỊ-ỏỖ-ỗỤ-ụỲ-ỳỸ-ỹ€]*"/> - </xs:restriction> - </xs:simpleType> -</xs:schema> diff --git a/xta-adapter/src/test/helm-linter-values.yaml b/xta-adapter/src/test/helm-linter-values.yaml deleted file mode 100644 index e6f0a3830..000000000 --- a/xta-adapter/src/test/helm-linter-values.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# -# 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. -# - -ozgcloud: - environment: test - bezeichner: helm - bundesland: by - - -networkPolicy: - dnsServerNamespace: test-dns-server-namespace -imagePullSecret: image-pull-secret \ No newline at end of file diff --git a/xta-adapter/src/test/helm/network_policy_test.yaml b/xta-adapter/src/test/helm/network_policy_test.yaml deleted file mode 100644 index 3c657ac2f..000000000 --- a/xta-adapter/src/test/helm/network_policy_test.yaml +++ /dev/null @@ -1,239 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -suite: network policy test -release: - namespace: by-helm-test -templates: - - templates/network_policy.yaml - -tests: - - it: should match apiVersion - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - isAPIVersion: - of: networking.k8s.io/v1 - - it: should match kind - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - isKind: - of: NetworkPolicy - - it: validate metadata - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - equal: - path: metadata - value: - name: network-policy-xta-adapter - namespace: by-helm-test - - it: validate spec - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - equal: - path: spec - value: - podSelector: - matchLabels: - ozg-component: xta-adapter - policyTypes: - - Egress - egress: - - to: - - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: test-dns-namespace - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - port: 5353 - protocol: UDP - - port: 5353 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: ssh-port-forward - ports: - - port: 443 - protocol: TCP - - port: 80 - protocol: TCP - - port: 9000 - protocol: TCP - - - it: add egress rules by values local - set: - networkPolicy: - ssoPublicIp: 51.89.117.53/32 - dnsServerNamespace: test-dns-namespace - additionalEgressConfigLocal: - - to: - - ipBlock: - cidr: 1.2.3.4/32 - asserts: - - contains: - path: spec.egress - content: - to: - - ipBlock: - cidr: 1.2.3.4/32 - - it: add egress rules by values global - set: - networkPolicy: - ssoPublicIp: 51.89.117.53/32 - dnsServerNamespace: test-dns-namespace - additionalEgressConfigGlobal: - - to: - - ipBlock: - cidr: 1.2.3.4/32 - asserts: - - contains: - path: spec.egress - content: - to: - - ipBlock: - cidr: 1.2.3.4/32 - - - it: test network policy disabled - set: - networkPolicy: - disabled: true - asserts: - - hasDocuments: - count: 0 - - - it: test network policy unset should be disabled - set: - networkPolicy: - disabled: false - dnsServerNamespace: test-dns-namespace - asserts: - - hasDocuments: - count: 1 - - it: test network policy dnsServerNamespace must be set message - set: - networkPolicy: - disabled: false - asserts: - - failedTemplate: - errorMessage: networkPolicy.dnsServerNamespace must be set - - - it: test network policy should be enabled by default - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - asserts: - - hasDocuments: - count: 1 - - - it: should add zufi rules when zufi-routing is enabled - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - routingStrategy: ZUFI - zufiManager: - namespace: zufi-namespace - asserts: - - contains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - ports: - - port: 9090 - protocol: TCP - - contains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - - it: should throw error when zufi is enabled but zufi namespace not set - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - routingStrategy: ZUFI - asserts: - - failedTemplate: - errorMessage: routing.zufiManager.namespace must be set if routingStrategy=ZUFI - - - it: should not add zufi rule when zufi-routing is disabled - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - zufiManager: - namespace: zufi-namespace - asserts: - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP diff --git a/xta-adapter/src/test/helm/service_account_test.yaml b/xta-adapter/src/test/helm/service_account_test.yaml deleted file mode 100644 index 6922bc9d6..000000000 --- a/xta-adapter/src/test/helm/service_account_test.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# -# 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. -# - -suite: test service account -release: - name: xta-adapter - namespace: sh-helm-test -templates: - - templates/service_account.yaml -tests: - - it: should create service account with default name - set: - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: xta-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should create service account with name - set: - serviceAccount: - create: true - name: helm-service-account - asserts: - - isKind: - of: ServiceAccount - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: helm-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should not create service account - asserts: - - hasDocuments: - count: 0 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml b/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml deleted file mode 100644 index 8513b4edf..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# -# 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. -# - -suite: test less than 63 chars -release: - name: xta-adapter - namespace: sh-helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -chart: - name: xta-adapter - -templates: - - templates/xta_adapter_cronjob.yaml - -tests: - - it: should fail on .Release.Namespace length longer than 63 characters - release: - namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 - asserts: - - failedTemplate: - errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) - - it: should not fail on .Release.Namespace length less than 63 characters - asserts: - - notFailedTemplate: {} - - it: should fail on .Chart.Name-.Chart.Version length longer than 63 characters - chart: - version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 - asserts: - - failedTemplate: - errorMessage: .Chart.Name-.Chart.Version xta-adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) - - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters - asserts: - - notFailedTemplate: {} \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml deleted file mode 100644 index 975473633..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml +++ /dev/null @@ -1,148 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -suite: test xta adapter cronjob basics -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: dev - imagePullSecret: image-pull-secret - -tests: - - it: validate basic data - set: - image.name: xta-adapter - asserts: - - containsDocument: - kind: CronJob - apiVersion: batch/v1 - - equal: - path: metadata.name - value: xta-adapter - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: spec.successfulJobsHistoryLimit - value: 3 - - equal: - path: spec.failedJobsHistoryLimit - value: 3 - - equal: - path: spec.concurrencyPolicy - value: Forbid - - it: check set schedule - set: - image.name: xta-adapter - xta: - schedule: "1 1 * * * *" - identifiers: - - gae:test@ozg-sh.de - server: - address: 1.2.3.4 - name: test - asserts: - - equal: - path: spec.schedule - value: "1 1 * * * *" - - it: check dev schedule - set: - image.name: xta-adapter - asserts: - - equal: - path: spec.schedule - value: "*/15 * * * *" - - it: check container image - set: - image.name: xta-adapter - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].image - value: "docker.ozg-sh.de/xta-adapter:9.9.99" - - - it: check securityContext - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation - value: false - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.privileged - value: false - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem - value: false - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsNonRoot - value: true - - isNull: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser - - isNull: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup - - isNull: - path: spec.jobTemplate.spec.template.spec.securityContext.fsGroup - - isNull: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.capabilities - - it: check runAsUser - set: - securityContext.runAsUser: 1000 - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser - value: 1000 - - it: check runAsGroup - set: - securityContext.runAsGroup: 1000 - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup - value: 1000 - - it: check pod labels - asserts: - - equal: - path: spec.jobTemplate.spec.template.metadata.labels - value: - ozg-component: xta-adapter - workload: xta-adapter-cronjob - - it: check fsGroup - set: - podSecurityContext.fsGroup: 1000 - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.securityContext.fsGroup - value: 1000 - - it: check capabilities - set: - securityContext: - capabilities: - drop: - - ALL - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.capabilities - value: - drop: - - ALL diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml deleted file mode 100644 index 9305d2d92..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# -# 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. -# - -suite: xta-adapter bindings -templates: - - templates/xta_adapter_cronjob.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should have temp-dir volume - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: temp-dir - mountPath: "/tmp" - - - it: should have temp-dir volume mount - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: temp-dir - emptyDir: {} - diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml deleted file mode 100644 index 6248215b8..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml +++ /dev/null @@ -1,85 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -suite: test xta adapter cronjob dummy probes -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check dummy livenessProbe default disabled - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe - - it: check dummy startupProbe default disabled - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe - - it: check dummy readynessProbe default disabled - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe - - - it: check dummy livenessProbe disabled - set: - dummyProbesEnabled: false - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe - - it: check dummy startupProbe disabled - set: - dummyProbesEnabled: false - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe - - it: check dummy readynessProbe disabled - set: - dummyProbesEnabled: false - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe - - - - it: check dummy livenessProbe enabled - set: - dummyProbesEnabled: true - asserts: - - isNotEmpty: - path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe - - it: check dummy startupProbe enabled - set: - dummyProbesEnabled: true - asserts: - - isNotEmpty: - path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe - - it: check dummy readynessProbe enabled - set: - dummyProbesEnabled: true - asserts: - - isNotEmpty: - path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml deleted file mode 100644 index 464f030c7..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml +++ /dev/null @@ -1,202 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -suite: test xta adapter cronjob env -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check default env - set: - image.name: xta-adapter - xta: - identifiers: - - gae:test@ozg-sh.de - - afmsh:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - protocol: https - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: spring_profiles_active - value: "oc, test" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: SERVICE_BINDING_ROOT - value: "/bindings" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_server_name - value: "test" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_server_address - value: "1.2.3.4" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_server_protocol - value: "https" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_identifiers - value: "gae:test@ozg-sh.de,afmsh:test@ozg-sh.de" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_keystore_file - value: "keystore/xta-keystore.p12" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_keystore_password - valueFrom: - secretKeyRef: - name: "xta-keystore" - key: password - optional: false - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_fallbackStrategy - value: "DENY" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_routingStrategy - value: "SINGLE" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_targetVorgangManagerName - value: "vorgang-manager" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_address - value: 'dns:///vorgang-manager.helm-test:9090' - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_negotiationType - value: "PLAINTEXT" - - it: check set env values - set: - image.name: xta-adapter - env.overrideSpringProfiles: local - xta: - identifiers: - - gae:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - routing: - routingStrategy: MULTI - fallbackStrategy: FUNDSTELLE - negotiationType: TLS - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: spring_profiles_active - value: "local" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_fallbackStrategy - value: "FUNDSTELLE" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_routingStrategy - value: "MULTI" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_targetVorgangManagerName - value: "vorgang-manager" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_address - value: 'dns:///vorgang-manager.helm-test:9090' - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_negotiationType - value: "TLS" - - it: check customList as list - set: - env.customList: - - name: my_test_environment_name - value: "A test value" - - name: test_environment - value: "B test value" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: test_environment - value: "B test value" - - it: check customList as dict - set: - env.customList: - my_test_environment_name: "A test value" - test_environment: "B test value" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: test_environment - value: "B test value" - - - it: check customList test value is not set by default - asserts: - - notContains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml deleted file mode 100644 index 5e08828d8..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -suite: test xta adapter imagePull secret -release: - name: xta-adapter - namespace: sh-helm-test -templates: - - templates/xta_adapter_cronjob.yaml -set: - ozgcloud.environment: dev - -tests: - - it: should fail when imagePull secret not set - asserts: - - failedTemplate: - errormessage: imagePullSecret must be set - - it: should set the imagePull secret - set: - imagePullSecret: image-pull-secret - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.imagePullSecrets[0].name - value: image-pull-secret \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml deleted file mode 100644 index b1484117b..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -suite: test xta adapter cronjob resources -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: dev - imagePullSecret: image-pull-secret -tests: - - it: check resources - set: - resources: - limits: - cpu: "11m" - memory: "22Mi" - requests: - cpu: "33m" - memory: "44Mi" - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.cpu - value: "11m" - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.memory - value: "22Mi" - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.cpu - value: "33m" - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.memory - value: "44Mi" diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml deleted file mode 100644 index 1414a4e82..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml +++ /dev/null @@ -1,88 +0,0 @@ -# -# 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. -# - -suite: test deployment zufi routing -release: - name: intelliform-adapter - namespace: sh-helm-test -templates: - - templates/xta_adapter_cronjob.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should set zufi routing values when zufi is enabled - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - address: "127.0.0.1" - negotiationType: "TLS" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_address - value: "127.0.0.1" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - value: "TLS" - - - it: should not set zufi routing values when zufi is disabled - asserts: - - notContains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_address - any: true - - notContains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - any: true - - - it: should throw error if zufi manager address is not set - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - negotiationType: "PLAINTEXT" - asserts: - - failedTemplate: - errorMessage: "routing.zufiManager.address must be set when routingStrategy=ZUFI" - - - it: should set default value for zufi negotiationType - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - address: "127.0.0.1" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - value: "PLAINTEXT" \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml deleted file mode 100644 index 5906a05ac..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# -# 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. -# - -suite: test cronjob service account -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should use service account with default name - set: - serviceAccount: - create: true - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.serviceAccountName - value: xta-adapter-service-account - - it: should use service account with name - set: - serviceAccount: - create: true - name: helm-service-account - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.serviceAccountName - value: helm-service-account - - it: should use default service account - asserts: - - isNull: - path: spec.jobTemplate.spec.template.spec.serviceAccountName diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml deleted file mode 100644 index 653439ce7..000000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml +++ /dev/null @@ -1,93 +0,0 @@ -# -# Copyright (C) 2023 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. -# - -suite: test xta adapter cronjob volume -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: dev - imagePullSecret: image-pull-secret -tests: - - it: check volume mounts - set: - image.name: xta-adapter - xta: - identifiers: - - gae:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: bindings - mountPath: "/bindings/ca-certificates/type" - subPath: type - readOnly: true - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: xta-root-ca - mountPath: "/bindings/ca-certificates/xta-root-ca.crt" - subPath: ca.crt - readOnly: true - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: xta-keystore - mountPath: "/workspace/keystore/xta-keystore.p12" - subPath: file - readOnly: true - - it: check volumes - set: - image.name: xta-adapter - xta: - identifiers: - - gae:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: bindings - configMap: - name: xta-adapter-bindings-type - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: xta-root-ca - secret: - secretName: xta-root-ca - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: xta-keystore - secret: - secretName: xta-keystore diff --git a/xta-adapter/src/test/helm/xta_bindings_type_test.yaml b/xta-adapter/src/test/helm/xta_bindings_type_test.yaml deleted file mode 100644 index d0e476d6f..000000000 --- a/xta-adapter/src/test/helm/xta_bindings_type_test.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# -# 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. -# - -suite: test xta bindings type configmap -templates: - - templates/xta_bindings_type_configmap.yaml -release: - name: xta-adapter - namespace: helm-test -tests: - - it: test xta bindings type - set: - image.name: xta-adapter - xta: - rootCa: Z2VoZWltCg== - asserts: - - isKind: - of: ConfigMap - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: xta-adapter-bindings-type - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: data.type - value: ca-certificates - - it: should not create config map by default - asserts: - - hasDocuments: - count: 0 - - \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_keystore_secret_test.yaml b/xta-adapter/src/test/helm/xta_keystore_secret_test.yaml deleted file mode 100644 index 5a070f074..000000000 --- a/xta-adapter/src/test/helm/xta_keystore_secret_test.yaml +++ /dev/null @@ -1,64 +0,0 @@ -# -# 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. -# - -suite: test xta keystore secret -templates: - - templates/xta_keystore_secret.yaml -release: - name: xta-adapter - namespace: helm-test -tests: - - it: test xta keystore - set: - image.name: xta-adapter - xta: - keystore: - password: geheim - file: Z2VoZWltCg== - asserts: - - isKind: - of: Secret - - isAPIVersion: - of: v1 - - equal: - path: type - value: Opaque - - equal: - path: metadata.name - value: xta-keystore - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: stringData.password - value: geheim - - equal: - path: data.file - value: Z2VoZWltCg== - - - it: should not create keystore by default - asserts: - - hasDocuments: - count: 0 - diff --git a/xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml b/xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml deleted file mode 100644 index 55d7af055..000000000 --- a/xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# -# 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. -# - -suite: test xta root ca secret -templates: - - templates/xta_root_ca_secret.yaml -release: - name: xta-adapter - namespace: helm-test -tests: - - it: test xta root ca - set: - image.name: xta-adapter - xta: - rootCa: Z2VoZWltCg== - asserts: - - isKind: - of: Secret - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: xta-root-ca - - equal: - path: type - value: Opaque - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: data["ca.crt"] - value: Z2VoZWltCg== - - - it: should not create ca secret by default - asserts: - - hasDocuments: - count: 0 \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java deleted file mode 100644 index 27c8d83db..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * 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.eingang.xdomea; - -import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*; -import static de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -class XdomeaMessageDataMapperTest { - - @Spy - @InjectMocks - private XdomeaMessageDataMapper fileClassifier; - - @Mock - private XdomeaXMLValueReader valueReader; - - @DisplayName("map incoming files to representations attachments pair") - @Nested - class TestMapIncomingFilesToRepresentationsAttachmentsPair { - - @Mock - private List<IncomingFile> incomingFileList; - - @DisplayName("should map representations") - @ParameterizedTest - @ValueSource(booleans = { true, false }) - void shouldMapRepresentations(boolean useUuidPrefix) { - mockXdomeaMessageData(useUuidPrefix); - - var pair = fileClassifier.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFileList); - - var representationFilenames = pair.representations().stream().map(IncomingFile::getName).toList(); - assertThat(representationFilenames).containsExactly(XDOMEA_XML_NAME, REPR_XML_NAME, REPR_PDF_NAME); - } - - @DisplayName("should map attachments") - @ParameterizedTest - @ValueSource(booleans = { true, false }) - void shouldMapAttachments(boolean useUuidPrefix) { - mockXdomeaMessageData(useUuidPrefix); - - var pair = fileClassifier.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFileList); - - var attachmentFilenames = pair.attachments().stream() - .map(IncomingFileGroup::getFiles) - .flatMap(Collection::stream) - .map(IncomingFile::getName) - .toList(); - assertThat(attachmentFilenames).containsExactly(ATTATCHMENT_XML_NAME, ATTATCHMENT_PNG_NAME, ATTATCHMENT_PDF_NAME); - } - - private void mockXdomeaMessageData(boolean useUuidPrefix) { - doReturn(XdomeaMessageDataTestFactory.create(useUuidPrefix)).when(fileClassifier).mapIncomingFilesToXdomeaMessageData(incomingFileList); - } - - } - - @DisplayName("find Xdomea XML file") - @Nested - class TestFindXdomeaXmlFile { - - private static final String FILE_NAME_WITHOUT_SUFFIX = "some-file-name.xml"; - private static final String FILE_NAME_WITH_SUFFIX = "some-file-name" + XDOMEA_0201_XML_FILE_NAME_SUFFIX; - - @DisplayName("should throw if not found") - @Test - void shouldThrowIfNotFound() { - var incomingFilesWithout = List.of(IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITHOUT_SUFFIX).build()); - - assertThatThrownBy(() -> fileClassifier.findXdomeaXMLFile(incomingFilesWithout)) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should return if found") - @Test - void shouldReturnIfFound() { - var targetIncomingFile = IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITH_SUFFIX).build(); - var incomingFilesWith = List.of( - IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITHOUT_SUFFIX).build(), - targetIncomingFile - ); - - var primaryRepresentation = fileClassifier.findXdomeaXMLFile(incomingFilesWith); - - assertThat(primaryRepresentation).isEqualTo(targetIncomingFile); - } - } - - @DisplayName("find primary representation name") - @Nested - class TestFindPrimaryRepresentationName { - private static final String FILE_NAME_WITHOUT_XML_SUFFIX = "some-file-name.pdf"; - private static final String FILE_NAME_WITHOUT_XML_SUFFIX2 = "some-file-name.xml.pdf"; - private static final String FILE_NAME_WITH_XML_SUFFIX = "some-file-name.xml"; - private static final String FILE_NAME_WITH_XML_SUFFIX2 = "some-file-name.pdf.xml"; - - @DisplayName("should throw if no xml suffix") - @Test - void shouldThrowIfNoXmlSuffix() { - var listWithoutSuffix = List.of(FILE_NAME_WITHOUT_XML_SUFFIX, FILE_NAME_WITHOUT_XML_SUFFIX2); - - assertThrows(TechnicalException.class, () -> fileClassifier.findPrimaryRepresentationName(listWithoutSuffix)); - } - - @DisplayName("should return first with xml suffix") - @Test - void shouldReturnFirstWithXmlSuffix() { - var listWithSuffix = List.of(FILE_NAME_WITHOUT_XML_SUFFIX, FILE_NAME_WITH_XML_SUFFIX, FILE_NAME_WITHOUT_XML_SUFFIX2, - FILE_NAME_WITH_XML_SUFFIX2); - - var fileName = fileClassifier.findPrimaryRepresentationName(listWithSuffix); - - assertThat(fileName).isEqualTo(FILE_NAME_WITH_XML_SUFFIX); - } - } - - @DisplayName("classify attachments and representations") - @Nested - class TestClassifyAttachmentsAndRepresentations { - - @Mock - private IncomingFile xdomeaXMLFile; - - private List<IncomingFile> incomingFileList; - - @BeforeEach - void mock() { - incomingFileList = Stream.of( - XDOMEA_XML_NAME, - REPR_XML_NAME, - REPR_PDF_NAME, - ATTATCHMENT_XML_NAME, - ATTATCHMENT_PNG_NAME, - ATTATCHMENT_PDF_NAME - ) - .map(name -> IncomingFileTestFactory.createBuilder().name(name).build()) - .toList(); - doReturn(xdomeaXMLFile).when(fileClassifier).findXdomeaXMLFile(incomingFileList); - - when(xdomeaXMLFile.getName()).thenReturn(XDOMEA_XML_NAME); - - var representationFileNames = List.of(REPR_PDF_NAME, REPR_XML_NAME); - when(valueReader.readRepresentationFileNames(xdomeaXMLFile)).thenReturn(representationFileNames); - doReturn(REPR_XML_NAME).when(fileClassifier).findPrimaryRepresentationName(representationFileNames); - } - - @DisplayName("should contain xdomea metadata file") - @Test - void shouldContainXdomeaMetadataFile() { - var classification = doClassify(); - - var primaryDocument = classification.metadataFile(); - assertThat(primaryDocument.getName()).isEqualTo(XDOMEA_XML_NAME); - } - - @DisplayName("should contain representations") - @Test - void shouldContainRepresentations() { - var classification = doClassify(); - - var resultRepresentationFileNames = classification.representations().stream() - .map(IncomingFile::getName) - .toList(); - // Expect that the primary representation xml file is moved to the first position - assertThat(resultRepresentationFileNames).isEqualTo(List.of(REPR_XML_NAME, REPR_PDF_NAME)); - } - - @DisplayName("should contain attachments") - @Test - void shouldContainAttachments() { - var classification = doClassify(); - - var resultAttachmentFileNames = classification.attachments() - .getFirst() - .getFiles().stream() - .map(IncomingFile::getName) - .toList(); - assertThat(resultAttachmentFileNames).isEqualTo(List.of(ATTATCHMENT_XML_NAME, ATTATCHMENT_PNG_NAME, ATTATCHMENT_PDF_NAME)); - } - - @DisplayName("should have attachment group name") - @Test - void shouldHaveAttachmentGroupName() { - var classification = doClassify(); - - var resultAttachmentGroupName = classification.attachments() - .getFirst() - .getName(); - assertThat(resultAttachmentGroupName).isEqualTo(ATTACHMENT_GROUP_NAME); - } - - private XdomeaMessageData doClassify() { - return fileClassifier.mapIncomingFilesToXdomeaMessageData(incomingFileList); - } - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java deleted file mode 100644 index c36e1d67a..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.eingang.xdomea; - -import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*; - -import java.util.UUID; -import java.util.stream.Stream; - -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -public class XdomeaMessageDataTestFactory { - public static XdomeaMessageData create(boolean useUuidPrefix) { - return createBuilder(useUuidPrefix).build(); - } - - public static XdomeaMessageData.XdomeaMessageDataBuilder createBuilder(boolean useUuidPrefix) { - var incomingFiles = Stream.of( - XDOMEA_XML_NAME, - REPR_XML_NAME, - REPR_PDF_NAME, - ATTATCHMENT_XML_NAME, - ATTATCHMENT_PNG_NAME, - ATTATCHMENT_PDF_NAME - ) - .map(name -> useUuidPrefix ? withUUIDPrefix(name) : name) - .map(name -> IncomingFileTestFactory.createBuilder().name(name).build()) - .toList(); - - return XdomeaMessageData.builder() - .metadataFile(incomingFiles.getFirst()) - .representations(incomingFiles.subList(1, 3)) - .attachments(incomingFiles.subList(3, 6).stream() - .map(incomingFile -> IncomingFileGroup.builder() - .name("group-name") - .file(incomingFile) - .build()) - .toList() - ); - } - - private static String withUUIDPrefix(String name) { - return UUID.randomUUID() + "_" + name; - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java deleted file mode 100644 index ec7263896..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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.eingang.xdomea; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.nio.charset.StandardCharsets; - -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.SneakyThrows; - -class XdomeaXMLValueReaderTest { - private static final String XML_FILE_NAME = "file.xml"; - private static final String PDF_FILE_NAME = "file.pdf"; - private static final String XML_ATTACHMENT_FILE_NAME = "saml-attachment-file.xml"; - - @Spy - @InjectMocks - private XdomeaXMLValueReader valueReader; - - @DisplayName("read representation file names") - @Nested - class TestReadRepresentationFileNames { - - @Mock - IncomingFile incomingXmlFile; - - @DisplayName("should find 'Dateiname' elements and all XML-files in MSR mantelantrag") - @ParameterizedTest - @ValueSource(strings = { - "xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml", - "xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml" - }) - @SneakyThrows - void shouldFindDateinameElements(String antragXMLFilename) { - var xmlString = TestUtils.loadTextFile( - antragXMLFilename, - XML_FILE_NAME + "\n", - PDF_FILE_NAME, - "\n" + XML_ATTACHMENT_FILE_NAME + "\n"); - when(incomingXmlFile.getContentStream()).thenReturn(IOUtils.toInputStream(xmlString, StandardCharsets.UTF_8)); - - var names = valueReader.readRepresentationFileNames(incomingXmlFile); - - assertThat(names).containsExactly(XML_FILE_NAME, PDF_FILE_NAME, XML_ATTACHMENT_FILE_NAME); - } - - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java deleted file mode 100644 index eea589188..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import de.ozgcloud.eingang.common.formdata.FormData; - -class FormDataTestFactory { - - static FormData create() { - return createBuilder().build(); - } - - static FormData.FormDataBuilder createBuilder() { - return FormData.builder() - .header(FormHeaderTestFactory.create()) - .numberOfRepresentations(1); - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java deleted file mode 100644 index c0d990ded..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.FormHeader.FormHeaderBuilder; - -public class FormHeaderTestFactory { - - private static final String FORM_NAME = "xdomea"; - static final String VORGANGNUMMER = "vorgangNummer"; - static final String CHANNEL = "XTA"; - static final String FIM_FORM_ENGINE_NAME = "FIM"; - static final String XDOMEA_FORM_ENGINE_NAME = "XDOMEA"; - - static FormHeader create() { - return createBuilder().build(); - } - - static FormHeaderBuilder createBuilder() { - return FormHeader.builder() - .sender("XTA") - .requestId(XtaMessageTestFactory.MESSAGE_ID.toString()) - .vorgangNummer(VORGANGNUMMER) - .formName(FORM_NAME) - .formId(XtaMessageMetaDataTestFactory.MESSAGE_TYPE) - .createdAt(XtaMessageMetaDataTestFactory.ORIGIN); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java deleted file mode 100644 index b1c8c6360..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaMessageTestFactory.*; - -import org.w3._2005._08.addressing.AttributedURIType; - -import eu.osci.ws._2014._10.transport.MessageMetaData; -import eu.osci.ws._2014._10.transport.MsgIdentificationType; - -class MessageMetaDataTestFactory { - - static MessageMetaData create() { - var result = new MessageMetaData(); - var identification = new MsgIdentificationType(); - var uri = new AttributedURIType(); - uri.setValue(MESSAGE_ID.toString()); - identification.setMessageID(uri); - result.setMsgIdentification(identification); - - return result; - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java deleted file mode 100644 index 19d4291db..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.stream.Stream; - -import eu.osci.ws._2014._10.transport.MessageMetaData; - -class MsgStatusListTypeAndHeaderResponseTestFactory { - - public static final MessageMetaData MESSAGE1 = MessageMetaDataTestFactory.create(); - - public static MsgStatusListTypeAndHeaderResponse create() { - return createBuilder().build(); - } - - public static MsgStatusListTypeAndHeaderResponse.MsgStatusListTypeAndHeaderResponseBuilder createBuilder() { - return MsgStatusListTypeAndHeaderResponse.builder() - .msgBoxRequestID(null) - .messages(Stream.of(MESSAGE1)); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java deleted file mode 100644 index db6ed4a8a..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import eu.osci.ws._2008._05.transport.MsgStatusListType; - -class MsgStatusListTypeTestFactory { - - static MsgStatusListType create() { - var result = new MsgStatusListType(); - result.getMessageMetaData().add(MessageMetaDataTestFactory.create()); - return result; - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java deleted file mode 100644 index e88a8b47e..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.eingang.xta; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -public class RepresentationsAttachmentsPairTestFactory { - static List<IncomingFile> PAIR_REPRESENTATIONS = List.of( - IncomingFileTestFactory.createBuilder().name("representation1.xml").build(), - IncomingFileTestFactory.createBuilder().name("representation1.pdf").build() - ); - - static List<IncomingFileGroup> PAIR_ATTACHMENTS = List.of( - IncomingFileGroupTestFactory.create(), - IncomingFileGroupTestFactory.create(), - IncomingFileGroupTestFactory.create() - ); - - static RepresentationsAttachmentsPair create() { - return createBuilder().build(); - } - - static RepresentationsAttachmentsPair.RepresentationsAttachmentsPairBuilder createBuilder() { - return RepresentationsAttachmentsPair.builder() - .representations(PAIR_REPRESENTATIONS) - .attachments(PAIR_ATTACHMENTS); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java deleted file mode 100644 index 176afe3b3..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; - -import de.ozgcloud.eingang.Application; - -@ActiveProfiles({ "local", "itcase" }) -@SpringBootTest(classes = Application.class) -class XtaApplicationTest { - - @Test - void startup() { - // should start without exception; - assertTrue(true); - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java deleted file mode 100644 index f96f8fa00..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -class XtaCurrentIdentifierServiceTest { - - private static final String IDENTIFIER1 = "identifier1"; - private static final String IDENTIFIER2 = "identifier2"; - private static final List<String> IDENTIFIERS = List.of(IDENTIFIER1, IDENTIFIER2); - - @Spy - @InjectMocks - private XtaCurrentIdentifierService service; - - @Mock - private XtaProperties properties; - - @DisplayName("get identifiers") - @Nested - class TestGetIdentifiers { - @BeforeEach - void mock() { - when(properties.getIdentifiers()).thenReturn(IDENTIFIERS); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - assertThat(service.getIdentifiers()).isEqualTo(IDENTIFIERS); - } - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java deleted file mode 100644 index 2dde6a570..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.io.File; -import java.io.InputStream; -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; - -import org.apache.commons.io.FileUtils; - -import lombok.SneakyThrows; - -class XtaFileTestFactory { - - static final String NAME = "Test_File"; - static final String CONTENT = "slkafj3jifsdasx"; - static final String ZIP_CONTENT_TYPE = "application/zip"; - - static XtaFile create() { - return createBuilder().build(); - } - - static XtaFile.XtaFileBuilder createBuilder() { - return XtaFile.builder() - .name(NAME) - .contentType(ZIP_CONTENT_TYPE) - .file(createFile()); - } - - @SneakyThrows - private static File createFile() { - File tFile = File.createTempFile("test", ".zip"); - tFile.deleteOnExit(); - - FileUtils.write(tFile, CONTENT, StandardCharsets.UTF_8); - - return tFile; - } - - @SneakyThrows - static XtaFile withFileContent(InputStream stream, String fileName) { - File tFile = File.createTempFile(fileName, ".zip"); - tFile.deleteOnExit(); - - FileUtils.copyInputStreamToFile(stream, tFile); - return createBuilder().name(fileName).size(BigInteger.valueOf(tFile.length())).file(tFile).build(); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java deleted file mode 100644 index 74acd98c7..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java +++ /dev/null @@ -1,350 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; -import org.springframework.context.annotation.Bean; -import org.springframework.test.context.ActiveProfiles; - -import de.ozgcloud.eingang.Application; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.router.ManagableStub; -import de.ozgcloud.eingang.router.VorgangManagerServerResolver; -import de.ozgcloud.eingang.router.VorgangRemoteService; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.Channel; - -@SpringBootTest(classes = { - Application.class, - XtaITCase.ActivateXTARunnerConfig.class -}) -@ActiveProfiles({ "itcase" }) -class XtaITCase { - - @SpyBean - private VorgangRemoteService vorgangRemoteService; - @MockBean - private VorgangManagerServerResolver resolver; - - @Mock - private ManagableStub<VorgangServiceBlockingStub> vorgangManageableServiceStub; - @Mock - private VorgangServiceBlockingStub vorgangServiceStub; - @Mock - private ManagableStub<BinaryFileServiceStub> binaryFileManageableServiceStub; - @Mock - private BinaryFileServiceStub binaryFileServiceStub; - - @Mock - private Channel channel; - - @MockBean - private XtaRemoteService xtaRemoteService; - - @Captor - private ArgumentCaptor<FormData> formDataArgumentCaptor; - - @Captor - private ArgumentCaptor<GrpcEingang> eingangArgumentCaptor; - - @Autowired - private XtaRunner runner; - - @BeforeEach - void initTest() { - when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(vorgangManageableServiceStub); - when(vorgangManageableServiceStub.get()).thenReturn(vorgangServiceStub); - when(vorgangServiceStub.getChannel()).thenReturn(channel); - when(channel.authority()).thenReturn("authorityDummy"); - - when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(binaryFileManageableServiceStub); - when(binaryFileManageableServiceStub.get()).thenReturn(binaryFileServiceStub); - } - - @DisplayName("run get xta messages") - @Nested - class TestRunGetXtaMessages { - @BeforeEach - void setup() { - doReturn("vorgangId(unused)").when(vorgangRemoteService).createVorgang(any(), any(), any(), any()); - } - - @DisplayName("should have three representations with pdf") - @TestZipFileNamesWithPdf - void shouldHaveThreeRepresentationsWithPdf(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfRepresentations()).isEqualTo(3); - } - - @DisplayName("should send two representations without pdf") - @TestZipFileNamesWithoutPdf - void shouldSendTwoXMLRepresentationsWithoutPdf(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfRepresentations()).isEqualTo(2); - } - - @DisplayName("should have no attachments") - @TestZipFileNamesWithoutAnlage - void shouldHaveNoAttachments(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfAttachments()).isZero(); - } - - @DisplayName("should have one attachment") - @TestZipFileNamesWithAnlage - void shouldHaveOneAttachment(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfAttachments()).isEqualTo(1); - } - - @DisplayName("should have postfach id") - @TestZipFileNamesWithServiceKonto - void shouldHavePostfachId(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var serviceKonto = captureEingang() - .getHeader() - .getServiceKonto(); - assertThat(serviceKonto).isNotNull(); - var postfachId = serviceKonto - .getPostfachAddresses(0) - .getIdentifier() - .getProperty(0) - .getValue(0); - assertThat(postfachId).isEqualTo("4dd01647-b9d9-4775-1b50-08da3d83800a"); - } - - @DisplayName("should have organistationseinheit ID") - @TestZipFileNames - void shouldHaveOrganistationseinheitId(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var organisationseinheitenId = captureEingang() - .getZustaendigeStelle() - .getOrganisationseinheitenId(); - assertThat(organisationseinheitenId).isEqualTo("9795669"); - } - - @DisplayName("should have generated vorgang nummer for dFoerdermittel") - @Test - void shouldHaveVorgangsnummer() { - mockNachrichtenBroker("dfoerdermittel_with_anlage.zip"); - - runner.runGetXtaMessages(); - - var vorgangsNummer = captureEingang() - .getHeader() - .getVorgangNummer(); - assertThat(vorgangsNummer).hasSameSizeAs("4627-TY3X"); - } - - @DisplayName("should have vorgang nummer for AFM") - @TestZipFileNamesFromAFM - void shouldHaveVorgangsnummerForAfm(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var vorgangsNummer = captureEingang() - .getHeader() - .getVorgangNummer(); - assertThat(vorgangsNummer).hasSameSizeAs("20240404370530710707"); - } - - @DisplayName("should use xta vorgangsnummer for FIM") - @Test - void shouldUseVorgangsnummerForFIM() { - mockNachrichtenBroker("versammlungsanzeige.xml"); - - runner.runGetXtaMessages(); - - var vorgangNummer = captureEingang().getHeader().getVorgangNummer(); - assertThat(vorgangNummer).hasSize(9); - } - - @DisplayName("should have one attachment for FIM") - @Test - void shouldHaveOneRepresentationForFim() { - mockNachrichtenBroker("versammlungsanzeige.xml"); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfRepresentations()).isEqualTo(1); - } - - private GrpcEingang captureEingang() { - verify(vorgangRemoteService, times(1)) - .createVorgang( - formDataArgumentCaptor.capture(), - eingangArgumentCaptor.capture(), any(), any()); - - assertThat(formDataArgumentCaptor.getValue()).isNotNull(); - - return eingangArgumentCaptor.getValue(); - } - } - - private void mockNachrichtenBroker(String zipFileName) { - when(xtaRemoteService.getMessage(any(XtaMessageId.class))).thenReturn( - XtaResponseTestFactory.createGetMessageResponse(zipFileName)); - when(xtaRemoteService.getMessagesMetadata()) - .thenReturn(XtaResponseTestFactory.createGetStatusListResponse(List.of(zipFileName))); - when(xtaRemoteService.getNextMessagesMetadata(any())) - .thenReturn(XtaResponseTestFactory.createEmptyGetStatusListResponse()); - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "mantelantrag_without_anlage.zip" - }) - @interface TestZipFileNamesWithoutAnlage { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - "mantelantrag_with_anlage.zip" - }) - @interface TestZipFileNamesWithAnlage { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "mantelantrag_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "dfoerdermittel_with_anlage.zip", - "mantelantrag_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - }) - @interface TestZipFileNamesWithPdf { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "waffenschein.zip" - }) - @interface TestZipFileNamesWithoutPdf { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "mantelantrag_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "mantelantrag_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - }) - @interface TestZipFileNamesFromAFM { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "dfoerdermittel_with_anlage.zip", - }) - @interface TestZipFileNamesWithServiceKonto { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "mantelantrag_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "dfoerdermittel_with_anlage.zip", - "mantelantrag_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - "waffenschein.zip" - }) - @interface TestZipFileNames { - } - - static class ActivateXTARunnerConfig { - @Bean - XtaRunner xtaRunner() { - return new XtaRunner(); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java deleted file mode 100644 index 9486bd8e1..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.stream.Stream; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.xta.zip.ZipFileExtractor; - -class XtaIncomingFilesMapperTest { - @Spy - @InjectMocks - private XtaIncomingFilesMapper mapper; - - @Mock - private ZipFileExtractor extractor; - - @Nested - class TestToIncomingFiles { - - @Test - void shouldMapToIncomingFiles() { - var xtaFile = XtaFileTestFactory.create(); - var incomingFile = IncomingFileTestFactory.create(); - when(mapper.toIncomingFile(xtaFile)).thenReturn(incomingFile); - when(mapper.tryToExtractZip(incomingFile)).thenAnswer(x -> Stream.of(incomingFile)); - - mapper.toIncomingFiles(List.of(xtaFile, xtaFile)); - - inOrder(mapper).verify(mapper, calls(2)).toIncomingFile(xtaFile); - inOrder(mapper).verify(mapper, calls(2)).tryToExtractZip(incomingFile); - } - - @Test - void shouldHandleMissingMessageFile() { - var fileGroup = mapper.toIncomingFiles(null); - - assertThat(fileGroup).isEmpty(); - } - } - - @Nested - class ToIncomingFile { - @Test - void shouldHaveMessageFile() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getContentStream()).isNotNull(); - } - - @Test - void shouldHaveFileName() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getName()).isEqualTo(XtaFileTestFactory.NAME); - } - - @Test - void shouldHaveZipContentType() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getContentType()).isEqualTo(XtaFileTestFactory.ZIP_CONTENT_TYPE); - } - - @Test - void shouldHaveSize() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getSize()).isEqualTo(XtaFileTestFactory.CONTENT.length()); - } - } - - @Nested - class TestTryToExtractZip { - - @Mock - IncomingFile outFile1; - - @Mock - IncomingFile outFile2; - - private final IncomingFile zipFile = IncomingFileTestFactory.createBuilder() - .name("attachments.zip") - .build(); - - @Test - void shouldExtractZipFiles() { - var expectedExtractedFiles = List.of(outFile1, outFile2); - when(extractor.extractIncomingFilesSafely(zipFile)).thenReturn(expectedExtractedFiles); - - var extractedFiles = mapper.tryToExtractZip(zipFile).toList(); - - assertThat(extractedFiles).isEqualTo(expectedExtractedFiles); - } - - @Test - void shouldIgnoreNonZipFiles() { - when(extractor.extractIncomingFilesSafely(zipFile)).thenThrow(new RuntimeException()); - var incomingFile = IncomingFileTestFactory.create(); - - var extractedFiles = mapper.tryToExtractZip(incomingFile).toList(); - - assertThat(extractedFiles).containsExactly(incomingFile); - } - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java deleted file mode 100644 index f9ce37d6e..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaMessageMapper.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; - -class XtaMessageMapperTest { - - @Spy - @InjectMocks - private XtaMessageMapper mapper = Mappers.getMapper(XtaMessageMapper.class); - - @Mock - private VorgangNummerSupplier vorgangNummerSupplier; - - @Nested - class TestToFormData { - - private XtaMessageMetaData xtaMessageMetaData; - private RepresentationsAttachmentsPair representationsAttachmentsPair; - - @BeforeEach - void mock() { - xtaMessageMetaData = XtaMessageMetaDataTestFactory.create(); - representationsAttachmentsPair = RepresentationsAttachmentsPairTestFactory.create(); - when(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).thenReturn(FormHeaderTestFactory.VORGANGNUMMER); - } - - @Test - void shouldMapRepresentations() { - var formData = doMapping(); - - assertThat(formData.getRepresentations()).isEqualTo(representationsAttachmentsPair.representations()); - } - - @Test - void shouldSetNumberOfAttachments() { - var formData = doMapping(); - - assertThat(formData.getNumberOfAttachments()).isEqualTo(3); - } - - @Test - void shouldSetNumberOfRepresentations() { - var formData = doMapping(); - - assertThat(formData.getNumberOfRepresentations()).isEqualTo(2); - } - - @Test - void shouldMapAttachments() { - var formData = doMapping(); - - assertThat(formData.getAttachments()).isEqualTo(representationsAttachmentsPair.attachments()); - } - - @Test - void shouldMapVorgangNummer() { - var formData = doMapping(); - - assertThat(formData.getHeader().getVorgangNummer()).isEqualTo(FormHeaderTestFactory.VORGANGNUMMER); - } - - @Test - void shouldSetChannelXTA() { - var formData = doMapping(); - - assertThat(formData.getHeader().getChannel()).isEqualTo(FormHeaderTestFactory.CHANNEL); - } - - @Test - void shouldSetFormEngineName() { - var formData = doMapping(); - - assertThat(formData.getHeader().getFormEngineName()).isEqualTo(FormHeaderTestFactory.XDOMEA_FORM_ENGINE_NAME); - } - - @Test - void shouldSetDesinationId() { - var formData = doMapping(); - - assertThat(formData.getControl().getMetaData()).isPresent().get() - .extracting(metaData -> metaData.getEntry(XtaMessageMetaData.XTA_IDENTIFIER_ENTRY_NAME)) - .isEqualTo(FormMetaDataTestFactory.XTA_IDENTIFIER); - } - - private FormData doMapping() { - return mapper.toFormData(representationsAttachmentsPair, xtaMessageMetaData, vorgangNummerSupplier); - } - } - - @Nested - class TestToFimFormData { - - private XtaMessageMetaData xtaMessageMetaData; - private RepresentationsAttachmentsPair representationsAttachmentsPair; - - @BeforeEach - void mock() { - xtaMessageMetaData = XtaMessageMetaDataTestFactory.createFim(); - representationsAttachmentsPair = RepresentationsAttachmentsPairTestFactory.create(); - when(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).thenReturn(FormHeaderTestFactory.VORGANGNUMMER); - } - - @Test - void shouldSetFormEngineName() { - var formData = mapper.toFormData(representationsAttachmentsPair, xtaMessageMetaData, vorgangNummerSupplier); - - assertThat(formData.getHeader().getFormEngineName()).isEqualTo(FormHeaderTestFactory.FIM_FORM_ENGINE_NAME); - } - - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java deleted file mode 100644 index 07dbdab78..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.Spy; - -class XtaMessageMetaDataMapperTest { - - @Spy - private final XtaMessageMetaDataMapper mapper = Mappers.getMapper(XtaMessageMetaDataMapper.class); - - @DisplayName("msg status list from soap") - @Nested - class TestMsgStatusListFromSoap { - - @Test - void shouldMap() { - var response = MsgStatusListTypeAndHeaderResponseTestFactory.create(); - - var result = mapper.msgStatusListFromSoap(response); - - assertThat(result).isNotNull(); - } - - @DisplayName("should set moreMessagesAvailable to false") - @Test - void shouldSetMoreMessagesAvailableToFalse() { - var response = MsgStatusListTypeAndHeaderResponseTestFactory.create(); - - var result = mapper.msgStatusListFromSoap(response); - - assertThat(result.isMoreMessagesAvailable()).isFalse(); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java deleted file mode 100644 index 32b343047..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaMessageTestFactory.*; - -import java.time.ZonedDateTime; - -import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory; - -class XtaMessageMetaDataTestFactory { - - static final String MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; - static final String FIM_MESSAGE_TYPE = "fim.S17000652.17000652001004"; - static final ZonedDateTime ORIGIN = ZonedDateTime.parse("2022-10-29T15:45:52.4942149+02:00"); - static final String SERVICE = "urn:fim:Versammlungsanzeige:1.4"; - static final String MESSAGE_TYPE_LIST_VERSION = "1.0"; - - static XtaMessageMetaData create() { - return createBuilder().build(); - } - - static XtaMessageMetaData.XtaMessageMetaDataBuilder createBuilder() { - return XtaMessageMetaData.builder() - .messageId(MESSAGE_ID) - .messageType(MESSAGE_TYPE) - .messageTypeListVersion(MESSAGE_TYPE_LIST_VERSION) - .origin(ORIGIN) - .xtaIdentifier(FormMetaDataTestFactory.XTA_IDENTIFIER) - .service(SERVICE); - } - - static XtaMessageMetaData createFim() { - return createFimBuilder().build(); - } - - static XtaMessageMetaData.XtaMessageMetaDataBuilder createFimBuilder() { - return createBuilder() - .messageType(FIM_MESSAGE_TYPE); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java deleted file mode 100644 index 829d0d181..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.util.UUID; -import java.util.stream.Stream; - -class XtaMessageMetaDatasAndHeaderTestFactory { - - public static final String MSG_BOX_REQUEST_ID = UUID.randomUUID().toString(); - - public static final XtaMessageMetaData MESSAGE1 = XtaMessageMetaDataTestFactory.create(); - - public static XtaMessageMetaDatasAndHeader create() { - return createBuilder().build(); - } - - public static XtaMessageMetaDatasAndHeader.XtaMessageMetaDatasAndHeaderBuilder createBuilder() { - return XtaMessageMetaDatasAndHeader.builder() - .msgBoxRequestID(MSG_BOX_REQUEST_ID) - .messages(Stream.of(MESSAGE1)); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java deleted file mode 100644 index c8b289011..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; - -class XtaMessageMetadataRemoteIteratorTest { - - private XtaMessageMetaDatasAndHeader messageMetaDatasAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.create(); - - @Mock - private XtaRemoteService remoteService; - - @BeforeEach - void setup() { - when(remoteService.getMessagesMetadata()).thenReturn(messageMetaDatasAndHeader); - } - - @Nested - class TestIteratorInitialization { - - @Test - void shouldCallGetMessagesMetadata() { - new XtaMessageMetadataRemoteIterator(remoteService); - - verify(remoteService).getMessagesMetadata(); - } - - @Test - void shouldCallRemoteMessageIterator() { - when(remoteService.getMessagesMetadata()).thenReturn(messageMetaDatasAndHeader); - - Object remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); - - assertThat(remoteIterator).extracting("remoteMessageIterator").isNotNull(); - } - } - - @Nested - class TestHasNext { - - @Test - void shouldReturnTrueAfterInitialization() { - var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); - - assertThat(remoteIterator.hasNext()).isTrue(); - } - - @Test - void shouldReturnTrueWhenMoreMessagesAvailable() { - var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().moreMessagesAvailable(true).build(); - when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); - - var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); - - assertThat(remoteIterator.hasNext()).isTrue(); - } - - @Test - void shouldCallLoadNextMessages() { - initTest(); - var remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); - - remoteIterator.hasNext(); - - verify(remoteIterator).loadNextMessages(); - } - - private void initTest() { - var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder() - .messages(Stream.empty()).moreMessagesAvailable(true).build(); - when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); - var nextMessageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().msgBoxRequestID("id").build(); - when(remoteService.getNextMessagesMetadata(any())).thenReturn(nextMessageMetadataAndHeader); - } - - @Test - void shouldReturnFalseWhenNoMoreMessagesAvailable() { - var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().messages(Stream.empty()).build(); - when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); - - var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); - - assertThat(remoteIterator.hasNext()).isFalse(); - } - } - - @Nested - class TestLoadNextMessages { - - private XtaMessageMetaDatasAndHeader nextMessageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().msgBoxRequestID("id").build(); - - @BeforeEach - void setup() { - when(remoteService.getNextMessagesMetadata(any())).thenReturn(nextMessageMetadataAndHeader); - } - - @Test - void shouldCallGetMessages() { - new XtaMessageMetadataRemoteIterator(remoteService).loadNextMessages(); - - verify(remoteService).getNextMessagesMetadata(messageMetaDatasAndHeader.getMsgBoxRequestID()); - } - - @Test - void shouldCallGetRemoteMessageIterator() { - var remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); - - remoteIterator.loadNextMessages(); - - verify(remoteIterator).getRemoteMessageIterator(nextMessageMetadataAndHeader); - } - } -} \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java deleted file mode 100644 index 7ad58987b..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -class XtaMessageTestFactory { - - static final XtaMessageId MESSAGE_ID = XtaMessageId.from("urn:de:xta:messageid:dataport_xta_210:81e40808-91c6-4765-aaf4-1aa62fec8be9"); - - static final XtaFile attachment = XtaFileTestFactory.create(); - static final String PRIMARY_FORM_DATA_MESSAGE = XtaFileTestFactory.NAME; - - static XtaMessage create() { - return createBuilder().build(); - } - - static XtaMessage.XtaMessageBuilder createBuilder() { - return XtaMessage.builder() - .metaData(XtaMessageMetaDataTestFactory.create()) - .messageFile(XtaFileTestFactory.create()) - .primaryFormDataMessage(XtaFileTestFactory.NAME) - .attachment(attachment); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java deleted file mode 100644 index 0874c49a1..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import java.net.URI; - -import lombok.SneakyThrows; - -class XtaPropertiesTestFactory { - - private static final String SERVER_PROTOCOL = "https"; - private static final String SERVER_ADDRESS = "xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local"; - - @SneakyThrows - static XtaProperties create() { - XtaProperties properties = new XtaProperties(); - - Actions actions = new Actions(); - properties.setActions(actions); - actions.setFetchRequest(new URI("http://tempuri.local/fetch")); - actions.setStatusList(new URI("http://tempuri.lcoal/statusList")); - - Server server = new Server(); - properties.setServer(server); - server.setProtocol(SERVER_PROTOCOL); - server.setAddress(SERVER_ADDRESS); - - return properties; - - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java deleted file mode 100644 index a4d537444..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -class XtaRemoteServiceConfigurationTest { - - @Spy - @InjectMocks - XtaRemoteServiceConfiguration configuration; - - @Test - void testBuildServerAddressUri() { - - String serverUrl = configuration.buildServerAddressUri(XtaPropertiesTestFactory.create().getServer()); - - assertThat(serverUrl).isEqualTo("https://xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local/MB_XTA-WS/XTA210msgBoxPort.svc"); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java deleted file mode 100644 index 3cb0b3a11..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; - -import jakarta.validation.Valid; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; - -import de.ozgcloud.eingang.Application; - -@Disabled("real live test - do only activate for manual testing") -@ActiveProfiles({ "itcase", "local" }) -@SpringBootTest(classes = Application.class, // - properties = { "ozgcloud.xta.server.name=LI33-0005", - "ozgcloud.xta.server.address=LI33-0005:3000", - "ozgcloud.xta.server.protocol=https", - "ozgcloud.xta.keystore.file=file:./KOP_SH_KIEL_DEV.p12", - "ozgcloud.xta.keystore.password=geheim" // replace this with real password - }) -class XtaRemoteServiceITCase { - - @Autowired - private XtaRemoteService remoteService; - @Autowired - @Valid - private XtaProperties xtaProperties; - - @Nested - class TestProperties { - @Test - void shouldHaveStatusListAction() { - assertThat(xtaProperties.getActions().getStatusList()).isNotNull(); - } - } - - @Nested - class TestGetStatusList { - - @Test - void shouldSendRequest() { - - var result = remoteService.getStatusList(); - - assertThat(result).isNotNull(); - - } - } - - @Nested - class TestGetMessage { - @Test - void shouldSendRequest() { - var result = remoteService.loadContentContainer("urn:de:xta:messageid:dataport_xta_210:20eb297a-e224-45a0-9376-5ebd4d9bcc9a"); - - assertThat(result).isNotNull(); - } - } - - @Nested - class TestClose { - @Test - void shouldThrowNoException() { - assertThatNoException().isThrownBy(() -> remoteService.close(XtaMessageTestFactory.MESSAGE_ID)); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java deleted file mode 100644 index 99d3612c4..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.Spy; -import org.springframework.boot.webservices.client.WebServiceTemplateBuilder; - -import de.xoev.transport.xta._211.GenericContentContainer; - -class XtaRemoteServiceTest { - - @Spy - @InjectMocks - private XtaRemoteService service; - - @Mock - private WebServiceTemplateBuilder templateBuilder; - @Mock - private XtaMessageMetaDataMapper mapper; - @Spy - private XtaProperties properties = XtaPropertiesTestFactory.create(); - - @Nested - class TestGetMessagesMetadata { - - @BeforeEach - void init() { - doReturn(MsgStatusListTypeAndHeaderResponseTestFactory.create()).when(service).getStatusList(); - when(mapper.msgStatusListFromSoap(any(MsgStatusListTypeAndHeaderResponse.class))) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); - } - - @Test - void shouldCallGetStatusList() { - service.getMessagesMetadata().getMessages().toList(); - - verify(service).getStatusList(); - } - - @Test - void shouldCallMapper() { - service.getMessagesMetadata(); - - verify(mapper).msgStatusListFromSoap(notNull()); - } - - @Test - void shouldReturnMessageId() { - var metaData = service.getMessagesMetadata().getMessages().toList(); - - assertThat(metaData).hasSize(1).first().usingRecursiveComparison().isEqualTo(XtaMessageMetaDataTestFactory.create()); - } - } - - @Nested - class TestGetNextMessagesMetadata { - - @BeforeEach - void init() { - doReturn(MsgStatusListTypeAndHeaderResponseTestFactory.create()).when(service).getStatusList(); - when(mapper.msgStatusListFromSoap(any(MsgStatusListTypeAndHeaderResponse.class))) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); - } - - @Test - void shouldCallGetNextStatusList() { - service.getMessagesMetadata().getMessages().toList(); - - verify(service).getStatusList(); - } - - @Test - void shouldCallMapper() { - service.getMessagesMetadata(); - - verify(mapper).msgStatusListFromSoap(notNull()); - } - - @Test - void shouldReturnMessageId() { - var metaData = service.getMessagesMetadata().getMessages().toList(); - - assertThat(metaData).hasSize(1).first().usingRecursiveComparison().isEqualTo(XtaMessageMetaDataTestFactory.create()); - } - } - - @Nested - class TestGetMessage { - - private XtaFile file = XtaFileTestFactory.create(); - @Mock - private GenericContentContainer contentContainerMock; - - @BeforeEach - void init() { - doReturn(file).when(service).getMessage(Mockito.<GenericContentContainer>any()); - doReturn(contentContainerMock).when(service).loadContentContainer(anyString()); - doReturn(Stream.of(file)).when(service).getAttachments(any()); - } - - @Test - void shouldCallLoadContentContainer() { - service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - verify(service).loadContentContainer(XtaMessageTestFactory.MESSAGE_ID.toString()); - } - - @Test - void shouldCallGetMessage() { - service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - verify(service).getMessage(contentContainerMock); - } - - @Test - void sohludCallGetAttachments() { - service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - verify(service).getAttachments(contentContainerMock); - } - - @Test - void shouldReturnMessageWithoutMetaData() { - var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - assertThat(message.getMetaData()).isNull(); - } - - @Test - void shouldReturnMessageWithFile() { - var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - assertThat(message.getMessageFiles()).hasSize(1).contains(file); - } - } -} \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java deleted file mode 100644 index b7596f8e5..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * 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.eingang.xta; - -import static de.ozgcloud.eingang.xta.zip.TestZipFileFactory.*; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; -import java.time.ZonedDateTime; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.apache.commons.codec.Resources; -import org.apache.commons.io.IOUtils; - -import de.ozgcloud.common.binaryfile.TempFileUtils; - -public class XtaResponseTestFactory { - - public static final Map<String, String> MESSAGE_TYPE_BY_ATTACHMENT_FILENAME = Map.of( - "mantelantrag_without_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "dfoerdermittel_without_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "brauchtumsfeuer_without_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "versammlungsanzeige.xml", "fim.S17000652.17000652001004", - "mantelantrag_with_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "dfoerdermittel_with_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "brauchtumsfeuer_with_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "waffenschein.zip", "Geschaeftsgang.Geschaeftsgang.0201" - ); - - private static final Map<String, String> MESSAGE_ID_BY_ATTACHMENT_FILENAME = MESSAGE_TYPE_BY_ATTACHMENT_FILENAME - .keySet().stream() - .collect(Collectors.toMap(name -> name, name -> generateMessageID())); - - private static String generateMessageID() { - return "urn:de:xta:messageid:dataport_xta_210:%s".formatted(UUID.randomUUID().toString()); - } - - public static XtaMessageMetaDatasAndHeader createEmptyGetStatusListResponse() { - return XtaMessageMetaDatasAndHeader.builder() - .msgBoxRequestID("testid-empty") - .moreMessagesAvailable(false) - .messages(Stream.empty()) - .build(); - } - - public static XtaMessageMetaDatasAndHeader createGetStatusListResponse(List<String> xtaAttachmentFileNames) { - var messageMetaDataItems = xtaAttachmentFileNames.stream() - .map(name -> - XtaMessageMetaData.builder() - .messageId(new XtaMessageId(MESSAGE_ID_BY_ATTACHMENT_FILENAME.get(name))) - .messageType(MESSAGE_TYPE_BY_ATTACHMENT_FILENAME.get(name)) - .origin(ZonedDateTime.now()) - .delivery(ZonedDateTime.now()) - .build() - ) - .toList(); - - return XtaMessageMetaDatasAndHeader.builder() - .msgBoxRequestID("testid-withattachment") - .moreMessagesAvailable(true) - .messages(messageMetaDataItems.stream()) - .build(); - } - - public static XtaMessage createGetMessageResponse(String xtaAttachmentFileName) { - File file; - try (var inputStream = getAttachmentInputStream(xtaAttachmentFileName)) { - file = TempFileUtils.writeTmpFile(inputStream); - } catch (IOException e) { - throw new RuntimeException(e); - } - - return XtaMessage.builder() - .messageFile(XtaFile.builder() - .contentType("application/zip") - .name(xtaAttachmentFileName) - .size(BigInteger.valueOf(file.length())) - .file(file) - .build()) - .build(); - } - - private static InputStream getAttachmentInputStream(String xtaAttachmentFileName) { - var attachmentResourcePath = getAttachmentFilePath(xtaAttachmentFileName); - if (xtaAttachmentFileName.endsWith(".zip")) { - try { - return new FileInputStream( - createAttachmentZipFile( - attachmentResourcePath.replace(".zip", ""))); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } - } else { - return Resources.getInputStream(attachmentResourcePath); - } - } - - private static File createAttachmentZipFile(String attachmentResourceDirectory) { - return createTempZipFile(listResourceFileNames(attachmentResourceDirectory) - .map(subName -> { - try { - return TestZipEntry.builder() - .name(subName) - .content(IOUtils.toByteArray(Resources.getInputStream(attachmentResourceDirectory + "/" + subName))) - .build(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - ).toList()); - } - - private static Stream<String> listResourceFileNames(String resourceDirectoryPath) { - try (var inputStream = Resources.getInputStream(resourceDirectoryPath)) { - return Arrays.stream(IOUtils.toString(inputStream, StandardCharsets.UTF_8).split("\n")); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private static String getMessageType(String xtaAttachmentFileName) { - return Objects.requireNonNull( - MESSAGE_TYPE_BY_ATTACHMENT_FILENAME.get(xtaAttachmentFileName), - "Xta-message type for '%s' has to be configured!".formatted(xtaAttachmentFileName) - ); - } - - private static String getAttachmentFilePath(String xtaAttachmentFileName) { - return "mock-responses/getMessage/%s/%s".formatted(getMessageType(xtaAttachmentFileName), xtaAttachmentFileName); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java deleted file mode 100644 index 8d700522b..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static org.mockito.Mockito.*; - -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.SemantikAdapter; - -class XtaRunnerTest { - - @InjectMocks - private XtaRunner scheduler; - - @Mock - private XtaService service; - @Mock - private SemantikAdapter semantikAdapter; - - @Nested - class TestRunGetXtaMessages { - - public static final FormData MESSAGE = FormDataTestFactory.create(); - - @BeforeEach - void init() { - when(service.getMessages()).thenReturn(Stream.of(MESSAGE)); - } - - @Test - void shouldCallXtaServiceGetNextMessages() { - scheduler.runGetXtaMessages(); - - verify(service).getMessages(); - } - - @Test - void shouldHandOverFormDataToSemantikAdapter() { - scheduler.runGetXtaMessages(); - - verify(semantikAdapter).processFormData(MESSAGE); - } - - @Test - void shouldAcknowledgeReceive() { - scheduler.runGetXtaMessages(); - - verify(service).acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java deleted file mode 100644 index 69fb08fb0..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java +++ /dev/null @@ -1,494 +0,0 @@ -/* - * Copyright (C) 2023 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.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaService.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.FormDataControlTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper; - -class XtaServiceTest { - - private static final String MESSAGE_TYPE_OTHER = "MESSAGE_TYPE_OTHER"; - - @Spy - @InjectMocks - private XtaService service; - - @Mock - private XtaRemoteService remoteService; - @Mock - private XtaMessageMapper mapper; - @Mock - private VorgangNummerSupplier vorgangNummerSupplier; - - @Mock - private XtaIncomingFilesMapper incomingFilesMapper; - - @Mock - private XdomeaMessageDataMapper xdomeaMessageDataMapper; - - @Mock - private XtaCurrentIdentifierService currentIdentifierService; - - @Mock - private FormData formData; - - @Mock - private FormData formData2; - - @Nested - class TestGetMessagesAsFormData { - - private final XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create(); - private final XtaMessage message = XtaMessageTestFactory.create(); - - @DisplayName("with one message") - @Nested - class TestWithOneMessage { - @BeforeEach - void setup() { - doReturn(Stream.of(messageMetaData)).when(service).createXtaMessageStream(); - } - - @Test - void shouldCallCreateStream() { - service.getMessages(); - - verify(service).createXtaMessageStream(); - } - - @Test - void shouldCallFilterByMessageType() { - setupMocks(); - - service.getMessages().toList(); - - verify(service).isSupportedMessageType(messageMetaData); - } - - @Test - void shouldCallGetFormDataIfNoRuntimeException() { - setupMocks(); - doReturn(true).when(service).isSupportedMessageType(messageMetaData); - - service.getMessages().toList(); - - verify(service).getFormData(messageMetaData); - } - - @Test - void shouldNotCallGetFormDataIfNoRuntimeException() { - doReturn(false).when(service).isSupportedMessageType(messageMetaData); - - service.getMessages().toList(); - - verify(service, never()).getFormDataIfNoRuntimeException(any()); - } - } - - @DisplayName("with multiple messages") - @Nested - class TestWithMultipleMessages { - private final XtaMessageMetaData messageMetaData2 = XtaMessageMetaDataTestFactory.createBuilder() - .messageId(XtaMessageId.from("messageId2")) - .build(); - private final XtaMessageMetaData messageMetaData3 = XtaMessageMetaDataTestFactory.createBuilder() - .messageId(XtaMessageId.from("messageId3")) - .build(); - - @BeforeEach - void setup() { - doReturn(Stream.of(messageMetaData, messageMetaData2, messageMetaData3)).when(service).createXtaMessageStream(); - } - - @DisplayName("should return stream of messages") - @Test - void shouldReturnStreamOfMessages() { - doReturn(true).when(service).isSupportedMessageType(messageMetaData); - doReturn(false).when(service).isSupportedMessageType(messageMetaData3); - doReturn(true).when(service).isSupportedMessageType(messageMetaData2); - doReturn(Optional.of(formData)).when(service).getFormDataIfNoRuntimeException(messageMetaData); - doReturn(Optional.of(formData2)).when(service).getFormDataIfNoRuntimeException(messageMetaData2); - - var result = service.getMessages().toList(); - - assertThat(result).containsExactly(formData, formData2); - } - } - - - private void setupMocks() { - var testFormData = FormDataTestFactory.create(); - when(mapper.toFormData(any(), any(), eq(vorgangNummerSupplier))).thenReturn(testFormData); - when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); - } - } - - @Nested - class TestIsSupportedMessageType { - - @Test - void shouldAcceptGeschaeftsgang() { - var geschaeftsgangMetaData = XtaMessageMetaDataTestFactory.create(); - - assertThat(service.isSupportedMessageType(geschaeftsgangMetaData)).isTrue(); - } - - @Test - void shouldAcceptFIM() { - var fimMetaData = XtaMessageMetaDataTestFactory.createBuilder() - .messageType(FIM_MESSAGE_TYPE_PREFIX + "34355") - .build(); - - assertThat(service.isSupportedMessageType(fimMetaData)).isTrue(); - } - - @Test - void shouldNotAcceptOtherMessageType() { - var metaDataDFoerder = XtaMessageMetaDataTestFactory.createBuilder().messageType(MESSAGE_TYPE_OTHER).build(); - - assertThat(service.isSupportedMessageType(metaDataDFoerder)).isFalse(); - } - } - - @DisplayName("get form data if no runtime exception") - @Nested - class TestGetFormDataIfNoRuntimeException { - - @Mock - XtaMessageMetaData messageMetaData; - - @Mock - FormData formData; - - @DisplayName("should call get formdata") - @Test - void shouldCallGetFormdata() { - service.getFormDataIfNoRuntimeException(messageMetaData); - - verify(service).getFormData(messageMetaData); - } - - @DisplayName("with exception") - @Nested - class TestWithException { - @DisplayName("should return empty") - @Test - void shouldReturnEmpty() { - doThrow(new RuntimeException("test-error")).when(service).getFormData(any()); - - var result = service.getFormDataIfNoRuntimeException(messageMetaData); - - assertThat(result).isEmpty(); - } - } - - @DisplayName("without exception") - @Nested - class TestWithoutException { - @DisplayName("should return") - @Test - void shouldReturn() { - doReturn(formData).when(service).getFormData(any()); - - var result = service.getFormDataIfNoRuntimeException(messageMetaData); - - assertThat(result).contains(formData); - } - } - } - - @Nested - class TestGetFormData { - - @Mock - private FormData formData; - - private XtaMessage message = XtaMessageTestFactory.create(); - private XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create(); - private RepresentationsAttachmentsPair classification; - private FormData mappedFormData = FormDataTestFactory.create(); - - @Captor - private ArgumentCaptor<XtaMessageMetaData> messageMetaDataCaptor; - - @Captor - private ArgumentCaptor<RepresentationsAttachmentsPair> classificationCaptor; - - @BeforeEach - void init() { - classification = RepresentationsAttachmentsPairTestFactory.create(); - var incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create()); - when(incomingFilesMapper.toIncomingFiles(message.getMessageFiles())).thenReturn(incomingFiles); - doReturn(classification).when(service).getRepresentationsAttachmentsPair(messageMetaData, incomingFiles); - } - - @BeforeEach - void mockMessageMapping() { - when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); - when(mapper.toFormData(any(), any(), any())).thenReturn(mappedFormData); - } - - @Test - void shouldCallRemoteService() { - service.getFormData(messageMetaData); - - verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); - } - - @Test - void shouldCallMapper() { - service.getFormData(messageMetaData); - - verify(mapper).toFormData(classification, messageMetaData, vorgangNummerSupplier); - } - - @Test - void shouldCallMapperToFormData() { - service.getFormData(messageMetaData); - - verify(mapper).toFormData(classificationCaptor.capture(), messageMetaDataCaptor.capture(), eq(vorgangNummerSupplier)); - assertThat(messageMetaDataCaptor.getValue()).isEqualTo(messageMetaData); - assertThat(classificationCaptor.getValue()).isEqualTo(classification); - } - - @Test - void shouldCallAddAttachments() { - service.getFormData(messageMetaData); - - verify(service).addAttachments(message, mappedFormData); - } - - @Test - void shouldReturnMappedResult() { - doReturn(mappedFormData).when(service).addRepresentations(any(), any()); - - var result = service.getFormData(messageMetaData); - - assertThat(result).isEqualTo(mappedFormData); - } - } - - @Nested - class TestAddAttachments { - - private final FormData inFormData = FormDataTestFactory.createBuilder().clearAttachments().numberOfAttachments(0).build(); - - @Test - void shouldAddAttachments() { - var result = service.addAttachments(XtaMessageTestFactory.create(), inFormData); - - assertThat(result.getAttachments()).hasSize(1); - assertThat(result.getNumberOfAttachments()).isEqualTo(1); - } - - @Test - void shouldWorkWithoutAnyAttachment() { - var result = service.addAttachments(XtaMessageTestFactory.createBuilder().clearAttachments().build(), inFormData); - - assertThat(result.getAttachments()).isEmpty(); - assertThat(result.getNumberOfAttachments()).isZero(); - } - } - - @DisplayName("get representations attachments pair") - @Nested - class TestGetRepresentationsAttachmentsPair { - - @Mock - private XtaMessageMetaData messageMetaData; - - @Mock - private RepresentationsAttachmentsPair classification; - - private List<IncomingFile> incomingFiles; - - @BeforeEach - void mock() { - incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create()); - } - - @DisplayName("should use correct mapper xdomea message type") - @Test - void shouldUseCorrectMapperXdomeaMessageType() { - when(messageMetaData.getMessageType()).thenReturn(XtaService.XDOMEA_0201_MESSAGE_TYPE); - when(xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles)) - .thenReturn(classification); - - var result = service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles); - - assertThat(result).isEqualTo(classification); - } - - @DisplayName("should use correct mapping for FIM message") - @Test - void shouldUseCorrectMappingForFimMessage() { - when(messageMetaData.getMessageType()).thenReturn(FIM_MESSAGE_TYPE_PREFIX + "836487"); - doReturn(classification).when(service).mapIncomingFilesToRepresentations(incomingFiles); - - var result = service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles); - - assertThat(result).isEqualTo(classification); - } - - @DisplayName("should throw exception for unexpected message type") - @Test - void shouldThrowExceptionForUnexpectedMessageType() { - when(messageMetaData.getMessageType()).thenReturn("unexpected"); - - assertThatThrownBy(() -> service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles)) - .isInstanceOf(TechnicalException.class); - } - } - - @DisplayName("map incoming files to representations") - @Nested - class TestMapIncomingFilesToRepresentations { - - private List<IncomingFile> incomingFiles; - - @BeforeEach - void mock() { - incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create()); - - } - - @DisplayName("should return representations with incoming files") - @Test - void shouldReturnRepresentationsWithIncomingFiles() { - var result = service.mapIncomingFilesToRepresentations(incomingFiles); - - assertThat(result.representations()).isEqualTo(incomingFiles); - } - - @DisplayName("should return attachments with empty list") - @Test - void shouldReturnAttachmentsWithEmptyList() { - var result = service.mapIncomingFilesToRepresentations(incomingFiles); - - assertThat(result.attachments()).isEmpty(); - } - } - - @Nested - class TestAcknowledgeReceive { - - @Test - void shouldCallRemoteService() { - service.acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); - - verify(remoteService).close(XtaMessageTestFactory.MESSAGE_ID); - } - } - - @DisplayName("create XTA message stream") - @Nested - class TestCreateXtaMessageStream { - private static final List<String> XTA_IDENTIFIERS = List.of("XTA_IDENTIFIER", "XTA_IDENTIFIER2"); - - @Captor - private ArgumentCaptor<String> identifierCaptor; - - @BeforeEach - void mock() { - when(remoteService.getMessagesMetadata()) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); - when(currentIdentifierService.getIdentifiers()).thenReturn(XTA_IDENTIFIERS); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - var result = service.createXtaMessageStream().toList(); - - assertThat(result).isEqualTo(getExpectedMessages()); - } - - private List<XtaMessageMetaData> getExpectedMessages() { - return Stream.concat( - XtaMessageMetaDatasAndHeaderTestFactory.create().getMessages(), - XtaMessageMetaDatasAndHeaderTestFactory.create().getMessages()).toList(); - } - - @DisplayName("should call set current identifier") - @Test - void shouldCallSetCurrentIdentifier() { - service.createXtaMessageStream().toList(); - - verify(currentIdentifierService, times(2)) - .setCurrentIdentifier(identifierCaptor.capture()); - assertThat(identifierCaptor.getAllValues()).isEqualTo(XTA_IDENTIFIERS); - } - } - - @Nested - class TestAddRepresentations { - @Test - void shouldAddPrimaryRepresentation() { - var result = service.addRepresentations(FormDataTestFactory.create(), XtaMessageTestFactory.create()); - - assertThat(result.getControl().getRepresentations()).isPresent().get() - .extracting(Representations::getPrimaryFormDataRepresentation).isEqualTo(XtaMessageTestFactory.PRIMARY_FORM_DATA_MESSAGE); - } - - @Test - void shouldRespectExistingRepresentation() { - var formData = FormDataTestFactory.createBuilder().control(FormDataControlTestFactory.createBuilder() - .representations(Optional.of( - Representations.builder().primaryFormDataPdfRepresentation("PDF_FILE").build())) - .build()).build(); - - var result = service.addRepresentations(formData, XtaMessageTestFactory.create()); - - var baseAssert = assertThat(result.getControl().getRepresentations()).isPresent().get(); - baseAssert.extracting(Representations::getPrimaryFormDataRepresentation).isEqualTo(XtaMessageTestFactory.PRIMARY_FORM_DATA_MESSAGE); - baseAssert.extracting(Representations::getPrimaryFormDataPdfRepresentation).isEqualTo("PDF_FILE"); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java deleted file mode 100644 index 320f11d3f..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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.eingang.xta.zip; - -import static de.ozgcloud.eingang.xta.zip.LimitedInputStream.*; -import static org.assertj.core.api.Assertions.*; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; - -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import lombok.SneakyThrows; - -class LimitedInputStreamTest { - - private static final int READ_LIMIT = 10; - private static final String STRING_WITH_READ_LIMIT_LENGTH = "A".repeat(READ_LIMIT); - private static final String STRING_WITH_MORE_THAN_READ_LIMIT_LENGTH = "B".repeat(READ_LIMIT + 1); - - private LimitedInputStream limitedInputStream; - - private InputStream createStringInputSteam(String string) { - return new ByteArrayInputStream(string.getBytes()); - } - - @SneakyThrows - private String readInputStreamToString(InputStream inputStream) { - return IOUtils.toString(inputStream, Charset.defaultCharset()); - } - - @SneakyThrows - @DisplayName("should succeed if read limit is not exceeded") - @Test - void shouldSucceedIfReadLimitIsNotExceeded() { - limitedInputStream = new LimitedInputStream(createStringInputSteam(STRING_WITH_READ_LIMIT_LENGTH), READ_LIMIT); - - var outputString = readInputStreamToString(limitedInputStream); - - assertThat(outputString).isEqualTo(STRING_WITH_READ_LIMIT_LENGTH); - } - - @DisplayName("should fail if read limit is exceeded") - @Test - void shouldFailIfReadLimitIsExceeded() { - limitedInputStream = new LimitedInputStream(createStringInputSteam(STRING_WITH_MORE_THAN_READ_LIMIT_LENGTH), READ_LIMIT); - - assertThatThrownBy(() -> readInputStreamToString(limitedInputStream)) - .isInstanceOf(IOException.class) - .hasMessage(LIMITED_EXCEEDED_MESSAGE); - } - - @DisplayName("read") - @Nested - class TestRead { - - @SneakyThrows - @DisplayName("should return") - @Test - void shouldReturn() { - limitedInputStream = createLimitedInputStream(); - - var result = limitedInputStream.read(); - assertThat(result).isEqualTo(STRING_WITH_READ_LIMIT_LENGTH.getBytes()[0]); - } - - @SneakyThrows - @DisplayName("should advance bytesRead") - @Test - void shouldAdvanceBytesRead() { - limitedInputStream = createLimitedInputStream(); - limitedInputStream.bytesRead = READ_LIMIT - 1; - - limitedInputStream.read(); - assertThat(limitedInputStream.bytesRead).isEqualTo(READ_LIMIT); - } - - @DisplayName("should throw if exceeded") - @Test - void shouldThrowIfExceeded() { - limitedInputStream = createLimitedInputStreamWithExceeding(); - limitedInputStream.bytesRead = READ_LIMIT; - - assertThatThrownBy(() -> limitedInputStream.read()).isInstanceOf(IOException.class); - } - - } - - @DisplayName("read into buffer") - @Nested - class TestReadIntoBuffer { - private byte[] buffer; - - @BeforeEach - void mock() { - buffer = new byte[READ_LIMIT]; - } - - @SneakyThrows - @DisplayName("should return") - @Test - void shouldReturn() { - limitedInputStream = createLimitedInputStream(); - - var result = limitedInputStream.read(buffer); - - assertThat(result).isEqualTo(READ_LIMIT); - } - - @SneakyThrows - @DisplayName("should advance bytesRead") - @Test - void shouldAdvanceBytesRead() { - limitedInputStream = createLimitedInputStream(); - - limitedInputStream.read(buffer); - assertThat(limitedInputStream.bytesRead).isEqualTo(READ_LIMIT); - } - - @DisplayName("should throw if exceeded") - @Test - void shouldThrowIfExceeded() { - limitedInputStream = createLimitedInputStreamWithExceeding(); - limitedInputStream.bytesRead = 1; - - assertThatThrownBy(() -> limitedInputStream.read(buffer)).isInstanceOf(IOException.class); - } - } - - private LimitedInputStream createLimitedInputStream() { - return new LimitedInputStream(createStringInputSteam(STRING_WITH_READ_LIMIT_LENGTH), READ_LIMIT); - } - - private LimitedInputStream createLimitedInputStreamWithExceeding() { - return new LimitedInputStream(createStringInputSteam(STRING_WITH_MORE_THAN_READ_LIMIT_LENGTH), READ_LIMIT); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java deleted file mode 100644 index 13bbe7f7a..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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.eingang.xta.zip; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.InputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import lombok.SneakyThrows; - -class ReadableZipEntryTest { - - @Mock - ZipEntry zipEntry; - - @Mock - ZipFile zipFile; - - private ReadableZipEntry readableZipEntry; - - @BeforeEach - void mock() { - readableZipEntry = ReadableZipEntry.builder() - .zipEntry(zipEntry) - .parentZip(zipFile) - .build(); - - } - - @DisplayName("get input stream") - @Nested - class TestGetInputStream { - @Mock - private InputStream inputStream; - - @SneakyThrows - @DisplayName("should return input stream") - @Test - void shouldReturnInputStream() { - when(zipFile.getInputStream(zipEntry)).thenReturn(inputStream); - - var inputStreamResult = readableZipEntry.getInputStream(); - - assertThat(inputStreamResult).isEqualTo(inputStream); - } - } - - @DisplayName("get positive size") - @Nested - class TestGetPositiveSize { - @DisplayName("should return size") - @Test - void shouldReturnSize() { - var size = 123L; - when(zipEntry.getSize()).thenReturn(size); - - var sizeResult = readableZipEntry.getPositiveSize(); - - assertThat(sizeResult).isEqualTo(size); - } - - @DisplayName("should throw if size is negative") - @Test - void shouldThrowIfSizeIsNegative() { - var size = -1L; - when(zipEntry.getSize()).thenReturn(size); - - assertThatThrownBy(() -> readableZipEntry.getPositiveSize()).isInstanceOf(TechnicalException.class); - } - - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java deleted file mode 100644 index 246517201..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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.eingang.xta.zip; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -import org.apache.commons.io.IOUtils; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import lombok.Builder; -import lombok.Getter; - -public class TestZipFileFactory { - - private static final String EXPANDED_ENTRY_NAME = "bomb.txt"; - - @Builder - @Getter - public static class TestZipEntry { - private String name; - private byte[] content; - } - - public static File createTempZipFile(List<TestZipEntry> testZipEntries) { - var file = TempFileUtils.createTmpFile().toFile(); - try (var zipOutputStream = new ZipOutputStream(new FileOutputStream(file))) { - for (TestZipEntry entry : testZipEntries) { - zipOutputStream.putNextEntry(new ZipEntry(entry.getName())); - zipOutputStream.write(entry.getContent()); - zipOutputStream.closeEntry(); - } - return file; - } catch (IOException e) { - throw new RuntimeException("Failed to create temporary zip file", e); - } - } - - public static File createTempZipBomb(int maxTotalSize) { - return overwriteFileWithZipEntrySize( - createTempZipWithSingleEntry(maxTotalSize * 2), - maxTotalSize - ); - } - - private static File createTempZipWithSingleEntry(int entrySize) { - var file = TempFileUtils.createTmpFile().toFile(); - try (var zipOutputStream = new ZipOutputStream(new FileOutputStream(file))) { - var entry = new ZipEntry(EXPANDED_ENTRY_NAME); - var content = "A".repeat(entrySize).getBytes(); - - zipOutputStream.putNextEntry(entry); - zipOutputStream.write(content); - zipOutputStream.closeEntry(); - - } catch (IOException e) { - throw new RuntimeException("Failed to create temporary zip file", e); - } - return file; - } - - private static File overwriteFileWithZipEntrySize(File file, int newSize) { - try { - var zipFileBytes = IOUtils.toByteArray(new FileInputStream(file)); - overwriteZipEntrySize(zipFileBytes, EXPANDED_ENTRY_NAME, newSize); - - // Write the adjusted ZIP content back to the file - try (var fos = new FileOutputStream(file)) { - fos.write(zipFileBytes); - } - } catch (IOException e) { - throw new RuntimeException("Failed to adjust size header of zip file", e); - } - return file; - } - - private static void overwriteZipEntrySize(byte[] zipFileBytes, String entryName, int newSize) throws IOException { - // Modify the uncompressed size entry size in the central directory structure (which is located at the end) - // Zip structure spec: https://www.iana.org/assignments/media-types/application/zip - var entryNameBytes = entryName.getBytes(); - - var lastIndexOfEntryName = findLastStartIndex(zipFileBytes, entryNameBytes); - if (lastIndexOfEntryName == -1) { - throw new IOException("ZIP entry not found: " + entryName); - } - var uncompressedSizeFieldStartOffset = lastIndexOfEntryName - (4 * 2 + 5 * 2 + 4); - writeIntToByteArray(newSize, zipFileBytes, uncompressedSizeFieldStartOffset); - } - - private static void writeIntToByteArray(int value, byte[] array, int offset) { - array[offset] = (byte) (value & 0xFF); - array[offset + 1] = (byte) ((value >> 8) & 0xFF); - array[offset + 2] = (byte) ((value >> 16) & 0xFF); - array[offset + 3] = (byte) ((value >> 24) & 0xFF); - } - - private static int findLastStartIndex(byte[] haystack, byte[] needle) { - var matchOffset = 0; - for (var i = haystack.length - 1; i >= needle.length; i--) { - if (haystack[i] == needle[needle.length - 1 - matchOffset]) { - if (++matchOffset == needle.length) { - return i; - } - } else { - matchOffset = 0; - } - } - return -1; - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java deleted file mode 100644 index 9b662cb6d..000000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java +++ /dev/null @@ -1,394 +0,0 @@ -/* - * 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.eingang.xta.zip; - -import static de.ozgcloud.eingang.xta.zip.TestZipFileFactory.*; -import static de.ozgcloud.eingang.xta.zip.ZipFileExtractor.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.List; -import java.util.Map; -import java.util.stream.IntStream; -import java.util.zip.ZipEntry; - -import org.apache.commons.lang3.StringUtils; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.util.MimeTypeUtils; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.SneakyThrows; - -class ZipFileExtractorTest { - - @Spy - @InjectMocks - private ZipFileExtractor extractor; - - @DisplayName("extract incoming files safely") - @Nested - class TestExtractIncomingFilesWithSizeLimit { - @Mock - IncomingFile incomingZipFile; - - @Mock - File zipFile; - - @Mock - IncomingFile outIncomingFile; - - List<IncomingFile> outIncomingFiles; - - @BeforeEach - void mock() { - outIncomingFiles = List.of(outIncomingFile); - - when(incomingZipFile.getFile()).thenReturn(zipFile); - doNothing().when(extractor).verifyLimits(zipFile); - - doReturn(outIncomingFiles).when(extractor).extractIncomingFiles(zipFile); - } - - @DisplayName("should call verify limits") - @Test - void shouldCallVerifySizeLimit() { - extractor.extractIncomingFilesSafely(incomingZipFile); - - verify(extractor).verifyLimits(zipFile); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - var output = extractor.extractIncomingFilesSafely(incomingZipFile); - - assertThat(output).isEqualTo(outIncomingFiles); - } - } - - @DisplayName("verify limits") - @Nested - class TestVerifyLimits { - @Mock - File zipFile; - - @DisplayName("should return") - @Test - void shouldReturn() { - when(zipFile.length()).thenReturn((long) ZIP_MAX_TOTAL_SIZE / 2); - doReturn((long) ZIP_MAX_TOTAL_SIZE).when(extractor).sumUncompressedEntrySizes(zipFile); - - extractor.verifyLimits(zipFile); - } - - @DisplayName("should throw if size limit exceeded") - @Test - void shouldThrowIfSizeLimitExceeded() { - doReturn((long) ZIP_MAX_TOTAL_SIZE + 1).when(extractor).sumUncompressedEntrySizes(zipFile); - - assertThatThrownBy(() -> extractor.verifyLimits(zipFile)) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should throw if ratio exceeded") - @Test - void shouldThrowIfRatioExceeded() { - when(zipFile.length()).thenReturn(1L); - doReturn((long) ZIP_MAX_THRESHOLD + 1).when(extractor).sumUncompressedEntrySizes(zipFile); - - assertThatThrownBy(() -> extractor.verifyLimits(zipFile)) - .isInstanceOf(TechnicalException.class); - } - } - - @DisplayName("extract incoming files") - @Nested - class TestExtractIncomingFiles { - - private File zipFile; - - @BeforeEach - void mock() { - zipFile = createTempZipFile(fromMap(Map.of( - "file1.pdf", "file content1", - "file2.xml", "<root></root>", - "file3.png", "" - ))); - } - - @DisplayName("should contain content") - @Test - void shouldContainContent() { - var extractedFiles = extractor.extractIncomingFiles(zipFile); - - var contents = extractedFiles.stream().map(f -> { - try { - return Files.readString(f.getFile().toPath()); - } catch (IOException e) { - throw new RuntimeException(e); - } - }).toList(); - assertThat(contents).containsExactlyInAnyOrder("file content1", "<root></root>", ""); - } - - @DisplayName("should have names") - @Test - void shouldHaveNames() { - var extractedFiles = extractor.extractIncomingFiles(zipFile); - - var names = extractedFiles.stream().map(IncomingFile::getName).toList(); - assertThat(names).containsExactlyInAnyOrder("file1.pdf", "file2.xml", "file3.png"); - } - - @DisplayName("should have content types") - @Test - void shouldHaveContentTypes() { - var extractedFiles = extractor.extractIncomingFiles(zipFile); - - var names = extractedFiles.stream().map(IncomingFile::getContentType).toList(); - assertThat(names).containsExactlyInAnyOrder("application/pdf", "application/xml", "image/png"); - } - - private List<TestZipEntry> fromMap(Map<String, String> entries) { - return entries.entrySet().stream().map(kv -> TestZipEntry.builder() - .name(kv.getKey()) - .content(kv.getValue().getBytes(StandardCharsets.UTF_8)) - .build()) - .toList(); - } - } - - @DisplayName("extract zip bomb") - @Nested - class TestExtractZipBomb { - private static final int SMALLER_MAX_ZIP_FILE_SIZE = 2 * 1024; - - @DisplayName("should throw with too many entries") - @Test - void shouldThrow() { - var zipFile = createIncomingFile(createTempZipFile(IntStream.range(0, ZIP_MAX_ENTRIES + 1).mapToObj(i -> TestZipEntry.builder() - .name("file%d.txt".formatted(i)) - .content(toBytes("A".repeat(2))) - .build() - ).toList())); - - assertThatThrownBy(() -> extractor.extractIncomingFilesSafely(zipFile)) - .isInstanceOf(TechnicalException.class); - } - - @SneakyThrows - @DisplayName("should throw with fake getSize") - @Test - void shouldThrowWithFakeGetSize() { - doReturn(SMALLER_MAX_ZIP_FILE_SIZE).when(extractor).getZipMaxTotalSize(); - var zipBomb = createIncomingFile(createTempZipBomb(SMALLER_MAX_ZIP_FILE_SIZE)); - - assertThatThrownBy(() -> extractor.extractIncomingFilesSafely(zipBomb)) - .isInstanceOf(TechnicalException.class) - .hasRootCauseMessage(LimitedInputStream.LIMITED_EXCEEDED_MESSAGE); - } - - @DisplayName("should throw with too large size") - @Test - void shouldThrowWithTooLargeSize() { - doReturn(SMALLER_MAX_ZIP_FILE_SIZE).when(extractor).getZipMaxTotalSize(); - var zipFile = createIncomingFile(createTempZipFile(List.of(TestZipEntry.builder() - .name("toolargefile.txt") - .content(toBytes("A".repeat(SMALLER_MAX_ZIP_FILE_SIZE + 1))) - .build() - ))); - - assertThatThrownBy(() -> extractor.extractIncomingFilesSafely(zipFile)) - .isInstanceOf(TechnicalException.class); - } - - private IncomingFile createIncomingFile(File file) { - return IncomingFile.builder() - .file(file) - .build(); - } - } - - @DisplayName("create incoming file") - @Nested - class TestCreateIncomingFile { - @Mock - File file; - - @Mock - ZipEntry zipEntry; - - private static final String NAME = "filename.name"; - private static final Long SIZE = 5L; - private static final String CONTENT_TYPE = "some/content"; - - @BeforeEach - void mock() { - when(zipEntry.getName()).thenReturn(NAME); - when(zipEntry.getSize()).thenReturn(SIZE); - doReturn(CONTENT_TYPE).when(extractor).getContentType(NAME); - } - - @DisplayName("should have name") - @Test - void shouldHaveName() { - var incomingFile = create(); - - assertThat(incomingFile.getName()).isEqualTo(NAME); - } - - @DisplayName("should have size") - @Test - void shouldHaveSize() { - var incomingFile = create(); - - assertThat(incomingFile.getSize()).isEqualTo(SIZE); - } - - @DisplayName("should have content type") - @Test - void shouldHaveContentType() { - var incomingFile = create(); - - assertThat(incomingFile.getContentType()).isEqualTo(CONTENT_TYPE); - } - - @DisplayName("should have file") - @Test - void shouldHaveFile() { - var incomingFile = create(); - - assertThat(incomingFile.getFile()).isEqualTo(file); - } - - private IncomingFile create() { - return extractor.createIncomingFile(file, zipEntry); - } - } - - @DisplayName("sum uncompressed entry size") - @Nested - class TestSumUncompressedEntrySize { - @DisplayName("should return size") - @Test - void shouldReturnSize() { - var sizes = IntStream.range(100, 110).boxed().toList(); - var expectedSum = sizes.stream().mapToLong(Integer::longValue).sum(); - var zipFile = createTempZipFile(sizes.stream() - .map(size -> TestZipEntry.builder() - .name("somefilewithsize%d".formatted(size)) - .content(toBytes("A".repeat(size))) - .build() - ).toList()); - - var sum = extractor.sumUncompressedEntrySizes(zipFile); - - assertThat(sum).isEqualTo(expectedSum); - } - } - - @Nested - class TestContentType { - - @Test - void shouldReturnDefaultWhenNullString() { - assertThrows(NullPointerException.class, () -> extractor.getContentType(null)); - } - - @Test - void shouldReturnDefaultWhenEmptyString() { - var contentType = extractor.getContentType(StringUtils.EMPTY); - - assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - @Test - void shouldReturnDefaultWhenSpaceString() { - var contentType = extractor.getContentType(StringUtils.SPACE); - - assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - @Test - void shouldGetContentType() { - var fileNames = List.of("1.xml", "2.txt"); - - var contentTypes = fileNames.stream().map(extractor::getContentType).toList(); - - assertThat(contentTypes).containsExactlyInAnyOrder(MimeTypeUtils.APPLICATION_XML_VALUE, MimeTypeUtils.TEXT_PLAIN_VALUE); - } - } - - @DisplayName("map zip entries") - @Nested - class TestMapZipEntries { - - @DisplayName("should throw if max entries exceeded") - @Test - void shouldThrowIfMaxEntriesExceeded() { - var zipWithTooManyEntries = createTempZipFile(IntStream.range(0, ZIP_MAX_ENTRIES + 1) - .mapToObj(i -> TestZipEntry.builder() - .name("test%d.txt".formatted(i)) - .content(toBytes("test file %d".formatted(i))) - .build() - ).toList()); - - assertThatThrownBy(() -> extractor.mapZipEntries(zipWithTooManyEntries, entry -> null)) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should map with mapping function") - @Test - void shouldMapWithMappingFunction() { - var expectedNumberList = IntStream.range(0, ZIP_MAX_ENTRIES).boxed().toList(); - var zipFile = createTempZipFile(expectedNumberList.stream() - .map(i -> TestZipEntry.builder() - .name("%d".formatted(i)) - .content(toBytes("some content")) - .build() - ).toList()); - - var numberList = extractor.mapZipEntries(zipFile, entry -> Integer.parseInt(entry.getName())); - - assertThat(numberList).isEqualTo(expectedNumberList); - } - } - - private byte[] toBytes(String string) { - return string.getBytes(StandardCharsets.UTF_8); - } - -} diff --git a/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6c..000000000 --- a/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/xta-adapter/src/test/resources/application-itcase.yml b/xta-adapter/src/test/resources/application-itcase.yml deleted file mode 100644 index e4f04915d..000000000 --- a/xta-adapter/src/test/resources/application-itcase.yml +++ /dev/null @@ -1,22 +0,0 @@ -ozgcloud: - xta: - identifiers: - - afmsh:010600000000_Online-Dienste - server: - address: localhost:3000 - name: LI33-0005 - protocol: https - keystore: - file: classpath:xtaTestStore.p12 - password: changeit - adapter: - targetVorgangManagerName: itcase - fallbackStrategy: DENY - routingStrategy: SINGLE - - -grpc: - client: - vorgang-manager-itcase: - address: in-process:vorgang-manager-itcase - negotiationType: PLAINTEXT diff --git a/xta-adapter/src/test/resources/junit-platform.properties b/xta-adapter/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d5..000000000 --- a/xta-adapter/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf deleted file mode 100644 index 4e6e6bf6da699a082d70749f5d383163c4e05373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32384 zcmY!laB<T$)HCDdQhoIJ{AFG)Rp+AA#FEq$g``S_<jfL<f|Ru4(#(=n1	Za=qlt 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 D0>fm* diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf deleted file mode 100644 index faf48ce9c5f7854d8cab8825be92d6ee2e23843f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185689 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�d9 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 diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 9623996ed..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>60b6753a-23a8-4552-ae82-36ed96f63e03</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Nachrichtentyp">0201</xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-05-17T15:35:54.560+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>30714b70-3ba3-4f32-a36a-4990162f14bb</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Brauchtumsfeuer NB Anbindung Test</xdomea:Betreff> - <xdomea:Kennzeichen>20240517561130590306</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-05-17</xdomea:Posteingangsdatum> - <xdomea:Typ>btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>6c89a915-791b-4e9f-a06b-a23a16925c34</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001</xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-05-17</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>15:35:54</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>44d72e8a-f8e3-484b-bf0c-a84cf1aebe0c</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml deleted file mode 100644 index 0ef5e29a1..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:form-version="2.022" - t:uuid="a1d537b5-79f1-492b-8966-b66d391fe294" t:id="20240517561130590306" t:timestamp="2024-05-17T13:35:13.586Z" - t:sender="test.afm.schleswig-holstein.de" t:form="Brauchtumsfeuer NB Anbindung Test" - t:form-id="btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb" t:customer="Schleswig-Holstein" t:customer-id="sh" - t:client="Schleswig-Holstein" t:client-id="land" t:lang="de-DE"> - <GebietID>9006880</GebietID> - <AnliegenID>9552000</AnliegenID> - <GebietBEZEICHNUNG>Scharbeutz</GebietBEZEICHNUNG> - <zst_online_dienst>Brauchtumsfeuer: - Anmeldung;266889711;https://www.dataport.de/datenschutz/;WEBSERVICE;;;https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas;https://www.dataport.de/impressum/;true - </zst_online_dienst> - <datenschutz_akzeptiert>true</datenschutz_akzeptiert> - <zustaendigestelle> - <OrganisationseinheitenID>9795669</OrganisationseinheitenID> - </zustaendigestelle> - <OrganisationseinheitenBEZEICHNUNG>Dataport-AFM-SH-Entwicklung Kunstbehörde</OrganisationseinheitenBEZEICHNUNG> - <zust_kontaktsystemkennung_ln /> - <zust_kontaktsystemkennung_nb /> - <zust_kontaktsystemkennung_webservice>https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas - </zust_kontaktsystemkennung_webservice> - <zust_strasse>Entwicklerweg</zust_strasse> - <zust_hausnummer>123</zust_hausnummer> - <zust_postleitzahl>24107</zust_postleitzahl> - <ortID>9006402</ortID> - <zust_ort>Kiel</zust_ort> - <zust_telefonnummer>+49 40 42846-4032</zust_telefonnummer> - <zust_faxnummer /> - <zust_emailadresse>Ramin.Jeyrani@dataport.de</zust_emailadresse> - <anzeigender_verantwortlich>true</anzeigender_verantwortlich> - <anzeigender_nachname>mit Anhang</anzeigender_nachname> - <anzeigender_vorname>Test</anzeigender_vorname> - <anzeigender_geburtsdatum>2001-01-01</anzeigender_geburtsdatum> - <anzeigender_land_auswahl>in Deutschland</anzeigender_land_auswahl> - <anzeigender_strasse>Test</anzeigender_strasse> - <anzeigender_hausnummer>1</anzeigender_hausnummer> - <anzeigender_postleitzahl>22222</anzeigender_postleitzahl> - <anzeigender_ort>Test</anzeigender_ort> - <anzeigender_firma /> - <kontakt_mail>malte.jendroschek@dataport.de</kontakt_mail> - <kontakt_telefon /> - <kontakt_mobil /> - <verantwortlicher_mobil>0123456789</verantwortlicher_mobil> - <verantwortlicher_mobil2 /> - <angabe>adresse</angabe> - <strasse>Teststr</strasse> - <hausnummer>1</hausnummer> - <ort>Scharbeutz</ort> - <ortsteil /> - <angaben_extra /> - <lageplan> - <file content-type="application/pdf" description="" id="assistants.85D54E9431CF70430ACBB8DD3E604E83C03B1891" - length="185689">00TESTPDF.pdf - </file> - </lageplan> - <feuer_datum>2025-07-08</feuer_datum> - <feuer_start>15:00</feuer_start> - <feuer_ende>23:00</feuer_ende> - <feuer_groesse>1000</feuer_groesse> - <feuer_art>Alles - </feuer_art> - <feuer_gefahrenabwehr /> - <weitergabe>true</weitergabe> - <richtigkeit>true</richtigkeit> - <missbrauch>true</missbrauch> - <betreff>Anzeige eines Brauchtumsfeuers</betreff> - <nachricht>Sehr geehrte/r Angtragssteller/in<br/><br/>Ihr Antrag wurde an die zuständige Stelle - gesendet.<br/> Ihre Vorgangsnummer und zuständige Stelle finden Sie im angehängten Dokument. <br/>Bitte - geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrerm Antrag an.<br/><br/><br/>Mit - freundlichen Grüßen<br/><br/>Ihre zuständige Stelle - </nachricht> - <mail /> - <nameid /> - <rest_response_name>[]</rest_response_name> - <mailboxguid /> - <antragsteller> - <pers_anrede /> - <pers_nachname>mit Anhang</pers_nachname> - <pers_vorname>Test</pers_vorname> - <pers_geburtsdatum>2001-01-01</pers_geburtsdatum> - <sh_strasse>Test</sh_strasse> - <sh_hausnummer>1</sh_hausnummer> - <sh_plz>22222</sh_plz> - <ort>Test</ort> - <kont_telefonnummer /> - <kont_mobilnummer /> - <kont_email>malte.jendroschek@dataport.de</kont_email> - </antragsteller> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index e66b92187..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Nachrichtentyp">0201</xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-05-17T09:21:09.073+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>e8f627fe-b90c-4fc7-ba61-20a43041971b</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Brauchtumsfeuer NB Anbindung Test</xdomea:Betreff> - <xdomea:Kennzeichen>20240517335360945504</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-05-17</xdomea:Posteingangsdatum> - <xdomea:Typ>btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>f5966df2-633a-4763-a769-b4250d66df58</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001</xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-05-17</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>09:21:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf deleted file mode 100644 index 484faac99dc6dd2f9f05e1abaa47f13f702cac19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32200 zcmY!laB<T$)HCDdQhoIJ{AFG)Rp+AA#FEq$g``S_<jfL<f|Ru4(#(=n1	Za=qlt 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%0DX|$NF)Ky@O@0D-bD}O$I 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 diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml deleted file mode 100644 index db0955a13..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:form-version="2.022" t:uuid="147839b0-e938-4606-a8bc-104afd83a2b3" t:id="20240517335360945504" t:timestamp="2024-05-17T07:18:56.031Z" t:sender="test.afm.schleswig-holstein.de" t:form="Brauchtumsfeuer NB Anbindung Test" t:form-id="btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb" t:customer="Schleswig-Holstein" t:customer-id="sh" t:client="Schleswig-Holstein" t:client-id="land" t:lang="de-DE"><GebietID>9006880</GebietID><AnliegenID>9552000</AnliegenID><GebietBEZEICHNUNG>Scharbeutz</GebietBEZEICHNUNG><zst_online_dienst>Brauchtumsfeuer: Anmeldung;266889711;https://www.dataport.de/datenschutz/;WEBSERVICE;;;https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas;https://www.dataport.de/impressum/;true</zst_online_dienst><datenschutz_akzeptiert>true</datenschutz_akzeptiert><zustaendigestelle><OrganisationseinheitenID>9795669</OrganisationseinheitenID></zustaendigestelle><OrganisationseinheitenBEZEICHNUNG>Dataport-AFM-SH-Entwicklung Kunstbehörde</OrganisationseinheitenBEZEICHNUNG><zust_kontaktsystemkennung_ln/><zust_kontaktsystemkennung_nb/><zust_kontaktsystemkennung_webservice>https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas</zust_kontaktsystemkennung_webservice><zust_strasse>Entwicklerweg</zust_strasse><zust_hausnummer>123</zust_hausnummer><zust_postleitzahl>24107</zust_postleitzahl><ortID>9006402</ortID><zust_ort>Kiel</zust_ort><zust_telefonnummer>+49 40 42846-4032</zust_telefonnummer><zust_faxnummer/><zust_emailadresse>Ramin.Jeyrani@dataport.de</zust_emailadresse><anzeigender_verantwortlich>true</anzeigender_verantwortlich><anzeigender_nachname>Malte</anzeigender_nachname><anzeigender_vorname>Test von</anzeigender_vorname><anzeigender_geburtsdatum>2001-01-01</anzeigender_geburtsdatum><anzeigender_land_auswahl>in Deutschland</anzeigender_land_auswahl><anzeigender_strasse>Teststraße</anzeigender_strasse><anzeigender_hausnummer>1</anzeigender_hausnummer><anzeigender_postleitzahl>22222</anzeigender_postleitzahl><anzeigender_ort>Teststadt</anzeigender_ort><anzeigender_firma/><kontakt_mail>malte.jendroschek@dataport.de</kontakt_mail><kontakt_telefon/><kontakt_mobil/><verantwortlicher_mobil>0123</verantwortlicher_mobil><verantwortlicher_mobil2/><angabe>adresse</angabe><strasse>Test</strasse><hausnummer>1</hausnummer><ort>Scharbeutz</ort><ortsteil/><angaben_extra/><feuer_datum>2024-10-01</feuer_datum><feuer_start>8:00</feuer_start><feuer_ende>12:00</feuer_ende><feuer_groesse>100</feuer_groesse><feuer_art>Holz -</feuer_art><feuer_gefahrenabwehr/><weitergabe>true</weitergabe><richtigkeit>true</richtigkeit><missbrauch>true</missbrauch><betreff>Anzeige eines Brauchtumsfeuers</betreff><nachricht>Sehr geehrte/r Angtragssteller/in<br/><br/>Ihr Antrag wurde an die zuständige Stelle gesendet.<br/> Ihre Vorgangsnummer und zuständige Stelle finden Sie im angehängten Dokument. <br/>Bitte geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrerm Antrag an.<br/><br/><br/>Mit freundlichen Grüßen<br/><br/>Ihre zuständige Stelle</nachricht><mail/><nameid/><rest_response_name>[]</rest_response_name><mailboxguid/><antragsteller><pers_anrede/><pers_nachname>Malte</pers_nachname><pers_vorname>Test von</pers_vorname><pers_geburtsdatum>2001-01-01</pers_geburtsdatum><sh_strasse>Teststraße</sh_strasse><sh_hausnummer>1</sh_hausnummer><sh_plz>22222</sh_plz><ort>Teststadt</ort><kont_telefonnummer/><kont_mobilnummer/><kont_email>malte.jendroschek@dataport.de</kont_email></antragsteller></myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf deleted file mode 100644 index 5ac687e093135486e303a1547f90f548c3d52f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54283 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	ZD@fY5|wqJODx1FL(n$V)~<g514^VXgT zOTV3#z4@*8)1{|^N>}Et+;-)j;CqeYOB)Vf>T+DV`HI@@KR^C_D!o{`bnR060Qqb0 zbpHp=|NYB;rQLGdz;7u(-~G^ke6PqmR)1r|3f3u64m%%a7`_fr$YNY77T_?Su|WLV z*-599W}RYJ{#bMG+Ij^Kb5$><+8ft07AP868mNCLdJy4I!q&y4%`DIMW6=RyMxh^? z3j*yDEN+{6S7nsSsvBPXSm+~g&2ZuFjNP{PqPERmW*xIt;`{8_4SO0yT0X1Z<5-pG zx5Zz_{iga!o38Gf9rM>}bTlt*OqsWT+pM@a-<x3v^8W<o2_@t+a=E;i+Q_k2>p+bG z<F>7?=lcS9?s=?x!+GHL+(};A3-{VS-1T_sj!9*{vsZ4pXLf|)mXB)b{fpDI_@lb_ zS%*rdBx~xeUX#1hF2+}CRrG34)4NJKu654;)1L?%PGkI`$NGXpb3;F$QPQc1e665Y zDQhmA%sV2P7%dkP`T0Vl#m&vE&z`k^%*eVlwP;#R#?E#o<}-VDKf5YiJinLObCSi@ zv`M1tCVQ+|W?f<Fc34xYX~Kehhsd)@r7Pz8D(7UTxxAin&}zY1)ziPk+*tkR@9-{v zU1_C0?S``Ak}2MbI$v7nJMqhiSuauy5!#wv)GBr8X=<02+7AJ(OWZ5&O<%B1?Q#1| z>8YK*v&|OD)cMuUIcv*$!@yqP80)r*JqzZ4+|*IG&B0(s`~j7keN#Sf;s`%`G`~xu zd-_*p=IocB<HV1CI5eH@-e%reZL#O9^X}}ZOL)V+-qxb>$b?hx{rA6IzBwi{_wA%! z@4fd{UC3SkM`P=gt+V_73dRe?ZA&}2!h6xbh_5?*Cm+kx(D#Zdd#v<-%gxJd?uS_` zvog<i^lnbKEj!wMV6B&N{6w#Zj!zC>H;{K(GW~4+Yf-IR%-)t8W-zaIu)ApSwNB1& z8q)=-10309qQxgxYjZB=s$xtpex<sC<@SDO2kG+$s@@I`*%rzt7f-#Ydr50$=q<gE z93n?#gQBc-WT(4)JJ9{}$!SS9cA?&_=@VVsbn}>=Z8mr=;TL>$@+#pgKeMwIv~}sq zDtJ$n=g*3-m{`s3@=dci`RS3FRbsstLj8|!UA@e$zS;HbtZ(Vo&r|)k6_`!Pk0}j` z><is}_i2Er+MdvfiyVAQOQ)`Ub+pDUp-J0n!!gqtd;1%Y{uQ#VsQi2N^zS=mx8K=T ze-e7yYAt`cUB6<^ncHnkpWZFcef{g;5j#h%^gLF}&w_vLIV$FF+%C3c_Sc{LqJ&O< zzGii^diI@pw_N1(rheWdb?);m2cO*u{{nlrPmg_h_Tt4omSs!LpM4KxHaM}yTYj^4 zZQeG{*}OJi3?<*5j+$cEzf(5*-GZMpE+2B&^|GG(sfS<wTjKpC3f+9mkEMJlnXrcI z9mlffnF{`ock(Q`ptIxx&)G!tyAMxm@qH0Z7JRzn)5JsC(;h8I5oIqf_D_wj+LFCY zU*pWIkQ;2Xj5IHto|^t{Qtj;=lPMg#KJb2R`*h%j&xGr;Wy|Mw95Y^+VD%}A<7R3& zN8sU&n~H=pibZs-9JW4)Iiq;+<{l;IX0}yFzaCjO<!I!E?fr$#jv~*b%=Q&u6`oug z-F~+8?3I<}{I4r^Jl-TanSGt=_p-P9vJc!?dHMZKuU9wpJSV){z$CUJWuD;9>B4L0 z3NPv1XYDb&V)MDEDT_@{*j}tRxnyU)>Ad<0kEyOYY0MkEZz^|(cHXhb5o_C<zn~$o zbG6^npxf_O1@C!Ru-2!Zqhr<G3CYIcE5-dab=J8){czZ%a;ZvK_nr^T?(bFe_1=ef zD}8u;MJr&ZQ26T$4quH-!h9c!WKNQv+FGF)siYrxZSm`mUsIa*#O;i`+q8Yc**mhA z!gl&rve+)DiLVv3UH4Dq?c`fm%`fO*{eHpvmHmbLS3bY!xy7F6{#AK>RNtdl38h9} ztGXtXRA;j~JdS!@n`H7UX2~f%*K+l076!vg_vcNvACAtMY@oen3P)4g;)hG$t0&|s z$ok6oE?AW_<5xoHq^C0$Rf)K|$|x?7tTt$CT(Q9Kw2@-Ol#o{Eh!vMMgej>{_FNjO z=%vp0){|>3lOThamf)l#s@u-j`Ct4QVsPQ=ovSim=38CN*~g>2yZlj-w0d-2QsdJJ z7oP{7xo~Zsf8Gp>UY_*qxzdvJ+?5Z1&NBGt`Tf)UxgDZEh5z5UU&|~1epl|rQ<B#w zuI15oZE2}(n40%czMWz7CJE2CU*|u~xqJKUU6s!p^RoFJPrTbSNvE!8ubJ>Bi8ays z2N&oIoUof%pm#iYZY}4e&CA=Ym$%&sZuVl$uGqWcgv7jzw?UsR`R!v~Je_2`zA)>i z)Vn#$wVuqA3i9W@`l(XkajC+yxjVgzvgVw*`S^_8k!M{I$3i*p%sjm2m*Y9MGBL9i z<@U0@5BaC`BotlTvg&@?dWpxHPj6~G>B>0Pd03V&`Sy>3O<hjwRII~dW!$80I7gH) zZM$Xq?HAkGR?hXG^sbi7kuJL78lPAmQvZF$KeJlLrCYm?ZdmVL|H;aB$E5WECo8T` zUAH@Sj&{<X*(Ylb^5-+^Y2BEz=uwnyOhV2cweO-+uYFpy>`AAh>I1QgBi&|4pG~-H zb?UKAPz2viE}5koYN4k%-F2ljc&D~ox)mlLU1AbAFG2dH%xkIl`z~3Y-Rm<;U%x0{ zAb-NOlfRELpWFMczVrFiqS>ourrtg+^Yoli`P6g{sW<!L?&;Vc`0G*4X74?3tL@si zj@3t*`{F;o@2U^+`=ma%zI?vmdCkPx9`0*4#>bk-NgG^Aes<jWrk6*lMWuPs$w@Mk z=NPh=`dO%)>)SeGukq)+A_LLnvIl%q&oCz*pJx-eb?2k3L#EC1mz^uqEzd34x-(?@ zDdzPHPABU4oDVTKUc6naaM`H}4PSf5{cW#!>K86)7iO7|I%&a*RXLYULd$nLG|$)& z?T}}{a!gfxm7n_)aXrsI554WyiXL)~6J$1=Gu(YRdAoJW^vg2?Qu$;0T6EN%S-kV& z%66Hw&*eSOYsFCen;|tfPrdeD*w;B%-|jf-=e*tWz_av8St*;k!dGoy;qq3+c=D+f z@wk_}j=IWA&7QgCB~xCabc2k+{`7ATHdm&L8!c8c_~=u-S-ywq$6}uiH~)K1`~33R z^@__1kGu4~?M_Y7bAB_IF)Xj}g}X|7oWF2u=Bx>Nv*y))?Y3RydSc-j_k@5tmM`^t zn7@|0-MQvH;|8;(@TILcfBkM`mdT&~D>*FArq*fKvga%1sy;0)(@dIE^1bflnYvrQ z;tX~!aGqdtyxj9|rups*0!0U2*xgS4Ruup4>AExSyRUM{JHBCEel7Zh%*^fIcfAgf z_bB;p-T%(RJTh)|%g34vuhLGJ&Rlx!|Cfc28a>-><V6Jo*YzA0-o-Chv957_W#0c} zX8oJLi^`85e6ID6;nAbx>M{9~vUkb-_!_wB!=LJu$Md+4uLz6g`*r5Ff~Cw4?q{|K z@7Jk2Uz%7{KFK`g(Xp#}^1TOt<OVS^@av}tO0HKs&K%%)YO2;=zUwO=e~>V8lUwd{ zE&Z`%N}G-M%tiXgKcBFvTv?<Xr+$CMozDE}?*sN7O!v@GI9}K~C*akS<xlJrJeO}= zS5>Fms2TL)^sPk+Ig=K4d8LH*CNf3%8PwhsoT;s%5*YHF>3f>~{}h+m1uK>aTU#?c zXZ@%!<12^Ha%0bJ=hdd(D7P>uQjyi|3p<|Ken8GpYw2>C*AuFYkLfGhNUn8}Jfdj- zIgx$NuU(IN-Fs@yl_Q+qFFMfKQrDJLA#OV5_1FG`UO#8J`pg!JFPHH=Fl+PG6mQPe z`<F8vPkr^#AkBYSF{k_bcZ)ZBET0s5WcBO<<HMqspAYJ(&t);T-l-q5{KUNrs#DnC zf4XY;HTvr{LH;ERu2-=)e|*$>SF3~jLeqDh<x;I5pBY{>=v=Y7cW;hl_r*tzM}J00 zg#^!u_nQ}U`-bhz+4sMGo+>@<(fRjJQ$F5%y?foRz@LV{`DGuebMLO(^Z0l1oUi{U zIUD`<ck2JYcFm+``>UVi$3BmH7qvvWQtNkq*^F4njohAxcdIX)Xl3>N(@yD<lxgYq zzhW0fy8P##GV{_C{uf$xx~JMr{Inddb8BAd*uEh0N#&M_YU>zOe~Mp}TJhUProZ72 z!(Oph=UcugE~)a+^l;pqqqJn_gk_hLSL~i2$DO-o(c29*y0cWp7fyB3y3G3buKu1r zF{dh#2giTzUzmQ>Y70}}{Fc{o4+W)sULP?1-hF;C`+`4-7WVw7<XZO#_LVc)NUwXH zf2gZOoa=(jB#x(|7tYOn_IFyLy?gVItuyx@*lXfA`>|qfo82-8JGM(KD<-r5TsmRf zgX<T={!~3HwBWbgCHm{W(`m(CqtB-o%)R}vhB+pj>-csinU=zi3D%0D&RXjFN)9q5 z9G|py{MYXJ-S)*Q%ICdhwZB1KvCn<KV-o65)LwjEK4H-kz0ZbEyw2Uw^V=Rb<yfKV z3eiug6PzY2o3uECwchfOK|DW~ymFt~0UIlSd52vs^ZV5<exG^RVmY_$3&kp)OeODZ z<JdokGuX@7cpHn&JH8*TJ=6YEj^U-wDy9DpwMQj(v3|%F*|MMW(&7uxJlps`U*vhQ zU;c^dpW{63X3n?RYHKsk3eT0cxX1F^iuczp2Ti7R^Z7D$)_7|#d0Jv~p<Z-u@ve6k zS7X^r{T=4sG;!S7uezhWYw{PVD%&lh#vea?oF`+;SNg80@-Ih`T#%h?^Hhm>Gda)g zWqZq_&^dui;cN33!zITRb(>8@F0pt#y<px{XW6#C!C1sxvW_8-WBp;7LpLPONqzsI z5$)fcRyHg5VqMo!@ry>rqL<Ay_Xf;q-MA$>H+a?}i{z&~`==Z3`QLO;{piXZzAeY= z`;J{QG>~Gsv#H3d+#t=1|9i97-l<RZ7e#BHyYw;Aa;|t+c8*_z+L=9e&*Od@OEu1M z*2sGFYi(HGSy!|8o_Q^1(MMJ{E`Q@N{p0Hksdv6#y!t28q-(Xq-<E#?Y~PtnFFz?Z z@wMy8O3+n5{IOa5DgOnPz0K3P+8^4*H~g$&w`D5cHLJdT%7^y}juncZS2lc*KE(Yb zjjdjLzs1AD$1G=Eo>Kkp|JFbM)hCv>iZ`V1oAA@8LVa@M@14^xwS2LB$FG_6G+-Zh zkhY2e-v{PTMt3yNx>!kUNLN_<WOBxe2`<e)4{xyhdEj}Y*n*m6AH=_Km5Z<WYCY5b zQP>r)1-zQ_XH~y5`#0}9vHL~Xtc>3i)}K1KIL@NnP%m<4>w59$Q=ZSZ2xZyH@#TB8 z@mzz;kskk<Y-TZ7NG{ma_$ggYzQNu3R?ef>mvrj(HO_1L<Hv2Uf9Ud3@rTRH4CCVF z7~f?2b9Yhji`RUw|7q4QvFZEdaq79o{Ee^T=RA+O?>3L!W?9V-jajLeN;_vBJ1p@( z>yq7v#EAFWMv{d-&m=c0f7W?^&PF?o`A__WmNUi%;;%OwZ8f}{d+IWm_cW=eC(=#^ zE@WG4@bl*6p8GYebtj%=boKfR#=C9jc%FE-k$uz0cLtdP&xDWd?a6PntmnvW{>@Pk z-5|G6=2DK8dXBEZr{J9qsY>PYXN;%1mM@InY2UcdVf|W1JvDu)3!(<!%p)XEgv`2Z z^pNYzjvtn*o~1Lbx9xd$dF!I@j>ny^$L$ll`LyPN@cRXfe~JUt<yQvev(Ii;scL)3 zy0=WysYGu{r3cfTxh$m_)z&vnJ)f98f9z={{-)}Js|MfYoegG3YfO4y3eR7Byk+JK zt_2I{25H~o^wMV9RUvk(f@__$|8b`4tTXrQ<B#S1vQ@O=a@YgQj)(u(oT+@rx?}#= z1J@M`*BZF%E9}3(RlK9;?r)8I4>m??{4F@Y*y5<*N4p1yL+0<`-};f$Br2xuUDKxB zEDt7Mct1CwO!`7TQ^t3`9s5o^xy|uwAM>e~TX{pKFSKG>Dz4f2=}6czb_FxGRm&az z-&vlaZZ4P0Y9pt3pZ#-z^{eiG;q%XQKl{I%h1K|Tw4b}Vquq=v3+_Afn>DQDxqCj} z$@_=Ms%LBrZ+8X6|0{P`eSd*`v7bqMz3|@|?_F-cFr43hYNyGadiEF7w)~Np<#hVw z`-eXmO}f{&zuvwm`-f$Q?sdK$-_3%4wr;pqFt@<`fv0B7f6*=3YJbd4y1f~5bJ>1K zPiPM4|9Wwvq`Ppv<g3%`PJ8C83EP!%CWYzF)ryE<3H{dUUh!kIWS5&BdoLls+yB<P z|C#T77A#(I$@bsXOIPQ%Ob}3D@wn93vVnzz<tB@#x=JFalYtKBGfpoD0RhvF(>*s9 zHE1t7lPDli&=@F?DRe}jM%Yb+RdlB0K}na?JKH5i!d-&i|G&HIYGzl<0gLy0itoK_ ziLWhRTmAZ4?7rP04mNy?*FXFJ{Gbh&Rph3;HNO~g*<N2&HVN51B`<KEQFg!yR=&3O zTVMB`%6IhNt8dHyu3@M36ZwN-r}^%#)!)l3_VC_r#nn6;SFD^c%lmJ{p<LYv&bZBg zogS7*74aXvdT)*8;eRs6q!!eqUo$xOLF0Ly$NKqoosowZ==G)a++I1g+HUJ5tHZXE zA7#qItG6tFuHmcv`S`L=C3+t&TQ8BRU3flYKmUmzpC4p&_#|o`XZvOP^LP1y-?@xc zouB@SZ{7AvU~359?0jdx0KQ=Ew{BM)8LItnMBjRvxnF&UzWBSo@5`UfDvf#OSHAr2 z&$!u}R)?BcitLtSd42e>Nz28}f^rsb=hd3D7{;~TKb?O2tG&rVl~>EwKC)TJS7vuR zuV>-8o>^^swmr7UC|1a*7p`S_utBNLgg1G|TccNHXRbS3*suT8`0G=zzdK^KhECi6 zx9-jNM>X~*;`9G9Jas5*+as|_qG*Y(^X)a8?^@k`vv0{lgT8GScW<ozSI?B2ZePLr z=I?z!Z^bL20^B`|FF0>n=q}e(S7cfLxJat@r2fnV<zEX6C*&XIU0fa;F2GyNy(5<Q zr^dyV?-TbizH8U<3C;I^y)^EoSe|uCO#hzvjiUdrtah=lXWtg}(La~z`hh>Z2P*1b z#h$QtT<7vbU*Nso331*3mnSFA=Z|an>wP1=S!l*|$8BwI_@bIDj>I3_U{`d_=8L_a z^t}2x>s!tliT?cZX_okt{JF&)pQnBMo#SNnT<Y8Je6O}Ok`_xs`DPf`GVIkCu=;L! zUFP_-iut7rUpzj0`GV%`jdEvq>AXJgR6ix?%>5R*?vl=^o0Ce@uf<1}r~MWEWVkWy zfzVIM^Pg)b>RaZud|P{}e2dtTrf)&#oMueUO8?C8Yo5fF_wNnOt0pzdmiBB9IBNE4 zw#4ovgKJk8-Ty21iTB22h5g%)o9xcFUEQCX<n!DAwth*^AM;~ZbWWzQ_wKySGodG8 zPV&drOIL3E&F_EO+jDW@<1g#C-hRBt_lUr$q&s$-+X`PTO@GPgdt>&cV*M-cu2}2c zcz3}&XZPgIf995+zm|S0aJNEVS^2^bcbw|i#eLuY`9aR{gWuHNYApT}aDl&MV)Bc} z52C+FdNL$W`DyTm+h%{jv~=#&gLUQyc4VYA7kz7fv)tyu>)U_!ueqYzVjEWP+@d>i zih1b#xnHM!EnX<U=!}c~j-Jo{GZO?lm~S7D`5pUNMkrH0*znaSoACK5b?fCB_+&SD z-kiRUJvyPk(Uz^YP<t`!uUz@Rjn^M5Dk~~q+~2=8{;{#Y^!6?T<)gPg*+})({fqi5 zu)cPtey8bPt4I4gPW{#>PvZG{>vhS7?a#I<mUFG2KI3XpZC+O))8hv&J?(-vWeRsW zll(KLoqN4Q{Y80{$kUUiPr|-M8LjvKSdsc=NyNrJ!CifS6iXf(onpSZYpcKMyzB8> z`j5t)6^bjr?sl2Gs9sxOXXiDyJx<xSPeUH;jD2Ii_QJIba|@y$$9ZM<@NC>~bWbk4 z(kCb3ZU1$n+pO13o*G-1GELlXBz5$);lh`<KH9KKc>8yhYGli9=Df?6{AcfiJGa&w z)Mr%ey<8K!uKL`B<UfBN%y=KOTz~P#TTEwuzcIbpJE8q0SFPcM)Hi3k=Zc+rT9UkL z!rIvfYy#JOjr?u9hwZ9Siu^i<DW9J|s_lJH{;bPQy6@rl{C8K@{@oe#H?1Xn<=Q%# zi0uBP`o8OJ2VK6t=h!cn`z30N=oQD>oi`5e_HNqn%uO(V+t&Ovk>;Ey*;bEoAMI6^ zjtc4jIni$3JJF6()6a!lr|uN~#P-#6<8cY)?@YH}eZOq6aarVk^%)Dw1z%r_{Zh#A zUj7bK^{k3AP1neu0{U%k9qCWD?wsfH;d4gw6RDLvuj}S<-LboJT|=uNG;o%g_^;D> zUrIYG%9TIHCBN`{%j|WH{X)oE)~Uu`jg<~Rg@k5VEv{qyzTeqS<zM(i&pqln?^j2@ zzFgw9L4Ft0gzBAVOx*4+DVgxQW$C3kDKj6MO(^4dQ=PM@S5aZkPezNS|M)VW2kngN zHMyp&@8RC<`n$NnBHVM=iITRL!WWO7OIaa&Bz5LXmUlYVmJ{E-opWGr>N?>a&&?+E zA3J0^t^e4a%X1Id{<WXbf9&1tS1j*VK0gt^P<V%UoP(W|_Hz^U0)K0FJ2&gb-x=w4 z7wi+|qPL3|Urtx}uXg<Rc|~`}Mc=OOJ@WcS!mcg<ecOK99{6*;#zjU`%{aWt?)($W z4?-u_Gd#Qc>_*kAZ;onF*-y%>o)ul-_1SRg(T>vHYqqc&o!zCS{qLpjg!NW$K0XlE zww-A9eXr?+l?hX8_U%sH#i;$h^z`e)*Hxp=Ydm6oWoTL;`KVg4`}NA|bBFFQ|I~R< zdNDj@-;Fssr<>>htlSq~yWhe7_38`hK8lAT?w;Cva?-E-j43aQ@7pA=+2!}8UH($= zqW#7fzw<8BQI@JYv3SbqD(3GG*JUdGsa;pp<ID1wWmnS$@xF=P^)qknvRiiY*VZY^ z-!{bA@ch-iB=Fm4hxzy0Yl<_zUs&q!CbY{|@t*b0nbTbI#D96~9NKcp-nCACVbqzM z@5-i5X!_B%Tm8*xgLU?9=DX{hw^uz2So_iR{me@xJ>hZ5M!Y4uOCEl^b8UvR;JUO6 z+)KW!S+eroyMp^Jn!nViNNi-Oy6dRrH1q5B%Y5(d?p`T+$2{t__M(4{@kR$UCZ<0T zubR=fvsC-{orc%@1Js@>*)Kji@ABm($$ft79!u<Y4-hYBDOvBc%UY@Nnza1`OP&`i zC6nUocIo_%+w=d)zFAefrv>b?EjPDwvg}{%5&fxd&R#i&yKfC^+b)PdKC*9G3_pk0 zZ@E49pDq9Wb4^R|`i);#Ebvpj&e4?3_wBR8ryr6vb(+p!c(Z*I&A(i}Hs#>&iX`77 znyK@S*xk#!qPp_@uI$Vu(am=}F83Y{d9zF8>7_|scdIqd+4cxU*cb0^jWcgQo^jpt z#iFBA`pS((68sY5lHYdET)L_E^Q_yq7x46c<a&85TeRYNn#i5wr+0iX&)@P)Qi<pN z{JYv`omHQPN%U3!ij}PMJ`r{Hw^)+gB%xKyPi+qAK0oPe_4k;1u31x_?`%7kJL7za z>4xL)r<_(yzftz0^8MmoyPh4I2R3}oSbk;g-+!#rM0P2j<_)qtSlU}^yS!vxeC8XQ z)0ST%R?ofp=}fWywmnX#zC74DM=j-r<;<$gS(onpsk#2{$*gGWXtRQU2cjmgo_;Ly z^YQ@Adz_g;{i%Ozm)v;%e6!_qg^IRp#a9Pr`Xv0YadeiD@Ra!e#&}{?-C_xTCAkk3 zb7$N)I`LUn>{-^y>64C2`W}ptdckjLxL?$yW}n{q3Xzvg{`}nE?YI~IpU*snai`&= zsz)s*6*@NR7mOsn7oMy&TXyos)4b`6WA!Sw`G2@$+*G;k^7QY2x4!>)ec$x|SBmFr zzh8L5xN6&z&DCzrKac$utjSh9cPVGlG$H1vySQ`Meyg6A+%mPSCd_ko+b<K}IpI9V zELY3fH0;z=e*5W9Z=%EIV)cl(4d?$w1Y|lteLOGis(pF->N!Vt%6fnQC2?L*_xugN z>9z4uE`qjd=TBDc%s;r}^xHkt|EbTaTXrs8Ec$ci=fa-JdM)`6XSuV!%6=xiF8ZQ+ zP42!|yJUAUI7F3ue)GH*y=(r?(0R=!M=BrqekswIaa+w;=9rZFS>B-gX|~_kx_9~O ze*aZ-vv&PA;dzfmwu(OYu1%_oU2^`&oI16wSNFBpe__3se`(zk89C!Ebr;tDICJ*w zr#(9BZTGNe3icLhUYf_1dB0{~+xe>ug=+2hFUR#T%G9mz$UpyncgNSIkuQ$lS6pxL zo7ui_8T<DKoBh^^XU+)Racn_ckL!(%&*pEPI^nRYePi~-`<y1hd%LSLE*r|*anvq1 zy|bRZIMJ`6hjD2F?+pLFt-m#|Or9?&mtpm0z4I=E?d1pGE_qVN{Z0JyTiFo4xjSUO zZ$2a|RH(zF6&@#&IW>Fd4*5eXXJ}?#(AaYAQqF;T!ADo4K9|RZKlpIyJfCo&{IObT zQ5V1EOmF>8_`DFbOzZt*$$L#bkbBSNj0@uLe>Kdp|FGw!Z^I>{>xcHmm(Jtf@crb{ zlH7$e*LkmKe{J%mdGQMN;~5)Xvq!x>wM@@V@Yu%m7i||Nd)Lg1n4@Z!BDdlCzT6(6 zEZL7nyoaq-?Di*mmm2?Hm}T?6!ceYr^B1nP=q)#QEw`}G-D<k<`L53|{I)!1GKiV? zdtTn#en)oK+n3iCuZsP`JEg^X<u#dAd`nY{sx{p13&d2Xo=m^BBhNE-Lg|_GEBim} z5v$BhzqZ14iq7M>ytCfEaqIudJ}^CPs`%Sqd&d9Qe|4{J<iC2OE-*OVc$U@b!fAh* zzK6_7H=kv7`r?wi8=qggQYZOJ>-7m%iSVpm-)D+9=CkuJtgoGP@ubPoUn`cbzq{CV zVea|EG9@faPnrhCsr$P9pStG0{<SaS(cc$OdojCc?bgcA;y>p$NBBS8YI)6jE6Yb& z7wey~%=hb;#OxQn@5^#MQ-9INJJ*ZmYaQdUyWLwU^=o#~yXY&mSKR*|ebqe0nd#9! zk2T)Ul=^o%ac#ck`%QDF$ii<2H|uP_kaVVYk$+a+*GQ>{byx4qPyDm>*J_oubFbE~ z%#W;{@JsH{jT-iS5B5sU^Y6AaJ%4tdSn}obVfLE8oZ{MBB5V4S&dyKT!TYJ)!1twh z(DplTChX3+IVDcxan7{DbA0;W^9-hK5lQ}}eP!zTZ*0$FU22cqeBpnjCe`9kB>T$i zpWl8h`#A4I-<rL(M=kXq{FSNO{%y{^DD&0T+Ae<E1Rk4Af4uy{X(hvVeL|TF`h|bn ziaskhnr~yD*<Do?U+^yd{L?o(*)A&7>e{Z1<&9k-KHpR5@n3Gm&$rbj3)@oUa|P08 zDn9(ic8GWTF<!&AJv@9(_RaN;hp$;(eYyYhcIOzqgFi1=+1Uqdzg#NvbnA2_o5d^E z1}4AMo;5%3L1|&ze(i)K+k?$!|A^_e;5PM`r~IU{cHWd1#hEQHo@*cZ=QdM}{qF*f zuS**A8uyx?nf_wCWB7ZWZ!6VaZ12cVI+mRq$oKVrc<RR4`xqV?9sPMP>94uTy{|^G zkAG?Vmi~2-R(8AOcEWU)S96TzweP~ectZ|+HhCfHeZ}L<b*&7OW9`o_)QT0xxzq{F z`|GlMuUzsi+bu!&nfLoEK4;=Tw$bOt{$*27iEjy7eW2P&;w@`oUe(fnqAB@5&QJU# zyW_0me}V3T_m`Z1@qCh4`l9&RB=`BevnF3ZFo)}}kK{W;hQg}u61$@_cC=6Hv@v0M zp1JPKWS5_Z{_s^saqVQ5+4%X9%M)dhbM2q+Ev(V{{Me)a;U<pO)2{Z8wiEwxeYpQX z_emy4#3QMyw93{)mAs$+&ipBsnsGSwWy|Sn%XaEKXM0e@?`re?&9CnQEU5?HyX@hP zWZ#lL(QNk5ot9^=hso{a>##EF4Eg<cv0tCi&wnmY%9q~jTqjuRY_*Q*3v0!94Q{^T z$Pe?vYNNCs6<Yl0EI(2Cxagi&tgBp{U}?6>^3(rf<{c{+Nq*xnL)k-FE^%4VDv#Ok z_ue=)zr$L%R^nZ1PxF59<g3REk{{{XPptnLb8ye+-_Q3vp0_ST`~3yg@I}3SM!O!w zo#gl*{bFj2`?2P|AqhF6@3s8Amri}bZ`D?}p7oZ8`9HH9mKSWlJgiUmEs~wDf9Kx$ z>GNIY3!Iv@?7_bSj?*st_M6Y=+*<sf(QUP{qB+Or-79|=$RGV19GoEYyZLUt<>d$a zdK&pI*xXp(x@n$T+m!tp)pp!#|4)`n?a_E)(w;H#wR6;xWsBqekJnyaY3;!l?5KZ1 zPQ`PV*Zz{s?+toq!vY*Xr`fR0Fg^QUN#*suj6k(#hR<FtD@j<sF8y`Gxq=JA-!<CL zo}4h>Sug9&8t>$?=aEv+XU<smsdSp(E1T<E?%F(4`aEObp+7$VPy9I(%Qp7|N9xYm z&fAtW2A=QUyW-uEdgHknVk;6}o_YRr-f#Q+&z}`HIW4a^JgfMlP23wv8|AP4T(ep# zHP3$+KQQk}-LywN*QO-&EZe%y{*uu5%OZ&~obwVR-|U>f=&r7&;v&mqH<^q2nLpQD z7rwCnS=ZJ}(;h`9UE6ORw02tOuE^%PRJoFsK|R{5HG|IZSK3vGSe-HY=XT}E)>$^! z=2rC2`x^E$*SP+$&1DIn*^AU>=vTSTDhxcU!TnX|eUIhq#Gt9mk3{}sI^BC~WwIfE zb=R)89lX;wt)8;&_g1HQrS~q`to*iw{m9PK?grs2L_b$tb4^;{yglX1xo7=6(|_)~ z@OR3w4Ee{hZ8K)i(YHGH!n~4gf2Z+x-)$40U;HMqd+wP<Ol+kZH!tZ&c70u8I6+-; z{^oDqXA}91BY&6a9E}Q-nxRp7!*SVG`;<7As@uP8&%brvZ~G{}{mGpDv;Wpkn8z;r zQRu;xpNeUE@-5e`7R$eJT{|UurTRO=`PVIC;urke%a^r+p>(gqjQNfKK4?9uyYjyB z%aRYLm-GH|xb<M3n{>eP@WtoWxyf7I*gEl@=*O^&S;|a>Wfz^-`92F@=YC<^k2vkj zPD8<mcFpyZe7OHE&6X&cYiV$P(ab8YcQYMa*WJ!&XtbPvQS9eiU+W{1Q%;|ao)Y>j zdDZkirv!_4&-2)M?D7_Ys;5GKIbU4#cRt4$e!1YSh02{+;id9tW(eyUZaZKn_|0;f z{g<gsiTh?wJG3vL@?wqC{N#O0a*zDs`1dNVOEh!IrIf#Zg6)^1GjgW9jPu{Aaa#3I z-PWIz>tyFWkG6SScJW*JD(#hv-Iw0%d95H?!FSQ=prg0jR<}J|USF=%JD0EAEUOWI zp{UyTNM+fFHCsDljzs&3-+s(CU-Ln}O6>X>yT3+06Q1ZVP&sXpy=4EsbipNa&Px`U zyEz@#TrjOIaiMsUUuDy#-qSzV@9my{Q=H*h`l&wSz}bzSV!z}k{_;O@)@jj+`JIcp zb&|^Fd**~aKBCxrEm-H)5kb{2IkU=AT{_=(OuBaE@<X=nz7zh-U!R-5j#<aZPvEPL z`m3*<uJcn}Y76iGTOZAn<!bUHQt5uuqC0P0eok~bTqAb)z0xj`^G3h4eGV7Sf3&;P zD}K%MPv;M{a0;vW%rHo#kWnYf75IkvRk6v8Z<A+-bg9bgsugW5taa53+TI&IMR;lH z^Z2dGsuROcU)ZI%A^de%rb^}Nt$Lv^Iqx;=XT-jg2-v!As-)+=xl!r5D~l#v4_~`9 z?C92WT_;~IT&l3rr_lFcsoo8)tVX}dTT^x%e^h1tp?U2BF&P#%!F6wDGd*i6eIW5W z!!s%=waeUW`Q~e4g|{CuCT%e*k(uG(Y<FAXs+kF!4;z0|=>dU<H&XR>$X;n$-`ek= z9sILE{>fh7r?pNYvBuWk5$m_CN&T<7CREs4xAJ9#_p{y&O|dzwuWKhhy<>cR(%jwA zM(cv7%}-4!x%O^Og{~aGWPeY5`|3seTnxLM;-c1XUB(b#>b&d6mL03Md|6Yvb(UY( zvMjEtlds=dt2y<e?xrH8&|q7?!Y85sm;Sr_De!;f)jh7)cFmdiihYad6(--m4Ez5F z{CC{G`uL7Bg=g7bJLpyj%dodq@$7&9_`B^_+pfU-OMNErsx_A`5R+lg`x+aQe06cm z)FV^R-gF4<e<ZbfU-R)Q_UjT~Iegr&D4)0$ul<|<%q>kG$(ffPyj9`Nz2)s3QxmrJ z*Ys19V*?jo`nW7`aapEpCdb!{R$*nYdS6Wsu&h|NJ?ifUE!D%j?UqmfCC1v&HD^!j zl>3WB0$7$cyl!B;oH&DTvb+xSYe$9!(;iB32VMF5ptN8{6{EZclib$?)k!PE?yvDV z|Ml6C)$CWoSMYlM;r$w_7$5$f>*uUrn<o5Ln5_7Hb+z{7y;Fo)>z(FA{9A20VdjVO zmG!H<x<Ajd)V&flWv=*jp9#Fj8csfNOjxls>-edne3`sW-QTJ?6t!O#E1F+=EcYq) z@z<sNuB<)}y?-5@exT*_t|_H2SLxRtRo?JPwf5y<gO93z*Zod><o#=H`GF(Tzuf$s z_{h8Jr>Vh5)!IubGk#36OOx^05wbdazW?htZ|&2jO`0UU_+CrUF3zPT!d@@cE?u4d zW4hm~Ioq#Jy}N7Sk+7deyUITQ$`<+0-Syw-=>Hv$<}dppuJO-W<bT4^`qoG11O9Y& z*++i-E%IM4m7(j<`XAfoC(6F?4*2t1^uO5A_=P_%i`J_joxkiy@RWc1vbH)u?XYut z!W}sEa4+AdNs2FOldkY-T;yBvS@weZl}EqS3|h~&J7~(TJ&-#&vTV((X}LG6<K~!( zpH1gidUr7UhVy%7S^W(DRTt&%r10knG-sR5;3;c<e1L_`sodq5yvTKl7-L7X89aIH z#~T$l70awJ2~R6reL^DLDmbl%=fYLnA8$ME^JTHe2jwK?xV<TOd(cHyEmCrFj@s(K zns)O#9z|6|g=k;2uIu^t@_0tqiOzuOtN4qquhpCU>ENl!FLq6xI`!r5J(g>y-Vff? zH)}c1l9HvuPZ(ASeA_qWMPj9(>Z;j_o3(`16{37ntIG3xFU?7Q`(d8XpA)|;leTg_ zPVd~kCx3a!Yp<o>1!BzJf7my*qQ5*oZ7aK;{*rKQ0aHz-7w3*J-qZc<dcpd^##NVg zHyq`ApWAtO&t{?4<0hvccX8dQF}!#Bl6qzP<GRYu@XA`z9nbml%N~i|I~cZNpG<oD zcJWOU5+!#lZjKdpU9|FK!OeGXt?O$3XQj5S-(B6h`-ttayXWUVefRF&gKxVg-+6m? ztxe&)2>)V#WB(<`9~;{2a{oGEdFa;4Gt(U_8rSwji2Vt#6us1H8TNGb58=ld*Sp-8 zP87*lDY~ll=uWT1gzq6*d$d$PI2UGZ6|yV~IxuzCYL-V_D+^-s5**wTx8B~PbHRSG z!2`Wrds1dE($Q_rcG$Z+YGI-3)vl9%-M82uwM~1Y;+nbfMdLS}-8xkZwoDOv^gLZX z<v4Gq;Rc2Eji*H_&#w6IX>oYY6zPb-h?t<8<(HQ&xpT>3n!#+fGp&tJk7}l>T2B=| zb^T|h_0;@`DbwCuY12^uq@P@#>k*fknYh)+v1PHyQ|T7xt3TaZJ||3hRxss}=e9#@ zHytW<s%h~~ZY&TKyyDsNT0~Is&`YlN+hG%@&EKx8>)Vn!*-2E%$949U3kJWf6@8Zb zDf#S~|E=5L_v61ZY6dPWo<1%Up126QWV&}Mc`Ul*$1*cOUL}}qr@F)wxrvjOU1|5+ za>zw~^I;cx=NUbp|IVB?d*Z?nUah%N)9iIk>%Fr6nHZ=R-2WrV$@o81Q}gz+X`9@= z9K7cjUA-cyvwn`4hVR^I;xlH=n!YJFAd>lB>Kj`P(|qZvPy4lRhCQ1-E!^^ixrY7M zQ+qD0N^}+fYOlPux+ya@<jR4wT|d&q3!@JIGJkM){@(V&sK1tL|IN8(aNl5}Sm&y^ zkWFWucP@24trNM_&2`Z&zs&m!P0a1S?NVIC$Ny@=h6S~}A=8&@Xe~Cmpkrz-z<Xo0 zyI;S|H>b-<>z@_$O^oB@W-HBzUu>hgH|gOWCDZ9f&+bMPDyu#@e`fQ)&<E^(pYxtD zZC@uT+WYr_zWsyUM(dO00uvWR7bYrHzgaRVH_tp~`3GfIy=`|FE&8<j?A>X}{uXg( z`eupooXBgwsjK9~X7l^+eT}C9d8~D%;Zq-Zhdm2)T`A_FC$oH!yM#IC`6#oMOW3+Z z`$a{URvh3`bzZsQz2fG%6CJ0`{V_B5*<B6aO*+p!GmpAV;o9xdWFHeDc~EG!dY*Qd z@!~Zq%XeP$KfOfe#ksu-)ehep&NQ95WK>)DGS2ty``!;<zPq_TtGw$r@A|&%Ot!!L zEYCffG4D^RC`wJ^GEguw<T8K*1v67qV^f7R1-O`@sRCG5ArCHQYHENfW@&*TW@c)P zA!cc8h%RPmYK)=R(9{A`ow<cMx?Uq=V<QYPb4v_+jj-5jY-o(3&e+TXL(Ig`#1h>O z6C(=~3^7wf41buIS(ss{voOU7Q&R(sa5geCH$&1}Qk0mPlUl@OW5cEI=@M;YV&drJ zY~W^TXliNZ=3?SzX=3hbX5nbzVrk~&=xE|<M_5HHm%e9STE2pzf`LL1mwr%weu;t+ hgdLn&l?qB3;A^rHi%P(0#njl`(11%-)z#mP3jjMQADsXI diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png deleted file mode 100644 index 9ec0d7a08d0be142997505dd5b6d13015054d5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64973 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 diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml deleted file mode 100644 index 14aa5016c..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dataport.de/dFAD/ApplicationDataMessageSchema"> - <ApplicationFormId>08dc645c-6704-48e7-868c-6afa8510384c</ApplicationFormId> - <Timestamp>2024-04-24T16:32:54.696248+02:00</Timestamp> - <ApplicationDataMessageVersion>3</ApplicationDataMessageVersion> - <Title>OZG-Cloud Test 2.0</Title> - <ProjectName>OZG-Cloud Test 2.0</ProjectName> - <ProjectTitle>OZG-Cloud Test 2.0</ProjectTitle> - <TransmittedApplicationId>UGLAG4ILLpz6a0</TransmittedApplicationId> - <MetaText1>9795669</MetaText1> - <InboxReference>hh/hh/4dd01647-b9d9-4775-1b50-08da3d83800a</InboxReference> - <AuthenticationAccountType>ServicekontoBasic</AuthenticationAccountType> - <AuthenticationMethod>UsernameAndPassword</AuthenticationMethod> - <AuthenticationIdentityDetails xsi:nil="true" /> - <Pages> - <Page> - <Title>Willkommen auf Ihrer neuen Seite</Title> - <Navigation>Freimodul 1</Navigation> - <Controls> - <Control> - <Upload> - <Label>Dateiupload</Label> - <Alias /> - <Files> - <Name>Admin.png</Name> - </Files> - </Upload> - </Control> - </Controls> - </Page> - </Pages> -</application> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 021987e3a..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Geschaeftsgang.Geschaeftsgang.0201 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="urn:xoev-de:xdomea:schema:2.4.0 xdomea-Nachrichten-VBS.xsd" xmlns="urn:xoev-de:xdomea:schema:2.4.0"> - <Kopf> - <ProzessID>b29d45cc-9aac-4452-ad08-60f5ab3bab95</ProzessID> - <Nachrichtentyp listURI="urn:xoev-de:xdomea:codeliste:nachrichtentyp" listVersionID="1.0"> - <code xmlns="">0201</code> - </Nachrichtentyp> - <Erstellungszeitpunkt>2024-04-24T16:32:54.7247984+02:00</Erstellungszeitpunkt> - <Absender> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Absender> - <Empfaenger> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Empfaenger> - <SendendesSystem> - <InstanzID>HH_dFoerdermittelantrag</InstanzID> - <Produktname>dFoerdermittelantrag</Produktname> - <Version>2.1.999.0</Version> - </SendendesSystem> - <EmpfangsbestaetigungAnInitiator>false</EmpfangsbestaetigungAnInitiator> - <EmpfangsbestaetigungAnVorgaenger>false</EmpfangsbestaetigungAnVorgaenger> - </Kopf> - <Hauptobjekt> - <Dokument> - <Identifikation> - <ID>5d142b11-7b52-4bfc-b14d-8d02fee84aa3</ID> - </Identifikation> - <AllgemeineMetadaten> - <Betreff>OZG-Cloud Test 2.0</Betreff> - <Kennzeichen>08dc645c-6704-48e7-868c-6afa8510384c</Kennzeichen> - </AllgemeineMetadaten> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Hauptobjekt> - <ExternerGeschaeftsgang> - <Identifikation> - <ID>3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714</ID> - </Identifikation> - <Beteiligungsschritt> - <Nummer>1</Nummer> - <Status listURI="urn:xoev-de:xdomea:codeliste:beteiligungsstatus" listVersionID="1.0"> - <code xmlns="">001</code> - <name xmlns="">Der Schritt liegt in der Zukunft.</name> - </Status> - <Verfuegung> - <Ersteller> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Ersteller> - <Adressat> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Adressat> - <Erstellungsdatum>2024-04-24</Erstellungsdatum> - <Erstellungsuhrzeit>16:32:54</Erstellungsuhrzeit> - </Verfuegung> - </Beteiligungsschritt> - </ExternerGeschaeftsgang> - <Anlage> - <Dokument> - <Identifikation> - <ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</ID> - </Identifikation> - <Typ>Anlage</Typ> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">019</code> - <name xmlns="">png-Portable Network Graphics</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Anlage> -</Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml deleted file mode 100644 index 618c4813e..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dataport.de/dFAD/ApplicationDataMessageSchema"> - <ApplicationFormId>08db3c1c-db1f-4d27-8dec-73af167e87f2</ApplicationFormId> - <Timestamp>2023-04-18T11:40:24.9940624+02:00</Timestamp> - <ApplicationDataMessageVersion>1</ApplicationDataMessageVersion> - <Title>Testantrag XML-Fachnachricht-Erweiterung</Title> - <ProjectName>XML-Fachnachricht-Erweiterung</ProjectName> - <ProjectTitle>XML-Fachnachricht-Erweiterung</ProjectTitle> - <TransmittedApplicationId>7AtSMHpx3LfJp4</TransmittedApplicationId> - <InboxReference>sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a</InboxReference> - <MetaText1>9795669</MetaText1> - <Pages> - <Page> - <Title>Beispiel Seite 1</Title> - <Navigation>Beispiel Seite 1</Navigation> - <Controls> - <Control> - <RadioButtonGroup> - <Label>Beispiel-Steuerelement</Label> - <Alias>beispiel-element</Alias> - <SelectedItems> - <SelectedItem> - <Label>Beispielwert 2</Label> - <Value>bsp-2</Value> - </SelectedItem> - </SelectedItems> - </RadioButtonGroup> - </Control> - </Controls> - </Page> - </Pages> -</application> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf deleted file mode 100644 index 7b21e652f0decdd019673853696d5ea448f44643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51229 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 J)z#mP3jl(wZSnvB diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 023f4e064..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Geschaeftsgang.Geschaeftsgang.0201 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:xoev-de:xdomea:schema:2.4.0 xdomea-Nachrichten-VBS.xsd" - xmlns="urn:xoev-de:xdomea:schema:2.4.0"> - <Kopf> - <ProzessID>d5be7468-e620-4126-a40e-61a7f9b46345</ProzessID> - <Nachrichtentyp listURI="urn:xoev-de:xdomea:codeliste:nachrichtentyp" listVersionID="1.0"> - <code xmlns="">0201</code> - </Nachrichtentyp> - <Erstellungszeitpunkt>2023-04-04T06:59:15.4231885+02:00</Erstellungszeitpunkt> - <Absender> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010100200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Absender> - <Empfaenger> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">jens.reese@mgm-tp.com</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Empfaenger> - <SendendesSystem> - <InstanzID>DE_dFoerdermittelantrag</InstanzID> - <Produktname>dFoerdermittelantrag</Produktname> - <Version>1.0.1.0</Version> - </SendendesSystem> - <EmpfangsbestaetigungAnInitiator>false</EmpfangsbestaetigungAnInitiator> - <EmpfangsbestaetigungAnVorgaenger>false</EmpfangsbestaetigungAnVorgaenger> - </Kopf> - <Hauptobjekt> - <Dokument> - <Identifikation> - <ID>be180ad4-da79-4de2-99b9-86aac2ca7c32</ID> - </Identifikation> - <AllgemeineMetadaten> - <Betreff>OZG-Cloud XTA-Test</Betreff> - <Kennzeichen>08db344b-0302-478e-8bc2-37edeb652460</Kennzeichen> - </AllgemeineMetadaten> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" - xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" - xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Hauptobjekt> - <ExternerGeschaeftsgang> - <Identifikation> - <ID>269562a3-9142-45b8-9bd2-db840b8322bf</ID> - </Identifikation> - <Beteiligungsschritt> - <Nummer>1</Nummer> - <Status listURI="urn:xoev-de:xdomea:codeliste:beteiligungsstatus" listVersionID="1.0"> - <code xmlns="">001</code> - <name xmlns="">Der Schritt liegt in der Zukunft.</name> - </Status> - <Verfuegung> - <Ersteller> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010100200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Ersteller> - <Adressat> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">jens.reese@mgm-tp.com</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Adressat> - <Erstellungsdatum>2023-04-04</Erstellungsdatum> - <Erstellungsuhrzeit>06:59:15</Erstellungsuhrzeit> - </Verfuegung> - </Beteiligungsschritt> - </ExternerGeschaeftsgang> -</Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf deleted file mode 100644 index 5b07b65f3a5355f3dc096a260129c5e9aaa0881e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39794 zcmY!laB<T$)HCDdQhoIJ{AFG)Rp+AA#FEq$g``S_<jfL<f|Ru4(#(=n1	Za=qlt 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 Vfs`f27G~xqyj-fPuKsSkTmWTc5#9g* diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png deleted file mode 100644 index 9ec0d7a08d0be142997505dd5b6d13015054d5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64973 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 diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml deleted file mode 100644 index 5d7032ca9..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:uuid="1d4a1b9b-b456-4d76-becb-eff301665993" t:id="20240404370530710707" t:timestamp="2024-04-04T08:17:33.211Z" - t:sender="test.afm.schleswig-holstein.de" - t:form="Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe" - t:form-id="maa_mantelantrag/maa_mantelantrag" t:customer="Schleswig-Holstein" t:customer-id="sh" - t:client="Schleswig-Holstein" t:client-id="land" t:lang="de" t:vollstaendigkeit="true"> - <gebiets_id>9007404</gebiets_id> - <egh_sgb9>true</egh_sgb9> - <bes_wohnform>false</bes_wohnform> - <hzl>false</hzl> - <grusi>false</grusi> - <hzg>false</hzg> - <hzp>false</hzp> - <hzuebss>false</hzuebss> - <hial>false</hial> - <ambulant>false</ambulant> - <stationaer>false</stationaer> - <sessionid>4cb66bdd-ad27-41c6-8f4b-fc7f023970ad</sessionid> - <anliegen_id>[8969232]</anliegen_id> - <anliegen_namen>[Eingliederungshilfe]</anliegen_namen> - <TypenIDLN>233034601</TypenIDLN> - <logopath1>https://include-sh-schul.zfinder.de/IWFileLoader?tsaid_mediaUUID=21734555-12d6-47aa-bd2e-5794634c592c - </logopath1> - <logopath2/> - <logopath3/> - <gebiet_typid>300004</gebiet_typid> - <gebiet_parent_id1>9006398</gebiet_parent_id1> - <gebiet_parent_typid1>300003</gebiet_parent_typid1> - <gebiet_parent_id2>9006398</gebiet_parent_id2> - <gebiet_parent_typid2>300003</gebiet_parent_typid2> - <gebiet_parent_id3>9006398</gebiet_parent_id3> - <gebiet_parent_typid3>300003</gebiet_parent_typid3> - <gebiet_parent_name3>Segeberg</gebiet_parent_name3> - <oeid>[266237176]</oeid> - <link_datenschutz>https://dse.segeberg.de/pdf/50_30_001.pdf</link_datenschutz> - <link_datenschutz2/> - <link_datenschutz3/> - <link_bankgeheimnis> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_Befreiung_vom_Bankgeheimnis.pdf - </link_bankgeheimnis> - <link_grundsicherung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Erklaerung_zur_Zahlung_von_Grundsicherungsleistungen_an_Leistungserbringer.pdf - </link_grundsicherung> - <link_schweigepflicht> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Schweigepflichtentbindung.pdf - </link_schweigepflicht> - <link_abtretung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Einverstaendniserklaerung_und_Abtretung.pdf - </link_abtretung> - <link_wahrheit> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_der_antragstellenden_Person.pdf - </link_wahrheit> - <kontaktsystem_oeid>9795669</kontaktsystem_oeid> - <OrganisationseinheitenBEZEICHNUNG>Kreis Segeberg - Eingliederungshilfe für Minderjährige - </OrganisationseinheitenBEZEICHNUNG> - <zust_strasse>Hamburger Straße</zust_strasse> - <zust_hausnummer>30</zust_hausnummer> - <zust_postleitzahl>23795</zust_postleitzahl> - <ortid>9007404</ortid> - <zust_ort>Bad Segeberg</zust_ort> - <zust_telefonnummer/> - <zust_faxnummer/> - <zust_emailadresse>Eingliederungshilfe-Minderjaehrige@segeberg.de</zust_emailadresse> - <zustellung_nachrichtenbroker>afmsh:010600000000_Online-Dienste</zustellung_nachrichtenbroker> - <zustellung_email_ln/> - <zustellung_webservice/> - <kontaktsystem_oeid2/> - <OrganisationseinheitenBEZEICHNUNG2/> - <zust_strasse2/> - <zust_hausnummer2/> - <zust_postleitzahl2/> - <ortid2/> - <zust_ort2/> - <zust_telefonnummer2/> - <zust_faxnummer2/> - <zust_emailadresse2/> - <zustellung_nachrichtenbroker2/> - <zustellung_email_ln2/> - <zustellung_webservice2/> - <kontaktsystem_oeid3/> - <OrganisationseinheitenBEZEICHNUNG3/> - <zust_strasse3/> - <zust_hausnummer3/> - <zust_postleitzahl3/> - <ortid3/> - <zust_ort3/> - <zust_telefonnummer3/> - <zust_faxnummer3/> - <zust_emailadresse3/> - <zustellung_nachrichtenbroker3/> - <zustellung_email_ln3/> - <zustellung_webservice3/> - <grund>Hilfe</grund> - <a_grund_bescheinigung>false</a_grund_bescheinigung> - <nur_egh>true</nur_egh> - <nur_blindenhilfe>false</nur_blindenhilfe> - <nur_pers_angaben>false</nur_pers_angaben> - <nur_pers_mehrbedarfe>false</nur_pers_mehrbedarfe> - <antragsteller> - <anrede/> - <titel/> - <pers_nachname>Mustermann</pers_nachname> - <geburtsname/> - <pers_vorname>Max</pers_vorname> - <geburtsdatum>2000-04-05</geburtsdatum> - <geburtsort/> - <sh_strasse>Musterstrasse</sh_strasse> - <sh_hausnummer>12</sh_hausnummer> - <adresszusatz/> - <sh_plz>12345</sh_plz> - <ort>Bad Segeberg</ort> - <kont_email/> - <telefon/> - <mobiltelefon/> - <familienstand>ledig</familienstand> - <deutsch>deutsch</deutsch> - <a_ausweisdokument>false</a_ausweisdokument> - <erwerb/> - <erwerbsunfaehig/> - <betreuer>false</betreuer> - <partner>false</partner> - <kont_telefonnummer/> - </antragsteller> - <angaben_antragsteller> - <sozialhilfe_p>Nein</sozialhilfe_p> - <eingliederungshilfe>Nein</eingliederungshilfe> - <leistungen>Nein</leistungen> - <rentenantrag>Nein</rentenantrag> - <sozialversicherungsnummer/> - <rentenbeitraege/> - <auslandserwerb/> - <lebensunterhalt>Arbeit</lebensunterhalt> - <zuzug>false</zuzug> - <pflege_noetig/> - <ansprueche_dritte>false</ansprueche_dritte> - <stoerung_vorhanden>false</stoerung_vorhanden> - <sozialhilfe>Nein</sozialhilfe> - </angaben_antragsteller> - <weitere_personen>false</weitere_personen> - <fin_antragsteller> - <groesse_wohnung unit="m2"/> - <untervermietet_wohnung unit="m2"/> - <raeume/> - <baujahr/> - <wohnung_kosten unit="Euro"/> - <betriebskosten unit="Euro"/> - <heizkosten unit="Euro"/> - <heizart/> - <a_mietvertrag>false</a_mietvertrag> - <pauschalmiete unit="Euro"/> - <warmwasser/> - <miete_vermieter/> - <wohngeld/> - </fin_antragsteller> - <wohnart>Mietwohnung</wohnart> - <ver> - <ver-item> - <name_id>a</name_id> - <versicherung_vorhanden>false</versicherung_vorhanden> - <name>Max Mustermann</name> - <fruehere_kv_vorhanden/> - <frueherer_erwerb_v/> - <bedarf_hzg/> - <kuenftige_kv/> - </ver-item> - </ver> - <werkstatt/> - <leistungen_bezogen>false</leistungen_bezogen> - <einkommen_antragsteller> - <lgh_hzl_bg/> - <nselbststaendig_vorhanden>false</nselbststaendig_vorhanden> - <gewerbe_vorhanden>false</gewerbe_vorhanden> - <landwirtschaft_vorhanden>false</landwirtschaft_vorhanden> - <vermietung_vorhanden>false</vermietung_vorhanden> - <kapital_vorhanden>false</kapital_vorhanden> - <krankenkasse_vorhanden>false</krankenkasse_vorhanden> - <pflegekasse_vorhanden>false</pflegekasse_vorhanden> - <alg_vorhanden>false</alg_vorhanden> - <leistungen_afa_vorhanden>false</leistungen_afa_vorhanden> - <wohngeld_vorhanden>false</wohngeld_vorhanden> - <kindergeld_vorhanden>false</kindergeld_vorhanden> - <elterngeld_vorhanden>false</elterngeld_vorhanden> - <rente_inland_vorhanden>false</rente_inland_vorhanden> - <rente_ausland_vorhanden>false</rente_ausland_vorhanden> - <rente_sonstige_vorhanden>false</rente_sonstige_vorhanden> - <unterhalt_vorhanden>false</unterhalt_vorhanden> - <blindengeld_vorhanden>false</blindengeld_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <einkommen_gepfaendet>false</einkommen_gepfaendet> - <einkommen_vorhanden>false</einkommen_vorhanden> - </einkommen_antragsteller> - <vermoegen> - <vermoegen-item> - <name_id>a</name_id> - <bargeld_vorhanden>false</bargeld_vorhanden> - <konto_vorhanden>false</konto_vorhanden> - <sparguthaben_vorhanden>false</sparguthaben_vorhanden> - <altersvorsorge_vorhanden>false</altersvorsorge_vorhanden> - <bausparvertraege_vorhanden>false</bausparvertraege_vorhanden> - <aktien_vorhanden>false</aktien_vorhanden> - <paypal_vorhanden>false</paypal_vorhanden> - <lebensversicherung_vorhanden>false</lebensversicherung_vorhanden> - <kfz_vorhanden>false</kfz_vorhanden> - <sachwerte_vorhanden>false</sachwerte_vorhanden> - <haus_vorhanden>false</haus_vorhanden> - <hypotheken_vorhanden>false</hypotheken_vorhanden> - <erbschaft_vorhanden>false</erbschaft_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <veraeusserung_vermoegen>false</veraeusserung_vermoegen> - <vermoegen_vorhanden>false</vermoegen_vorhanden> - <name>Max Mustermann</name> - </vermoegen-item> - </vermoegen> - <datenerhebung>true</datenerhebung> - <vollstaendigkeit>true</vollstaendigkeit> - <a_befreiung_bankgeheimnis>false</a_befreiung_bankgeheimnis> - <a_entbindung_schweigepflicht>false</a_entbindung_schweigepflicht> - <name_bank/> - <iban/> - <kontoinhaber/> - <name_pdf>Antrag_Max_Mustermann_SGBIX</name_pdf> - <postfachnachicht>Sehr geehrte/r Antragsteller*in,<br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte - denken Sie daran, zur Vervollständigung Ihres Antrages die unterschriebenen Dokumente und erforderlichen - Nachweise einzureichen.<br/><br/>Die Bearbeitung Ihres Antrages ist erst nach Vorlage aller - erforderlichen Dokumente und Nachweise möglich.<br/><br/><br/>Mit freundlichen Grüßen<br/><br/>Kreis - Segeberg - Eingliederungshilfe für Minderjährige<br/>Hamburger Straße 30<br/>23795 Bad Segeberg - </postfachnachicht> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index add2a33b3..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,123 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Nachrichtentyp">0201 - </xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-04-04T10:24:07.468+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>9bae73b1-2ef3-480b-8acc-8bcd9979a788</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe</xdomea:Betreff> - <xdomea:Kennzeichen>20240404370530710707</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-04-04</xdomea:Posteingangsdatum> - <xdomea:Typ>maa_mantelantrag/maa_mantelantrag</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>8ae49342-8135-4f11-9930-5c4cc55b7ec2</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001 - </xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-04-04</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>10:24:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" - xsi:type="DateiformatCodeType"> - <xdomea:code xmlns="">019</xdomea:code> - <xdomea:name xmlns="">png-Portable Network Graphics</xdomea:name> - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf deleted file mode 100644 index 5b07b65f3a5355f3dc096a260129c5e9aaa0881e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39794 zcmY!laB<T$)HCDdQhoIJ{AFG)Rp+AA#FEq$g``S_<jfL<f|Ru4(#(=n1	Za=qlt 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 Vfs`f27G~xqyj-fPuKsSkTmWTc5#9g* diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml deleted file mode 100644 index 5d7032ca9..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:uuid="1d4a1b9b-b456-4d76-becb-eff301665993" t:id="20240404370530710707" t:timestamp="2024-04-04T08:17:33.211Z" - t:sender="test.afm.schleswig-holstein.de" - t:form="Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe" - t:form-id="maa_mantelantrag/maa_mantelantrag" t:customer="Schleswig-Holstein" t:customer-id="sh" - t:client="Schleswig-Holstein" t:client-id="land" t:lang="de" t:vollstaendigkeit="true"> - <gebiets_id>9007404</gebiets_id> - <egh_sgb9>true</egh_sgb9> - <bes_wohnform>false</bes_wohnform> - <hzl>false</hzl> - <grusi>false</grusi> - <hzg>false</hzg> - <hzp>false</hzp> - <hzuebss>false</hzuebss> - <hial>false</hial> - <ambulant>false</ambulant> - <stationaer>false</stationaer> - <sessionid>4cb66bdd-ad27-41c6-8f4b-fc7f023970ad</sessionid> - <anliegen_id>[8969232]</anliegen_id> - <anliegen_namen>[Eingliederungshilfe]</anliegen_namen> - <TypenIDLN>233034601</TypenIDLN> - <logopath1>https://include-sh-schul.zfinder.de/IWFileLoader?tsaid_mediaUUID=21734555-12d6-47aa-bd2e-5794634c592c - </logopath1> - <logopath2/> - <logopath3/> - <gebiet_typid>300004</gebiet_typid> - <gebiet_parent_id1>9006398</gebiet_parent_id1> - <gebiet_parent_typid1>300003</gebiet_parent_typid1> - <gebiet_parent_id2>9006398</gebiet_parent_id2> - <gebiet_parent_typid2>300003</gebiet_parent_typid2> - <gebiet_parent_id3>9006398</gebiet_parent_id3> - <gebiet_parent_typid3>300003</gebiet_parent_typid3> - <gebiet_parent_name3>Segeberg</gebiet_parent_name3> - <oeid>[266237176]</oeid> - <link_datenschutz>https://dse.segeberg.de/pdf/50_30_001.pdf</link_datenschutz> - <link_datenschutz2/> - <link_datenschutz3/> - <link_bankgeheimnis> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_Befreiung_vom_Bankgeheimnis.pdf - </link_bankgeheimnis> - <link_grundsicherung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Erklaerung_zur_Zahlung_von_Grundsicherungsleistungen_an_Leistungserbringer.pdf - </link_grundsicherung> - <link_schweigepflicht> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Schweigepflichtentbindung.pdf - </link_schweigepflicht> - <link_abtretung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Einverstaendniserklaerung_und_Abtretung.pdf - </link_abtretung> - <link_wahrheit> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_der_antragstellenden_Person.pdf - </link_wahrheit> - <kontaktsystem_oeid>9795669</kontaktsystem_oeid> - <OrganisationseinheitenBEZEICHNUNG>Kreis Segeberg - Eingliederungshilfe für Minderjährige - </OrganisationseinheitenBEZEICHNUNG> - <zust_strasse>Hamburger Straße</zust_strasse> - <zust_hausnummer>30</zust_hausnummer> - <zust_postleitzahl>23795</zust_postleitzahl> - <ortid>9007404</ortid> - <zust_ort>Bad Segeberg</zust_ort> - <zust_telefonnummer/> - <zust_faxnummer/> - <zust_emailadresse>Eingliederungshilfe-Minderjaehrige@segeberg.de</zust_emailadresse> - <zustellung_nachrichtenbroker>afmsh:010600000000_Online-Dienste</zustellung_nachrichtenbroker> - <zustellung_email_ln/> - <zustellung_webservice/> - <kontaktsystem_oeid2/> - <OrganisationseinheitenBEZEICHNUNG2/> - <zust_strasse2/> - <zust_hausnummer2/> - <zust_postleitzahl2/> - <ortid2/> - <zust_ort2/> - <zust_telefonnummer2/> - <zust_faxnummer2/> - <zust_emailadresse2/> - <zustellung_nachrichtenbroker2/> - <zustellung_email_ln2/> - <zustellung_webservice2/> - <kontaktsystem_oeid3/> - <OrganisationseinheitenBEZEICHNUNG3/> - <zust_strasse3/> - <zust_hausnummer3/> - <zust_postleitzahl3/> - <ortid3/> - <zust_ort3/> - <zust_telefonnummer3/> - <zust_faxnummer3/> - <zust_emailadresse3/> - <zustellung_nachrichtenbroker3/> - <zustellung_email_ln3/> - <zustellung_webservice3/> - <grund>Hilfe</grund> - <a_grund_bescheinigung>false</a_grund_bescheinigung> - <nur_egh>true</nur_egh> - <nur_blindenhilfe>false</nur_blindenhilfe> - <nur_pers_angaben>false</nur_pers_angaben> - <nur_pers_mehrbedarfe>false</nur_pers_mehrbedarfe> - <antragsteller> - <anrede/> - <titel/> - <pers_nachname>Mustermann</pers_nachname> - <geburtsname/> - <pers_vorname>Max</pers_vorname> - <geburtsdatum>2000-04-05</geburtsdatum> - <geburtsort/> - <sh_strasse>Musterstrasse</sh_strasse> - <sh_hausnummer>12</sh_hausnummer> - <adresszusatz/> - <sh_plz>12345</sh_plz> - <ort>Bad Segeberg</ort> - <kont_email/> - <telefon/> - <mobiltelefon/> - <familienstand>ledig</familienstand> - <deutsch>deutsch</deutsch> - <a_ausweisdokument>false</a_ausweisdokument> - <erwerb/> - <erwerbsunfaehig/> - <betreuer>false</betreuer> - <partner>false</partner> - <kont_telefonnummer/> - </antragsteller> - <angaben_antragsteller> - <sozialhilfe_p>Nein</sozialhilfe_p> - <eingliederungshilfe>Nein</eingliederungshilfe> - <leistungen>Nein</leistungen> - <rentenantrag>Nein</rentenantrag> - <sozialversicherungsnummer/> - <rentenbeitraege/> - <auslandserwerb/> - <lebensunterhalt>Arbeit</lebensunterhalt> - <zuzug>false</zuzug> - <pflege_noetig/> - <ansprueche_dritte>false</ansprueche_dritte> - <stoerung_vorhanden>false</stoerung_vorhanden> - <sozialhilfe>Nein</sozialhilfe> - </angaben_antragsteller> - <weitere_personen>false</weitere_personen> - <fin_antragsteller> - <groesse_wohnung unit="m2"/> - <untervermietet_wohnung unit="m2"/> - <raeume/> - <baujahr/> - <wohnung_kosten unit="Euro"/> - <betriebskosten unit="Euro"/> - <heizkosten unit="Euro"/> - <heizart/> - <a_mietvertrag>false</a_mietvertrag> - <pauschalmiete unit="Euro"/> - <warmwasser/> - <miete_vermieter/> - <wohngeld/> - </fin_antragsteller> - <wohnart>Mietwohnung</wohnart> - <ver> - <ver-item> - <name_id>a</name_id> - <versicherung_vorhanden>false</versicherung_vorhanden> - <name>Max Mustermann</name> - <fruehere_kv_vorhanden/> - <frueherer_erwerb_v/> - <bedarf_hzg/> - <kuenftige_kv/> - </ver-item> - </ver> - <werkstatt/> - <leistungen_bezogen>false</leistungen_bezogen> - <einkommen_antragsteller> - <lgh_hzl_bg/> - <nselbststaendig_vorhanden>false</nselbststaendig_vorhanden> - <gewerbe_vorhanden>false</gewerbe_vorhanden> - <landwirtschaft_vorhanden>false</landwirtschaft_vorhanden> - <vermietung_vorhanden>false</vermietung_vorhanden> - <kapital_vorhanden>false</kapital_vorhanden> - <krankenkasse_vorhanden>false</krankenkasse_vorhanden> - <pflegekasse_vorhanden>false</pflegekasse_vorhanden> - <alg_vorhanden>false</alg_vorhanden> - <leistungen_afa_vorhanden>false</leistungen_afa_vorhanden> - <wohngeld_vorhanden>false</wohngeld_vorhanden> - <kindergeld_vorhanden>false</kindergeld_vorhanden> - <elterngeld_vorhanden>false</elterngeld_vorhanden> - <rente_inland_vorhanden>false</rente_inland_vorhanden> - <rente_ausland_vorhanden>false</rente_ausland_vorhanden> - <rente_sonstige_vorhanden>false</rente_sonstige_vorhanden> - <unterhalt_vorhanden>false</unterhalt_vorhanden> - <blindengeld_vorhanden>false</blindengeld_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <einkommen_gepfaendet>false</einkommen_gepfaendet> - <einkommen_vorhanden>false</einkommen_vorhanden> - </einkommen_antragsteller> - <vermoegen> - <vermoegen-item> - <name_id>a</name_id> - <bargeld_vorhanden>false</bargeld_vorhanden> - <konto_vorhanden>false</konto_vorhanden> - <sparguthaben_vorhanden>false</sparguthaben_vorhanden> - <altersvorsorge_vorhanden>false</altersvorsorge_vorhanden> - <bausparvertraege_vorhanden>false</bausparvertraege_vorhanden> - <aktien_vorhanden>false</aktien_vorhanden> - <paypal_vorhanden>false</paypal_vorhanden> - <lebensversicherung_vorhanden>false</lebensversicherung_vorhanden> - <kfz_vorhanden>false</kfz_vorhanden> - <sachwerte_vorhanden>false</sachwerte_vorhanden> - <haus_vorhanden>false</haus_vorhanden> - <hypotheken_vorhanden>false</hypotheken_vorhanden> - <erbschaft_vorhanden>false</erbschaft_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <veraeusserung_vermoegen>false</veraeusserung_vermoegen> - <vermoegen_vorhanden>false</vermoegen_vorhanden> - <name>Max Mustermann</name> - </vermoegen-item> - </vermoegen> - <datenerhebung>true</datenerhebung> - <vollstaendigkeit>true</vollstaendigkeit> - <a_befreiung_bankgeheimnis>false</a_befreiung_bankgeheimnis> - <a_entbindung_schweigepflicht>false</a_entbindung_schweigepflicht> - <name_bank/> - <iban/> - <kontoinhaber/> - <name_pdf>Antrag_Max_Mustermann_SGBIX</name_pdf> - <postfachnachicht>Sehr geehrte/r Antragsteller*in,<br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte - denken Sie daran, zur Vervollständigung Ihres Antrages die unterschriebenen Dokumente und erforderlichen - Nachweise einzureichen.<br/><br/>Die Bearbeitung Ihres Antrages ist erst nach Vorlage aller - erforderlichen Dokumente und Nachweise möglich.<br/><br/><br/>Mit freundlichen Grüßen<br/><br/>Kreis - Segeberg - Eingliederungshilfe für Minderjährige<br/>Hamburger Straße 30<br/>23795 Bad Segeberg - </postfachnachicht> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 8f742978a..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Nachrichtentyp">0201 - </xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-04-04T10:24:07.468+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>9bae73b1-2ef3-480b-8acc-8bcd9979a788</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe</xdomea:Betreff> - <xdomea:Kennzeichen>20240404370530710707</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-04-04</xdomea:Posteingangsdatum> - <xdomea:Typ>maa_mantelantrag/maa_mantelantrag</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>8ae49342-8135-4f11-9930-5c4cc55b7ec2</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001 - </xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-04-04</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>10:24:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml deleted file mode 100644 index 4dabcc067..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml +++ /dev/null @@ -1,132 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="2b1b5768-e9b4-47f6-859e-c197ef4361a3" t:id="20240321325940124004" t:timestamp="2024-03-21T08:03:14.724Z" t:sender="test.afm.schleswig-holstein.de" t:form="Kleiner Waffenschein NB Test" t:form-id="waffen/kleinerWaffenscheinNB" t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" t:client="Schleswig-Holstein" t:client-id="land" t:lang="de"> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <AnliegenID>8966671</AnliegenID> - <antragsteller> - <pers_anrede>Herr$03</pers_anrede> - <pers_nachname>Max</pers_nachname> - <pers_vorname>Mustermann</pers_vorname> - <pers_geburtsname>Mustermann</pers_geburtsname> - <pers_geburtsdatum>2000-02-15</pers_geburtsdatum> - <pers_geburtsort>Eutin</pers_geburtsort> - <pers_geburtsland>deutsch$Deutschland$000</pers_geburtsland> - <pers_staatsangehoerigkeit>deutsch$Deutschland$000</pers_staatsangehoerigkeit> - <b_anrede>Herr</b_anrede> - <b_anrede_schluesselnr>03</b_anrede_schluesselnr> - <b_geburtsland>Deutschland</b_geburtsland> - <b_geburtsland_signatur>000</b_geburtsland_signatur> - <b_staatsangehoerigkeit>deutsch</b_staatsangehoerigkeit> - <b_staatsangehoerigkeit_signatur>000</b_staatsangehoerigkeit_signatur> - <sh_strasse>Musterstrasse</sh_strasse> - <sh_hausnummer>123</sh_hausnummer> - <sh_plz>23701</sh_plz> - <ort_auswahl>9006885$01055012</ort_auswahl> - <ort>Eutin</ort> - <GebietID>9006885</GebietID> - <GebietBEZEICHNUNG>Eutin</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01055012</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer /> - <kont_mobilnummer /> - <kont_telefaxnummer /> - <kont_email /> - <kont_demail /> - <persoenlicheEignung> - <maengelvorhanden>false</maengelvorhanden> - <ermittlungsverfahren>false</ermittlungsverfahren> - <MitgliedschaftInVerboternerVereinigung>false</MitgliedschaftInVerboternerVereinigung> - </persoenlicheEignung> - </antragsteller> - <GebietID>9006885</GebietID> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>279550874</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9795669</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Fachdienst Sicherheit und Ordnung - Kreis Ostholstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Lübecker Straße</strasse> - <hausnummer>41</hausnummer> - <postleitzahl>23701</postleitzahl> - <ortID>9006885</ortID> - <ort>Eutin</ort> - <telefonnummer>+49 4521 788-0</telefonnummer> - <telefaxnummer>+49 4521 788-292</telefaxnummer> - <emailadresse>sicherheit@kreis-oh.de</emailadresse> - <demailadresse /> - <kontaktsystem_kennung /> - <kontaktsystem_kennungzusatz /> - <AnliegenBEZEICHNUNG>Waffenschein beantragen</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089122001000</leikaKEYLIST> - <auswahl_zustellung>abholen</auswahl_zustellung> - <b_zustellung>Ich hole den Kleinen Waffenschein selbst ab.</b_zustellung> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Deliusstraße</strasse> - <hausnummer>10</hausnummer> - <postleitzahl>24114</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 530550-0</telefonnummer> - <telefaxnummer>+49 431 530550-99</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen des elektronischen Antrages von der zuständigen Stelle Gebühren erhoben werden können.</b_gebuehren_beschriftung> - <b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. - Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, eine Auskunft aus dem zentralen staatsanwaltschaftlichen Verfahrensregister, eine Stellungnahme der örtlichen Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Deliusstraße 10, 24114 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch> - <policyurl>http://www.ea-sh.info/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <logourl>http://www.ea-sh.info/logos/kopf_9068873.doc</logourl> - <fm> - <ansprechpartner> - <firmenname /> - <anrede>Herr</anrede> - <vorname>Mustermann</vorname> - <familienname>Max</familienname> - <anschrift> - <strasse>Musterstrasse</strasse> - <hausnummer>123</hausnummer> - <postfach /> - <postleitzahl>23701</postleitzahl> - <ort>Eutin</ort> - <ortsteil /> - <zusatz /> - <staat>Deutschland</staat> - </anschrift> - <kontakt> - <telefonnummer /> - <mobilnummer /> - <telefaxnummer /> - <emailadresse /> - <demailadresse /> - </kontakt> - </ansprechpartner> - <verwaltungsleistungen> - <verwaltungsleistung> - <ausgewaehlte_zustaendigestelle> - <OrganisationseinheitenID>279550874</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Fachdienst Sicherheit und Ordnung - Kreis Ostholstein</OrganisationseinheitenBEZEICHNUNG> - </ausgewaehlte_zustaendigestelle> - <GebietID>9006885</GebietID> - <GebietBEZEICHNUNG>Eutin</GebietBEZEICHNUNG> - <AnliegenID>8966671</AnliegenID> - <AnliegenBEZEICHNUNG>Waffenschein beantragen</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089122001000</leikaKEYLIST> - <leikaBEZEICHNUNG /> - </verwaltungsleistung> - </verwaltungsleistungen> - </fm> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 1eaa092e8..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>d254806f-abf4-4e4c-ae74-ea03460f34d2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Nachrichtentyp">0201</xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-03-21T09:05:01.424+01:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Einheitlicher Ansprechpartner</xdomea:Name> - <xdomea:Kurzbezeichnung>Einheitlicher Ansprechpartner</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>5b4e3f41-180b-4a9f-aa5b-19f9aa72f32e</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Kleiner Waffenschein NB Test</xdomea:Betreff> - <xdomea:Kennzeichen>20240321325940124004</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-03-21</xdomea:Posteingangsdatum> - <xdomea:Typ>waffen/kleinerWaffenscheinNB</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>1f6e0806-f9eb-4bb3-88ad-0828411f1f2c</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001</xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-03-21</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>09:05:01</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml deleted file mode 100644 index e535ee0d4..000000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml +++ /dev/null @@ -1 +0,0 @@ -<fim.S17000652.17000652001004 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:xoev-de:xfall:standard:fim-s17000652_1.4"><G17003529><G05001479><G05001480><F05002750>85ad506f-25a2-4a93-a086-b069784c6d60</F05002750><F05002751>21.03.2024 08:56:33</F05002751><F05002752>fim.S17000652.17000652001004</F05002752><F05002753>urn:fim:Versammlungsanzeige:1.4</F05002753></G05001480><G05001481><F05002754>Fachdienst Sicherheit und Ordnung - Kreis Ostholstein</F05002754><F05002755>vbe:010550120100</F05002755><F05002756>Versammlungsbehörde</F05002756></G05001481><G05001482><F05002754>Dataport</F05002754><F05002755>ehp:010100100000</F05002755><F05002756>Versammlungsbehörde</F05002756></G05001482></G05001479><F17005454>true</F17005454><F17005455>false</F17005455><F17005533>85ad506f-25a2-4a93-a086-b069784c6d60</F17005533></G17003529><F17009191>false</F17009191><G17002112><F60000228>Jörg</F60000228><F60000227>Bolay</F60000227><G60000086><F60000243>Muster</F60000243><F60000244>1</F60000244><F60000246>12345</F60000246><F60000247>Muster</F60000247></G60000086><F60000242>joerg.bolay@dataport.de</F60000242><F17009011>false</F17009011></G17002112><F17003371>Anzeigen einer ortsfesten Versammlung (Kundgebung / Demonstration)</F17003371><G17005404><G17007202><F17003373>fsdf</F17003373><F17003377>sdf</F17003377><G17005406><F60000048>2024-03-21</F60000048><F17001348>13.5</F17001348><F60000049>2024-03-21</F60000049><F17001349>15</F17001349></G17005406></G17007202><G17007205><F17003379>10</F17003379><F17003382>keine</F17003382><G17007234><F17011826>Nein</F17011826></G17007234><G17007235><F17011827>Nein</F17011827></G17007235></G17007205></G17005404></fim.S17000652.17000652001004> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 06068ed7f..000000000 --- a/xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Geschaeftsgang.Geschaeftsgang.0201 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="urn:xoev-de:xdomea:schema:2.4.0 xdomea-Nachrichten-VBS.xsd" xmlns="urn:xoev-de:xdomea:schema:2.4.0"> - <Kopf> - <ProzessID>b42b7984-279c-4260-8b48-c0389555608c</ProzessID> - <Nachrichtentyp listURI="urn:xoev-de:xdomea:codeliste:nachrichtentyp" listVersionID="1.0"> - <code xmlns="">0201</code> - </Nachrichtentyp> - <Erstellungszeitpunkt>2024-04-22T16:14:18.1885313+02:00</Erstellungszeitpunkt> - <Absender> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Absender> - <Empfaenger> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Empfaenger> - <SendendesSystem> - <InstanzID>HH_dFoerdermittelantrag</InstanzID> - <Produktname>dFoerdermittelantrag</Produktname> - <Version>2.1.999.0</Version> - </SendendesSystem> - <EmpfangsbestaetigungAnInitiator>false</EmpfangsbestaetigungAnInitiator> - <EmpfangsbestaetigungAnVorgaenger>false</EmpfangsbestaetigungAnVorgaenger> - </Kopf> - <Hauptobjekt> - <Dokument> - <Identifikation> - <ID>0e7734d8-bf3f-4f8d-9568-3791abf8fe44</ID> - </Identifikation> - <AllgemeineMetadaten> - <Betreff>Testantrag für die OZG-Cloud</Betreff> - <Kennzeichen>08dc497a-f1d4-412d-80ca-4f58405dc83e</Kennzeichen> - </AllgemeineMetadaten> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>%s</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>%s</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Hauptobjekt> - <ExternerGeschaeftsgang> - <Identifikation> - <ID>78fd7cf4-e9b2-4df1-9dc3-3b192a9d61d3</ID> - </Identifikation> - <Beteiligungsschritt> - <Nummer>1</Nummer> - <Status listURI="urn:xoev-de:xdomea:codeliste:beteiligungsstatus" listVersionID="1.0"> - <code xmlns="">001</code> - <name xmlns="">Der Schritt liegt in der Zukunft.</name> - </Status> - <Verfuegung> - <Ersteller> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Ersteller> - <Adressat> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Adressat> - <Erstellungsdatum>2024-04-22</Erstellungsdatum> - <Erstellungsuhrzeit>16:14:18</Erstellungsuhrzeit> - </Verfuegung> - </Beteiligungsschritt> - </ExternerGeschaeftsgang> - <Anlage> - <Dokument> - <Identifikation> - <ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</ID> - </Identifikation> - <Typ>Anlage</Typ> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>%s</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>anhang.pdf</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Anlage> -</Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 7bed65db9..000000000 --- a/xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,132 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Nachrichtentyp">0201 - </xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-04-04T10:24:07.468+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>9bae73b1-2ef3-480b-8acc-8bcd9979a788</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe</xdomea:Betreff> - <xdomea:Kennzeichen>20240404370530710707</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-04-04</xdomea:Posteingangsdatum> - <xdomea:Typ>maa_mantelantrag/maa_mantelantrag</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>%s</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>%s</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>8ae49342-8135-4f11-9930-5c4cc55b7ec2</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001 - </xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-04-04</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>10:24:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>%s</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>anhang.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/xtaTestStore.p12 b/xta-adapter/src/test/resources/xtaTestStore.p12 deleted file mode 100644 index a0cc212c49745a428186d0d4f2f73dd6ac7f24ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2768 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 P6^{eYHd-+;sS5xAda~bQ -- GitLab