From 26496da6367051c7add98555cf6bc703b14ac994 Mon Sep 17 00:00:00 2001 From: Stefan Hauffe <stefan.hauffe@mgm-tp.com> Date: Mon, 22 Apr 2024 12:51:39 +0000 Subject: [PATCH] OpenSource Release 2.0.0 --- .gitignore | 4 + .helmignore | 1 + common/pom.xml | 16 +- .../common/formdata/FormDataUtils.java | 45 - .../eingang}/Application.java | 9 +- .../java/de/ozgcloud/eingang/LogRunner.java | 44 + .../errorhandling/FunctionalException.java | 4 +- .../errorhandling/TechnicalException.java | 4 +- .../common/formdata/Antragsteller.java | 7 +- .../formdata/DeleteOnCloseInputStream.java | 40 +- .../eingang}/common/formdata/FormData.java | 16 +- .../common/formdata/FormDataUtils.java | 68 ++ .../eingang}/common/formdata/FormHeader.java | 14 +- .../eingang/common/formdata/IncomingFile.java | 64 ++ .../common/formdata/IncomingFileGroup.java | 10 +- .../formdata/PostfachAddressIdentifier.java | 28 + .../eingang/common/formdata/ServiceKonto.java | 47 ++ .../formdata/StringBasedIdentifier.java | 37 + .../common/formdata/ZustaendigeStelle.java | 12 +- .../common/vorgang/VorgangNummerSupplier.java | 57 ++ ...itional-spring-configuration-metadata.json | 22 + .../EingangAdapterApplicationTest.java | 4 +- .../formdata/AntragstellerTestFactory.java | 18 +- .../DeleteOnCloseInputStreamTest.java | 55 ++ .../common/formdata/FormDataTestFactory.java | 6 +- .../formdata/FormHeaderTestFactory.java | 17 +- .../formdata/FormSolutionsTestFactory.java | 9 +- .../IncomingFileGroupTestFactory.java | 4 +- .../common/formdata/IncomingFileTest.java | 120 +++ .../formdata/IncomingFileTestFactory.java | 26 +- .../formdata/PostfachAddressTestFactory.java | 50 ++ .../formdata/ServiceKontoTestFactory.java | 39 + .../ZustaendigeStelleTestFactory.java | 52 ++ .../vorgang/VorgangNummerSupplierTest.java | 129 +++ .../org.junit.jupiter.api.extension.Extension | 1 + common/src/test/resources/application.yml | 4 +- .../test/resources/junit-platform.properties | 1 + .../org.mockito.plugins.MockMaker | 1 + dependency-check-supressions.xml | 31 + enterprise-adapter/pom.xml | 127 +++ .../enterprise/entry/EntryController.java | 87 ++ .../eingang/enterprise/entry/EntryData.java | 78 ++ .../enterprise/entry/EntryDataMapper.java | 57 ++ .../enterprise/entry/EntryFormDataField.java | 71 ++ .../enterprise/entry/EntryFormDataItem.java | 44 + .../entry/EntryFormDataSubForm.java | 51 ++ .../enterprise/entry/EntryResponse.java | 46 + .../enterprise/entry/FormDataMapper.java | 122 +++ .../entry/ReadingRequestException.java | 37 + .../src/main/resources/application-local.yml | 24 + .../src/main/resources/application.yml | 44 + .../src/main/resources/log4j2-local.xml | 14 + .../entry/ControlDataTestFactory.java | 54 ++ .../entry/EnterpriseEntryITCase.java | 69 ++ .../enterprise/entry/EntryControllerTest.java | 161 ++++ .../enterprise/entry/EntryDataMapperTest.java | 105 +++ .../entry/EntryDataTestFactory.java | 37 + .../entry/EntryFormDataTestFactory.java | 93 ++ .../entry/EntryResponseTestFactory.java | 19 +- .../enterprise/entry/FormDataMapperTest.java | 49 ++ .../entry/ResponseVorgangTestFactory.java | 47 ++ .../entry/ServicekontoTestFactory.java | 48 ++ .../org.junit.jupiter.api.extension.Extension | 1 + .../test/resources/junit-platform.properties | 1 + .../src/test/resources/request/simple.json | 52 ++ .../formcycle-adapter-impl/pom.xml | 135 +++ .../formcycle/FormCycleFormDataMapper.java | 47 ++ .../eingang/formcycle/FormDataController.java | 183 ++++ .../formcycle/FormDataHtmlCleaner.java | 69 ++ .../FormcycleAdapterApplication.java | 72 ++ .../FormcycleExceptionHandler.java | 97 +++ .../errorhandling/InternalExceptionDto.java | 35 + .../CustomProtobufHttpMessageConverter.java | 42 + .../src/main/resources/application-local.yml | 21 + .../src/main/resources/application.yml | 46 + .../src/main/resources/banner.txt | 6 + .../FormCycleAttachmentGroupTestFactory.java | 40 + .../FormCycleFormDataMapperTest.java | 62 ++ .../FormCycleFormDataTestFactory.java | 52 ++ .../FormCycleFormHeaderTestFactory.java | 44 + .../FormCyclePostfachAddressTestFactory.java | 45 + .../FormCycleServiceKontoTestFactory.java | 31 +- .../formcycle/FormDataControllerITCase.java | 98 +++ .../formcycle/FormDataControllerTest.java | 367 ++++++++ .../formcycle/FormDataHtmlCleanerTest.java | 229 +++++ .../FormcycleAdapterApplicationTest.java | 38 + .../FormcycleExceptionHandlerTest.java | 149 ++++ .../InternalExceptionDtoTestFactory.java | 45 + .../org.junit.jupiter.api.extension.Extension | 1 + .../src/test/resources/application-itcase.yml | 4 + .../test/resources/junit-platform.properties | 1 + .../src/test/resources/log4j2.xml | 14 + .../formcycle-adapter-interface/pom.xml | 102 +++ .../src/main/protobuf/form-data.model.proto | 65 ++ formcycle-adapter/pom.xml | 72 ++ formsolutions-adapter/pom.xml | 90 +- .../FormSolutionsRepresentationsMapper.java | 65 -- .../FormSolutionsRequestMapper.java | 92 -- .../FormSolutionsAttachmentsMapper.java | 49 +- .../formsolutions/FormSolutionsEingang.java | 56 ++ .../FormSolutionsFileMapperUtils.java | 66 ++ .../FormSolutionsRequestMapper.java | 126 +++ .../SemantikAdapterConfiguration.java | 9 +- .../formsolutions/SendFormEndpoint.java | 49 +- .../WebServiceConfiguration.java | 10 +- .../src/main/resources/application-local.yml | 6 +- .../src/main/resources/application.yml | 2 +- .../src/main/resources/banner.txt | 9 + ...ormSolutionsRepresentationsMapperTest.java | 117 --- .../FormSolutionsRequestMapperTest.java | 252 ------ .../FormSolutionsAttachmentsMapperTest.java | 50 +- .../FormSolutionsEingangTestFactory.java | 24 +- .../FormSolutionsFileMapperUtilsTest.java | 51 ++ .../FormSolutionsFilesTestFactory.java | 11 +- .../FormSolutionsRequestMapperITCase.java} | 100 ++- .../FormSolutionsRequestMapperTest.java | 289 +++++++ .../FormsolutionsAdapterApplicationTest.java | 6 +- .../formsolutions/FormsolutionsITCase.java | 178 ++++ .../formsolutions/SendFormEndpointITCase.java | 175 ++++ .../formsolutions/SendFormEndpointTest.java | 63 +- .../resources/SimpleJsonWithAttachments.json | 21 + .../src/test/resources/application-itcase.yml | 2 +- .../formular/RequestJsonContent.json | 211 +++++ forwarder/pom.xml | 24 +- .../eingang}/forwarder/RouteCriteria.java | 4 +- .../forwarder/RouteCriteriaMapper.java | 6 +- .../forwarder/RouteForwardingGrpcService.java | 10 +- .../forwarder/RouteForwardingService.java | 6 +- .../forwarder/ForwarderApplicationTest.java | 6 +- ...GrpcRouteForwardingRequestTestFactory.java | 6 +- .../forwarder/RouteCriteriaTestFactory.java | 8 +- .../RouteForwardingGrpcServiceTest.java | 8 +- forwarder/src/test/resources/application.yml | 6 +- intelliform-adapter/pom.xml | 64 +- .../SemantikAdapterConfiguration.java | 9 +- .../eingang}/WebServiceConfiguration.java | 4 +- .../intelliform/AttachmentsContentAdder.java | 33 +- .../intelliform/CustomHeaderReader.java | 68 ++ .../DepositRequestIncomingFileMapper.java | 23 +- .../intelliform/FormDataEndpoint.java | 9 +- .../FormDataIncomingFileMapper.java | 20 +- .../eingang/intelliform/JsonService.java | 58 ++ .../RepresentationsCalculator.java | 8 +- .../intelliform/SemantikFormDataMapper.java | 32 +- .../intelliform/XmlToJavaMapsMapper.java | 97 ++- .../src/main/resources/application-dev.yml | 8 +- .../src/main/resources/application-local.yml | 8 +- .../src/main/resources/application-test.yml | 12 +- .../src/main/resources/application.yml | 10 +- .../src/main/resources/logback-spring.xml | 20 + .../src/main/scripts/create-demo-vorgang.sh | 336 +------- .../scripts/vorgang-Eingliederungshilfe.xml | 142 ++++ .../main/scripts/vorgang-GewerbeAnmeldung.xml | 55 ++ .../src/main/scripts/vorgang-Waffenschein.xml | 75 ++ .../src/main/scripts/vorgang-Wahlhelferin.xml | 84 ++ .../intelliform/FormDataEndpointITCase.java | 205 ----- .../intelliform/AttachmentTestFactory.java | 4 +- .../AttachmentsContentAdderTest.java | 25 +- .../intelliform/CustomHeaderReaderTest.java | 171 ++++ .../intelliform/CustomHeaderTestFactory.java | 58 ++ .../DepositRequestIncomingFileMapperTest.java | 8 +- .../intelliform/DepositTestFactory.java | 7 +- .../intelliform/FormDataEndpointITCase.java | 373 ++++++++ .../intelliform/FormDataEndpointTest.java | 10 +- .../FormDataIncomingFileMapperTest.java | 10 +- .../intelliform/GrpcFormFieldTestFactory.java | 33 + .../eingang/intelliform/JsonServiceTest.java | 121 +++ .../RepresentationsCalculatorTest.java | 12 +- .../SemantikFormDataMapperTest.java | 45 +- .../intelliform/XmlDaten1Container.java | 162 ++++ .../intelliform/XmlToJavaMapsMapperTest.java | 110 ++- ...EinfachesFormularZweiAnhaengeXmlDaten1.xml | 2 +- ...mularZweiAnhaengeXmlDatenVerschachtelt.xml | 2 +- ...larSoapRequest_WithContent_XML-Daten-1.xml | 2 +- .../SimpleFormDataMapperTestFile.xml | 6 +- .../intelliform/XML-Daten-1-SoapRequest.xml | 30 + .../intelliform/soaprequest_other-name.xml | 2 +- ...nfachesFormularZweiAnhaengeSoapRequest.xml | 111 ++- ...mularZweiAnhaengeSoapRequest_XML-Daten.xml | 84 ++ ...fachesFormularZweiAnhaengeSoapResponse.xml | 0 .../itcase/XML-Daten-1-SoapRequest.xml | 31 + .../XML-Daten-1-other_name_SoapRequest.xml | 30 + lombok.config | 2 +- pom.xml | 104 ++- release-erstellen.sh | 51 ++ release-startdev.sh | 87 ++ router/pom.xml | 27 +- .../router/VorgangRemoteService.java | 204 ----- .../eingang}/router/CallContext.java | 6 +- .../eingang}/router/FileIdMapper.java | 6 +- .../router/GrpcClientsProperties.java | 11 +- .../eingang}/router/GrpcEingangMapper.java | 30 +- .../eingang/router/ServiceKontoMapper.java | 73 ++ .../router/VorgangManagerListProperties.java} | 52 +- .../router/VorgangManagerServerResolver.java} | 32 +- .../eingang/router/VorgangRemoteService.java | 219 +++++ .../eingang}/router/VorgangService.java | 15 +- .../AdapterConfigurationException.java | 4 +- .../UnknownOrganisationseinheitException.java | 4 +- .../main/resources/META-INF/spring/README.md | 6 + ...ot.autoconfigure.AutoConfiguration.imports | 6 + .../router/IncomingFileTestFactory.java | 56 -- .../router/GrpcEingangHeaderTestFactory.java | 48 ++ .../router/GrpcEingangMapperITCase.java | 56 +- .../router/GrpcEingangMapperTest.java | 158 ++-- .../router/GrpcFormFieldTestFactory.java | 6 +- .../GrpcIncomingFileGroupTestFactory.java | 8 +- .../router/GrpcIncomingFileTestFactory.java | 8 +- .../router/ServiceKontoMapperTest.java | 131 +++ .../VorgangManagerListPropertiesTest.java} | 33 +- ...gangManagerListPropertiesTestFactory.java} | 46 +- .../VorgangManagerServerResolverITCase.java} | 20 +- .../VorgangManagerServerResolverTest.java} | 57 +- ...gangManagerServerResolverTestFactory.java} | 14 +- .../router/VorgangRemoteServiceTest.java | 106 ++- .../eingang}/router/VorgangServiceTest.java | 14 +- run_filereader.sh | 36 + run_helm_test.sh | 31 + run_local.sh | 28 + semantik-adapter/pom.xml | 30 +- .../enginebased/AbstractFileMapper.java | 88 -- .../semantik/enginebased/AfmHeaderMapper.java | 80 -- .../FormSolutionsAntragstellerMapper.java | 109 --- .../enginebased/FormSolutionsFilesMapper.java | 134 --- .../enginebased/FormSolutionsPanelMapper.java | 90 -- .../eingang}/semantik/SemantikAdapter.java | 25 +- .../semantik/common/ReadZipException.java | 35 + .../semantik/common/ZipAttachmentReader.java | 242 ++++++ .../enginebased/EngineBasedMapper.java | 10 +- .../EngineBasedSemantikAdapter.java | 6 +- .../enginebased/FilesMapperHelper.java | 65 ++ .../enginebased/ServiceKontoBuildHelper.java | 127 +++ .../afm/AfmAntragstellerHeaderMapper.java | 90 ++ .../afm}/AfmAntragstellerMapper.java | 44 +- .../afm/AfmAttachedFilesMapper.java | 47 ++ .../afm}/AfmEmpfangeneStelleMapper.java | 6 +- .../afm/AfmEngineBasedAdapter.java | 55 ++ .../afm}/AfmEngineBasedMapper.java | 21 +- .../afm}/AfmErklaerungenMapper.java | 6 +- .../enginebased/afm/AfmHeaderMapper.java | 114 +++ .../afm}/AfmZustaendigeStelleMapper.java | 37 +- .../enginebased/afm/XmlMapperSupplier.java | 44 + .../afm/ZustaendigeStelleData.java | 66 ++ .../afm/ZustaendigeStelleMetadataMapper.java | 109 +++ .../FormCycleEngineBasedAdapter.java | 47 ++ .../FormcycleAntragstellerMapper.java | 85 ++ .../FormcycleEngineBasedMapper.java} | 12 +- .../FormSolutionsAntragstellerMapper.java | 63 ++ .../FormSolutionsEngineBasedAdapter.java | 14 +- .../FormSolutionsEngineBasedMapper.java | 7 +- .../FormSolutionsFilesMapper.java | 113 +++ .../FormSolutionsHeaderMapper.java | 51 +- .../FormSolutionsPanelMapper.java | 94 +++ .../FormSolutionsZustaendigeStelleMapper.java | 18 +- .../formsolutions/IdentifierValueParser.java | 64 ++ .../xta/XtaEngineBasedAdapter.java} | 25 +- .../enginebased/xta/XtaEngineBasedMapper.java | 30 + .../xta/XtaZipRepresentationsMapper.java | 68 ++ .../semantik/formbased/AnliegenId.java | 6 +- .../DFoerdermittelFormBasedMapper.java | 145 ++++ .../semantik/formbased/FormBasedMapper.java | 10 +- .../formbased/FormBasedSemantikAdapter.java | 43 +- .../AfmAntragstellerMapperTest.java | 135 --- .../enginebased/AfmHeaderMapperTest.java | 99 --- .../enginebased/AfmHeaderTestFactory.java | 54 -- .../enginebased/AttachmentsTestFactory.java | 133 --- .../FormSolutionsAntragstellerMapperTest.java | 111 --- ...FormSolutionsAntragstellerTestFactory.java | 63 -- ...olutionsEngineBasedAdapterTestFactory.java | 69 -- .../FormSolutionsFilesMapperTest.java | 150 ---- .../semantik/SemantikAdapterTest.java | 13 +- .../common/ZipAttachmentReaderTest.java | 322 +++++++ .../enginebased/FilesMapperHelperTest.java | 183 ++++ .../ServiceKontoBuildHelperTest.java | 194 +++++ .../afm/AfmAntragstellerHeaderMapperTest.java | 264 ++++++ .../afm/AfmAntragstellerMapperTest.java | 219 +++++ .../afm}/AfmAntragstellerTestFactory.java | 19 +- .../afm/AfmAttachedFilesMapperTest.java} | 29 +- .../afm}/AfmEmpfangeneStelleMapperTest.java | 16 +- .../afm/AfmEngineBasedAdapterTest.java | 97 +++ .../afm}/AfmErklaerungenMapperTest.java | 16 +- .../enginebased/afm/AfmHeaderMapperTest.java | 226 +++++ .../enginebased/afm/AfmHeaderTestFactory.java | 104 +++ .../afm}/AfmZustaendigeStelleMapperTest.java | 54 +- .../afm}/AfmZustaendigeStelleTestFactory.java | 6 +- .../afm/ZustaendigeStelleDataTestFactory.java | 85 ++ ...aendigeStelleMetadataFieldTestFactory.java | 43 + ...ZustaendigeStelleMetadataMapperITCase.java | 73 ++ .../ZustaendigeStelleMetadataMapperTest.java | 196 +++++ .../FormCycleEngineBasedAdapterTest.java | 70 ++ .../FormcycleAntragstellerMapperTest.java | 221 +++++ .../FormSolutionsAntragstellerMapperTest.java | 132 +++ ...FormSolutionsEngineBasedAdapterITCase.java | 95 ++- .../FormSolutionsEngineBasedAdapterTest.java | 36 +- .../FormSolutionsFilesMapperTest.java | 204 +++++ .../FormSolutionsHeaderMapperTest.java | 50 +- .../FormSolutionsHeaderTestFactory.java | 18 +- .../FormSolutionsPanelMapperTest.java | 87 +- .../FormSolutionsPanelTestFactory.java | 32 +- ...mSolutionsZustaendigeStelleMapperTest.java | 51 +- .../IdentifierValueParserTest.java | 78 ++ .../xta/XtaZipRepresentationsMapperTest.java | 145 ++++ .../DFoerdermittelFormBasedMapperTest.java | 241 ++++++ .../DFoerdermittelFormDataTestFactory.java | 48 ++ .../FormBasedSemantikAdapterTest.java | 42 +- .../src/test/resources/attachment-1file.zip | Bin 0 -> 291 bytes .../src/test/resources/attachment-2files.zip | Bin 0 -> 3260 bytes .../src/test/resources/attachment-empty.zip | Bin 0 -> 174 bytes .../test/resources/attachment-encrypted.zip | Bin 0 -> 308 bytes .../src/test/resources/behoerde_metadata.xml | 22 + .../src/test/resources/eingang.pdf | Bin 0 -> 41620 bytes .../xta/Beispieldatensatz_Fachnachricht.xml | 32 + .../src/test/resources/zip-file-0.txt | 2 + .../src/test/resources/zip-file-1.txt | 796 ++++++++++++++++++ .../zipbombs/filewithmanyfiles.dat.zip | Bin 0 -> 17184 bytes .../resources/zipbombs/filewithnulls.dat.zip | Bin 0 -> 10374 bytes sonar-project.properties | 2 +- src/main/helm/Chart.yaml | 31 + src/main/helm/README.md | 93 ++ src/main/helm/templates/NOTES.txt | 24 + src/main/helm/templates/_helpers.tpl | 96 +++ src/main/helm/templates/deployment.yaml | 174 ++++ .../helm/templates/image-pull-secret.yaml | 34 + src/main/helm/templates/ingress.yaml | 67 ++ src/main/helm/templates/network_policy.yaml | 62 ++ src/main/helm/templates/service.yaml | 45 + src/main/helm/templates/service_account.yaml | 31 + src/main/helm/templates/service_monitor.yaml | 43 + .../tests/test-ingress-connection.yaml | 39 + .../tests/test-service-connection.yaml | 39 + src/main/helm/values.yaml | 52 ++ src/test/helm-linter-values.yaml | 31 + src/test/helm/deployment_63_chars_test.yaml | 55 ++ src/test/helm/deployment_bindings_test.yaml | 46 + ...yment_container_security_context_test.yaml | 90 ++ .../helm/deployment_defaults_labels_test.yaml | 49 ++ src/test/helm/deployment_env_test.yaml | 50 ++ .../helm/deployment_host_aliases_test.yaml | 53 ++ .../deployment_imagepull_secret_test.yaml | 49 ++ .../helm/deployment_liveness_probe_test.yaml | 52 ++ src/test/helm/deployment_resources_test.yaml | 60 ++ .../helm/deployment_routing-strategy.yaml | 73 ++ .../helm/deployment_service_account_test.yaml | 83 ++ .../helm/deployment_springProfile_test.yaml | 53 ++ src/test/helm/deployment_test.yaml | 54 ++ src/test/helm/image-pull-secret-test.yaml | 57 ++ src/test/helm/ingress-create-or-not.yaml | 49 ++ src/test/helm/ingress-nginx-tests.yaml | 68 ++ src/test/helm/ingress_host_test.yaml | 42 + src/test/helm/ingress_test.yaml | 147 ++++ src/test/helm/network_policy_test.yaml | 111 +++ src/test/helm/service_account_test.yaml | 105 +++ src/test/helm/service_monitor_test.yaml | 76 ++ src/test/helm/service_test.yaml | 78 ++ ...ple-response-getmessages-items-pending.xml | 76 ++ ...onse-getmessages-no-messages-available.xml | 36 + xta-adapter/pom.xml | 185 ++++ xta-adapter/readme.md | 39 + 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 | 67 ++ .../helm/templates/image-pull-secret.yaml | 34 + .../main/helm/templates/network_policy.yaml | 73 ++ .../main/helm/templates/service_account.yaml | 31 + .../helm/templates/xta_adapter_cronjob.yaml | 174 ++++ .../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 + .../MsgStatusListTypeAndHeaderResponse.java | 42 + .../xta/WsHeaderAddingInterceptor.java | 94 +++ .../xta/XtaApplicationConfiguration.java | 38 + .../java/de/ozgcloud/eingang/xta/XtaFile.java | 37 + .../de/ozgcloud/eingang/xta/XtaMessage.java | 23 +- .../de/ozgcloud/eingang/xta/XtaMessageId.java | 37 + .../eingang/xta/XtaMessageMapper.java | 75 ++ .../eingang/xta/XtaMessageMetaData.java | 43 + .../eingang/xta/XtaMessageMetaDataMapper.java | 68 ++ .../xta/XtaMessageMetaDatasAndHeader.java | 38 + .../xta/XtaMessageMetadataRemoteIterator.java | 65 ++ .../ozgcloud/eingang/xta/XtaProperties.java | 107 +++ .../eingang/xta/XtaRemoteService.java | 307 +++++++ .../xta/XtaRemoteServiceConfiguration.java | 149 ++++ .../de/ozgcloud/eingang/xta/XtaRunner.java | 71 ++ .../de/ozgcloud/eingang/xta/XtaService.java | 91 ++ xta-adapter/src/main/resources/XTA.wsdl | 620 ++++++++++++++ .../src/main/resources/application-local.yml | 17 + .../src/main/resources/application.yml | 15 + xta-adapter/src/main/wsdl/XTA-synchron.wsdl | 201 +++++ xta-adapter/src/main/xsd/OSCI2_02.xsd | 353 ++++++++ .../main/xsd/OSCI_MessageMetaData_V2.02.xsd | 404 +++++++++ .../main/xsd/XTA-Webservice-Datentypen.xsd | 569 +++++++++++++ .../main/xsd/XTA-Webservice-Exceptions.xsd | 158 ++++ .../xsd/XTA-Webservice-Globale-Elemente.xsd | 162 ++++ ...oasis-200401-wss-wssecurity-secext-1.0.xsd | 220 +++++ ...asis-200401-wss-wssecurity-utility-1.0.xsd | 133 +++ xta-adapter/src/main/xsd/soap-envelope.xsd | 136 +++ xta-adapter/src/main/xsd/ws-addr-wsdl.xsd | 67 ++ xta-adapter/src/main/xsd/ws-addr.xsd | 134 +++ xta-adapter/src/main/xsd/ws-policy.xsd | 166 ++++ xta-adapter/src/main/xsd/xenc-schema.xsd | 151 ++++ xta-adapter/src/main/xsd/xml.xsd | 170 ++++ .../src/main/xsd/xmldsig-core-schema.xsd | 316 +++++++ xta-adapter/src/main/xsd/xmlmime.xsd | 57 ++ .../src/main/xsd/xoev-basisdatentypen.xsd | 43 + .../src/main/xsd/xoev1_0-basisdatentypen.xsd | 57 ++ xta-adapter/src/test/helm-linter-values.yaml | 32 + .../helm/cronjob_service_account_test.yaml | 54 ++ .../src/test/helm/image_pull_secret_test.yaml | 59 ++ .../src/test/helm/network_policy_test.yaml | 125 +++ .../src/test/helm/service_account_test.yaml | 62 ++ .../src/test/helm/xta-bindings-type-test.yaml | 48 ++ .../test/helm/xta-keystore-secret-test.yaml | 54 ++ .../test/helm/xta-root-ca-secret-test.yaml | 49 ++ .../test/helm/xta_adapter_63_chars_test.yaml | 55 ++ .../test/helm/xta_adapter_bindings_test.yaml | 46 + .../helm/xta_adapter_cronjob_basic_test.yaml | 152 ++++ ...xta_adapter_cronjob_dummy_probes_test.yaml | 93 ++ .../helm/xta_adapter_cronjob_env_test.yaml | 158 ++++ .../xta_adapter_cronjob_image_pull_test.yaml | 47 ++ .../xta_adapter_cronjob_resources_test.yaml | 56 ++ .../xta_adapter_cronjob_volumes_test.yaml | 92 ++ .../eingang/xta/FormDataTestFactory.java | 40 + .../eingang/xta/FormHeaderTestFactory.java | 45 + .../xta/MessageMetaDataTestFactory.java | 45 + ...sListTypeAndHeaderResponseTestFactory.java | 43 + .../xta/MsgStatusListTypeTestFactory.java | 36 + .../eingang/xta/XtaApplicationTest.java | 55 ++ .../eingang/xta/XtaFileTestFactory.java | 66 ++ .../de/ozgcloud/eingang/xta/XtaITCase.java | 141 ++++ .../eingang/xta/XtaMessageMapperTest.java | 118 +++ .../xta/XtaMessageMetaDataMapperTest.java | 91 ++ .../xta/XtaMessageMetaDataTestFactory.java | 45 + ...aMessageMetaDatasAndHeaderTestFactory.java | 44 + .../XtaMessageMetadataRemoteIteratorTest.java | 143 ++++ .../eingang/xta/XtaMessageTestFactory.java | 40 + .../eingang/xta/XtaPropertiesTestFactory.java | 52 ++ .../XtaRemoteServiceConfigurationTest.java | 43 + .../eingang/xta/XtaRemoteServiceITCase.java | 93 ++ .../eingang/xta/XtaRemoteServiceTest.java | 146 ++++ .../ozgcloud/eingang/xta/XtaRunnerTest.java | 53 +- .../ozgcloud/eingang/xta/XtaServiceTest.java | 239 ++++++ .../org.junit.jupiter.api.extension.Extension | 1 + .../src/test/resources/application-itcase.yml | 6 + .../test/resources/junit-platform.properties | 1 + .../src/test/resources/test_content.zip | Bin 0 -> 51381 bytes .../src/test/resources/xtaTestStore.p12 | Bin 0 -> 2768 bytes 449 files changed, 27225 insertions(+), 3996 deletions(-) create mode 100644 .helmignore delete mode 100644 common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/Application.java (84%) create mode 100644 common/src/main/java/de/ozgcloud/eingang/LogRunner.java rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/errorhandling/FunctionalException.java (89%) rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/errorhandling/TechnicalException.java (90%) rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/Antragsteller.java (90%) rename intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FileUtil.java => common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java (53%) rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/FormData.java (79%) create mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/FormHeader.java (86%) create mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/IncomingFileGroup.java (83%) create mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java create mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java create mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java rename common/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/ZustaendigeStelle.java (76%) create mode 100644 common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java create mode 100644 common/src/main/resources/META-INF/additional-spring-configuration-metadata.json rename common/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/EingangAdapterApplicationTest.java (91%) rename common/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/AntragstellerTestFactory.java (81%) create mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java rename common/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/FormDataTestFactory.java (95%) rename common/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/FormHeaderTestFactory.java (73%) rename common/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/FormSolutionsTestFactory.java (92%) rename common/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/IncomingFileGroupTestFactory.java (93%) create mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java rename common/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/common/formdata/IncomingFileTestFactory.java (59%) create mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java create mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java create mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java create mode 100644 common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java create mode 100644 common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension create mode 100644 common/src/test/resources/junit-platform.properties create mode 100644 common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker create mode 100644 dependency-check-supressions.xml create mode 100644 enterprise-adapter/pom.xml create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java create mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java create mode 100644 enterprise-adapter/src/main/resources/application-local.yml create mode 100644 enterprise-adapter/src/main/resources/application.yml create mode 100644 enterprise-adapter/src/main/resources/log4j2-local.xml create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java rename common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigsStelleTestFactory.java => enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java (64%) create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java create mode 100644 enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension create mode 100644 enterprise-adapter/src/test/resources/junit-platform.properties create mode 100644 enterprise-adapter/src/test/resources/request/simple.json create mode 100644 formcycle-adapter/formcycle-adapter-impl/pom.xml create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java rename formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java => formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java (61%) create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties create mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml create mode 100644 formcycle-adapter/formcycle-adapter-interface/pom.xml create mode 100644 formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto create mode 100644 formcycle-adapter/pom.xml delete mode 100644 formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java delete mode 100644 formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java rename formsolutions-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/FormSolutionsAttachmentsMapper.java (55%) create mode 100644 formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java create mode 100644 formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java create mode 100644 formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java rename formsolutions-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/SemantikAdapterConfiguration.java (80%) rename formsolutions-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/SendFormEndpoint.java (59%) rename formsolutions-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/WebServiceConfiguration.java (87%) create mode 100644 formsolutions-adapter/src/main/resources/banner.txt delete mode 100644 formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapperTest.java delete mode 100644 formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java rename formsolutions-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/FormSolutionsAttachmentsMapperTest.java (55%) rename semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleTestFactory.java => formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java (63%) create mode 100644 formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java rename formsolutions-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/FormSolutionsFilesTestFactory.java (99%) rename formsolutions-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java => ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java} (50%) create mode 100644 formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java rename formsolutions-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/FormsolutionsAdapterApplicationTest.java (87%) create mode 100644 formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java create mode 100644 formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java rename formsolutions-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/formsolutions/SendFormEndpointTest.java (55%) create mode 100644 formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json create mode 100644 formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json rename forwarder/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/RouteCriteria.java (91%) rename forwarder/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/RouteCriteriaMapper.java (87%) rename forwarder/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/RouteForwardingGrpcService.java (83%) rename forwarder/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/RouteForwardingService.java (86%) rename forwarder/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/ForwarderApplicationTest.java (87%) rename forwarder/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/GrpcRouteForwardingRequestTestFactory.java (86%) rename forwarder/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/RouteCriteriaTestFactory.java (90%) rename forwarder/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/forwarder/RouteForwardingGrpcServiceTest.java (91%) rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/SemantikAdapterConfiguration.java (81%) rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/WebServiceConfiguration.java (96%) rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/AttachmentsContentAdder.java (51%) create mode 100644 intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/CustomHeaderReader.java rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/DepositRequestIncomingFileMapper.java (69%) rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/FormDataEndpoint.java (93%) rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/FormDataIncomingFileMapper.java (87%) create mode 100644 intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/JsonService.java rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/RepresentationsCalculator.java (86%) rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/SemantikFormDataMapper.java (85%) rename intelliform-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/XmlToJavaMapsMapper.java (58%) create mode 100644 intelliform-adapter/src/main/resources/logback-spring.xml create mode 100644 intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml create mode 100644 intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml create mode 100644 intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml create mode 100644 intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml delete mode 100644 intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointITCase.java rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/AttachmentTestFactory.java (96%) rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/AttachmentsContentAdderTest.java (68%) create mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderReaderTest.java create mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderTestFactory.java rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/DepositRequestIncomingFileMapperTest.java (87%) rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/DepositTestFactory.java (89%) create mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/FormDataEndpointTest.java (89%) rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/FormDataIncomingFileMapperTest.java (95%) create mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java create mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/JsonServiceTest.java rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/RepresentationsCalculatorTest.java (85%) rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/SemantikFormDataMapperTest.java (75%) create mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java rename intelliform-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/intelliform/XmlToJavaMapsMapperTest.java (74%) create mode 100644 intelliform-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml rename intelliform-adapter/src/test/resources/{intelliform => itcase}/EinfachesFormularZweiAnhaengeSoapRequest.xml (96%) create mode 100644 intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml rename intelliform-adapter/src/test/resources/{intelliform => itcase}/EinfachesFormularZweiAnhaengeSoapResponse.xml (100%) create mode 100644 intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml create mode 100644 intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml create mode 100755 release-erstellen.sh create mode 100755 release-startdev.sh delete mode 100644 router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java rename router/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/CallContext.java (88%) rename router/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/FileIdMapper.java (87%) rename router/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/GrpcClientsProperties.java (83%) rename router/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/GrpcEingangMapper.java (75%) create mode 100644 router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java rename router/src/main/java/de/{itvsh/kop/eingangsadapter/router/PlutoListProperties.java => ozgcloud/eingang/router/VorgangManagerListProperties.java} (57%) rename router/src/main/java/de/{itvsh/kop/eingangsadapter/router/PlutoServerResolver.java => ozgcloud/eingang/router/VorgangManagerServerResolver.java} (80%) create mode 100644 router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java rename router/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/VorgangService.java (76%) rename router/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/errorhandling/AdapterConfigurationException.java (89%) rename router/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/errorhandling/UnknownOrganisationseinheitException.java (90%) create mode 100644 router/src/main/resources/META-INF/spring/README.md create mode 100644 router/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 router/src/test/java/de/itvsh/kop/eingangsadapter/router/IncomingFileTestFactory.java create mode 100644 router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java rename router/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/GrpcEingangMapperITCase.java (74%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/GrpcEingangMapperTest.java (55%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/GrpcFormFieldTestFactory.java (88%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/GrpcIncomingFileGroupTestFactory.java (85%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/GrpcIncomingFileTestFactory.java (88%) create mode 100644 router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java rename router/src/test/java/de/{itvsh/kop/eingangsadapter/router/PlutoListPropertiesTest.java => ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java} (72%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter/router/PlutoListPropertiesTestFactory.java => ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java} (61%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter/router/PlutoServerResolverITCase.java => ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java} (72%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter/router/PlutoServerResolverTest.java => ozgcloud/eingang/router/VorgangManagerServerResolverTest.java} (66%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter/router/PlutoServerResolverTestFactory.java => ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java} (79%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/VorgangRemoteServiceTest.java (69%) rename router/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/router/VorgangServiceTest.java (78%) create mode 100755 run_filereader.sh create mode 100755 run_helm_test.sh create mode 100755 run_local.sh delete mode 100644 semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java delete mode 100644 semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapper.java delete mode 100644 semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java delete mode 100644 semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapper.java delete mode 100644 semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/SemantikAdapter.java (70%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/enginebased/EngineBasedMapper.java (81%) rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/enginebased/EngineBasedSemantikAdapter.java (84%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmAntragstellerMapper.java (74%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmEmpfangeneStelleMapper.java (86%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmEngineBasedMapper.java (74%) rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmErklaerungenMapper.java (86%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmZustaendigeStelleMapper.java (68%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapper.java => ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java} (77%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsEngineBasedAdapter.java (77%) rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsEngineBasedMapper.java (83%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsHeaderMapper.java (56%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsZustaendigeStelleMapper.java (74%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapter.java => ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedAdapter.java} (67%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedMapper.java create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/formbased/AnliegenId.java (86%) create mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapper.java rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/formbased/FormBasedMapper.java (79%) rename semantik-adapter/src/main/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/formbased/FormBasedSemantikAdapter.java (52%) delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/SemantikAdapterTest.java (84%) create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmAntragstellerTestFactory.java (84%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java => ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapperTest.java} (72%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmEmpfangeneStelleMapperTest.java (79%) create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmErklaerungenMapperTest.java (79%) create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmZustaendigeStelleMapperTest.java (72%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/afm}/AfmZustaendigeStelleTestFactory.java (90%) create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsEngineBasedAdapterITCase.java (74%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsEngineBasedAdapterTest.java (69%) create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsHeaderMapperTest.java (69%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsHeaderTestFactory.java (63%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsPanelMapperTest.java (60%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsPanelTestFactory.java (78%) rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter/semantik/enginebased => ozgcloud/eingang/semantik/enginebased/formsolutions}/FormSolutionsZustaendigeStelleMapperTest.java (54%) create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapperTest.java create mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormDataTestFactory.java rename semantik-adapter/src/test/java/de/{itvsh/kop/eingangsadapter => ozgcloud/eingang}/semantik/formbased/FormBasedSemantikAdapterTest.java (61%) create mode 100644 semantik-adapter/src/test/resources/attachment-1file.zip create mode 100644 semantik-adapter/src/test/resources/attachment-2files.zip create mode 100644 semantik-adapter/src/test/resources/attachment-empty.zip create mode 100644 semantik-adapter/src/test/resources/attachment-encrypted.zip create mode 100644 semantik-adapter/src/test/resources/behoerde_metadata.xml create mode 100644 semantik-adapter/src/test/resources/eingang.pdf create mode 100644 semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml create mode 100644 semantik-adapter/src/test/resources/zip-file-0.txt create mode 100644 semantik-adapter/src/test/resources/zip-file-1.txt create mode 100644 semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip create mode 100644 semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip create mode 100644 src/main/helm/Chart.yaml create mode 100644 src/main/helm/README.md create mode 100644 src/main/helm/templates/NOTES.txt create mode 100644 src/main/helm/templates/_helpers.tpl create mode 100644 src/main/helm/templates/deployment.yaml create mode 100644 src/main/helm/templates/image-pull-secret.yaml create mode 100644 src/main/helm/templates/ingress.yaml create mode 100644 src/main/helm/templates/network_policy.yaml create mode 100644 src/main/helm/templates/service.yaml create mode 100644 src/main/helm/templates/service_account.yaml create mode 100644 src/main/helm/templates/service_monitor.yaml create mode 100644 src/main/helm/templates/tests/test-ingress-connection.yaml create mode 100644 src/main/helm/templates/tests/test-service-connection.yaml create mode 100644 src/main/helm/values.yaml create mode 100644 src/test/helm-linter-values.yaml create mode 100644 src/test/helm/deployment_63_chars_test.yaml create mode 100644 src/test/helm/deployment_bindings_test.yaml create mode 100644 src/test/helm/deployment_container_security_context_test.yaml create mode 100644 src/test/helm/deployment_defaults_labels_test.yaml create mode 100644 src/test/helm/deployment_env_test.yaml create mode 100644 src/test/helm/deployment_host_aliases_test.yaml create mode 100644 src/test/helm/deployment_imagepull_secret_test.yaml create mode 100644 src/test/helm/deployment_liveness_probe_test.yaml create mode 100644 src/test/helm/deployment_resources_test.yaml create mode 100644 src/test/helm/deployment_routing-strategy.yaml create mode 100644 src/test/helm/deployment_service_account_test.yaml create mode 100644 src/test/helm/deployment_springProfile_test.yaml create mode 100644 src/test/helm/deployment_test.yaml create mode 100644 src/test/helm/image-pull-secret-test.yaml create mode 100644 src/test/helm/ingress-create-or-not.yaml create mode 100644 src/test/helm/ingress-nginx-tests.yaml create mode 100644 src/test/helm/ingress_host_test.yaml create mode 100644 src/test/helm/ingress_test.yaml create mode 100644 src/test/helm/network_policy_test.yaml create mode 100644 src/test/helm/service_account_test.yaml create mode 100644 src/test/helm/service_monitor_test.yaml create mode 100644 src/test/helm/service_test.yaml create mode 100644 xta-adapter/doc/example-response-getmessages-items-pending.xml create mode 100644 xta-adapter/doc/example-response-getmessages-no-messages-available.xml create mode 100644 xta-adapter/pom.xml create mode 100644 xta-adapter/readme.md create mode 100755 xta-adapter/run_helm_test.sh create mode 100644 xta-adapter/src/main/helm/Chart.yaml create mode 100644 xta-adapter/src/main/helm/README.md create mode 100644 xta-adapter/src/main/helm/app-readme.md create mode 100644 xta-adapter/src/main/helm/templates/_helpers.tpl create mode 100644 xta-adapter/src/main/helm/templates/image-pull-secret.yaml create mode 100644 xta-adapter/src/main/helm/templates/network_policy.yaml create mode 100644 xta-adapter/src/main/helm/templates/service_account.yaml create mode 100644 xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml create mode 100644 xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml create mode 100644 xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml create mode 100644 xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml create mode 100644 xta-adapter/src/main/helm/values.yaml create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaApplicationConfiguration.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java rename common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFile.java => xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java (73%) create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java create mode 100644 xta-adapter/src/main/resources/XTA.wsdl create mode 100644 xta-adapter/src/main/resources/application-local.yml create mode 100644 xta-adapter/src/main/resources/application.yml create mode 100644 xta-adapter/src/main/wsdl/XTA-synchron.wsdl create mode 100644 xta-adapter/src/main/xsd/OSCI2_02.xsd create mode 100644 xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd create mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd create mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd create mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd create mode 100644 xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd create mode 100644 xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd create mode 100644 xta-adapter/src/main/xsd/soap-envelope.xsd create mode 100644 xta-adapter/src/main/xsd/ws-addr-wsdl.xsd create mode 100644 xta-adapter/src/main/xsd/ws-addr.xsd create mode 100644 xta-adapter/src/main/xsd/ws-policy.xsd create mode 100644 xta-adapter/src/main/xsd/xenc-schema.xsd create mode 100644 xta-adapter/src/main/xsd/xml.xsd create mode 100644 xta-adapter/src/main/xsd/xmldsig-core-schema.xsd create mode 100644 xta-adapter/src/main/xsd/xmlmime.xsd create mode 100644 xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd create mode 100644 xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd create mode 100644 xta-adapter/src/test/helm-linter-values.yaml create mode 100644 xta-adapter/src/test/helm/cronjob_service_account_test.yaml create mode 100644 xta-adapter/src/test/helm/image_pull_secret_test.yaml create mode 100644 xta-adapter/src/test/helm/network_policy_test.yaml create mode 100644 xta-adapter/src/test/helm/service_account_test.yaml create mode 100644 xta-adapter/src/test/helm/xta-bindings-type-test.yaml create mode 100644 xta-adapter/src/test/helm/xta-keystore-secret-test.yaml create mode 100644 xta-adapter/src/test/helm/xta-root-ca-secret-test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_bindings_test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml create mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java rename semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapterTest.java => xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java (54%) create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java create mode 100644 xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension create mode 100644 xta-adapter/src/test/resources/application-itcase.yml create mode 100644 xta-adapter/src/test/resources/junit-platform.properties create mode 100644 xta-adapter/src/test/resources/test_content.zip create mode 100644 xta-adapter/src/test/resources/xtaTestStore.p12 diff --git a/.gitignore b/.gitignore index 863349c..f94a796 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,7 @@ build/ ### VS Code ### .vscode/ + +application-sec.yml +xta-adapter/KOP_SH_KIEL_DEV.p12 +xta-adapter/run_local.sh diff --git a/.helmignore b/.helmignore new file mode 100644 index 0000000..f7ccba7 --- /dev/null +++ b/.helmignore @@ -0,0 +1 @@ +unit-tests/ \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml index 4957c67..2ecf75c 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + 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 @@ -23,16 +24,14 @@ 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"> +<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.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> <artifactId>common</artifactId> @@ -86,4 +85,5 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file + +</project> diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java deleted file mode 100644 index 17ec9b5..0000000 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.itvsh.kop.eingangsadapter.common.formdata; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import lombok.NonNull; - -public class FormDataUtils { - - final FormData baseFormData; - final Map<String, Object> modifieableData; - - private FormDataUtils(FormData formData) { - baseFormData = formData; - modifieableData = new HashMap<>(formData.getFormData()); - } - - public static FormDataUtils from(FormData formData) { - return new FormDataUtils(formData); - } - - public FormDataUtils remove(String key) { - modifieableData.remove(key); - return this; - } - - public FormDataUtils put(@NonNull String key, Object value) { - modifieableData.put(key, value); - return this; - } - - public FormData.FormDataBuilder builder() { - return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)); - } - - public FormData build() { - return builder().build(); - } - - @SuppressWarnings("unchecked") - public static Map<String, Object> getSubMap(FormData formData, String key) { - return (Map<String, Object>) formData.getFormData().get(key); - } -} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/Application.java b/common/src/main/java/de/ozgcloud/eingang/Application.java similarity index 84% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/Application.java rename to common/src/main/java/de/ozgcloud/eingang/Application.java index c4604af..0f72716 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/Application.java +++ b/common/src/main/java/de/ozgcloud/eingang/Application.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,17 +21,20 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; + +import java.util.TimeZone; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; -@SpringBootApplication(scanBasePackages = "de.itvsh.kop") +@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) @EnableScheduling public class Application { public static void main(String[] args) { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); SpringApplication.run(Application.class, args); } } diff --git a/common/src/main/java/de/ozgcloud/eingang/LogRunner.java b/common/src/main/java/de/ozgcloud/eingang/LogRunner.java new file mode 100644 index 0000000..5774d72 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/LogRunner.java @@ -0,0 +1,44 @@ +/* + * 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; + +import java.nio.charset.Charset; + +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.stereotype.Component; + +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Component +class LogRunner implements ApplicationListener<ContextRefreshedEvent> { + + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + LOG.info("Standard Charset: " + Charset.defaultCharset()); + + } + +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/FunctionalException.java b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java similarity index 89% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/FunctionalException.java rename to common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java index 5f56753..5b96235 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/FunctionalException.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.errorhandling; +package de.ozgcloud.eingang.common.errorhandling; public class FunctionalException extends RuntimeException { diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/TechnicalException.java b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java similarity index 90% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/TechnicalException.java rename to common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java index 5e88330..6fad538 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/TechnicalException.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.errorhandling; +package de.ozgcloud.eingang.common.errorhandling; public class TechnicalException extends RuntimeException { diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/Antragsteller.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java similarity index 90% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/Antragsteller.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java index de6ef69..b556861 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/Antragsteller.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,17 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.Map; import lombok.Builder; import lombok.Getter; -import lombok.ToString; @Getter @Builder -@ToString public class Antragsteller { private String anrede; @@ -47,6 +45,7 @@ public class Antragsteller { private String plz; private String ort; + @Deprecated private String postfachId; private Map<String, Object> data; diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FileUtil.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java similarity index 53% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FileUtil.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java index 6dfd59e..e34c8fe 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FileUtil.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,28 +21,36 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.common.formdata; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Paths; -import org.springframework.core.io.PathResource; -import org.springframework.core.io.Resource; +import de.ozgcloud.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; +public class DeleteOnCloseInputStream extends FileInputStream { -@NoArgsConstructor(access = AccessLevel.PRIVATE) -class FileUtil { + private final File file; - static void createFile(Resource directoryPath, String fileName, String message) { + public DeleteOnCloseInputStream(File file) throws FileNotFoundException { + super(file); + this.file = file; + } + + public static DeleteOnCloseInputStream from(File file) { try { - Files.write(Paths.get(new PathResource(directoryPath.getURI()).getPath() + "/" + fileName), message.getBytes(StandardCharsets.UTF_8)); - } catch (IOException e) { - throw new TechnicalException(String.format("Could not create file '%s' in directory '%s'", fileName, directoryPath), e); + return new DeleteOnCloseInputStream(file); + } catch (FileNotFoundException e) { + throw new TechnicalException("Error opening file " + file.getName(), e); } } -} \ No newline at end of file + + @Override + public void close() throws IOException { + super.close(); + Files.deleteIfExists(file.toPath()); + } +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormData.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java similarity index 79% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormData.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java index 575fb83..f803f23 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormData.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,13 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.UUID; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.Builder; import lombok.Getter; @@ -43,12 +44,15 @@ public class FormData { @Builder.Default private String id = UUID.randomUUID().toString(); - private FormHeader header; + @Builder.Default + private FormHeader header = FormHeader.builder().build(); private ZustaendigeStelle zustaendigeStelle; + @ToString.Exclude private Antragsteller antragsteller; - - private Map<String, Object> formData; + @ToString.Exclude + @Builder.Default + private Map<String, Object> formData = Collections.emptyMap(); private int numberOfAttachments; @Singular diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java new file mode 100644 index 0000000..e7872a3 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java @@ -0,0 +1,68 @@ +/* + * 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.common.formdata; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +import lombok.NonNull; + +public class FormDataUtils { + + final FormData baseFormData; + final Map<String, Object> modifieableData; + + private FormDataUtils(FormData formData) { + baseFormData = formData; + modifieableData = new LinkedHashMap<>(formData.getFormData()); + } + + public static FormDataUtils from(FormData formData) { + return new FormDataUtils(formData); + } + + public FormDataUtils remove(String key) { + modifieableData.remove(key); + return this; + } + + public FormDataUtils put(@NonNull String key, Object value) { + modifieableData.put(key, value); + return this; + } + + public FormData.FormDataBuilder builder() { + return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)); + } + + public FormData build() { + return builder().build(); + } + + @SuppressWarnings("unchecked") + public static Map<String, Object> getSubMap(FormData formData, String key) { + return (Map<String, Object>) formData.getFormData().getOrDefault(key, Map.of()); + } +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeader.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java similarity index 86% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeader.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java index 30c3aaf..5167ff8 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeader.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.time.ZonedDateTime; @@ -32,20 +32,18 @@ import lombok.ToString; @Getter @Setter -@Builder +@Builder(toBuilder = true) @ToString public class FormHeader { private String requestId; - + private String vorgangNummer; @Builder.Default private ZonedDateTime createdAt = ZonedDateTime.now(); - private String formId; - private String formName; - private String sender; - private String formEngineName; + + private ServiceKonto serviceKonto; } diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java new file mode 100644 index 0000000..aaf0b15 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java @@ -0,0 +1,64 @@ +/* + * 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.common.formdata; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Builder(toBuilder = true) +@Getter +@ToString +public class IncomingFile { + + public static final String TMP_FILE_PREFIX = "filecached-inputstream"; + public static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp"; + + private String id; + private String vendorId; + private String name; + private String contentType; + private long size; + + private File file; + + public InputStream getContentStream() { + try { + return new FileInputStream(file); + } catch (FileNotFoundException e) { + throw new TechnicalException("Error opening file " + file.getName(), e); + } + } + + public InputStream getContentStreamForFinalRead() { + return DeleteOnCloseInputStream.from(file); + } + +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroup.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java similarity index 83% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroup.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java index 70f2b04..047b135 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroup.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; -import java.util.ArrayList; import java.util.List; import lombok.Builder; import lombok.Getter; +import lombok.Singular; import lombok.ToString; @Builder(toBuilder = true) @@ -37,6 +37,6 @@ public class IncomingFileGroup { private String name; - @Builder.Default - private List<IncomingFile> files = new ArrayList<>(); + @Singular + private List<IncomingFile> files; } diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java new file mode 100644 index 0000000..fb83e41 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java @@ -0,0 +1,28 @@ +/* + * 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.common.formdata; + +public interface PostfachAddressIdentifier { + +} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java new file mode 100644 index 0000000..8b9047f --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java @@ -0,0 +1,47 @@ +/* + * 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.common.formdata; + +import java.util.List; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; + +@Getter +@Builder +public class ServiceKonto { + + private String type; + @Singular + private List<PostfachAddress> postfachAddresses; + + @Getter + @Builder + public static class PostfachAddress { + private int type; + private String version; + private PostfachAddressIdentifier identifier; + } +} \ No newline at end of file diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java new file mode 100644 index 0000000..fe9f472 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java @@ -0,0 +1,37 @@ +/* + * 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.common.formdata; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class StringBasedIdentifier implements PostfachAddressIdentifier { + + public static final String POSTFACH_ID_FIELD = "postfachId"; + + private String postfachId; + +} \ No newline at end of file diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigeStelle.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java similarity index 76% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigeStelle.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java index ccb7e4f..65f8e2d 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigeStelle.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,18 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import lombok.Builder; import lombok.Getter; import lombok.ToString; @Getter -@Builder +@Builder(toBuilder = true) @ToString public class ZustaendigeStelle { private String organisationseinheitenId; private String bezeichnung; private String email; + private String gemeindeSchluessel; + private String amtlicherRegionalSchluessel; + private String hausanschriftStrasse; + private String hausanschriftPlz; + private String hausanschriftOrt; + private String telefon; } diff --git a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java new file mode 100644 index 0000000..e370bd4 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java @@ -0,0 +1,57 @@ +/* + * 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.common.vorgang; + +import java.time.LocalDate; + +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.stereotype.Component; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.RequiredArgsConstructor; + +@Component +@RequiredArgsConstructor +public class VorgangNummerSupplier { + + static final String VORGANGNUMMER_TEMPLATE = "%d%X%02d-%s"; + static final char[] BASE30_ALPHABET = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', + 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z' }; + static final int SUFFIX_LENGTH = 6; + + public String get() { + return get(SUFFIX_LENGTH); + } + + public String get(int suffixLength) { + if (suffixLength <1){ + throw new TechnicalException("Suffix length must be at least 1"); + } + var today = LocalDate.now(); + var lastYearNumber = today.getYear() % 10; + return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(), + RandomStringUtils.random(suffixLength, BASE30_ALPHABET)); + } + +} diff --git a/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000..625980f --- /dev/null +++ b/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,22 @@ +{"properties": [ + { + "name": "ozgcloud.xta.actions.status-list", + "type": "java.lang.String", + "description": "A description for 'ozgcloud.xta.actions.status-list'" + }, + { + "name": "ozgcloud.xta.identifier", + "type": "java.lang.String", + "description": "XTA Identifier for SOAP Request Header (f.e. 'gae:firstname.lastname@mgm-tp.com')" + }, + { + "name": "ozgcloud.xta.keystore.file", + "type": "java.lang.String", + "description": "Location of the keyfile for xta accesss" + }, + { + "name": "ozgcloud.xta.keystore.password", + "type": "java.lang.String", + "description": "Password of the keyfile for xta accesss" + } +]} \ No newline at end of file diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/EingangAdapterApplicationTest.java b/common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java similarity index 91% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/EingangAdapterApplicationTest.java rename to common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java index 17e8aab..0eac02a 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/EingangAdapterApplicationTest.java +++ b/common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/AntragstellerTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java similarity index 81% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/AntragstellerTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java index 25176af..aaf0070 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/AntragstellerTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.Map; import java.util.UUID; @@ -37,12 +37,16 @@ public class AntragstellerTestFactory { public static final String SUB_VERBOTENE_VEREINIGUNG_KEY = "MitgliedschaftInVerboternerVereinigung"; public static final String SUB_VERBOTENE_VEREINIGUNG_VALUE = "true"; - public static final String VORNAME = "Helge"; - public static final String NACHNAME = "Schneider"; - public static final String GEBURTSNAME = "Schneider"; + public static final String VORNAME = "Theo"; + public static final String NACHNAME = "Test"; + public static final String GEBURTSNAME = "Toast"; public static final String GEBURTSDATUM = "30.8.1955"; public static final String GEBURTSORT = "Mülheim an der Ruhr"; public static final String EMAIL = "schneider@helgeschneider.local"; + public static final String STRASSE = "Musterstraße"; + public static final String HAUSNUMMER = "1"; + public static final String PLZ = "12345"; + public static final String ORT = "Musterstadt"; public static final String TELEFON = "+ 0176 888 666 222XX"; public static final String POSTFACH_ID = UUID.randomUUID().toString(); @@ -60,6 +64,10 @@ public class AntragstellerTestFactory { .geburtsort(GEBURTSORT) .email(EMAIL) .telefon(TELEFON) + .strasse(STRASSE) + .hausnummer(HAUSNUMMER) + .plz(PLZ) + .ort(ORT) .postfachId(POSTFACH_ID) .data(Map.of(GEBIET_BEZEICHNUNG_KEY, GEBIET_BEZEICHNUNG_VALUE, SUB_PERSOENLICHE_EIGNUNG, diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java new file mode 100644 index 0000000..cea434d --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java @@ -0,0 +1,55 @@ +/* + * 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.common.formdata; + +import static org.assertj.core.api.Assertions.*; + +import java.io.File; +import java.io.IOException; + +import org.junit.jupiter.api.Test; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +class DeleteOnCloseInputStreamTest { + + private DeleteOnCloseInputStream stream; + + @Test + void shouldDeleteFileOnClose() throws IOException { + File file = File.createTempFile("Test", "test"); + stream = new DeleteOnCloseInputStream(file); + + stream.close(); + + assertThat(file).doesNotExist(); + } + + @Test + void shouldThrowException() { + var notExists = new File("notExists"); + + assertThatThrownBy(() -> DeleteOnCloseInputStream.from(notExists)).isInstanceOf(TechnicalException.class); + } +} diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java similarity index 95% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java index 0b18735..ed7657c 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.Arrays; import java.util.Collections; @@ -59,7 +59,7 @@ public class FormDataTestFactory { return FormData.builder() .header(FormHeaderTestFactory.create()) .antragsteller(AntragstellerTestFactory.create()) - .zustaendigeStelle(ZustaendigsStelleTestFactory.create()) + .zustaendigeStelle(ZustaendigeStelleTestFactory.create()) .formData(Map.of( SIMPLE_VALUE_KEY, SIMPLE_VALUE, SUBFORM_KEY, SUBFORM_VALUE, diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeaderTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java similarity index 73% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeaderTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java index 1a6e770..4c55034 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeaderTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,21 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.time.ZonedDateTime; public class FormHeaderTestFactory { public static final String CLIENT_ID = "clientId"; - public static final String CLIENT = "client"; +// public static final String CLIENT = "client"; public static final String CUSTOMER_ID = "customerId"; public static final String CUSTOMER = "customer"; public static final String SENDER = "sender"; + public static final String FORM_ENGINE_NAME = "TB3000"; public static final String FORM_NAME = "formName"; public static final String FORM_ID = "formId"; public static final String REQUEST_ID = "requestId"; - public static final ZonedDateTime CREATED_AT = ZonedDateTime.now(); + public static final String VORGANG_NUMMER = "ABCD-1234"; + public static final String CREATED_AT_STR = "2024-04-01T01:00:30Z"; + public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR); public static FormHeader create() { return createBuilder().build(); @@ -44,9 +47,13 @@ public class FormHeaderTestFactory { public static FormHeader.FormHeaderBuilder createBuilder() { return FormHeader.builder() .requestId(REQUEST_ID) + .vorgangNummer(VORGANG_NUMMER) .createdAt(CREATED_AT) + .formEngineName(FORM_ENGINE_NAME) .formId(FORM_ID) .formName(FORM_NAME) - .sender(SENDER); + .sender(SENDER) + .serviceKonto(ServiceKontoTestFactory.create()); } + } diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java similarity index 92% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java index f14139f..848e599 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.List; @@ -41,11 +41,14 @@ public class FormSolutionsTestFactory { public static final String DATE_COMPONENT_ID = "Datums- / Uhrzeitfeld"; public static final String DATE_COMPONENT_VALUE = "22.05.1996"; public static final String ZIP_VALUE = "TG9yZW0gaXBzdW0="; + public static final String ZIP_VALUE_DECODED = "Lorem ipsum"; public static final String PDF_VALUE = "TG9yZW0gaXBzdW0="; + public static final String PDF_VALUE_DECODED = "Lorem ipsum"; public static final String ZUSTAENDIGE_STELLE_VALUE = "zustaendigeStelle"; + public static final String ZUSTAENDIGE_STELLE = "5678"; public static final String POSTFACH_ID_STELLE = "51522620-03d2-4507-b1f0-08d86920efed"; public static final String FORM_ID_VALUE = "KFAS_KOP_TEST-yCkgCdqG"; - // TODO vereinfachen und in Datei(en acken + // TODO vereinfachen und in Dateien packen public static final String SIMPLE_JSON_DATA = "{\"assistant\": " + "{\"identifier\":\"" + IDENTIFIER_VALUE + "\",\n" + "\"panels\": [{\"identifier\":\"" + PANEL_ID + "\",\n" diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroupTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java similarity index 93% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroupTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java index 51860a3..338486c 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroupTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.List; diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java new file mode 100644 index 0000000..d5dcd36 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java @@ -0,0 +1,120 @@ +/* + * 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.common.formdata; + +import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; +import static org.assertj.core.api.Assertions.*; + +import java.io.File; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.function.Predicate; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import lombok.SneakyThrows; + +class IncomingFileTest { + + private static final String TMP_DIRECTORY_PATH = System.getProperty("java.io.tmpdir"); + + private static final Predicate<Path> hasNameSuffix = path -> path.getFileName().toString().endsWith(IncomingFile.TMP_FILE_SUFFIX); + + @Nested + class TestTmpFile { + + @BeforeEach + void init() { + cleanupTempFiles(); + } + + @Test + void shouldCreateTmpFile() { + IncomingFileTestFactory.create().getContentStream(); + + assertThat(noFilesWithSuffixInTempDirectory()).isFalse(); + } + + @Test + void shouldCreateDeleteOnCloseInputStream() { + var file = IncomingFileTestFactory.create(); + file.getContentStream(); + InputStream newStream = file.getContentStreamForFinalRead(); + + assertThat(newStream).isInstanceOf(DeleteOnCloseInputStream.class); + } + + @Test + void validateInputStreamContent() { + InputStream newStream = IncomingFileTestFactory.create().getContentStream(); + + byte[] text = read(newStream); + + assertThat(text).isEqualTo(CONTENT); + } + + @Test + void shouldReturnNewInputStreamOnEveryRequest() { + IncomingFile incomingFile = IncomingFileTestFactory.create(); + + InputStream stream1 = incomingFile.getContentStream(); + InputStream stream2 = incomingFile.getContentStream(); + + assertThat(stream1).isNotSameAs(stream2); + } + + @Test + void contentStreamShouldBeMultipleReadable() { + IncomingFile incomingFile = IncomingFileTestFactory.create(); + + InputStream stream1 = incomingFile.getContentStream(); + InputStream stream2 = incomingFile.getContentStream(); + + assertThat(read(stream1)).isEqualTo(CONTENT); + assertThat(read(stream2)).isEqualTo(CONTENT); + + InputStream stream3 = incomingFile.getContentStream(); + assertThat(read(stream3)).isEqualTo(CONTENT); + } + + @SneakyThrows + private byte[] read(InputStream stream) { + return stream.readAllBytes(); + } + } + + @SneakyThrows + private static void cleanupTempFiles() { + Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).filter(hasNameSuffix).map(Path::toFile).forEach(File::delete); + } + + @SneakyThrows + private static boolean noFilesWithSuffixInTempDirectory() { + return Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).noneMatch(hasNameSuffix); + } + +} diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java similarity index 59% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java index ded6eb4..0cd5394 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,18 +21,25 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.UUID; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile.IncomingFileBuilder; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile.IncomingFileBuilder; +import lombok.SneakyThrows; public class IncomingFileTestFactory { public static final String ID = UUID.randomUUID().toString(); - public static final String VENDOR_ID = UUID.randomUUID().toString(); + public static final String VENDOR_ID = IncomingFileGroupTestFactory.VENDOR_ID_XXX; public static final String NAME = "XML-Daten.xml"; public static final String CONTENT_TYPE = "application/xml"; + public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE; + public static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON_VALUE; public static final byte[] CONTENT = "TESTCONTENT1".getBytes(); public static final long SIZE = 12; @@ -46,7 +53,16 @@ public class IncomingFileTestFactory { .vendorId(VENDOR_ID) .name(NAME) .contentType(CONTENT_TYPE) - .content(CONTENT) + .file(TempFileUtils.writeTmpFile(CONTENT)) .size(SIZE); } + + public static MockMultipartFile asMultipartFile(String multipartName) { + return asMultipartFile(multipartName, create()); + } + + @SneakyThrows + public static MockMultipartFile asMultipartFile(String multipartName, IncomingFile file) { + return new MockMultipartFile(multipartName, file.getName(), file.getContentType(), file.getContentStream().readAllBytes()); + } } diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java new file mode 100644 index 0000000..1fb9cdf --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java @@ -0,0 +1,50 @@ +/* + * 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.common.formdata; + +import java.util.UUID; + +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; + +public class PostfachAddressTestFactory { + + public static final int POSTFACH_ADDRESS_TYPE = 1; + public static final String VERSION = "1.0"; + public static final String POSTFACH_ID = UUID.randomUUID().toString(); + + public static PostfachAddress create() { + return createBuilder().build(); + } + + private static PostfachAddress.PostfachAddressBuilder createBuilder() { + return PostfachAddress.builder() + .type(POSTFACH_ADDRESS_TYPE) + .version(VERSION) + .identifier(createStringBasedIdentifier()); + } + + private static PostfachAddressIdentifier createStringBasedIdentifier() { + return StringBasedIdentifier.builder().postfachId(POSTFACH_ID).build(); + } +} \ No newline at end of file diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java new file mode 100644 index 0000000..3cfdae3 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java @@ -0,0 +1,39 @@ +/* + * 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.common.formdata; + +public class ServiceKontoTestFactory { + + public static final String TYPE = "OSI"; + + public static ServiceKonto create() { + return createBuilder().build(); + } + + private static ServiceKonto.ServiceKontoBuilder createBuilder() { + return ServiceKonto.builder() + .type(TYPE) + .postfachAddress(PostfachAddressTestFactory.create()); + } +} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java new file mode 100644 index 0000000..bef6ebf --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java @@ -0,0 +1,52 @@ +/* + * 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.common.formdata; + +public class ZustaendigeStelleTestFactory { + + public static final String ORGANISATIONSEINHEIT_ID = "08150815"; + public static final String EMAIL = "hase@loewenkaefig.de"; + public static final String GEMEINDE_SCHLUESSEL = "1234567"; + public static final String AMTLICHER_REGIONAL_SCHLUESSEL = "regional-schluessel"; + public static final String HAUSANSCHRIFT_STRASSE = "Musterstraße"; + public static final String HAUSANSCHRIFT_PLZ = "12345"; + public static final String HAUSANSCHRIFT_ORT = "Musterort"; + public static final String TELEFON = "0123456789"; + + public static ZustaendigeStelle create() { + return createBuilder().build(); + } + + public static ZustaendigeStelle.ZustaendigeStelleBuilder createBuilder() { + return ZustaendigeStelle.builder() // + .organisationseinheitenId(ORGANISATIONSEINHEIT_ID) + .email(EMAIL) + .gemeindeSchluessel(GEMEINDE_SCHLUESSEL) + .amtlicherRegionalSchluessel(AMTLICHER_REGIONAL_SCHLUESSEL) + .hausanschriftStrasse(HAUSANSCHRIFT_STRASSE) + .hausanschriftPlz(HAUSANSCHRIFT_PLZ) + .hausanschriftOrt(HAUSANSCHRIFT_ORT) + .telefon(TELEFON); + } +} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java new file mode 100644 index 0000000..fd0d1d6 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java @@ -0,0 +1,129 @@ +/* + * 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.common.vorgang; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.time.LocalDate; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.jupiter.api.DisplayName; +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.Spy; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +class VorgangNummerSupplierTest { + + @Spy + @InjectMocks + private VorgangNummerSupplier vorgangNummerSupplier; + + + @Test + @DisplayName("should add random suffix of length 6") + void shouldAddSuffix() { + var result = vorgangNummerSupplier.get(); + + assertThat(getSuffix(result)).hasSize(VorgangNummerSupplier.SUFFIX_LENGTH); + } + + @Test + void shouldHaveSuffixSize() { + var result = vorgangNummerSupplier.get(3); + + assertThat(getSuffix(result)).hasSize(3); + } + + @DisplayName("should throw exception when") + @ParameterizedTest(name = "suffix length {0}") + @ValueSource(ints = { -1, 0 }) + void shouldThrowException(int suffixLength) { + assertThrows(TechnicalException.class, () -> vorgangNummerSupplier.get(suffixLength)); + } + + private String getSuffix(String string) { + return string.substring(string.indexOf('-') + 1); + } + + @Test + void shouldCallGetRandomString() { + try (var randomStringUtils = mockStatic(RandomStringUtils.class)) { + vorgangNummerSupplier.get(); + + randomStringUtils.verify(() -> RandomStringUtils.random(VorgangNummerSupplier.SUFFIX_LENGTH, VorgangNummerSupplier.BASE30_ALPHABET)); + } + } + + @Test + void shouldHaveSize() { + var result = vorgangNummerSupplier.get(); + + assertThat(getPrefix(result)).hasSize(5); + } + + private String getPrefix(String string) { + return string.substring(0, string.indexOf('-') + 1); + } + + @Test + void shouldAddLastYearNumberFirst() { + var lastYearNumber = "" + LocalDate.now().getYear() % 10; + + var result = vorgangNummerSupplier.get(); + + assertThat(result.substring(0, 1)).isEqualTo(lastYearNumber); + } + + @Test + void shouldAddMonthValueSecond() { + var monthHexValue = "%X".formatted(LocalDate.now().getMonthValue()); + + var result = vorgangNummerSupplier.get(); + + assertThat(result.substring(1, 2)).isEqualTo(monthHexValue); + } + + @Test + void shouldAddDayValueThird() { + var dayValue = "%02d".formatted(LocalDate.now().getDayOfMonth()); + + var result = vorgangNummerSupplier.get(); + + assertThat(result.substring(2, 4)).isEqualTo(dayValue); + } + + @Test + void shouldAddHyphenAtEnd() { + var result = vorgangNummerSupplier.get(); + + assertThat(result.charAt(4)).isEqualTo('-'); + } + +} \ No newline at end of file diff --git a/common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000..79b126e --- /dev/null +++ b/common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/common/src/test/resources/application.yml b/common/src/test/resources/application.yml index 411f31f..989f0be 100644 --- a/common/src/test/resources/application.yml +++ b/common/src/test/resources/application.yml @@ -10,7 +10,7 @@ logging: '[org.springframework]': ERROR config: classpath:log4j2-local.xml -kop: +ozgcloud: adapter: routingStrategy: SINGLE - targetPlutoName: kiel \ No newline at end of file + targetVorgangManagerName: kiel \ No newline at end of file diff --git a/common/src/test/resources/junit-platform.properties b/common/src/test/resources/junit-platform.properties new file mode 100644 index 0000000..1cebb76 --- /dev/null +++ b/common/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 0000000..ca6ee9c --- /dev/null +++ b/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline \ No newline at end of file diff --git a/dependency-check-supressions.xml b/dependency-check-supressions.xml new file mode 100644 index 0000000..5672f0a --- /dev/null +++ b/dependency-check-supressions.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd"> + <suppress> + <vulnerabilityName>CVE-DUMMY</vulnerabilityName> + </suppress> +</suppressions> diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml new file mode 100644 index 0000000..8ec2a3a --- /dev/null +++ b/enterprise-adapter/pom.xml @@ -0,0 +1,127 @@ +<?xml version="1.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. + +--> +<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.4.0</version> + </parent> + <artifactId>enterprise-adapter</artifactId> + <name>EM - Enterprise Interface Adapter</name> + + <properties> + <spring-boot.build-image.imageName>docker.ozg-sh.de/enterprise-adapter:build-latest</spring-boot.build-image.imageName> + </properties> + + <dependencies> + <!--ozg-Cloud--> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> + </dependency> + + + <!--spring--> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + + + + <!--dev tools--> + <dependency> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct</artifactId> + </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.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </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</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java new file mode 100644 index 0000000..d6dd911 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java @@ -0,0 +1,87 @@ +/* + * 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.enterprise.entry; + +import java.io.IOException; +import java.time.ZonedDateTime; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.enterprise.entry.EntryResponse.ResponseVorgang; +import de.ozgcloud.eingang.semantik.SemantikAdapter; + +@Controller +@ResponseBody +@RequestMapping("antrag") +public class EntryController { + + private static final String STARTING_STATUS = "NEU"; + + @Autowired + private EntryDataMapper mapper; + + @Autowired + private SemantikAdapter semantikAdapter; + @Autowired + private VorgangNummerSupplier vorgangNummerSupplier; + + @ResponseStatus(HttpStatus.ACCEPTED) + @PostMapping(consumes = "multipart/form-data", produces = MediaType.APPLICATION_JSON_VALUE) + public EntryResponse receiveAntrag(@RequestPart Resource formData) throws IOException { + var mapped = mapper.mapEntryData(formData.getInputStream()); + mapped = addVorgangNummer(mapped); + + var vorgangId = semantikAdapter.processFormData(mapped); + + return buildResponse(mapped, vorgangId); + } + + private FormData addVorgangNummer(FormData formData) { + var header = formData.getHeader().toBuilder().vorgangNummer(vorgangNummerSupplier.get()).build(); + return formData.toBuilder().header(header).build(); + } + + EntryResponse buildResponse(FormData formData, String vorgangId) { + return EntryResponse.builder() + .transactionId(formData.getHeader().getRequestId()) + .vorgang(ResponseVorgang.builder() + .vorgangId(vorgangId) + .vorgangNummer(formData.getHeader().getVorgangNummer()) + .status(STARTING_STATUS) + .statusSince(ZonedDateTime.now().withNano(0)) + .build()) + .build(); + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java new file mode 100644 index 0000000..723e56c --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java @@ -0,0 +1,78 @@ +/* + * 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.enterprise.entry; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Builder; +import lombok.Getter; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +public class EntryData { + + private ControlData control; + private List<EntryFormDataItem> formData; + + @Builder + @Getter + @Jacksonized + public static class ControlData { + private String transactionId; + private String zustaendigeStelle; + private String[] leikaIds; + private ResultEndpoint resultEndpoint; + private String formId; + @JsonProperty("name") + private String formName; + private Servicekonto serviceKonto; + + @Builder + @Getter + @Jacksonized + public static class ResultEndpoint { + private String address; + } + } + + @Builder + @Getter + @Jacksonized + public static class Servicekonto { + private String type; + private PostfachAddress postfachAddress; + } + + @Builder + @Getter + @Jacksonized + public static class PostfachAddress { + private String identifier; + private String type; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java new file mode 100644 index 0000000..06908ea --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java @@ -0,0 +1,57 @@ +/* + * 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.enterprise.entry; + +import java.io.IOException; +import java.io.InputStream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +class EntryDataMapper { + + @Autowired + private ObjectMapper objectMapper; + @Autowired + private FormDataMapper formDataMapper; + + public FormData mapEntryData(InputStream request) { + return formDataMapper.mapEntryData(readRequest(request)); + } + + EntryData readRequest(InputStream request) { + try { + return objectMapper.readValue(request, EntryData.class); + } catch (IOException e) { + throw new ReadingRequestException(e); + } + + } + +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java new file mode 100644 index 0000000..606080a --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java @@ -0,0 +1,71 @@ +/* + * 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.enterprise.entry; + +import java.time.LocalDate; +import java.util.Objects; + +import org.apache.commons.lang3.StringUtils; + +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +@ToString(onlyExplicitlyIncluded = true) +public class EntryFormDataField implements EntryFormDataItem { + + private String name; + @ToString.Include + private String label; + + private String stringValue; + private Boolean booleanValue; + private Number numberValue; + private LocalDate dateValue; + + @Override + public boolean isFormField() { + return true; + } + + public Object getValue() { + if (StringUtils.isNotBlank(stringValue)) { + return stringValue; + } + if (Objects.nonNull(booleanValue)) { + return booleanValue; + } + if (Objects.nonNull(numberValue)) { + return numberValue; + } + if (Objects.nonNull(dateValue)) { + return dateValue; + } + return null; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java new file mode 100644 index 0000000..af733a5 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java @@ -0,0 +1,44 @@ +/* + * 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.enterprise.entry; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonSubTypes.Type; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; + +@JsonTypeInfo(use = Id.DEDUCTION) +@JsonSubTypes({ @Type(EntryFormDataField.class), @Type(EntryFormDataSubForm.class) }) +public interface EntryFormDataItem { + String getName(); + String getLabel(); + + default boolean isSubForm() { + return false; + } + + default boolean isFormField() { + return false; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java new file mode 100644 index 0000000..52d53c8 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java @@ -0,0 +1,51 @@ +/* + * 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.enterprise.entry; + +import java.util.List; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +@ToString(onlyExplicitlyIncluded = true) +public class EntryFormDataSubForm implements EntryFormDataItem { + + private String name; + @ToString.Include + private String label; + + @Singular + private List<EntryFormDataItem> formItems; + + @Override + public boolean isSubForm() { + return true; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java new file mode 100644 index 0000000..68c639a --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java @@ -0,0 +1,46 @@ +/* + * 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.enterprise.entry; + +import java.time.ZonedDateTime; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +class EntryResponse { + + private String transactionId; + private ResponseVorgang vorgang; + + @Builder + @Getter + static class ResponseVorgang { + private String vorgangId; + private String vorgangNummer; + private String status; + private ZonedDateTime statusSince; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java new file mode 100644 index 0000000..4d09ebf --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java @@ -0,0 +1,122 @@ +/* + * 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.enterprise.entry; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.tuple.Pair; +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.PostfachAddressIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; + +@Mapper +public interface FormDataMapper { + + public static final String VALUE_KEY = "value"; + public static final String LABEL_KEY = "label"; + + @Mapping(target = "antragsteller", ignore = true) + @Mapping(target = "attachment", ignore = true) + @Mapping(target = "attachments", ignore = true) + @Mapping(target = "numberOfAttachments", ignore = true) + @Mapping(target = "representation", ignore = true) + @Mapping(target = "representations", ignore = true) + @Mapping(target = "numberOfRepresentations", ignore = true) + + @Mapping(target = "id", ignore = true) + @Mapping(target = "header", source = "control") + + @Mapping(target = "zustaendigeStelle", source = "control.zustaendigeStelle") + FormData mapEntryData(EntryData entryData); + + @Mapping(target = "vorgangNummer", ignore = true) + @Mapping(target = "createdAt", ignore = true) + @Mapping(target = "formEngineName", constant = "EnterpriseSoftware") + @Mapping(target = "requestId", source = "transactionId") + @Mapping(target = "sender", ignore = true) // TODO fill from authentication + @Mapping(target = "serviceKonto.postfachAddresses", ignore = true) + FormHeader mapHeader(EntryData.ControlData controlData); + + default ZustaendigeStelle fromId(String organisationsEinheitenId) { + return ZustaendigeStelle.builder().organisationseinheitenId(organisationsEinheitenId).build(); + } + + default Map<String, Object> mapFormItems(List<EntryFormDataItem> items) { + return items.stream().map(item -> Pair.of(item.getName(), + item.isFormField() ? mapFormField((EntryFormDataField) item) : mapSubForm((EntryFormDataSubForm) item))) + .collect(Collectors.toMap(Pair::getKey, Pair::getValue)); + } + + default Map<String, Object> mapFormField(EntryFormDataField field) { + var map = new HashMap<String, Object>(); + map.put(LABEL_KEY, field.getLabel()); + map.put(VALUE_KEY, field.getValue()); + + return Collections.unmodifiableMap(map); + } + + default Map<String, Object> mapSubForm(EntryFormDataSubForm subForm) { + var map = new HashMap<String, Object>(); + map.put(LABEL_KEY, subForm.getLabel()); + map.put(VALUE_KEY, mapFormItems(subForm.getFormItems())); + + return Collections.unmodifiableMap(map); + } + + default PostfachAddress map(de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress address) { + return PostfachAddress.builder() + .version("1") + .type(toNumericType(address.getType())) + .identifier(StringBasedIdentifier.builder().postfachId(address.getIdentifier()).build()) + .build(); + } + + default int toNumericType(String type) { + switch (type) { + case "privat": + return 0; + case "unternehmen": + return 1; + case "behoerde": + return 2; + default: + return -1; + } + } + + default PostfachAddressIdentifier map(String value) { + return StringBasedIdentifier.builder().postfachId(value).build(); + } + +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java new file mode 100644 index 0000000..35ab200 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java @@ -0,0 +1,37 @@ +/* + * 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.enterprise.entry; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +public class ReadingRequestException extends TechnicalException { + + private static final String MESSAGE = "Error reading Request."; + + public ReadingRequestException(Exception cause) { + super(MESSAGE, cause); + + } + +} diff --git a/enterprise-adapter/src/main/resources/application-local.yml b/enterprise-adapter/src/main/resources/application-local.yml new file mode 100644 index 0000000..df74b44 --- /dev/null +++ b/enterprise-adapter/src/main/resources/application-local.yml @@ -0,0 +1,24 @@ +logging: + config: classpath:log4j2-local.xml + +server: + port: 9294 + error: + include-stacktrace: always + +management: + server: + port: 0 + endpoints: + enabled-by-default: false + +ozgcloud: + adapter: + targetVorgangManagerName: local + fallbackStrategy: DENY + +grpc: + client: + vorgang-manager-local: + address: static://127.0.0.1:9090 + negotiationType: PLAINTEXT \ No newline at end of file diff --git a/enterprise-adapter/src/main/resources/application.yml b/enterprise-adapter/src/main/resources/application.yml new file mode 100644 index 0000000..5760086 --- /dev/null +++ b/enterprise-adapter/src/main/resources/application.yml @@ -0,0 +1,44 @@ +logging: + level: + ROOT: WARN + '[de.ozgcloud]': INFO + +spring: + servlet: + multipart: + max-file-size: 124MB + max-request-size: 256MB + file-size-threshold: 10MB + +server: + http2: + enabled: true + error: + include-stacktrace: never + +management: + server: + port: 8081 + health: + livenessState: + enabled: true + readinessState: + enabled: true + endpoint: + health: + group: + exploratory: + include: livenessState,readinessState,ping + show-details: always + probes: + enabled: true + prometheus: + enabled: true + endpoints: + web: + exposure: + include: health,prometheus + +ozgcloud: + adapter: + routingStrategy: SINGLE \ No newline at end of file diff --git a/enterprise-adapter/src/main/resources/log4j2-local.xml b/enterprise-adapter/src/main/resources/log4j2-local.xml new file mode 100644 index 0000000..5d7001e --- /dev/null +++ b/enterprise-adapter/src/main/resources/log4j2-local.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <Appenders> + <Console name="CONSOLE" target="SYSTEM_OUT"> + <PatternLayout pattern="[%-5level] %c{1.} %msg%n"/> + </Console> + </Appenders> + + <Loggers> + <Root level="WARN"> + <appender-ref ref="CONSOLE" /> + </Root> + </Loggers> +</configuration> \ No newline at end of file diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java new file mode 100644 index 0000000..18ad8d7 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java @@ -0,0 +1,54 @@ +/* + * 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.enterprise.entry; + +import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData; +import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData.ResultEndpoint; + +public class ControlDataTestFactory { + + public static final String TRANSACTION_ID = "4e7a6ae7-4d0f-444d-8971-7cfc051c9924"; + public static final String ZUSTAENDIGE_STELLE = "248240886"; + public static final String[] LEIKA_IDS = new String[] { "99108011000000", "99108011153000" }; + + public static final String RESULT_ENDPOIN_ADDRESS = "https://idalabs.de/backend/api"; + + public static final String FORM_ID = "KFAS_LIVE_KI_10_Haltverbot_befristet"; + public static final String NAME = "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)"; + + public static ControlData create() { + return createBuilder().build(); + } + + public static ControlData.ControlDataBuilder createBuilder() { + return ControlData.builder() + .transactionId(TRANSACTION_ID) + .zustaendigeStelle(ZUSTAENDIGE_STELLE) + .leikaIds(LEIKA_IDS) + .resultEndpoint(ResultEndpoint.builder().address(RESULT_ENDPOIN_ADDRESS).build()) + .formId(FORM_ID) + .formName(NAME) + .serviceKonto(ServicekontoTestFactory.create()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java new file mode 100644 index 0000000..81b8e0a --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java @@ -0,0 +1,69 @@ +/* + * 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.enterprise.entry; + +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import de.ozgcloud.common.test.ITCase; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.router.VorgangService; +import lombok.SneakyThrows; + +@ITCase +@AutoConfigureMockMvc +@ActiveProfiles({ "itcase", "local" }) +class EnterpriseEntryITCase { + + @MockBean + private VorgangService vorgangService; + + @Autowired + private MockMvc mockMvc; + + @Test + void shouldCallVorgangService() { + doPostRequest(); + + verify(vorgangService).createVorgang(any()); + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform(multipart("/antrag") + .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))) + .andExpect(status().is2xxSuccessful()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java new file mode 100644 index 0000000..f2fb905 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java @@ -0,0 +1,161 @@ +/* + * 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.enterprise.entry; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.io.InputStream; + +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.BeforeEach; +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 org.springframework.core.io.Resource; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +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.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import lombok.SneakyThrows; + +class EntryControllerTest { + + @Spy + @InjectMocks + private EntryController controller; + + @Mock + private EntryDataMapper mapper; + @Mock + private SemantikAdapter semantikAdapter; + @Mock + private VorgangNummerSupplier vorgangNummerSupplier; + + private MockMvc mockMvc; + + @BeforeEach + void init() { + mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); + } + + @Nested + class ReceiveAntrag { + + private final FormHeader header = FormHeaderTestFactory.createBuilder().vorgangNummer(null).build(); + private final FormData formData = FormDataTestFactory.createBuilder().header(header).build(); + + @Captor + private ArgumentCaptor<InputStream> streamCaptor; + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + + private final EntryResponse response = EntryResponseTestFactory.create(); + + @BeforeEach + void init() { + when(mapper.mapEntryData(any())).thenReturn(formData); + doReturn(response).when(controller).buildResponse(any(), any()); + when(vorgangNummerSupplier.get()).thenReturn(FormHeaderTestFactory.VORGANG_NUMMER); + } + + @Test + @SneakyThrows + void shouldReturnAccepted() { + doPostRequest().andExpect(status().isAccepted()); + } + + @Test + @SneakyThrows + void shouldCallMapper() { + var request = TestUtils.loadTextFile("request/simple.json"); + + doPostRequest(); + + verify(mapper).mapEntryData(streamCaptor.capture()); + var inputBytes = IOUtils.readFully(streamCaptor.getValue(), request.getBytes().length); + assertThat(inputBytes).hasSameSizeAs(request.getBytes()).isEqualTo(request.getBytes()); + } + + @Test + void shouldCallSemantikAdapter() { + doPostRequest(); + + verify(semantikAdapter).processFormData(notNull()); + } + + @Test + void shouldSetVorgangNummer() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getHeader().getVorgangNummer()).isEqualTo(FormHeaderTestFactory.VORGANG_NUMMER); + } + + @Test + @SneakyThrows + void shouldReturnResponse() { + var response = controller.receiveAntrag(mock(Resource.class)); + + assertThat(response).isSameAs(this.response); + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform(multipart("/antrag") + .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))) + .andExpect(status().is2xxSuccessful()); + } + } + + @Nested + class BuildResponse { + + @Test + @SneakyThrows + void shouldCreateResponse() { + var response = controller.buildResponse(FormDataTestFactory.create(), ResponseVorgangTestFactory.VORGANG_ID); + + assertThat(response).usingRecursiveComparison() + .ignoringFields("vorgang.statusSince") + .isEqualTo(EntryResponseTestFactory.create()); + } + } + +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java new file mode 100644 index 0000000..9f1da0e --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java @@ -0,0 +1,105 @@ +/* + * 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.enterprise.entry; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.io.InputStream; + +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 com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import lombok.SneakyThrows; + +class EntryDataMapperTest { + + @Spy + @InjectMocks + private EntryDataMapper mapper; + @Mock + private FormDataMapper formDataMapper; + + @Spy + private ObjectMapper objectMapper = new ObjectMapper() + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true) + .registerModule(new JavaTimeModule()); + + @Nested + class TestMappingEntryData { + + private InputStream jsonInput = TestUtils.loadFile("request/simple.json"); + + @Nested + class TestReadRequest { + @Test + void shouldReadJson() { + var read = mapper.readRequest(jsonInput); + + assertThat(read).usingRecursiveComparison().isEqualTo(EntryDataTestFactory.create()); + } + } + + @Test + void shouldReadRequest() { + mapper.mapEntryData(jsonInput); + + verify(mapper).readRequest(jsonInput); + } + + @Test + @SneakyThrows + void shouldCallFormDataMapper() { + var entryData = EntryDataTestFactory.create(); + doReturn(entryData).when(objectMapper).readValue(any(InputStream.class), Mockito.<Class<EntryData>>any()); + + mapper.mapEntryData(jsonInput); + + verify(formDataMapper).mapEntryData(entryData); + } + + @Test + void shouldReturnMappedResult() { + FormData formData = FormDataTestFactory.create(); + when(formDataMapper.mapEntryData(any())).thenReturn(formData); + + var result = mapper.mapEntryData(jsonInput); + + assertThat(result).isSameAs(formData); + } + } + +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java new file mode 100644 index 0000000..7847470 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java @@ -0,0 +1,37 @@ +/* + * 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.enterprise.entry; + +public class EntryDataTestFactory { + + public static EntryData create() { + return createBuilder().build(); + } + + public static EntryData.EntryDataBuilder createBuilder() { + return EntryData.builder() + .control(ControlDataTestFactory.create()) + .formData(EntryFormDataTestFactory.create()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java new file mode 100644 index 0000000..3123c33 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java @@ -0,0 +1,93 @@ +/* + * 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.enterprise.entry; + +import static de.ozgcloud.eingang.enterprise.entry.FormDataMapper.*; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + +public class EntryFormDataTestFactory { + + public static final String FORM_FIELD_NAME = "field_name"; + public static final String FORM_FIELD_VALUE = "field_string_value"; + public static final String FORM_FIELD_LABEL = "field_label"; + + public static final String SUB_FORM_NAME = "antragsteller"; + public static final String SUB_FORM_LABEL = "Antragstellende Person"; + + public static final String SUB_FORM_STRING_FIELD_NAME = "lastname"; + public static final String SUB_FORM_STRING_FIELD_LABEL = "Nachname"; + public static final String SUB_FORM_STRING_FIELD_VALUE = "Täst"; + + public static final String SUB_FORM_NUMBER_FIELD_NAME = "age"; + public static final String SUB_FORM_NUMBER_FIELD_LABEL = "Alter"; + public static final Number SUB_FORM_NUMBER_FIELD_VALUE = 5.5; + + public static final String SUB_FORM_DATE_FIELD_NAME = "birthday"; + public static final String SUB_FORM_DATE_FIELD_LABEL = "Geburtsdatum"; + public static final LocalDate SUB_FORM_DATE_FIELD_VALUE = LocalDate.parse("2017-05-01"); + + public static final String SUB_FORM_BOOLEAN_FIELD_NAME = "geprüft"; + public static final String SUB_FORM_BOOLEAN_FIELD_LABEL = "Geprüft"; + public static final Boolean SUB_FORM_BOOLEAN_FIELD_VALUE = true; + + public static List<EntryFormDataItem> create() { + return List.of( + EntryFormDataField.builder().name(FORM_FIELD_NAME).label(FORM_FIELD_LABEL).stringValue(FORM_FIELD_VALUE).build(), + EntryFormDataSubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_STRING_FIELD_NAME) + .label(SUB_FORM_STRING_FIELD_LABEL) + .stringValue(SUB_FORM_STRING_FIELD_VALUE) + .build()) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_NUMBER_FIELD_NAME) + .label(SUB_FORM_NUMBER_FIELD_LABEL) + .numberValue(SUB_FORM_NUMBER_FIELD_VALUE) + .build()) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_DATE_FIELD_NAME) + .label(SUB_FORM_DATE_FIELD_LABEL) + .dateValue(SUB_FORM_DATE_FIELD_VALUE) + .build()) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_BOOLEAN_FIELD_NAME) + .label(SUB_FORM_BOOLEAN_FIELD_LABEL) + .booleanValue(SUB_FORM_BOOLEAN_FIELD_VALUE) + .build()) + .build()); + } + + public static Map<String, Object> createAsFormDataMap() { + return Map.of( + FORM_FIELD_NAME, Map.of(LABEL_KEY, FORM_FIELD_LABEL, VALUE_KEY, FORM_FIELD_VALUE), + SUB_FORM_NAME, Map.of(LABEL_KEY, SUB_FORM_LABEL, VALUE_KEY, Map.of( + SUB_FORM_STRING_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_STRING_FIELD_LABEL, VALUE_KEY, SUB_FORM_STRING_FIELD_VALUE), + SUB_FORM_NUMBER_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_NUMBER_FIELD_LABEL, VALUE_KEY, SUB_FORM_NUMBER_FIELD_VALUE), + SUB_FORM_DATE_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_DATE_FIELD_LABEL, VALUE_KEY, SUB_FORM_DATE_FIELD_VALUE), + SUB_FORM_BOOLEAN_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_BOOLEAN_FIELD_LABEL, VALUE_KEY, SUB_FORM_BOOLEAN_FIELD_VALUE)))); + } +} diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigsStelleTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java similarity index 64% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigsStelleTestFactory.java rename to enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java index eb492cb..f99a317 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigsStelleTestFactory.java +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,20 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.enterprise.entry; -public class ZustaendigsStelleTestFactory { +import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; - public static final String ORGANISATIONSEINHEIT_ID = "08150815"; - public static final String EMAIL = "hase@loewenkaefig.de"; +class EntryResponseTestFactory { - public static ZustaendigeStelle create() { + static final EntryResponse create() { return createBuilder().build(); } - public static ZustaendigeStelle.ZustaendigeStelleBuilder createBuilder() { - return ZustaendigeStelle.builder() // - .organisationseinheitenId(ORGANISATIONSEINHEIT_ID) - .email(EMAIL); + static final EntryResponse.EntryResponseBuilder createBuilder() { + return EntryResponse.builder() + .transactionId(FormHeaderTestFactory.REQUEST_ID) + .vorgang(ResponseVorgangTestFactory.create()); } } diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java new file mode 100644 index 0000000..4076a2b --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java @@ -0,0 +1,49 @@ +/* + * 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.enterprise.entry; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.InjectMocks; + +class FormDataMapperTest { + + @InjectMocks + private FormDataMapper mapper = Mappers.getMapper(FormDataMapper.class); + + @Nested + class TestMapFormItems { + + @Test + void shouldMapFormItems() { + var mapped = mapper.mapFormItems(EntryFormDataTestFactory.create()); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(EntryFormDataTestFactory.createAsFormDataMap()); + } + } + +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java new file mode 100644 index 0000000..36d8474 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java @@ -0,0 +1,47 @@ +/* + * 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.enterprise.entry; + +import java.time.ZonedDateTime; +import java.util.UUID; + +import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; +import de.ozgcloud.eingang.enterprise.entry.EntryResponse.ResponseVorgang; + +public class ResponseVorgangTestFactory { + + final static String VORGANG_ID = UUID.randomUUID().toString(); + + static ResponseVorgang create() { + return createBuilder().build(); + } + + static ResponseVorgang.ResponseVorgangBuilder createBuilder() { + return ResponseVorgang.builder() + .vorgangId(VORGANG_ID) + .vorgangNummer(FormHeaderTestFactory.VORGANG_NUMMER) + .status("NEU") + .statusSince(ZonedDateTime.now()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java new file mode 100644 index 0000000..2adf11a --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java @@ -0,0 +1,48 @@ +/* + * 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.enterprise.entry; + +import de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress; +import de.ozgcloud.eingang.enterprise.entry.EntryData.Servicekonto; + +public class ServicekontoTestFactory { + + private static final String TYPE = "OSI"; + private static final String IDENTIFIER = "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0"; + private static final String POSTFACH_TYPE = "privat"; + + public static Servicekonto create() { + return createBuilder().build(); + } + + public static Servicekonto.ServicekontoBuilder createBuilder() { + return Servicekonto.builder() + .type(TYPE) + .postfachAddress(PostfachAddress.builder() + .identifier(IDENTIFIER) + .type(POSTFACH_TYPE) + .build()); + + } +} diff --git a/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000..79b126e --- /dev/null +++ b/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/junit-platform.properties b/enterprise-adapter/src/test/resources/junit-platform.properties new file mode 100644 index 0000000..1cebb76 --- /dev/null +++ b/enterprise-adapter/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/request/simple.json b/enterprise-adapter/src/test/resources/request/simple.json new file mode 100644 index 0000000..11bd6e9 --- /dev/null +++ b/enterprise-adapter/src/test/resources/request/simple.json @@ -0,0 +1,52 @@ +{ + "control": { + "transactionId": "4e7a6ae7-4d0f-444d-8971-7cfc051c9924", + "zustaendigeStelle": "248240886", + "leikaIds": [ + "99108011000000", + "99108011153000" + ], + "resultEndpoint": { + "address": "https://idalabs.de/backend/api" + }, + "formId": "KFAS_LIVE_KI_10_Haltverbot_befristet", + "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)", + "serviceKonto": { + "type": "OSI", + "postfachAddress": { + "identifier": "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0", + "type": "privat" + } + } + }, + "formData": [ + { + "name": "field_name", + "label": "field_label", + "stringValue": "field_string_value" + }, + { + "name": "antragsteller", + "label": "Antragstellende Person", + "formItems": [ + { + "name": "lastname", + "label": "Nachname", + "stringValue": "Täst" + }, { + "name": "age", + "label": "Alter", + "numberValue": 5.5 + }, { + "name": "birthday", + "label": "Geburtsdatum", + "dateValue": "2017-05-01" + }, { + "name": "geprüft", + "label": "Geprüft", + "booleanValue": true + } + ] + } + ] +} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/pom.xml b/formcycle-adapter/formcycle-adapter-impl/pom.xml new file mode 100644 index 0000000..f4eabb0 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/pom.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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>formcycle-adapter</artifactId> + <version>2.4.0</version> + <relativePath>../</relativePath> + </parent> + + <artifactId>formcycle-adapter-impl</artifactId> + <name>EM - Formcycle Adapter - Implementation</name> + + <properties> + <formcycle-interface.version>${project.version}</formcycle-interface.version> + <jsoup.version>1.17.2</jsoup.version> + </properties> + + <dependencies> + <!--own project--> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>formcycle-adapter-interface</artifactId> + <version>${formcycle-interface.version}</version> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <!--spring--> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + + <dependency> + <groupId>org.jsoup</groupId> + <artifactId>jsoup</artifactId> + <version>${jsoup.version}</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </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</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java new file mode 100644 index 0000000..db49521 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java @@ -0,0 +1,47 @@ +/* + * 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.formcycle; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; + +@Mapper(uses = GrpcFormDataMapper.class) +public interface FormCycleFormDataMapper { + + @Mapping(target = "antragsteller", ignore = true) + @Mapping(target = "attachment", ignore = true) + @Mapping(target = "attachments", ignore = true) + @Mapping(target = "id", ignore = true) + @Mapping(target = "numberOfAttachments", ignore = true) + @Mapping(target = "numberOfRepresentations", ignore = true) + @Mapping(target = "representation", ignore = true) + @Mapping(target = "representations", ignore = true) + @Mapping(target = "zustaendigeStelle.organisationseinheitenId", source = "header.organisationsEinheitId") + @Mapping(target = "header.formEngineName", constant = "FormCycle") + @Mapping(target = "header.createdAt", source = "header.receivedAt") + FormData toFormData(FormCycleFormData fcFormData); +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java new file mode 100644 index 0000000..a025626 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java @@ -0,0 +1,183 @@ +/* + * 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.formcycle; + +import java.io.IOException; +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.UUID; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Controller +@ResponseBody +@RequestMapping("formData") +@RequiredArgsConstructor +class FormDataController { + + public static final String HTTP_TYPE_PROTOBUF = "application/x-protobuf"; + + private final FormCycleFormDataMapper mapper; + private final SemantikAdapter semantikAdapter; + private final VorgangNummerSupplier vorgangNummerSupplier; + private final FormDataHtmlCleaner formDataHtmlCleaner; + + @PostMapping(consumes = "multipart/form-data", produces = HTTP_TYPE_PROTOBUF) + public FormCycleConfirmationResponse receiveFormData(@RequestPart FormCycleFormData formData, + @RequestPart(required = false) Optional<Collection<MultipartFile>> representations, + @RequestPart(required = false) Optional<Collection<MultipartFile>> attachments) { + + FormData mappedFormData = mapper.toFormData(formData); + mappedFormData = formDataHtmlCleaner.clean(mappedFormData); + mappedFormData = addRepresentations(representations, mappedFormData); + mappedFormData = addFiles(formData, attachments, mappedFormData); + mappedFormData = addServiceKonto(formData, mappedFormData); + mappedFormData = addVorgangNummer(mappedFormData); + + semantikAdapter.processFormData(mappedFormData); + + return FormCycleConfirmationResponse.newBuilder().setVorgangNummer(mappedFormData.getHeader().getRequestId()).build(); + } + + private FormData addVorgangNummer(FormData mappedFormData) { + var formDataHeader = mappedFormData.getHeader().toBuilder().requestId(vorgangNummerSupplier.get()).build(); + return mappedFormData.toBuilder().header(formDataHeader).build(); + } + + private FormData addRepresentations(Optional<Collection<MultipartFile>> files, FormData mappedFormData) { + Collection<IncomingFile> representations = buildIncomingFiles(files); + return mappedFormData.toBuilder().representations(representations).numberOfRepresentations(representations.size()).build(); + } + + private Collection<IncomingFile> buildIncomingFiles(Optional<Collection<MultipartFile>> files) { + return files.orElseGet(Collections::emptyList).stream().map(this::buildIncomingFile).toList(); + } + + private FormData addFiles(FormCycleFormData inFormData, Optional<Collection<MultipartFile>> attachments, FormData mappedFormData) { + var groups = new AttachmentGroupsBuilder(inFormData.getAttachmentGroupList(), attachments).buildGroups(); + + return mappedFormData.toBuilder().attachments(groups).numberOfAttachments(FilesMapperHelper.countAttachedFiles(groups)).build(); + } + + private IncomingFile buildIncomingFile(MultipartFile multipartFile) { + try { + return IncomingFile.builder() + .id(UUID.randomUUID().toString()) + .name(multipartFile.getOriginalFilename()) + .size(multipartFile.getSize()) + .contentType(multipartFile.getContentType()) + .file(TempFileUtils.writeTmpFile(multipartFile.getInputStream())) + .build(); + } catch (IOException e) { + throw new TechnicalException("Error reading incoming file", e); + } + } + + class AttachmentGroupsBuilder { + + private final Collection<FormCycleAttachmentGroup> attachmentGroups; + private final Map<String, IncomingFile> nameToFile = new HashMap<>(); + + public AttachmentGroupsBuilder(Collection<FormCycleAttachmentGroup> attachmentGroups, Optional<Collection<MultipartFile>> attachmentFiles) { + this.attachmentGroups = attachmentGroups; + + attachmentFiles.ifPresent(files -> files.stream().map(FormDataController.this::buildIncomingFile) + .forEach(file -> nameToFile.put(file.getName(), file))); + } + + public Collection<IncomingFileGroup> buildGroups() { + return attachmentGroups.stream().map(this::buildGroup).toList(); + } + + IncomingFileGroup buildGroup(FormCycleAttachmentGroup group) { + var groupBuilder = IncomingFileGroup.builder().name(group.getName()); + + group.getFileIdList().stream().map(this::getFile) + .filter(Optional::isPresent).map(Optional::get) + .forEach(groupBuilder::file); + + return groupBuilder.build(); + } + + Optional<IncomingFile> getFile(String name) { + var file = nameToFile.get(name); + + if (Objects.isNull(file)) { + LOG.warn("Cannot find Attachment-File with name '{}'.", name); + return Optional.empty(); + } + return Optional.of(file); + } + } + + FormData addServiceKonto(FormCycleFormData formData, FormData mappedFormData) { + if (formData.hasServiceKonto()) { + mappedFormData.getHeader().setServiceKonto(buildServiceKonto(formData.getServiceKonto())); + } + return mappedFormData; + } + + ServiceKonto buildServiceKonto(FormCycleServiceKonto formCycleServiceKonto) { + return ServiceKonto.builder() + .type(formCycleServiceKonto.getType()) + .postfachAddress(buildPostfachAddress(formCycleServiceKonto)) + .build(); + } + + PostfachAddress buildPostfachAddress(FormCycleServiceKonto formCycleServiceKonto) { + if (!formCycleServiceKonto.hasAddress()) { + return null; + } + var address = formCycleServiceKonto.getAddress(); + return PostfachAddress.builder().identifier(buildPostfachId(address.getIdentifier())).version(address.getVersion()).build(); + } + + private StringBasedIdentifier buildPostfachId(String identifier) { + return StringBasedIdentifier.builder().postfachId(identifier).build(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java new file mode 100644 index 0000000..40adca2 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java @@ -0,0 +1,69 @@ +/* + * 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.formcycle; + +import java.util.Collection; +import java.util.Map; +import java.util.stream.Collectors; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.safety.Safelist; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +public class FormDataHtmlCleaner { + + public FormData clean(FormData formData) { + return formData.toBuilder().formData(cleanFormData(formData.getFormData())).build(); + } + + Map<String, Object> cleanFormData(Map<String, Object> formData) { + return formData.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> cleanValue(entry.getValue()))); + } + + @SuppressWarnings("unchecked") + Object cleanValue(Object value) { + if (value instanceof Map) { + return cleanFormData((Map<String, Object>) value); + } else if (value instanceof Collection<?> values) { + return values.stream().map(this::cleanValue).toList(); + } else if (value instanceof String valueString) { + return parseHtml(valueString); + } + return value; + } + + Object parseHtml(String html) { + var jsoupDocument = Jsoup.parse(html); + var outputSettings = new Document.OutputSettings(); // keep new lines + outputSettings.prettyPrint(false); + jsoupDocument.outputSettings(outputSettings); + var innerHtml = jsoupDocument.html().replace("\\\\n", "\n"); + return Jsoup.clean(innerHtml, "", Safelist.none(), outputSettings); + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java new file mode 100644 index 0000000..0ee13a5 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java @@ -0,0 +1,72 @@ +/* + * 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.formcycle; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.TimeZone; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.http.MediaType; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; + +import de.ozgcloud.eingang.formcycle.common.errorhandling.FormcycleExceptionHandler; +import de.ozgcloud.eingang.formcycle.common.protobuf.CustomProtobufHttpMessageConverter; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.formcycle.FormCycleEngineBasedAdapter; + +@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) +public class FormcycleAdapterApplication { + + public static void main(String[] args) { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + SpringApplication.run(FormcycleAdapterApplication.class, args); + } + + @Bean + EngineBasedSemantikAdapter engineBasedAdapter() { + return new FormCycleEngineBasedAdapter(); + } + + @Bean + ProtobufHttpMessageConverter protobufMessageConverter() { + return addCustomProtobufMediaType(new CustomProtobufHttpMessageConverter()); + } + + @Deprecated(forRemoval = true, since = "2.1.0") + // FIXME: Remove this method after all customers have updated ozg-cloud plugin to version 1.4.0 or higher + private ProtobufHttpMessageConverter addCustomProtobufMediaType(ProtobufHttpMessageConverter protobufHttpMessageConverter) { + var supportetMediaTypes = new ArrayList<>(protobufHttpMessageConverter.getSupportedMediaTypes()); + supportetMediaTypes.add(new MediaType("application", "protobuf", StandardCharsets.UTF_8)); + protobufHttpMessageConverter.setSupportedMediaTypes(supportetMediaTypes); + return protobufHttpMessageConverter; + } + + @Bean + FormcycleExceptionHandler restResposeEntityExceptionHandler() { + return new FormcycleExceptionHandler(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java new file mode 100644 index 0000000..d57b05e --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java @@ -0,0 +1,97 @@ +/* + * 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.formcycle.common.errorhandling; + +import java.util.UUID; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +import de.ozgcloud.common.errorhandling.ExceptionUtil; +import de.ozgcloud.common.errorhandling.TechnicalException; +import io.grpc.StatusRuntimeException; +import lombok.extern.log4j.Log4j2; + +@ControllerAdvice +@Log4j2 +public class FormcycleExceptionHandler extends ResponseEntityExceptionHandler { + + static final String TECHNICAL_EXCEPTION_MESSAGE = "Cannot process request."; + static final String CREATE_VORGANG_EXCEPTION_MESSAGE = "Cannot create vorgang."; + static final String UNEXPECTED_EXCEPTION_MESSAGE = "An unexpected error occurred."; + + private static final String EXCEPTION_ID_TEMPLATE = "(ExceptionId:"; + + @ExceptionHandler({ TechnicalException.class }) + public ResponseEntity<InternalExceptionDto> handleTechnicalException(TechnicalException e, WebRequest request) { + LOG.error(TECHNICAL_EXCEPTION_MESSAGE, e); + return buildResponseEntity(TECHNICAL_EXCEPTION_MESSAGE, e.getExceptionId()); + } + + @ExceptionHandler({ StatusRuntimeException.class }) + public ResponseEntity<InternalExceptionDto> handleStatusRuntimeException(StatusRuntimeException e, WebRequest request) { + var logMessage = TECHNICAL_EXCEPTION_MESSAGE; + var exceptionId = getExceptionId(e.getMessage()); + if (!hasExceptionId(e.getMessage())) { + logMessage = ExceptionUtil.formatMessageWithExceptionId(CREATE_VORGANG_EXCEPTION_MESSAGE, exceptionId); + } + LOG.error(logMessage, e); + return buildResponseEntity(CREATE_VORGANG_EXCEPTION_MESSAGE, exceptionId); + } + + boolean hasExceptionId(String message) { + return message.contains(EXCEPTION_ID_TEMPLATE); + } + + String getExceptionId(String message) { + try { + return message.substring(message.indexOf(EXCEPTION_ID_TEMPLATE) + 14, message.indexOf(")")); + } catch (IndexOutOfBoundsException e) { + return createExceptionId(); + } + } + + @ExceptionHandler({ RuntimeException.class }) + public ResponseEntity<InternalExceptionDto> handleUnexpectedException(RuntimeException e, WebRequest request) { + var exceptionId = createExceptionId(); + var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(UNEXPECTED_EXCEPTION_MESSAGE, exceptionId); + LOG.error(messageWithExceptionId, e); + return buildResponseEntity(UNEXPECTED_EXCEPTION_MESSAGE, exceptionId); + } + + String createExceptionId() { + return UUID.randomUUID().toString(); + } + + ResponseEntity<InternalExceptionDto> buildResponseEntity(String message, String exceptionId) { + return ResponseEntity.internalServerError().body(buildInternalExceptionDto(message, exceptionId)); + } + + InternalExceptionDto buildInternalExceptionDto(String message, String exceptionId) { + return InternalExceptionDto.builder().message(message).exceptionId(exceptionId).build(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java new file mode 100644 index 0000000..7c85d71 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java @@ -0,0 +1,35 @@ +/* + * 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.formcycle.common.errorhandling; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class InternalExceptionDto { + + private String exceptionId; + private String message; +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java new file mode 100644 index 0000000..4fa33fa --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java @@ -0,0 +1,42 @@ +/* + * 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.formcycle.common.protobuf; + +import java.io.IOException; + +import org.springframework.http.HttpInputMessage; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; + +import com.google.protobuf.Message; + +@Deprecated(forRemoval = true, since = "2.1.0") +// FIXME: Remove this class after all customers have updated ozg-cloud plugin to version 1.4.0 or higher +public class CustomProtobufHttpMessageConverter extends ProtobufHttpMessageConverter { + + @Override + protected Message readInternal(Class<? extends Message> clazz, HttpInputMessage inputMessage) throws IOException { + inputMessage.getHeaders().setContentType(ProtobufHttpMessageConverter.PROTOBUF); + return super.readInternal(clazz, inputMessage); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml new file mode 100644 index 0000000..1a493ac --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml @@ -0,0 +1,21 @@ +logging: + config: classpath:log4j2-local.xml + +server: + port: 9293 + error: + include-stacktrace: always + +management: + server.port: 8084 + +ozgcloud: + adapter: + targetVorgangManagerName: local + fallbackStrategy: DENY + +grpc: + client: + vorgang-manager-local: + address: static://127.0.0.1:9090 + negotiationType: PLAINTEXT diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml new file mode 100644 index 0000000..fc50182 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml @@ -0,0 +1,46 @@ +logging: + level: + ROOT: WARN + '[de.ozgcloud]': INFO + +spring: + profiles: + include: formcycle + servlet: + multipart: + max-file-size: 124MB + max-request-size: 256MB + file-size-threshold: 10MB + +server: + http2: + enabled: true + error: + include-stacktrace: never + +management: + server: + port: 8081 + health: + livenessState: + enabled: true + readinessState: + enabled: true + endpoint: + health: + group: + exploratory: + include: livenessState,readinessState,ping + show-details: always + probes: + enabled: true + prometheus: + enabled: true + endpoints: + web: + exposure: + include: health,prometheus + +ozgcloud: + adapter: + routingStrategy: SINGLE \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt new file mode 100644 index 0000000..b3aff18 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt @@ -0,0 +1,6 @@ + _____ ___ ____ __ __ ______ ______ _ _____ +| ___/ _ \| _ \| \/ |/ ___\ \ / / ___| | | ____| +| |_ | | | | |_) | |\/| | | \ V / | | | | _| +| _|| |_| | _ <| | | | |___ | || |___| |___| |___ +|_| \___/|_| \_\_| |_|\____| |_| \____|_____|_____| +${spring-boot.version} ${application.version} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java new file mode 100644 index 0000000..a061bd9 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java @@ -0,0 +1,40 @@ +/* + * 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.formcycle; + +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; + +public class FormCycleAttachmentGroupTestFactory { + + static FormCycleAttachmentGroup create() { + return createBuilder().build(); + } + + static FormCycleAttachmentGroup.Builder createBuilder() { + return FormCycleAttachmentGroup.newBuilder() + .setName(IncomingFileGroupTestFactory.NAME) + .addFileId(IncomingFileTestFactory.NAME); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java new file mode 100644 index 0000000..61d1a48 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java @@ -0,0 +1,62 @@ +/* + * 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.formcycle; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; + +class FormCycleFormDataMapperTest { + + @InjectMocks + private FormCycleFormDataMapper mapper = Mappers.getMapper(FormCycleFormDataMapper.class); + + @Spy + private GrpcFormDataMapper formDataMapper = Mappers.getMapper(GrpcFormDataMapper.class); + + @Nested + class TestToFormData { + + @Test + void shouldMapHeader() { + var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create()); + + assertThat(mapped.getHeader()).isNotNull(); + } + + @Test + void shouldMapZustaendigeStelle() { + var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create()); + + assertThat(mapped.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(FormCycleFormHeaderTestFactory.ORGANISATIONSEINHEIT_ID); + } + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java new file mode 100644 index 0000000..c9349cb --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java @@ -0,0 +1,52 @@ +/* + * 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.formcycle; + +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.formcycle.FormCycleFormData.Builder; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcFormData; + +class FormCycleFormDataTestFactory { + + static FormCycleFormData create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCycleFormData.newBuilder() + .setHeader(FormCycleFormHeaderTestFactory.create()) + .setServiceKonto(FormCycleServiceKontoTestFactory.create()) + .setFormData(GrpcFormDataTestFactory.create()) + .addAttachmentGroup(FormCycleAttachmentGroup.newBuilder() + .setName(IncomingFileGroupTestFactory.NAME) + .addFileId(IncomingFileGroupTestFactory.VENDOR_ID_XXX) + .build()); + } + + static FormCycleFormData withFormData(GrpcFormData formData) { + return createBuilder().clearFormData().setFormData(formData).build(); + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java new file mode 100644 index 0000000..15511d3 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java @@ -0,0 +1,44 @@ +/* + * 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.formcycle; + +import de.ozgcloud.eingang.formcycle.FormCycleFormHeader.Builder; + +public class FormCycleFormHeaderTestFactory { + + static final String RECEIVED_AT = "2022-12-24T18:00:00Z"; + static final String FORM_NAME = "test form 1"; + static final String ORGANISATIONSEINHEIT_ID = "9030229"; + + static FormCycleFormHeader create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCycleFormHeader.newBuilder() + .setFormName(FORM_NAME) + .setReceivedAt(RECEIVED_AT) + .setOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java new file mode 100644 index 0000000..3b6817d --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java @@ -0,0 +1,45 @@ +/* + * 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.formcycle; + +import java.util.UUID; + +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.formcycle.FormCyclePostfachAddress.Builder; + +public class FormCyclePostfachAddressTestFactory { + + public static final String POSTKORB_ID = UUID.randomUUID().toString(); + public static final String VERSION = PostfachAddressTestFactory.VERSION; + + static FormCyclePostfachAddress create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCyclePostfachAddress.newBuilder() + .setIdentifier(POSTKORB_ID) + .setVersion(VERSION); + } +} diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java similarity index 61% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java rename to formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java index 5639a60..6edadb1 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,21 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formcycle; import java.util.UUID; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; +import de.ozgcloud.eingang.formcycle.FormCycleServiceKonto.Builder; -interface FormSolutionsFileMapper { - // TODO auf utils Klasse umstellen - interface abschaffen - default IncomingFile mapFile(byte[] data, String contentType, String fileName) { - return IncomingFile.builder() - .content(data) - .contentType(contentType) - .size(data.length) - .name(fileName) - .id(UUID.randomUUID().toString()) - .build(); +public class FormCycleServiceKontoTestFactory { + + public static final FormCyclePostfachAddress ADDRESS = FormCyclePostfachAddressTestFactory.create(); + public static final String TYPE = UUID.randomUUID().toString(); + + static FormCycleServiceKonto create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCycleServiceKonto.newBuilder() + .setAddress(ADDRESS) + .setType(TYPE); } -} \ No newline at end of file +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java new file mode 100644 index 0000000..9671648 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java @@ -0,0 +1,98 @@ +/* + * 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.formcycle; + +import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import de.ozgcloud.common.test.ITCase; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcFormField; +import de.ozgcloud.vorgang.vorgang.GrpcSubForm; +import lombok.SneakyThrows; + +@ITCase +//@SpringBootTest(properties = { +// "grpc.client.vorgang-manager-local.address=static://127.0.0.1:9090", +// "grpc.client.vorgang-manager-local.negotiationType=PLAINTEXT" +//}) +//@ActiveProfiles("itcase") +@AutoConfigureMockMvc +class FormDataControllerITCase { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private SemantikAdapter semantikAdapter; + + @Nested + class ReceiveFormData { + + @Test + @SneakyThrows + void shouldProcessSuccessful() { + doPostRequest().andExpect(status().isOk()); + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform( + multipart("/formData") + .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData())) + .file(IncomingFileTestFactory.asMultipartFile("representations")) + .file(asMultipartFile("attachments", + createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX + "__" + NAME).build()))); + } + } + + private byte[] buildTestFormData() { + return FormDataControllerTest.buildTestFormData(FormCycleFormDataTestFactory.withFormData( + GrpcFormDataTestFactory.createBuilder() + .addField(GrpcFormField.newBuilder().setName("firstname").setLabel("Vorname").setValue("Theo").build()) + .addField(GrpcFormField.newBuilder().setName("lastname").setLabel("Nachname").setValue("Test").build()) + .addField(GrpcFormField.newBuilder().setName("Street").setLabel("Straße").setValue("Hwy 5").build()) + .addForm(GrpcSubForm.newBuilder() + .setTitle("Address").setLabel("Adresse") + .addField(GrpcFormField.newBuilder().setName("firstname").setLabel("Vorname").setValue("Theo").build()) + .addField(GrpcFormField.newBuilder().setName("lastname").setLabel("Nachname").setValue("Test").build()) + .addField(GrpcFormField.newBuilder().setName("street").setLabel("Straße").setValue("Hwy 5").build()) + .build()) + .build())); + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java new file mode 100644 index 0000000..efbaa1a --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java @@ -0,0 +1,367 @@ +/* + * 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.formcycle; + +import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.io.ByteArrayOutputStream; +import java.util.Collections; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +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 org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import lombok.SneakyThrows; + +class FormDataControllerTest { + + @Spy + @InjectMocks + private FormDataController controller; + + @Mock + private FormCycleFormDataMapper mapper; + @Mock + private SemantikAdapter semantikAdapter; + @Mock + private VorgangNummerSupplier vorgangNummerSupplier; + @Mock + private FormDataHtmlCleaner htmlCleaner; + + private MockMvc mockMvc; + + @BeforeEach + void init() { + mockMvc = MockMvcBuilders.standaloneSetup(controller) + .setMessageConverters(new ProtobufHttpMessageConverter()) + .build(); + } + + @Nested + class ReceiveFormData { + + static final String VORGANG_NUMMER = "VorgangNummer"; + + private FormData mappedFormData = FormDataTestFactory.create(); + + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + + @BeforeEach + void init() { + when(htmlCleaner.clean(any())).thenReturn(mappedFormData); + when(mapper.toFormData(any())).thenReturn(mappedFormData); + when(vorgangNummerSupplier.get()).thenReturn(VORGANG_NUMMER); + } + + @Test + void shouldReturnSuccess() throws Exception { + doPostRequest().andExpect(status().is2xxSuccessful()); + } + + @Test + void shouldCallVorgangNummerSupplier() { + doPostRequest(); + + verify(vorgangNummerSupplier).get(); + } + + @Test + @SneakyThrows + void shouldResponseWithVorgangNummer() { + + var confirmation = FormCycleConfirmationResponse.parseFrom( + doPostRequest().andReturn().getResponse().getContentAsByteArray()); + + assertThat(confirmation.getVorgangNummer()).isEqualTo(VORGANG_NUMMER); + } + + @Test + void shouldSetVorgangNummer() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getHeader().getRequestId()).isEqualTo(VORGANG_NUMMER); + } + + @Test + void shouldCallHtmlCleaner() { + doPostRequest(); + + verify(htmlCleaner).clean(any()); + } + + @Test + void shouldCallMapper() { + doPostRequest(); + + verify(mapper).toFormData(notNull()); + } + + @Test + void shouldCallSemantikAdapter() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue()).usingRecursiveComparison() + .ignoringFields("representations", "attachments", "numberOfAttachments", "header.requestId") + .isEqualTo(mappedFormData); + } + + @Test + void shouldMapPostkorbId() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(getPostfachIdFormData(formDataCaptor.getValue())).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); + } + + @Nested + class Representations { + + @BeforeEach + void init() { + var formData = FormDataTestFactory.createBuilder().clearRepresentations().numberOfRepresentations(0).build(); + when(mapper.toFormData(any())).thenReturn(formData); + when(htmlCleaner.clean(any())).thenReturn(formData); + } + + @Test + void shouldBePresent() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + var formData = formDataCaptor.getValue(); + assertThat(formData.getRepresentations()).hasSize(1); + assertThat(formData.getNumberOfRepresentations()).isEqualTo(1); + } + + @Test + void shouldBeFilled() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getRepresentations()).first().usingRecursiveComparison() + .ignoringFields("id", "vendorId", "file") + .isEqualTo(IncomingFileTestFactory.create()); + } + + @Test + @SneakyThrows + void shouldBeFineWithoutRepresentations() { + mockMvc.perform( + multipart("/formData") + .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData()))) + .andExpect(status().isOk()); + } + } + + @Nested + class Attachments { + @BeforeEach + void init() { + var formData = FormDataTestFactory.createBuilder().clearAttachments().numberOfAttachments(0).build(); + when(mapper.toFormData(any())).thenReturn(formData); + when(htmlCleaner.clean(any())).thenReturn(formData); + } + + @Test + void shouldHaveGroup() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getAttachments()).hasSize(1); + } + + @Test + void shouldSetNumberOfAttachments() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getNumberOfAttachments()).isEqualTo(1); + } + + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform( + multipart("/formData") + .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData())) + .file(IncomingFileTestFactory.asMultipartFile("representations")) + .file(asMultipartFile("attachments", + createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX).build()))); + } + } + + @SneakyThrows + static byte[] buildTestFormData() { + return buildTestFormData(FormCycleFormDataTestFactory.create()); + } + + @SneakyThrows + static byte[] buildTestFormData(FormCycleFormData formData) { + var out = new ByteArrayOutputStream(); + formData.writeTo(out); + return out.toByteArray(); + } + + @Nested + class TestAttachmentGroupsBuilder { + + private FormDataController.AttachmentGroupsBuilder groupsBuilder; + + @BeforeEach + void init() { + groupsBuilder = controller.new AttachmentGroupsBuilder( + Collections.singleton(FormCycleAttachmentGroupTestFactory.create()), + Optional.of(Collections.singleton(IncomingFileTestFactory.asMultipartFile(NAME)))); + } + + @Nested + class TestBuildGroup { + @Test + void shouldSetName() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.create()); + + assertThat(group.getName()).isEqualTo(IncomingFileGroupTestFactory.NAME); + } + + @Test + void shouldHaveFile() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.create()); + + assertThat(group.getFiles()).hasSize(1).first() + .usingRecursiveComparison().ignoringFields("id", "vendorId", "file") + .isEqualTo(IncomingFileTestFactory.create()); + } + + @Test + void shouldBeFineWithoutFile() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.createBuilder().clearFileId().build()); + + assertThat(group.getFiles()).isEmpty(); + } + + @Test + void shouldBeFineWithMissingFile() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.createBuilder().clearFileId().addFileId("missing").build()); + + assertThat(group.getFiles()).isEmpty(); + } + } + } + + @Nested + class TestServiceKontoMapping { + + @Test + void shouldMapServiceKontoType() { + var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader()); + + assertThat(getServiceKontoType(formData)).isEqualTo(FormCycleServiceKontoTestFactory.TYPE); + } + + @Test + void shouldNotMapEmptyServiceKonto() { + controller.addServiceKonto(FormCycleFormData.newBuilder().build(), buildEmptyFormDataWithHeader()); + + verify(controller, never()).buildServiceKonto(any()); + } + + String getServiceKontoType(FormData formData) { + return formData.getHeader().getServiceKonto().getType(); + } + + @Nested + class TestPostkorbIdMapping { + + @Test + void shouldMapPostkorbId() { + var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader()); + + assertThat(getPostfachIdFormData(formData)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); + } + + @Test + void shouldNotMapEmptyPostkorbId() { + var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKonto.newBuilder().build()); + + assertThat(postfachAddress).isNull(); + } + + @Test + void shouldMapPostfachIdentifier() { + var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKontoTestFactory.create()); + + assertThat(getIdentifier(postfachAddress)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); + } + + private String getIdentifier(PostfachAddress postfachAddress) { + return ((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId(); + } + + @Test + void shouldMapPostfachAddressVersion() { + var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKontoTestFactory.create()); + + assertThat(postfachAddress.getVersion()).isEqualTo(FormCyclePostfachAddressTestFactory.VERSION); + } + } + + private FormData buildEmptyFormDataWithHeader() { + return FormData.builder().header(FormHeader.builder().build()).build(); + } + } + + private String getPostfachIdFormData(FormData formData) { + return ((StringBasedIdentifier) formData.getHeader().getServiceKonto().getPostfachAddresses() + .get(0).getIdentifier()).getPostfachId(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java new file mode 100644 index 0000000..eb36609 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java @@ -0,0 +1,229 @@ +/* + * 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.formcycle; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.List; +import java.util.Map; + +import org.assertj.core.data.MapEntry; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; + +class FormDataHtmlCleanerTest { + + private static final String KEY = "key"; + private static final Object VALUE = "value"; + + @Spy + @InjectMocks + private FormDataHtmlCleaner cleaner; + + @Nested + class TestClean { + + private final static Map<String, Object> FORM_DATA_MAP = Map.of(KEY, VALUE); + private final static FormData FORM_DATA = FormData.builder().formData(FORM_DATA_MAP).build(); + + @Test + void shouldCallCleanFormData() { + cleaner.clean(FORM_DATA); + + verify(cleaner).cleanFormData(FORM_DATA_MAP); + } + + @Test + void shouldSetCleanedFormData() { + var cleanedFormData = Map.of(KEY, VALUE); + doReturn(cleanedFormData).when(cleaner).cleanFormData(anyMap()); + + var result = cleaner.clean(FORM_DATA); + + assertThat(result.getFormData()).isSameAs(cleanedFormData); + } + } + + @Nested + class TestCleanFormData { + + @Test + void shouldCallCleanValue() { + cleaner.cleanFormData(Map.of(KEY, VALUE)); + + verify(cleaner).cleanValue(VALUE); + } + + @Test + void shouldReturnCleanedMap() { + var cleanedValue = "noHtml"; + doReturn(cleanedValue).when(cleaner).cleanValue(any()); + + var result = cleaner.cleanFormData(Map.of(KEY, VALUE)); + + assertThat(result).containsOnly(MapEntry.entry(KEY, cleanedValue)); + } + } + + @Nested + class TestCleanValue { + + @Nested + class TestCleanMap { + + @Test + void shouldCallCleanFormData() { + var expectedMap = Map.of(KEY, VALUE); + + cleaner.cleanValue(expectedMap); + + verify(cleaner).cleanFormData(expectedMap); + } + + @Test + void shouldReturnValue() { + var expectedMap = Map.of(KEY, VALUE); + doReturn(expectedMap).when(cleaner).cleanFormData(anyMap()); + + var result = cleaner.cleanValue(Map.of("a", "b")); + + assertThat(result).isSameAs(expectedMap); + } + } + + @Nested + class TestCleanCollection { + + @Test + void shouldCallCleanValue() { + cleaner.cleanValue(List.of(VALUE)); + + verify(cleaner).cleanValue(VALUE); + } + + @Test + void shouldReturnValue() { + doReturn(List.of(VALUE)).when(cleaner).cleanValue(any()); + + var result = cleaner.cleanValue(List.of("a")); + + assertThat(result).isInstanceOf(List.class).asList().containsExactly(VALUE); + } + } + + @Nested + class TestCleanString { + + @Test + void shouldCallParseHtml() { + var stringValue = VALUE.toString(); + + cleaner.cleanValue(VALUE); + + verify(cleaner).parseHtml(stringValue); + } + + @Test + void shouldReturnValue() { + var cleanedValue = "noHtml"; + doReturn(cleanedValue).when(cleaner).parseHtml(anyString()); + + var result = cleaner.cleanValue(VALUE); + + assertThat(result).isEqualTo(cleanedValue); + } + } + + @Test + void shouldReturnUnmodifiedValue() { + var value = 1; + + var result = cleaner.cleanValue(value); + + assertThat(result).isEqualTo(1); + verify(cleaner, never()).parseHtml(any()); + } + } + + @Nested + class TestHtmlCleaner { + + static final String KEY_LABEL = "label"; + static final String KEY_VALUE = "value"; + + static final Map<String, Object> FORM_DATA_MAP = Map.of("tf1", Map.of( + KEY_LABEL, "<p><em>Ä</em></p>", + KEY_VALUE, "Ä - Wert"), + "tf2", Map.of( + KEY_LABEL, "<p><strong>Ö</strong></p>", + KEY_VALUE, "Ö - Wert"), + "fs1", Map.of( + KEY_LABEL, "Ü", + KEY_VALUE, Map.of( + "tf3", Map.of( + KEY_LABEL, " <p><s>Label mit</s> ß</p>", + KEY_VALUE, "ein Text mit ß und <html><body><h1>Hello</h1><body><html>")), + "tf4", Map.of( + KEY_LABEL, "<p><span style=\"background-color:#1abc9c;\">ä</span></p>", + KEY_VALUE, "Text"), + "ed1", Map.of( + KEY_LABEL, + "<ol>\n\t<li><em><strong><u>ö</u></strong></em></li>\n\t<li><span style=\"color:#e74c3c;\">ü</span></li>\n</ol>", + KEY_VALUE, "TExt\nmit\n Leerzeichen\nund\n Umbrüchen" + ))); + + static final Map<String, Object> EXPECTED_MAP = Map.of("tf1", Map.of( + KEY_LABEL, "Ä", + KEY_VALUE, "Ä - Wert"), + "tf2", Map.of( + KEY_LABEL, "Ö", + KEY_VALUE, "Ö - Wert"), + "fs1", Map.of( + KEY_LABEL, "Ü", + KEY_VALUE, Map.of( + "tf3", Map.of( + KEY_LABEL, "Label mit ß", + KEY_VALUE, "ein Text mit ß und Hello")), + "tf4", Map.of( + KEY_LABEL, "ä", + KEY_VALUE, "Text"), + "ed1", Map.of( + KEY_LABEL, + "\n\tö\n\tü\n", + KEY_VALUE, "TExt\nmit\n Leerzeichen\nund\n Umbrüchen" + ))); + + @Test + void shouldCleanHtml() { + var result = cleaner.clean(FormData.builder().formData(FORM_DATA_MAP).build()); + + assertThat(result.getFormData()).isEqualTo(EXPECTED_MAP); + } + } +} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java new file mode 100644 index 0000000..827acad --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java @@ -0,0 +1,38 @@ +/* + * 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.formcycle; + +import org.junit.jupiter.api.Test; + +import de.ozgcloud.common.test.ITCase; + +@ITCase +class FormcycleAdapterApplicationTest { + + @Test + void shouldStartApplication() { // NOSONAR + // just start without an error + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java new file mode 100644 index 0000000..86ef732 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java @@ -0,0 +1,149 @@ +/* + * 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.formcycle.common.errorhandling; + +import static de.ozgcloud.eingang.formcycle.common.errorhandling.InternalExceptionDtoTestFactory.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +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.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import de.ozgcloud.common.errorhandling.ExceptionUtil; +import de.ozgcloud.common.errorhandling.TechnicalException; +import io.grpc.StatusRuntimeException; + +class FormcycleExceptionHandlerTest { + + @Spy + @InjectMocks + private FormcycleExceptionHandler exceptionHandler; + + @Nested + class TestHandleTechnicalException { + + @Mock + private TechnicalException technicalException; + + @Test + void shouldCallBuildResponseEntity() { + when(technicalException.getExceptionId()).thenReturn(EXCEPTION_ID); + + exceptionHandler.handleTechnicalException(technicalException, null); + + verify(exceptionHandler).buildResponseEntity(FormcycleExceptionHandler.TECHNICAL_EXCEPTION_MESSAGE, EXCEPTION_ID); + } + + } + + @Nested + class TestHandleStatusRuntimeException { + + @Mock + private StatusRuntimeException statusRuntimeException; + + @Test + void shouldCallBuildResponseEntity() { + when(statusRuntimeException.getStackTrace()).thenReturn(new StackTraceElement[0]); + when(statusRuntimeException.getMessage()).thenReturn(ExceptionUtil.formatMessageWithExceptionId(MESSAGE, EXCEPTION_ID)); + + exceptionHandler.handleStatusRuntimeException(statusRuntimeException, null); + + verify(exceptionHandler).buildResponseEntity(FormcycleExceptionHandler.CREATE_VORGANG_EXCEPTION_MESSAGE, EXCEPTION_ID); + } + + @Nested + class TestGetExceptionId { + + @Test + void shouldReturnExceptionIdFromMessage() { + var exceptionId = exceptionHandler.getExceptionId(messageWithExceptionId()); + + assertThat(exceptionId).isEqualTo(EXCEPTION_ID); + } + + @Test + void shouldCreateNewExceptionId() { + var exceptionId = exceptionHandler.getExceptionId(MESSAGE); + + assertThat(exceptionId).isNotEqualTo(EXCEPTION_ID); + } + + } + + } + + @Nested + class TestBuildResponseEntity { + + @Test + void shouldReturnInternaServerError() { + var response = buildResponseEntity(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); + } + + @Test + void shouldCallBuildInternalExceptionDto() { + buildResponseEntity(); + + verify(exceptionHandler).buildInternalExceptionDto(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); + } + + private ResponseEntity<InternalExceptionDto> buildResponseEntity() { + return exceptionHandler.buildResponseEntity(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); + } + + } + + @Nested + class TestBuildInternalExceptionDto { + + @Test + void shouldSetExceptionId() { + var response = buildInternalExceptionDto(); + + assertThat(response.getExceptionId()).isEqualTo(EXCEPTION_ID); + } + + @Test + void shouldSetMessage() { + var response = buildInternalExceptionDto(); + + assertThat(response.getMessage()).isEqualTo(InternalExceptionDtoTestFactory.MESSAGE); + } + + private InternalExceptionDto buildInternalExceptionDto() { + return exceptionHandler.buildInternalExceptionDto(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); + } + + } +} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java new file mode 100644 index 0000000..a2063e0 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java @@ -0,0 +1,45 @@ +/* + * 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.formcycle.common.errorhandling; + +import de.ozgcloud.common.errorhandling.ExceptionUtil; +import de.ozgcloud.eingang.formcycle.common.errorhandling.InternalExceptionDto.InternalExceptionDtoBuilder; + +public class InternalExceptionDtoTestFactory { + + public static final String EXCEPTION_ID = "exception-id"; + public static final String MESSAGE = "exception message"; + + public static InternalExceptionDto create() { + return createBuilder().build(); + } + + private static InternalExceptionDtoBuilder createBuilder() { + return InternalExceptionDto.builder().exceptionId(EXCEPTION_ID).message(MESSAGE); + } + + public static String messageWithExceptionId() { + return ExceptionUtil.formatMessageWithExceptionId(MESSAGE, EXCEPTION_ID); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000..79b126e --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml new file mode 100644 index 0000000..5458747 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml @@ -0,0 +1,4 @@ +ozgcloud: + adapter: + targetVorgangManagerName: local + fallbackStrategy: DENY \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties new file mode 100644 index 0000000..1cebb76 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml new file mode 100644 index 0000000..5d7001e --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <Appenders> + <Console name="CONSOLE" target="SYSTEM_OUT"> + <PatternLayout pattern="[%-5level] %c{1.} %msg%n"/> + </Console> + </Appenders> + + <Loggers> + <Root level="WARN"> + <appender-ref ref="CONSOLE" /> + </Root> + </Loggers> +</configuration> \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-interface/pom.xml b/formcycle-adapter/formcycle-adapter-interface/pom.xml new file mode 100644 index 0000000..70214b6 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-interface/pom.xml @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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.common</groupId> + <artifactId>ozgcloud-common-dependencies</artifactId> + <version>3.0.1</version> + <relativePath/> + </parent> + + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>formcycle-adapter-interface</artifactId> + <name>EM - Formcycle Adapter - Interface</name> + <version>2.4.0</version> + + <properties> + <vorgang-manager.version>2.4.0</vorgang-manager.version> + <java.version>17</java.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${java.version}</maven.compiler.target> + </properties> + + <dependencies> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <version>${vorgang-manager.version}</version> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <classifier>sources</classifier> + <scope>provided</scope> + <version>${vorgang-manager.version}</version> + </dependency> + + <!-- protobuf --> + <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java</artifactId> + </dependency> + <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java-util</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>com.github.os72</groupId> + <artifactId>protoc-jar-maven-plugin</artifactId> + <version>${protoc-jar-plugin.version}</version> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <includeMavenTypes>direct</includeMavenTypes> + <outputTargets> + <outputTarget> + <type>java</type> + </outputTarget> + <outputTarget> + <type>grpc-java</type> + <pluginArtifact>io.grpc:protoc-gen-grpc-java:${protoc-gen.version}</pluginArtifact> + </outputTarget> + </outputTargets> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto b/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto new file mode 100644 index 0000000..61ff4f7 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2022 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. + */ +syntax = "proto3"; + +package de.ozgcloud.eingang.formcycle; + +/*import "common.model.proto";*/ +import "vorgang.model.proto"; + +option java_multiple_files = true; +option java_package = "de.ozgcloud.eingang.formcycle"; +option java_outer_classname = "FormcycleFormDataProto"; + +message FormCycleConfirmationResponse { + string vorgangNummer = 1; +} + +message FormCycleFormData { + FormCycleFormHeader header = 1; + FormCycleServiceKonto serviceKonto = 2; + de.ozgcloud.vorgang.vorgang.GrpcFormData formData = 3; + repeated FormCycleAttachmentGroup attachmentGroup = 4; +} + +message FormCycleFormHeader { + string receivedAt = 1; + string formName = 2; + string organisationsEinheitId = 3; +} + +message FormCycleServiceKonto { + string type = 1; + FormCyclePostfachAddress address = 2; +} + +message FormCyclePostfachAddress { + string version = 1; + string identifier = 2; +} + +message FormCycleAttachmentGroup { + string name = 1; + repeated string fileId = 2; +} \ No newline at end of file diff --git a/formcycle-adapter/pom.xml b/formcycle-adapter/pom.xml new file mode 100644 index 0000000..18f21dd --- /dev/null +++ b/formcycle-adapter/pom.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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.4.0</version> + </parent> + + <artifactId>formcycle-adapter</artifactId> + <name>EM - Formcycle Adapter</name> + <description>Eingang Adapter für Formcycle basierte Formulare</description> + <packaging>pom</packaging> + + <modules> + <module>formcycle-adapter-interface</module> + <module>formcycle-adapter-impl</module> + </modules> + + <properties> + <spring-boot.build-image.imageName>docker.ozg-sh.de/formcycle-adapter:build-latest</spring-boot.build-image.imageName> + </properties> + + <dependencies> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <classifier>sources</classifier> + <scope>compile</scope> + <version>${vorgang-manager.version}</version> + </dependency> + </dependencies> +</project> diff --git a/formsolutions-adapter/pom.xml b/formsolutions-adapter/pom.xml index 159de33..04fcbaf 100644 --- a/formsolutions-adapter/pom.xml +++ b/formsolutions-adapter/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + 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 @@ -23,15 +24,13 @@ 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"> +<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.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -46,16 +45,16 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.common</groupId> - <artifactId>kop-common-test</artifactId> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> </dependency> <!-- Spring --> @@ -82,10 +81,6 @@ <groupId>org.apache.ws.xmlschema</groupId> <artifactId>xmlschema-core</artifactId> </dependency> - <dependency> - <groupId>org.glassfish.jaxb</groupId> - <artifactId>jaxb-runtime</artifactId> - </dependency> <!-- end::springws[] --> <!-- Dev --> @@ -106,7 +101,12 @@ <!-- Test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> @@ -122,10 +122,6 @@ </exclusion> </exclusions> </dependency> - <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> </dependencies> <build> @@ -133,11 +129,18 @@ <plugins> <!-- tag::wsdl/xsd[] --> <plugin> - <groupId>org.jvnet.jaxb2.maven2</groupId> - <artifactId>maven-jaxb2-plugin</artifactId> + <groupId>com.evolvedbinary.maven.jvnet</groupId> + <artifactId>jaxb30-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> <configuration> <schemaLanguage>WSDL</schemaLanguage> - <generatePackage>de.itvsh.kop.eingangsadapter.formsolutions</generatePackage> + <generatePackage>de.ozgcloud.eingang.formsolutions</generatePackage> <schemas> <schema> <fileset> @@ -148,6 +151,7 @@ </fileset> </schema> </schemas> + <schemaLanguage>WSDL</schemaLanguage> </configuration> </plugin> @@ -161,11 +165,6 @@ <artifactId>maven-failsafe-plugin</artifactId> </plugin> - <!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> - <configuration> <sources> <source>${project.basedir}/src/main/resources/formsolutions/formdata.xsd</source> - </sources> </configuration> </plugin> --> - <!-- end::xsd[] --> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> @@ -179,13 +178,46 @@ <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <image> + <!-- cann be removed when using common lib > 2.3.2--> + <builder>paketobuildpacks/builder-jammy-base</builder> + <env> + <BPE_DELIM_JAVA_TOOL_OPTIONS xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS> + <BPE_APPEND_JAVA_TOOL_OPTIONS>-Dfile.encoding=UTF-8</BPE_APPEND_JAVA_TOOL_OPTIONS> + </env> + </image> + </configuration> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> </plugin> + </plugins> </build> -</project> \ No newline at end of file + <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</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java deleted file mode 100644 index d6eed5d..0000000 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.formsolutions; - -import java.util.ArrayList; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; - -@Component -class FormSolutionsRepresentationsMapper implements FormSolutionsFileMapper { - public static final String PDF = "pdf"; - public static final String FILE_NAME_PDF_REP = "eingang.pdf"; - public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE; - - public static final String JSON = "json"; - public static final String FILE_NAME_JSON_REP = "form-data.json"; - public static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON_VALUE; - - List<IncomingFile> mapRepresentations(Map<String, Object> plainMap, Optional<String> json) { - List<IncomingFile> representations = new ArrayList<>(); - - Optional.ofNullable((String) plainMap.get(PDF)).filter(StringUtils::isNoneEmpty).ifPresent(data -> representations.add(mapPdfFile(data))); - - json.ifPresent(jsonData -> representations.add(mapJsonFile(jsonData))); - - return representations; - } - - private IncomingFile mapJsonFile(String jsonData) { - return mapFile(jsonData.getBytes(), JSON_CONTENT_TYPE, FILE_NAME_JSON_REP); - } - - private IncomingFile mapPdfFile(String data) { - return mapFile(Base64.getDecoder().decode(data.getBytes()), PDF_CONTENT_TYPE, FILE_NAME_PDF_REP); - } -} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java deleted file mode 100644 index 412ab97..0000000 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.formsolutions; - -import java.util.Map; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; - -@Component -class FormSolutionsRequestMapper { - static final TypeReference<Map<String, Object>> VALUE_TYPE_REF = new TypeReference<Map<String, Object>>() { - }; - - @Autowired - private FormSolutionsAttachmentsMapper attachmentMapper; - - @Autowired - private FormSolutionsRepresentationsMapper representationMapper; - - @Autowired - private ObjectMapper objectMapper; - - public FormData map(String json) { - var formData = mapRequestJson(json); - return mapFiles(formData, json); - - } - - private FormData mapRequestJson(String json) { - - return FormData.builder() - .formData(mapFormData(json)) - .build(); - - } - - Map<String, Object> mapFormData(String json) { - try { - return objectMapper.readValue(json, VALUE_TYPE_REF); - } catch (JsonProcessingException e) { - throw new TechnicalException("Error parsing JSON from FormSolutions-Server", e); - } - } - - FormData mapFiles(FormData formData, String json) { - return FormDataUtils.from(formData) - .put(AbstractFileMapper.FIELD_NAME_MAPPED_FILES, buildMappedFiles(formData, json)) - .remove(FormSolutionsAttachmentsMapper.ZIP) - .remove(FormSolutionsRepresentationsMapper.PDF) - .build(); - - } - - private Map<String, Object> buildMappedFiles(FormData formData, String json) { - return Map.of( - AbstractFileMapper.ATTACHMENTS, attachmentMapper.mapAttachments(formData.getFormData()), - AbstractFileMapper.REPRESENTATIONS, representationMapper.mapRepresentations(formData.getFormData(), Optional.of(json))); - } - -} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapper.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java similarity index 55% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapper.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java index a504e19..c4e2b01 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapper.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,40 +21,45 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import java.util.ArrayList; -import java.util.Base64; +import java.io.File; +import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.Objects; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component -class FormSolutionsAttachmentsMapper implements FormSolutionsFileMapper { +class FormSolutionsAttachmentsMapper { + public static final String ZIP = "zip"; public static final String FILE_NAME_ZIP_ATTACHMENT = "attachments.zip"; public static final String ZIP_CONTENT_TYPE = "application/zip"; public static final String FILE_GROUP_ZIP_NAME = "gezippte Anhänge"; - List<IncomingFileGroup> mapAttachments(Map<String, Object> data) { - return mapZipRepresentation(Optional.ofNullable((String) data.get(ZIP))); + public List<IncomingFileGroup> mapAttachments(File zipFile) { + if (Objects.nonNull(zipFile) && zipFile.length() > 0) { + return Collections.singletonList(buildFileGroup(buildZipFile(zipFile))); + } + return Collections.emptyList(); + } + + private IncomingFileGroup buildFileGroup(IncomingFile zipFile) { + return IncomingFileGroup.builder() + .name(FILE_GROUP_ZIP_NAME) + .files(List.of(zipFile)) + .build(); } - List<IncomingFileGroup> mapZipRepresentation(Optional<String> encodedZip) { - var fileGroups = new ArrayList<IncomingFileGroup>(); - encodedZip.filter(StringUtils::isNoneEmpty).ifPresent(content -> { - var files = List.of(mapFile(Base64.getDecoder().decode(encodedZip.get()), ZIP_CONTENT_TYPE, FILE_NAME_ZIP_ATTACHMENT)); - fileGroups.add(IncomingFileGroup.builder() - .name(FILE_GROUP_ZIP_NAME) - .files(files) - .build()); - }); - - return fileGroups; + private IncomingFile buildZipFile(File zipFile) { + return IncomingFile.builder() + .file(zipFile) + .contentType(ZIP_CONTENT_TYPE) + .name(FILE_NAME_ZIP_ATTACHMENT) + .build(); } } \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java new file mode 100644 index 0000000..9cf795b --- /dev/null +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java @@ -0,0 +1,56 @@ +/* + * 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.formsolutions; + +import java.io.File; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +import de.ozgcloud.common.binaryfile.FileDataDeserializer; +import lombok.Builder; +import lombok.Getter; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Builder +@Jacksonized +public class FormSolutionsEingang { + + private Map<String, Object> assistant; + + private String postkorbhandle; + private String kommunalverwaltungId; + private String transactionId; + private String zustaendigeStelle; + @JsonProperty("gemeindeschlüssel") + private String gemeindeSchluessel; + private String anliegenId; + + @JsonDeserialize(using = FileDataDeserializer.class) + private File pdf; + @JsonDeserialize(using = FileDataDeserializer.class) + private File zip; +} diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java new file mode 100644 index 0000000..32ea404 --- /dev/null +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java @@ -0,0 +1,66 @@ +/* + * 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.formsolutions; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Base64; + +import org.apache.commons.io.IOUtils; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +class FormSolutionsFileMapperUtils { + + static InputStream decodeFile(String base64FileContent) { + // TODO ins Dateisystem schreiben, anstatt in Memory halten + ByteArrayInputStream base64ContentStream = new ByteArrayInputStream(base64FileContent.getBytes()); + return Base64.getDecoder().wrap(base64ContentStream); + } + + static InputStream decode(InputStream b64InputStream) { + return Base64.getDecoder().wrap(b64InputStream); + } + + static File decodeBase64Content(String content) { + var b64File = TempFileUtils.writeTmpFile(content); + var tempFile = TempFileUtils.createTmpFile(); + + try (var in = new FileInputStream(b64File); var out = new FileOutputStream(tempFile.toFile())) { + IOUtils.copy(FormSolutionsFileMapperUtils.decode(in), out); + out.flush(); + return tempFile.toFile(); + } catch (IOException e) { + throw new TechnicalException("Error decoding and saving b64 file.", e); + } + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java new file mode 100644 index 0000000..0c4e2ab --- /dev/null +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java @@ -0,0 +1,126 @@ +/* + * 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.formsolutions; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; + +@Component +class FormSolutionsRequestMapper { + static final TypeReference<Map<String, Object>> VALUE_TYPE_REF = new TypeReference<Map<String, Object>>() { + }; + + private static final String FILE_NAME_JSON_REPRESENTATION = "form-data.json"; + static final String FILE_NAME_PDF_REPRESENTATION = "eingang.pdf"; + + static final String FORMDATA_FIELD_ZUSTAENDIGE_STELLE = "zustaendigeStelle"; + public static final String FORMDATA_FIELD_ASSISTANT = "assistant"; + public static final String FORMDATA_FIELD_POSTKORBHANDLE = "postkorbhandle"; + static final String FORMDATA_FIELD_TRANSACTION_ID = "transactionId"; + + @Autowired + private FormSolutionsAttachmentsMapper attachmentMapper; + @Autowired + private ObjectMapper objectMapper; + + public FormData map(File jsonFile) { + var eingang = mapEingang(jsonFile); + + return buildFormData(jsonFile, eingang); + } + + FormData buildFormData(File jsonFile, FormSolutionsEingang eingang) { + var builder = FormData.builder() + .formData(buildFormDataMap(eingang)) + .attachments(attachmentMapper.mapAttachments(eingang.getZip())) + .representation(buildJsonFile(jsonFile)); + var numberOfRepresentations = 1; + + if (Objects.nonNull(eingang.getPdf())) { + builder.representation(buildPdfFile(eingang.getPdf())); + numberOfRepresentations++; + } + + return builder.numberOfRepresentations(numberOfRepresentations).build(); + } + + Map<String, Object> buildFormDataMap(FormSolutionsEingang eingang) { + Map<String, Object> map = new HashMap<>(); + addIfValueNotNull(map, FORMDATA_FIELD_ASSISTANT, eingang.getAssistant()); + addIfValueNotNull(map, FORMDATA_FIELD_POSTKORBHANDLE, eingang.getPostkorbhandle()); + addIfValueNotNull(map, FORMDATA_FIELD_TRANSACTION_ID, eingang.getTransactionId()); + addIfValueNotNull(map, FORMDATA_FIELD_ZUSTAENDIGE_STELLE, eingang.getZustaendigeStelle()); + + return Collections.unmodifiableMap(map); + } + + private Map<String, Object> addIfValueNotNull(Map<String, Object> map, String key, Object value) { + if (Objects.nonNull(value)) { + map.put(key, value); + } + return map; + } + + FormSolutionsEingang mapEingang(File jsonFile) { + try (var in = new FileInputStream(jsonFile)) { + return objectMapper.readValue(in, FormSolutionsEingang.class); + } catch (IOException e) { + throw new TechnicalException("Error parsing JSON from FormSolutions-Server", e); + } + } + + private IncomingFile buildJsonFile(File jsonFile) { + return IncomingFile.builder() + .file(jsonFile) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .name(FILE_NAME_JSON_REPRESENTATION) + .size(jsonFile.length()) + .build(); + } + + private IncomingFile buildPdfFile(File pdfFile) { + return IncomingFile.builder() + .file(pdfFile) + .contentType(MediaType.APPLICATION_PDF_VALUE) + .name(FILE_NAME_PDF_REPRESENTATION) + .size(pdfFile.length()) + .build(); + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SemantikAdapterConfiguration.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java similarity index 80% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SemantikAdapterConfiguration.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java index d1ec38e..48b9d55 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SemantikAdapterConfiguration.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,10 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; + +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java similarity index 59% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java index c91c67b..6032a25 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,50 +21,73 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; + +import java.io.File; +import java.util.UUID; +import java.util.function.Supplier; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.logging.log4j.CloseableThreadContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.springframework.ws.server.endpoint.annotation.RequestPayload; import org.springframework.ws.server.endpoint.annotation.ResponsePayload; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.eingang.semantik.SemantikAdapter; import lombok.extern.log4j.Log4j2; @Endpoint @Log4j2 public class SendFormEndpoint { + public static final String JSON_FIELD = "json"; + @Autowired - private FormSolutionsRequestMapper incommingDataMapper; + private FormSolutionsRequestMapper requestMapper; @Autowired private SemantikAdapter semantikAdapter; + private static final String REQUEST_ID_KEY = "requestId"; + @PayloadRoot(namespace = WebServiceConfiguration.NAMESPACE_URI, localPart = "Request") @ResponsePayload public Response receiveForm(@RequestPayload Request request) { + return doSurroundOn(() -> handleRequest(request)); + } + + private Response handleRequest(Request request) { try { - semantikAdapter.processFormData(parseRequestData(request.getJSON())); + semantikAdapter.processFormData(requestMapper.map(writeRequestJsonToFile(request.getJSON()))); return buildSuccessResponse(); } catch (Exception e) { - LOG.error("Error on processing FS Formdata.", e); + LOG.error("Error on processing FormSolutions Formdata.", e); return ExceptionUtils.rethrow(e); } + } + + private Response doSurroundOn(Supplier<Response> requestHandler) { + UUID requestId = UUID.randomUUID(); + try (CloseableThreadContext.Instance ctc = CloseableThreadContext.put(REQUEST_ID_KEY, requestId.toString())) { + LOG.info("START of Request with ID '{}'.", requestId); + return requestHandler.get(); + } finally { + LOG.info("END of Request with ID '{}'", requestId); + } } - FormData parseRequestData(String json) { - return incommingDataMapper.map(json); + private File writeRequestJsonToFile(String json) { + return TempFileUtils.writeTmpFile(json); } - Response buildSuccessResponse() { - var response = new Response(); + private Response buildSuccessResponse() { + LOG.debug("Successful processed data"); + var response = new Response(); response.setStatus("OK"); return response; } - -} +} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java similarity index 87% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java index fcd0b27..5e958b4 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.ApplicationContext; @@ -43,7 +43,7 @@ class WebServiceConfiguration extends WsConfigurerAdapter { static final String NAMESPACE_URI = "urn:JSONWrap"; @Bean - public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) { + ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) { MessageDispatcherServlet servlet = new MessageDispatcherServlet(); servlet.setApplicationContext(applicationContext); servlet.setTransformWsdlLocations(true); @@ -51,12 +51,12 @@ class WebServiceConfiguration extends WsConfigurerAdapter { } @Bean - public XsdSchema formDataSchema() { + XsdSchema formDataSchema() { return new SimpleXsdSchema(new ClassPathResource(XSD_LOCATION)); } @Bean(name = "formsolutions_formDatas") - public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema formDataSchema) { + DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema formDataSchema) { DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); wsdl11Definition.setPortTypeName("JSONWrapWebService"); wsdl11Definition.setLocationUri("/ws"); diff --git a/formsolutions-adapter/src/main/resources/application-local.yml b/formsolutions-adapter/src/main/resources/application-local.yml index ff8e8e1..79b16a9 100644 --- a/formsolutions-adapter/src/main/resources/application-local.yml +++ b/formsolutions-adapter/src/main/resources/application-local.yml @@ -5,7 +5,7 @@ logging: grpc: client: - pluto-local: + vorgang-manager-local: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT @@ -16,9 +16,9 @@ management: server: port: 9292 -kop: +ozgcloud: adapter: - targetPlutoName: local + targetVorgangManagerName: local fallbackStrategy: DENY routingStrategy: SINGLE diff --git a/formsolutions-adapter/src/main/resources/application.yml b/formsolutions-adapter/src/main/resources/application.yml index f5cf1c4..308ce54 100644 --- a/formsolutions-adapter/src/main/resources/application.yml +++ b/formsolutions-adapter/src/main/resources/application.yml @@ -1,7 +1,7 @@ logging: level: ROOT: WARN - '[de.itvsh]': INFO + '[de.ozgcloud]': INFO server: port: 8080 diff --git a/formsolutions-adapter/src/main/resources/banner.txt b/formsolutions-adapter/src/main/resources/banner.txt new file mode 100644 index 0000000..d3127c4 --- /dev/null +++ b/formsolutions-adapter/src/main/resources/banner.txt @@ -0,0 +1,9 @@ + ______ ____ _____ __ __ _____ ____ _ _ _ _______ _____ ____ _ _ _____ + | ____/ __ \| __ \| \/ |/ ____|/ __ \| | | | | |__ __|_ _/ __ \| \ | |/ ____| + | |__ | | | | |__) | \ / | (___ | | | | | | | | | | | | || | | | \| | (___ + | __|| | | | _ /| |\/| |\___ \| | | | | | | | | | | | || | | | . ` |\___ \ + | | | |__| | | \ \| | | |____) | |__| | |___| |__| | | | _| || |__| | |\ |____) | + |_| \____/|_| \_\_| |_|_____/ \____/|______\____/ |_| |_____\____/|_| \_|_____/ +${spring-boot.version} ${application.version} + + diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapperTest.java b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapperTest.java deleted file mode 100644 index 8607361..0000000 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapperTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.formsolutions; - -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsFilesTestFactory.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsRepresentationsMapper.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; - -class FormSolutionsRepresentationsMapperTest { - private FormSolutionsRepresentationsMapper mapper = new FormSolutionsRepresentationsMapper(); - - @Nested - class TestRepresentationsMapping { - @Nested - class TestPdfRepresentations { - @Test - void shouldParsePdf() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(JSON_CONTENT)); - - assertThat(getRepresentation(map, 0).getContent()).isEqualTo(PDF_DECODED); - } - - @Test - void shouldSetPdfContentType() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(JSON_CONTENT)); - - assertThat(getRepresentation(map, 0).getContentType()).isEqualTo(PDF_CONTENT_TYPE); - } - - @Test - void shouldSetPdfFileName() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(JSON_CONTENT)); - - assertThat(getRepresentation(map, 0).getName()).isEqualTo(FILE_NAME_PDF_REP); - } - } - - @Nested - class TestJsonRepresentation { - - @Test - void shouldParseJson() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(getRepresentation(map, 1).getContent()).isEqualTo(FormSolutionsTestFactory.SIMPLE_JSON_DATA.getBytes()); - } - - @Test - void shouldSetJsonContentType() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(getRepresentation(map, 1).getContentType()).isEqualTo(JSON_CONTENT_TYPE); - } - - @Test - void shouldSetJsonFileName() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(getRepresentation(map, 1).getName()).isEqualTo(FILE_NAME_JSON_REP); - } - - @Test - void shouldParse() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(map).hasSize(2); - } - - @Test - void shouldParseJSonOnly() { - var map = mapper.mapRepresentations( - FormSolutionsFilesTestFactory.createBuilder().formData(Map.of()) - .build().getFormData(), - Optional.of(SIMPLE_JSON_DATA)); - - assertThat(map).hasSize(1); - assertThat(getRepresentation(map, 0).getContentType()).isEqualTo(JSON_CONTENT_TYPE); - } - } - } - - private IncomingFile getRepresentation(List<IncomingFile> map, int index) { - return map.get(index); - } -} diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java deleted file mode 100644 index d2237c4..0000000 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.formsolutions; - -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsAntragstellerMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsZustaendigeStelleMapper.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -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.Mockito; -import org.mockito.Spy; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper; - -class FormSolutionsRequestMapperTest { - - private static final String TRANSACTION_ID = "transactionId"; - - @Spy - @InjectMocks - private FormSolutionsRequestMapper mapper; - - @Mock - private FormSolutionsAttachmentsMapper attachmentMapper; - @Mock - private FormSolutionsRepresentationsMapper representationsMapper; - - @Spy - private ObjectMapper objectMapper = new ObjectMapper(); - - @Nested - class TestJsonToMapMapping { - @Test - void shouldMap() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(dataMap).isNotNull(); - } - - @Test - void shouldContainZustaendigeStelle() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) dataMap.get(ZUSTAENDIGE_STELLE)).isEqualTo(ORGANISATIONSEINHEITEN_ID); - } - - @Test - void shouldContainAnsprechpartner() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) dataMap.get(POSTKORBHANDLE)).isEqualTo(POSTFACH_ID); - } - - @Test - void shouldContainRequestId() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) dataMap.get(TRANSACTION_ID)).isEqualTo(FORM_ID_VALUE); - } - - @Test - void shouldContainAssitant() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(dataMap.get(ASSISTANT)).isNotNull(); - } - - @Test - void shouldHandleJsonException() throws JsonMappingException, JsonProcessingException { - doThrow(JsonProcessingException.class).when(objectMapper).readValue(anyString(), Mockito.<TypeReference<Map<String, Object>>>any()); - - assertThatThrownBy(() -> mapper.mapFormData(SIMPLE_JSON_DATA)).isInstanceOf(TechnicalException.class); - } - - @Test - @SuppressWarnings("unchecked") - void shouldContainFormIdentifier() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) ((Map<String, Object>) dataMap.get(ASSISTANT)) - .get(IDENTIFIER)) - .isEqualTo(IDENTIFIER_VALUE); - } - - @Nested - class TestPanels { - @Test - void shouldContainPanels() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getPanels(dataMap)).isNotNull(); - } - - @Test - void shouldContainPanelIdentifier() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getPanels(dataMap).get(0)).containsEntry(IDENTIFIER, PANEL_ID); - } - - @Test - void shouldContainPanelComponets() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getPanels(dataMap).get(0).get(FormSolutionsPanelMapper.COMPONENTS)).isNotNull(); - } - - @Test - void shouldContainTextComponets() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getComponents(dataMap).get(0)) - .containsEntry(IDENTIFIER, COMPONENT_ID) - .containsEntry(STRING_VALUE, COMPONENT_VALUE); - } - - @Test - void shouldContainDateComponets() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getComponents(dataMap).get(1)) - .containsEntry(IDENTIFIER, DATE_COMPONENT_ID) - .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); - } - - @Nested - class TestNestedPanels { - @Test - void shouldContainGroup() { - var dataMap = mapper.mapFormData(NESTED_COMPONENTS_JSON); - - assertThat(getComponents(dataMap).get(0)).containsEntry(IDENTIFIER, OBJEKTGRUPPE_0); - } - - @Test - void shouldContainDateField() { - var dataMap = mapper.mapFormData(NESTED_COMPONENTS_JSON); - - assertThat(getNestedComponents(dataMap).get(0)) - .containsEntry(IDENTIFIER, DATE_COMPONENT_ID) - .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); - } - } - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getComponents(Map<String, Object> dataMap) { - return (List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS); - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getNestedComponents(Map<String, Object> dataMap) { - return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS)).get(0).get(COMPONENTS); - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getPanels(Map<String, Object> dataMap) { - return (List<Map<String, Object>>) ((Map<String, Object>) dataMap.get(ASSISTANT)).get(PANELS); - } - } - - @Nested - class TestFileMapping { - - @Nested - class TestMapFiles { - @Test - void shouldCallAttachmentMappers() { - mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - - verify(attachmentMapper).mapAttachments(Mockito.<Map<String, Object>>any()); - } - - @DisplayName("result should have mapped files field") - @Test - void shouldHaveMappedFilesField() { - var result = mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - - assertThat(result.getFormData()).containsKey(AbstractFileMapper.FIELD_NAME_MAPPED_FILES); - } - - @Test - void shouldCallRepresentationMapper() { - mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - - verify(representationsMapper).mapRepresentations(Mockito.<Map<String, Object>>any(), eq(Optional.of(ATTACHMENTS_JSON))); - } - - @Test - void shouldRemoveZip() { - var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsAttachmentsMapper.ZIP, "test")); - - var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON); - - assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsAttachmentsMapper.ZIP); - } - - @Test - void shouldRemovePdf() { - var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsRepresentationsMapper.PDF, "test")); - - var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON); - - assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsRepresentationsMapper.PDF); - } - } - - } - -} diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapperTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java similarity index 55% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapperTest.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java index 553d35d..c199db7 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapperTest.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,57 +21,77 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsAttachmentsMapper.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsFilesTestFactory.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsAttachmentsMapper.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsFilesTestFactory.*; import static org.assertj.core.api.Assertions.*; +import java.io.File; import java.util.List; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import lombok.SneakyThrows; class FormSolutionsAttachmentsMapperTest { - private FormSolutionsAttachmentsMapper mapper = new FormSolutionsAttachmentsMapper(); + + @InjectMocks + private FormSolutionsAttachmentsMapper mapper; + + private File zipFile; + + @BeforeEach + void writeZipFile() { + zipFile = TempFileUtils.writeTmpFile(ZIP_DECODED); + } + + @AfterEach + void delZipFile() { + zipFile.delete(); + } @Nested class TestAttachmentsMapping { @Test + @SneakyThrows void shouldParseZip() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); - assertThat(getAttachment(map).getContent()).isEqualTo(ZIP_DECODED); + assertThat(TestUtils.contentStreamToByteArray(getAttachment(map).getContentStream())).isEqualTo(ZIP_DECODED); } @Test void shouldSetContentType() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); assertThat(getAttachment(map).getContentType()).isEqualTo(ZIP_CONTENT_TYPE); } @Test void shouldSetFileName() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); assertThat(getAttachment(map).getName()).isEqualTo(FILE_NAME_ZIP_ATTACHMENT); } @Test void shouldSetGroupName() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); - assertThat(map.get(0).getName()) - .isEqualTo(FILE_GROUP_ZIP_NAME); + assertThat(map.get(0).getName()).isEqualTo(FILE_GROUP_ZIP_NAME); } } private IncomingFile getAttachment(List<IncomingFileGroup> attachments) { return attachments.get(0).getFiles().get(0); } - } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleTestFactory.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java similarity index 63% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleTestFactory.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java index 0bc3d1f..9a4be9a 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleTestFactory.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,22 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*; import java.util.Map; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +public class FormSolutionsEingangTestFactory { -public class FormSolutionsZustaendigeStelleTestFactory { - - public static FormData create() { + public static FormSolutionsEingang create() { return createBuilder().build(); } - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder() - .formData(Map.of(FormSolutionsZustaendigeStelleMapper.ZUSTAENDIGE_STELLE, ORGANISATIONSEINHEIT_ID)); + public static FormSolutionsEingang.FormSolutionsEingangBuilder createBuilder() { + return FormSolutionsEingang.builder() + .assistant(Map.of()) + .zustaendigeStelle(ZUSTAENDIGE_STELLE) + .postkorbhandle(POSTFACH_ID_STELLE) + .transactionId(FORM_ID_VALUE); + } -} \ No newline at end of file +} diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java new file mode 100644 index 0000000..ca274ca --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java @@ -0,0 +1,51 @@ +/* + * 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.formsolutions; + +import static de.ozgcloud.eingang.formsolutions.FormSolutionsFileMapperUtils.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsFilesTestFactory.*; +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 de.ozgcloud.common.test.TestUtils; +import lombok.SneakyThrows; + +class FormSolutionsFileMapperUtilsTest { + + @DisplayName("Test decoding base64 encoded file") + @Nested + class TestDecodingBase64Content { + + @Test + @SneakyThrows + void shouldDecodeFile() { + var decodedFileContentStream = decodeFile(ZIP_ENCODED); + + assertThat(TestUtils.contentStreamToByteArray(decodedFileContentStream)).isEqualTo(ZIP_DECODED); + } + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFilesTestFactory.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java similarity index 99% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFilesTestFactory.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java index 48a8932..10229d8 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFilesTestFactory.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,15 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsAttachmentsMapper.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsRepresentationsMapper.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsAttachmentsMapper.*; import java.util.Base64; import java.util.Map; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; public class FormSolutionsFilesTestFactory { public static final String ZIP_ENCODED = "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"; @@ -40,8 +39,6 @@ public class FormSolutionsFilesTestFactory { public static final String JSON_CONTENT = "{}"; - public static final FormData REPRESENTATIONS = FormSolutionsFilesTestFactory.createBuilder().formData(Map.of(PDF, PDF_ENCODED)).build(); - public static FormData create() { return FormSolutionsFilesTestFactory.createBuilder().build(); } diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java similarity index 50% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java index 6f0083b..e86f541 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,50 +21,52 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; +import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*; import static org.assertj.core.api.Assertions.*; +import java.io.InputStream; import java.util.List; import java.util.Map; +import org.assertj.core.api.ObjectAssert; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mockito.Mock; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.test.context.ActiveProfiles; -import org.testcontainers.shaded.org.bouncycastle.util.encoders.Base64; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +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.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter; +import lombok.SneakyThrows; @SpringBootTest @ActiveProfiles({ "local", "itcase" }) -class SendFormEndpointITCase { +class FormSolutionsRequestMapperITCase { - @SpyBean - private SendFormEndpoint endpoint; + private static final String COMPONENTS = "components"; + private static final String PANELS = "panels"; - @Mock - private Request request; + @SpyBean + private FormSolutionsRequestMapper mapper; @Nested class TestParseExampleData { @Test void shouldParseData() { - var parsed = endpoint.parseRequestData(SIMPLE_JSON_DATA); + var parsed = parseRequestData(SIMPLE_JSON_DATA); assertThat(parsed).isNotNull(); } @Test void shouldContainRawData() { - var parsed = endpoint.parseRequestData(SIMPLE_JSON_DATA); + var parsed = parseRequestData(SIMPLE_JSON_DATA); assertThat(parsed.getFormData()).isNotNull(); } @@ -82,7 +84,7 @@ class SendFormEndpointITCase { void shouldHaveIdentifier() { var panel = parseAndGetPanel(); - assertThat(panel.get(IDENTIFIER)).isNotNull(); + assertThat(panel.get(FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY)).isNotNull(); } @Test @@ -96,7 +98,7 @@ class SendFormEndpointITCase { } private Map<String, Object> parseAndGetPanel() { - return SendFormEndpointITCase.this.parseAndGetPanel(SIMPLE_JSON_DATA); + return FormSolutionsRequestMapperITCase.this.parseAndGetPanel(SIMPLE_JSON_DATA); } } @@ -105,7 +107,7 @@ class SendFormEndpointITCase { @Test void shouldParseData() { - var parsed = endpoint.parseRequestData(NESTED_COMPONENTS_JSON); + var parsed = parseRequestData(NESTED_COMPONENTS_JSON); assertThat(parsed).isNotNull(); } @@ -122,7 +124,7 @@ class SendFormEndpointITCase { void shouldHaveIdentifier() { var component = parseAndGetComponent(); - assertThat(component).containsEntry(IDENTIFIER, OBJEKTGRUPPE_0); + assertThat(component).containsEntry(FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY, OBJEKTGRUPPE_0); } @Test @@ -138,7 +140,7 @@ class SendFormEndpointITCase { } private Map<String, Object> parseAndGetPanel() { - return SendFormEndpointITCase.this.parseAndGetPanel(NESTED_COMPONENTS_JSON); + return FormSolutionsRequestMapperITCase.this.parseAndGetPanel(NESTED_COMPONENTS_JSON); } } @@ -146,49 +148,59 @@ class SendFormEndpointITCase { @Nested class TestParsePdfRepresentation { - private static final String PARSED_REPRESENTATIONS = "parsedRepresentations"; - @Test - void shouldHavePdf() { - var parsed = endpoint.parseRequestData(PDF_REPRESENTATION_JSON); + void shouldHaveRepresentations() { + var parsed = parseRequestData(PDF_REPRESENTATION_JSON); - assertThat(getRepresentation(parsed.getFormData())).isNotNull(); - assertThat(getRepresentation(parsed.getFormData()).getContent()).isEqualTo(Base64.decode(PDF_VALUE.getBytes())); + assertThat(parsed.getRepresentations()).hasSize(2); } - @SuppressWarnings("unchecked") - private IncomingFile getRepresentation(Map<String, Object> data) { - return ((List<IncomingFile>) ((Map<String, Object>) data.get(FIELD_NAME_MAPPED_FILES)).get(PARSED_REPRESENTATIONS)).get(0); + @Test + @SneakyThrows + void shouldHavePdf() { + var parsed = parseRequestData(PDF_REPRESENTATION_JSON); + + ObjectAssert<IncomingFile> firstRepresentationAssert = assertThat(parsed.getRepresentations()) + .filteredOn(inFile -> inFile.getContentType().equals("application/pdf")).singleElement(); + firstRepresentationAssert.extracting(IncomingFile::getName).isEqualTo("eingang.pdf"); + firstRepresentationAssert.extracting(IncomingFile::getContentStream).extracting(stream -> toArray(stream)) + .isEqualTo(PDF_VALUE_DECODED.getBytes()); } } @Nested class TestParseAttachmentZip { - private static final String PARSED_ATTACHMENTS = "parsedAttachments"; - @Test + @SneakyThrows void shouldHaveZip() { - var parsed = endpoint.parseRequestData(ZIP_ATTACHMENT_JSON); + var parsed = parseRequestData(ZIP_ATTACHMENT_JSON); - assertThat(getAttachment(getFiles(parsed.getFormData()))).isNotNull(); - assertThat(getAttachment(getFiles(parsed.getFormData())).getContent()).isEqualTo(Base64.decode(ZIP_VALUE.getBytes())); + ObjectAssert<IncomingFileGroup> firstAttachmentAssert = assertThat(parsed.getAttachments()).hasSize(1).first(); + firstAttachmentAssert.extracting(IncomingFileGroup::getName).isEqualTo(FormSolutionsAttachmentsMapper.FILE_GROUP_ZIP_NAME); + var attachmentFileAssert = firstAttachmentAssert.extracting(fileGroup -> fileGroup.getFiles().get(0)); + attachmentFileAssert.extracting(IncomingFile::getName).isEqualTo("attachments.zip"); + attachmentFileAssert.extracting(file -> toArray(file.getContentStream())).isEqualTo(ZIP_VALUE_DECODED.getBytes()); } - @SuppressWarnings("unchecked") - private IncomingFile getAttachment(Map<String, Object> files) { - return ((List<IncomingFileGroup>) files.get(PARSED_ATTACHMENTS)).get(0).getFiles().get(0); - } + } + + // TODO remove this method when TestUtils is not throwing Exception anymore. + @SneakyThrows + private byte[] toArray(InputStream stream) { + return TestUtils.contentStreamToByteArray(stream); } @SuppressWarnings("unchecked") private Map<String, Object> parseAndGetPanel(String json) { - var data = (Map<String, Object>) endpoint.parseRequestData(json).getFormData().get(ASSISTANT); + var data = (Map<String, Object>) parseRequestData(json).getFormData().get(FormSolutionsEngineBasedAdapter.ASSISTANT); return ((List<Map<String, Object>>) data.get(PANELS)).get(0); } - @SuppressWarnings("unchecked") - private Map<String, Object> getFiles(Map<String, Object> data) { - return (Map<String, Object>) data.get(FIELD_NAME_MAPPED_FILES); + private FormData parseRequestData(String json) { + var file = TempFileUtils.writeTmpFile(json); + var result = mapper.map(file); + file.delete(); + return result; } } diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java new file mode 100644 index 0000000..48a09ae --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java @@ -0,0 +1,289 @@ +/* + * 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.formsolutions; + +import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsRequestMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.io.File; +import java.io.InputStream; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.AfterEach; +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 com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import lombok.SneakyThrows; + +class FormSolutionsRequestMapperTest { + + private static final String COMPONENTS = "components"; + private static final String STRING_VALUE = "stringValue"; + private static final String PANELS = "panels"; + + @Spy + @InjectMocks + private FormSolutionsRequestMapper mapper; + + @Mock + private FormSolutionsAttachmentsMapper attachmentMapper; + + @Spy + private ObjectMapper objectMapper = new ObjectMapper(); + + private File simpleJsonFile; + private File nestedComponenetJsonFile; + + @BeforeEach + void writeJsonFile() { + simpleJsonFile = TempFileUtils.writeTmpFile(SIMPLE_JSON_DATA); + nestedComponenetJsonFile = TempFileUtils.writeTmpFile(NESTED_COMPONENTS_JSON); + } + + @AfterEach + void delJsonFile() { + simpleJsonFile.delete(); + nestedComponenetJsonFile.delete(); + } + + @Nested + class TestJsonToEingangMapping { + + @Test + void shouldMapControlValues() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(eingang).isNotNull().usingRecursiveComparison() + .ignoringFields("zip", "pdf", "assistant").isEqualTo(FormSolutionsEingangTestFactory.create()); + } + + @Test + void shouldHaveAssistantData() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(eingang.getAssistant()).isNotEmpty(); + } + + @Test + @SneakyThrows + void shouldHandleJsonException() throws JsonMappingException, JsonProcessingException { + doThrow(JsonProcessingException.class).when(objectMapper).readValue(any(InputStream.class), eq(FormSolutionsEingang.class)); + + assertThatThrownBy(() -> mapper.mapEingang(simpleJsonFile)).isInstanceOf(TechnicalException.class); + } + + @Test + void shouldContainFormIdentifier() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(eingang.getAssistant()).containsEntry(IDENTIFIER_KEY, IDENTIFIER_VALUE); + } + + @Nested + class TestPanels { + @Test + void shouldContainPanels() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getPanels(eingang)).isNotNull(); + } + + @Test + void shouldContainPanelIdentifier() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getPanels(eingang).get(0)).containsEntry(IDENTIFIER_KEY, PANEL_ID); + } + + @Test + void shouldContainPanelComponets() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getPanels(eingang).get(0).get(COMPONENTS)).isNotNull(); + } + + @Test + void shouldContainTextComponets() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getComponents(eingang).get(0)) + .containsEntry(IDENTIFIER_KEY, COMPONENT_ID) + .containsEntry(STRING_VALUE, COMPONENT_VALUE); + } + + @Test + void shouldContainDateComponets() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getComponents(eingang).get(1)) + .containsEntry(IDENTIFIER_KEY, DATE_COMPONENT_ID) + .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + } + + @Nested + class TestNestedPanels { + @Test + void shouldContainGroup() { + var eingang = mapper.mapEingang(nestedComponenetJsonFile); + + assertThat(getComponents(eingang).get(0)).containsEntry(IDENTIFIER_KEY, OBJEKTGRUPPE_0); + } + + @Test + void shouldContainDateField() { + var eingang = mapper.mapEingang(nestedComponenetJsonFile); + + assertThat(getNestedComponents(eingang).get(0)) + .containsEntry(IDENTIFIER_KEY, DATE_COMPONENT_ID) + .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + } + } + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getComponents(FormSolutionsEingang eingang) { + return (List<Map<String, Object>>) getPanels(eingang).get(0).get(COMPONENTS); + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getNestedComponents(FormSolutionsEingang eingang) { + return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(eingang).get(0).get(COMPONENTS)).get(0).get(COMPONENTS); + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getPanels(FormSolutionsEingang eingang) { + return (List<Map<String, Object>>) eingang.getAssistant().getOrDefault(PANELS, Collections.emptyList()); + } + } + + @Nested + class TestFileMapping { + + @Nested + class TestMapFiles { + + private File jsonFile; + @Captor + private ArgumentCaptor<File> fileCaptor; + + @BeforeEach + void writeJsonFile() { + jsonFile = TempFileUtils.writeTmpFile(ATTACHMENTS_JSON); + } + + @AfterEach + void deleteTempFile() { + jsonFile.delete(); + } + + @Test + void shouldMapZipFile() { + var eingang = mapper.mapEingang(jsonFile); + + assertThat(eingang.getZip()).exists().content().isEqualTo(ZIP_VALUE_DECODED); + } + + @Test + void shouldCallAttachmentMappers() { + mapper.map(jsonFile); + + verify(attachmentMapper).mapAttachments(fileCaptor.capture()); + assertThat(fileCaptor.getValue()).content().isEqualTo(ZIP_VALUE_DECODED); + } + + @DisplayName("result should have mapped files field") + @Test + void shouldHaveMappedFilesField() { + IncomingFileGroup fileGroup = IncomingFileGroupTestFactory.create(); + when(attachmentMapper.mapAttachments(any())).thenReturn(List.of(fileGroup)); + + var result = mapper.map(jsonFile); + + assertThat(result.getAttachments()).containsExactly(fileGroup); + } + + @Test + void shouldAddRepresentations() { + var result = mapper.map(jsonFile); + + assertThat(result.getRepresentations()).hasSize(2); + } + + @Test + void shouldAddNumberOfRepresentations() { + var result = mapper.map(jsonFile); + + assertThat(result.getNumberOfRepresentations()).isEqualTo(2); + } + } + + } + + @Nested + class TestBuildFormDataMap { + + @Test + void shouldHavePostkorbHandle() { + var formData = mapper.buildFormDataMap(FormSolutionsEingangTestFactory.create()); + + assertThat(formData).containsEntry(FORMDATA_FIELD_POSTKORBHANDLE, POSTFACH_ID_STELLE); + } + + @Test + void shouldHaveZustaendigeStelle() { + var formData = mapper.buildFormDataMap(FormSolutionsEingangTestFactory.create()); + + assertThat(formData).containsKey(FORMDATA_FIELD_ZUSTAENDIGE_STELLE); + } + + @Test + void shouldHaveTransactionId() { + var formData = mapper.buildFormDataMap(FormSolutionsEingangTestFactory.create()); + + assertThat(formData).containsKey(FORMDATA_FIELD_TRANSACTION_ID); + } + } + +} diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormsolutionsAdapterApplicationTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java similarity index 87% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormsolutionsAdapterApplicationTest.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java index f6bfea0..d1b16f6 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormsolutionsAdapterApplicationTest.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,12 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import de.itvsh.kop.eingangsadapter.Application; +import de.ozgcloud.eingang.Application; @SpringBootTest(classes = Application.class) class FormsolutionsAdapterApplicationTest { diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java new file mode 100644 index 0000000..3e5fb84 --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java @@ -0,0 +1,178 @@ +/* + * 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.formsolutions; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.verification.Timeout; +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.test.annotation.DirtiesContext; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.util.ReflectionTestUtils; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.router.VorgangManagerServerResolver; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import io.grpc.Channel; +import io.grpc.stub.CallStreamObserver; +import io.grpc.stub.ClientResponseObserver; + +@SpringBootTest +@DirtiesContext +@ActiveProfiles({ "local", "itcase" }) +public class FormsolutionsITCase { + + @Autowired + private SendFormEndpoint endpoint; + + @MockBean + private VorgangManagerServerResolver resolver; + + @Mock + private Request request; + + @Mock + private VorgangServiceBlockingStub blockingStub; + @Mock + private BinaryFileServiceStub fileStub; + @Mock + private CallStreamObserver<GrpcUploadBinaryFileRequest> fileStreamObserver; + + @BeforeEach + void initVorgangManagerResolver() { + when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(blockingStub); + when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(fileStub); + + Channel mockChannel = mock(Channel.class); + when(blockingStub.getChannel()).thenReturn(mockChannel ); + when(blockingStub.startCreation(any())).thenReturn(GrpcCreateVorgangResponse.newBuilder().setVorgangId("42").build()); + + when(fileStub.uploadBinaryFileAsStream(any())).thenReturn(fileStreamObserver); + } + + @Nested + class TestSendingVorgangBasicInformation { + + @Captor + private ArgumentCaptor<GrpcCreateVorgangRequest> createVorgangRequestCaptor; + + @BeforeEach + void init() { + when(request.getJSON()).thenReturn(loadTextFile("SimpleJsonWithAttachments.json")); + } + + @Test + void shouldContainZustaendigeStelle() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var request = getCreateVorgangRequest(); + + assertThat(request.getEingang().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("5678"); + } + + private GrpcCreateVorgangRequest getCreateVorgangRequest() { + verify(blockingStub, timeout(1000)).startCreation(createVorgangRequestCaptor.capture()); + return createVorgangRequestCaptor.getValue(); + } + } + + @Nested + class TestReceiveFormWithAttachments { + + @Captor + private ArgumentCaptor<ClientResponseObserver<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse>> observerCaptor; + + @Captor + private ArgumentCaptor<GrpcUploadBinaryFileRequest> requestCaptor; + + @BeforeEach + void init() { + when(request.getJSON()).thenReturn(loadTextFile("SimpleJsonWithAttachments.json")); + } + + @Test + void shouldSendContentOfAttachment() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var requests = getFileRequests(); + + var fileContent = requests.get(1).getFileContent(); + assertThat(fileContent.isEmpty()).isFalse(); + } + + @Test + void shouldHaveContentType() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var requests = getFileRequests(); + + var contentType = requests.get(0).getMetadata().getContentType(); + assertThat(contentType).isEqualTo("application/pdf"); + } + + @Test + void shouldHaveFileSize() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var requests = getFileRequests(); + + var size = requests.get(0).getMetadata().getSize(); + assertThat(size).isEqualTo(6788); + } + + private List<GrpcUploadBinaryFileRequest> getFileRequests() { + verify(fileStub, timeout(1000)).uploadBinaryFileAsStream(observerCaptor.capture()); + var onReadyHandler = (Runnable) ReflectionTestUtils.getField(observerCaptor.getValue(), "onReadyHandler"); + onReadyHandler.run(); + + verify(fileStreamObserver, new Timeout(2000, times(2))).onNext(requestCaptor.capture()); + var requests = requestCaptor.getAllValues(); + assertThat(requests).isNotEmpty(); + return requests; + } + + } + + private static String loadTextFile(final String fileName) { + return TestUtils.loadTextFile(fileName); + } + +} diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java new file mode 100644 index 0000000..c0765ca --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java @@ -0,0 +1,175 @@ +/* + * 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.formsolutions; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.nio.file.Files; +import java.util.List; +import java.util.Optional; + +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.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.ApplicationContext; +import org.springframework.core.io.Resource; +import org.springframework.test.context.ActiveProfiles; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.router.VorgangRemoteService; +import de.ozgcloud.vorgang.common.GrpcObject; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress; +import lombok.SneakyThrows; + +@ActiveProfiles({ "local", "itcase" }) +@SpringBootTest +class SendFormEndpointITCase { + + private final static String FILE_BASE_PATH = "classpath:formular/"; + + private final static String FORMULAR_JSON = "RequestJsonContent.json"; + + @Autowired + private ApplicationContext applicationContext; + + @SpyBean + private SendFormEndpoint endpoint; + @MockBean + private VorgangRemoteService vorgangRemoteService; + + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + @Captor + private ArgumentCaptor<GrpcEingang> grpcEingangCaptor; + @Captor + private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor; + + @DisplayName("Receive form") + @Nested + class TestReceiveForm { + + @Mock + private Request request; + + @BeforeEach + void mockRequest() { + when(request.getJSON()).thenReturn(loadJsonContent()); + } + + @SneakyThrows + private String loadJsonContent() { + var resource = getResource(FORMULAR_JSON); + return Files.readString(resource.getFile().toPath()); + } + + @Test + void shouldCallRemoteService() { + callEndpoint(); + + verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any()); + } + + @DisplayName("service konto") + @Nested + class TestServiceKonto { + + @Test + void shouldExist() { + callEndpoint(); + + assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto()).isNotNull(); + } + + @Test + void shouldContainsType() { + callEndpoint(); + + assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto().getType()).isEqualTo("OSI"); + } + + @Test + void shouldContainsPostfachAddress() { + callEndpoint(); + + assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto().getPostfachAddressesList()).hasSize(1); + } + + @Nested + class TestPostfachAddress { + + @Test + void shouldContainsType() { + callEndpoint(); + + assertThat(getPostfachAddress().getType()).isEqualTo(1); + } + + @Test + void shouldContainsVersion() { + callEndpoint(); + + assertThat(getPostfachAddress().getVersion()).isEqualTo("1.0"); + } + + @Test + void shouldContainsIdentifier() { + callEndpoint(); + + assertThat(getPostfachAddress().getIdentifier()).isInstanceOf(GrpcObject.class); + assertThat(getPostfachAddress().getIdentifier().getPropertyList()).hasSize(1); + assertThat(getPostfachAddress().getIdentifier().getPropertyList().get(0).getName()).isEqualTo("postfachId"); + assertThat(getPostfachAddress().getIdentifier().getPropertyList().get(0).getValue(0)) + .isEqualTo("51522620-03d2-4507-b1f0-08d86920efed"); + } + + private GrpcPostfachAddress getPostfachAddress() { + List<GrpcPostfachAddress> addresses = grpcEingangCaptor.getValue().getHeader().getServiceKonto().getPostfachAddressesList(); + assertThat(addresses).isNotEmpty(); + return addresses.get(0); + } + } + } + + private void callEndpoint() { + endpoint.receiveForm(request); + + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture()); + } + + private Resource getResource(String fileName) { + return applicationContext.getResource(FILE_BASE_PATH + fileName); + } + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java similarity index 55% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointTest.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java index 0e4a74e..76cfc4a 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointTest.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,23 +21,30 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.io.File; + 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.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +@DisplayName("Send form endpoint") class SendFormEndpointTest { @Spy @@ -46,49 +53,51 @@ class SendFormEndpointTest { @Mock private SemantikAdapter semantikAdapter; @Mock - private FormSolutionsRequestMapper incommingDataMapper; + private FormSolutionsRequestMapper requestMapper; + @DisplayName("receive form") @Nested - class TestBuildSuccessResponse { - @Test - void shouldContainOk() { - var response = endpoint.buildSuccessResponse(); + class TestReceiveForm { - assertThat(response.getStatus()).isEqualTo("OK"); - } - } + private final FormData formData = FormDataTestFactory.create(); - @Nested - class TestParseAndSendData { - static final Request REQUEST = new Request(); + @Captor + private ArgumentCaptor<File> fileCaptor; + + private static final Request REQUEST = new Request(); static { REQUEST.setJSON(FormSolutionsTestFactory.SIMPLE_JSON_DATA); } @BeforeEach void initTest() { - when(incommingDataMapper.map(any())).thenReturn(FormData.builder().build()); + when(requestMapper.map(any())).thenReturn(formData); } @Test - void shouldCallParseJson() { - endpoint.receiveForm(REQUEST); + void shouldCallRequestMapper() { + receiveForm(); - verify(endpoint).parseRequestData(FormSolutionsTestFactory.SIMPLE_JSON_DATA); + verify(requestMapper).map(fileCaptor.capture()); + assertThat(fileCaptor.getValue()).content().isEqualTo(FormSolutionsTestFactory.SIMPLE_JSON_DATA); } @Test - void shouldProcess() { - endpoint.receiveForm(REQUEST); + void shouldCallSemantikAdapter() { + receiveForm(); - verify(semantikAdapter).processFormData(any()); + verify(semantikAdapter).processFormData(formData); } @Test - void shouldCallMapper() { - endpoint.receiveForm(REQUEST); + void shouldResponseWithOk() { + var response = receiveForm(); + + assertThat(response.getStatus()).isEqualTo("OK"); + } - verify(incommingDataMapper).map(any()); + private Response receiveForm() { + return endpoint.receiveForm(REQUEST); } } -} +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json b/formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json new file mode 100644 index 0000000..dc83b5b --- /dev/null +++ b/formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json @@ -0,0 +1,21 @@ +{ + "assistant" : { + "identifier" : "AS_123", + "panels" : [ { + "identifier" : "Panel_0_1", + "components" : [ { + "identifier" : "Textfeld (einzeilig)", + "needed" : true, + "stringValue" : "kfjhkfjhk" + }, { + "identifier" : "Datums- / Uhrzeitfeld", + "needed" : true, + "stringValue" : "22.05.1996" + } ] + } ] + }, + "zustaendigeStelle" : "5678", + "postkorbhandle" : "51522620-03d2-4507-b1f0-08d86920efed", + "transactionId" : "KFAS_KOP_TEST-yCkgCdqG", + "zip": "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" +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/resources/application-itcase.yml b/formsolutions-adapter/src/test/resources/application-itcase.yml index 7167c08..32884c9 100644 --- a/formsolutions-adapter/src/test/resources/application-itcase.yml +++ b/formsolutions-adapter/src/test/resources/application-itcase.yml @@ -5,6 +5,6 @@ spring: grpc: client: - pluto-kiel: + vorgang-manager-kiel: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT \ No newline at end of file diff --git a/formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json b/formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json new file mode 100644 index 0000000..8d1b043 --- /dev/null +++ b/formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json @@ -0,0 +1,211 @@ +{ + "assistant": { + "i18n": { + "i18nItems": { + "de": "KFAS_KOP_TEST" + } + }, + "identifier": "KFAS_KOP_TEST", + "panels": [ + { + "identifier": "Antragstellende Person", + "components": [ + { + "identifier": "AS_Name1", + "needed": true, + "components": [ + { + "identifier": "AS_Name1", + "needed": true, + "components": [ + { + "identifier": "AS_Vorname", + "needed": true, + "stringValue": "Susanne" + }, + { + "identifier": "AS_Name", + "needed": true, + "stringValue": "Fischer" + }, + { + "identifier": "AS_Rufname", + "needed": true + }, + { + "identifier": "AS_Ordensname_Kuenstlername", + "needed": true + } + ] + } + ] + }, + { + "identifier": "AS_Adresse", + "needed": true, + "components": [ + { + "identifier": "AS_Adresse", + "needed": true, + "components": [ + { + "identifier": "Adresse", + "needed": true, + "components": [ + { + "identifier": "staat", + "needed": true, + "components": [ + { + "identifier": "staat", + "needed": true, + "stringValue": "DE" + } + ] + }, + { + "identifier": "AS_PLZ", + "needed": true, + "stringValue": "12345" + }, + { + "identifier": "AS_Ort", + "needed": true, + "stringValue": "Kiel" + }, + { + "identifier": "Bundesland", + "needed": true + }, + { + "identifier": "AS_Strasse", + "needed": true, + "stringValue": "Hauptstrasse" + }, + { + "identifier": "AS_Hausnummer", + "needed": true + } + ] + } + ] + } + ] + }, + { + "identifier": "AS_Kontaktdaten", + "needed": true, + "components": [ + { + "identifier": "AS_Kontaktdaten", + "needed": true, + "components": [ + { + "identifier": "AS_Telefon", + "needed": true + }, + { + "identifier": "AS_E-Mail", + "needed": true, + "stringValue": "jens.reese@mgm-tp.com" + }, + { + "identifier": "AS_Fax", + "needed": true + }, + { + "identifier": "ofsXX1_from_smail3", + "needed": true, + "stringValue": "jens.reese@mgm-tp.com" + } + ] + } + ] + } + ], + "needed": true + }, + { + "identifier": "Panel_0", + "components": [ + { + "identifier": "1208_Hund Grunddaten", + "needed": true, + "components": [ + { + "identifier": "1208_Hund Grunddaten", + "needed": true, + "components": [ + { + "identifier": "Hund_Name", + "needed": true, + "stringValue": "Waldi" + }, + { + "identifier": "Hund_Rasse", + "needed": true, + "stringValue": "Dackel" + }, + { + "identifier": "Hund_Geschlecht", + "needed": true, + "stringValue": "weiblich" + }, + { + "identifier": "Kastration", + "needed": true, + "stringValue": "nein" + }, + { + "identifier": "Hund_Geburtdatum", + "needed": true + }, + { + "identifier": "Hund_Alter", + "needed": true, + "stringValue": "5" + }, + { + "identifier": "Hund_ChipNr", + "needed": true, + "stringValue": "123456789123456" + }, + { + "identifier": "Hund_Taetowierungsnr", + "needed": false + }, + { + "needed": true + }, + { + "identifier": "Hund_Fellfarbe", + "needed": true, + "stringValue": "hell" + }, + { + "identifier": "Hund_Groesse", + "needed": true, + "stringValue": "40" + }, + { + "identifier": "Hund_Gewicht", + "needed": true, + "stringValue": "15" + } + ] + } + ] + } + ], + "needed": true + } + ] + }, + "transactionId": "KFAS_KOP_TEST-1", + "pdf": "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ZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yoc3VzYW5uZS5maXNjaGVyQGRhdGFwb3J0LmRlKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9UeXBlL0Fubm90L1YoaGVsbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDQ0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNzIgMCBvYmoKPDwvQlM8PC9T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NjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg==", + "kommunalverwaltungId": "100000000", + "postkorbhandle": "51522620-03d2-4507-b1f0-08d86920efed", + "anliegenId": "88888##99999", + "zustaendigeStelle": "9535669", + "zip": "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" +} \ No newline at end of file diff --git a/forwarder/pom.xml b/forwarder/pom.xml index f4cdb5c..181cd78 100644 --- a/forwarder/pom.xml +++ b/forwarder/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + 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 @@ -23,14 +24,12 @@ 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"> +<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.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -45,16 +44,13 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> - </dependency> - <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-interface</artifactId> + <version>${vorgang-manager.version}</version> </dependency> <!-- spring --> @@ -100,4 +96,4 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteria.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java similarity index 91% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteria.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java index a0e668d..7dcdae7 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteria.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import java.util.Optional; diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaMapper.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java similarity index 87% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaMapper.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java index 10c0e33..1e37f9d 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaMapper.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,14 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import java.util.Optional; import org.apache.commons.lang3.StringUtils; import org.mapstruct.Mapper; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteCriteria; +import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria; @Mapper interface RouteCriteriaMapper { diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcService.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java similarity index 83% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcService.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java index 7fd3f11..2fe08b7 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcService.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import org.springframework.beans.factory.annotation.Autowired; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingRequest; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingResponse; -import de.itvsh.kop.eingangsadapter.router.GrpcEingangMapper; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse; +import de.ozgcloud.eingang.router.GrpcEingangMapper; import io.grpc.stub.StreamObserver; import net.devh.boot.grpc.server.service.GrpcService; diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingService.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java similarity index 86% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingService.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java index 0008b27..4daa8b2 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingService.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Service class RouteForwardingService { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/ForwarderApplicationTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java similarity index 87% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/ForwarderApplicationTest.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java index 18758f6..939d08c 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/ForwarderApplicationTest.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,12 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import de.itvsh.kop.eingangsadapter.Application; +import de.ozgcloud.eingang.Application; @SpringBootTest(classes = Application.class) class ForwarderApplicationTest { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/GrpcRouteForwardingRequestTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java similarity index 86% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/GrpcRouteForwardingRequestTestFactory.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java index 088e236..716b67b 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/GrpcRouteForwardingRequestTestFactory.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingRequest; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest; public class GrpcRouteForwardingRequestTestFactory { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java similarity index 90% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaTestFactory.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java index 0b0552b..abe19da 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaTestFactory.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,16 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import java.util.Optional; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteCriteria; +import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria; public class RouteCriteriaTestFactory { public static final String GEMEINDE_SCHLUSSEL = "0815"; - public static final String WEBSERVICE_URL = "http://nimmerland.ozg-sh.de/ws"; + public static final String WEBSERVICE_URL = "http://nimmerland.by.kop-cloud.de/ws"; public static final String ORGANISATIONSEINHEITEN_ID = "4711"; public static RouteCriteria create() { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcServiceTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java similarity index 91% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcServiceTest.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java index baa1f5c..3354127 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcServiceTest.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -36,8 +36,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingResponse; -import de.itvsh.kop.eingangsadapter.router.GrpcEingangMapper; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse; +import de.ozgcloud.eingang.router.GrpcEingangMapper; import io.grpc.stub.StreamObserver; class RouteForwardingGrpcServiceTest { diff --git a/forwarder/src/test/resources/application.yml b/forwarder/src/test/resources/application.yml index 9ffb14e..3306e2e 100644 --- a/forwarder/src/test/resources/application.yml +++ b/forwarder/src/test/resources/application.yml @@ -9,11 +9,11 @@ logging: grpc: client: - pluto-nf: + vorgang-manager-nf: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: routingStrategy: SINGLE - targetPlutoName: nf \ No newline at end of file + targetVorgangManagerName: nf \ No newline at end of file diff --git a/intelliform-adapter/pom.xml b/intelliform-adapter/pom.xml index 4733d7b..67d77be 100644 --- a/intelliform-adapter/pom.xml +++ b/intelliform-adapter/pom.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + 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 @@ -24,16 +24,14 @@ 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"> +<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.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -49,15 +47,15 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>semantik-adapter</artifactId> </dependency> @@ -116,10 +114,8 @@ <groupId>org.apache.ws.xmlschema</groupId> <artifactId>xmlschema-core</artifactId> </dependency> - <dependency> - <groupId>org.glassfish.jaxb</groupId> - <artifactId>jaxb-runtime</artifactId> - </dependency> + + <!-- end::springws[] --> <!-- Test --> @@ -166,9 +162,8 @@ <scope>test</scope> </dependency> - <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> @@ -181,11 +176,19 @@ <plugins> <!-- tag::wsdl[] --> <plugin> - <groupId>org.jvnet.jaxb2.maven2</groupId> - <artifactId>maven-jaxb2-plugin</artifactId> + <groupId>com.evolvedbinary.maven.jvnet</groupId> + <artifactId>jaxb30-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> <configuration> + <strict>false</strict> <schemaLanguage>WSDL</schemaLanguage> - <generatePackage>de.itvsh.kop.eingangsadapter.intelliform</generatePackage> + <generatePackage>de.ozgcloud.eingang.intelliform</generatePackage> <schemas> <schema> <fileset> @@ -228,4 +231,27 @@ </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</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + </project> diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/SemantikAdapterConfiguration.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java similarity index 81% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/SemantikAdapterConfiguration.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java index e84ae46..c44d37a 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/SemantikAdapterConfiguration.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AfmEngineBasedAdapter; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedAdapter; @Configuration public class SemantikAdapterConfiguration { @@ -36,4 +36,5 @@ public class SemantikAdapterConfiguration { public EngineBasedSemantikAdapter engineBasedSemantikAdapter() { return new AfmEngineBasedAdapter(); } + } \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/WebServiceConfiguration.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java similarity index 96% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/WebServiceConfiguration.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java index 2d12fa7..3a5bc78 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/WebServiceConfiguration.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.ApplicationContext; diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdder.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdder.java similarity index 51% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdder.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdder.java index f2acfad..b163e56 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdder.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdder.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,34 +21,39 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component public class AttachmentsContentAdder { - List<IncomingFileGroup> addContentToAttachments(List<IncomingFileGroup> formDataFileGroups, List<IncomingFile> depositRequestFiles) { - - formDataFileGroups.stream() - .map(IncomingFileGroup::getFiles) - .forEach(files -> files - .forEach(file -> file.setContent(getFileFromDepositRequest(file.getVendorId(), depositRequestFiles).getContent()))); - - return formDataFileGroups; + public List<IncomingFileGroup> addContentToAttachments(List<IncomingFileGroup> formDataFileGroups, List<IncomingFile> depositRequestFiles) { + var fileGroups = new ArrayList<IncomingFileGroup>(formDataFileGroups.size()); + for (IncomingFileGroup fileGroup : formDataFileGroups) { + var files = fileGroup.getFiles().stream() + .map(file -> file.toBuilder().file(getContentStreamFromDepositRequest(file.getVendorId(), depositRequestFiles)).build()) + .toList(); + fileGroups.add(fileGroup.toBuilder().clearFiles().files(files).build()); + } + return Collections.unmodifiableList(fileGroups); } - private IncomingFile getFileFromDepositRequest(String attachmentVendorId, List<IncomingFile> depositRequestFiles) { + private File getContentStreamFromDepositRequest(String attachmentVendorId, List<IncomingFile> depositRequestFiles) { return depositRequestFiles.stream() .filter(depositFile -> depositFile.getVendorId().equals(attachmentVendorId)) + .map(IncomingFile::getFile) .findFirst() .orElseThrow(() -> new RuntimeException( - "DepositFiles does not contain content for (XML-Daten-)attachment with vendorId: " + attachmentVendorId)); + "DepositFiles does not contain content for attachment with vendorId: " + attachmentVendorId)); } } diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/CustomHeaderReader.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/CustomHeaderReader.java new file mode 100644 index 0000000..b935816 --- /dev/null +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/CustomHeaderReader.java @@ -0,0 +1,68 @@ +/* + * 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.intelliform; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.function.Consumer; + +import org.springframework.stereotype.Component; +import org.w3c.dom.Attr; +import org.w3c.dom.Document; + +@Component +public class CustomHeaderReader { + + public static final String HEADER_POSTFACH_ID = "u:saml_legacypostkorbhandle"; + public static final String HEADER_VORNAME = "u:saml_givenname"; + public static final String HEADER_NACHNAME = "u:saml_surname"; + public static final String HEADER_GEBURTSORT = "u:saml_placeofbirth"; + public static final String HEADER_GEBURTSNAME = "u:saml_birthname"; + public static final String HEADER_EMAIL = "u:saml_mail"; + public static final String HEADER_TELEFON = "u:saml_telephonenumber"; + public static final String HEADER_STRASSE = "u:saml_postaladdress"; + public static final String HEADER_PLZ = "u:saml_postalcode"; + public static final String HEADER_ORT = "u:saml_localityname"; + + public Map<String, Object> getHeader(Document document) { + var map = new HashMap<String, Object>(); + Consumer<Attr> addHeader = attr -> map.put(attr.getName(), attr.getValue()); + getAttribute(document, HEADER_POSTFACH_ID).ifPresent(addHeader); + getAttribute(document, HEADER_VORNAME).ifPresent(addHeader); + getAttribute(document, HEADER_NACHNAME).ifPresent(addHeader); + getAttribute(document, HEADER_GEBURTSNAME).ifPresent(addHeader); + getAttribute(document, HEADER_GEBURTSORT).ifPresent(addHeader); + getAttribute(document, HEADER_EMAIL).ifPresent(addHeader); + getAttribute(document, HEADER_TELEFON).ifPresent(addHeader); + getAttribute(document, HEADER_STRASSE).ifPresent(addHeader); + getAttribute(document, HEADER_PLZ).ifPresent(addHeader); + getAttribute(document, HEADER_ORT).ifPresent(addHeader); + return map; + } + + Optional<Attr> getAttribute(Document document, String name) { + return Optional.ofNullable(document.getDocumentElement().getAttributeNode(name)); + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapper.java similarity index 69% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapper.java index 95c0074..cbdcb57 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,31 +21,34 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.List; import java.util.UUID; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; @Component class DepositRequestIncomingFileMapper { List<IncomingFile> mapFiles(Deposit depositData) { return depositData.getData().getAttachments().stream() - .map(this::map).toList(); + .map(this::buildIncomingFile).toList(); } - private IncomingFile map(Attachment xa) { + private IncomingFile buildIncomingFile(Attachment attachment) { + var file = TempFileUtils.writeTmpFile(attachment.content); + return IncomingFile.builder() .id(UUID.randomUUID().toString()) - .vendorId(xa.getId()) - .name(xa.getName()) - .contentType(xa.getContentType()) - .content(xa.content) - .size(xa.getContent().length) + .vendorId(attachment.getId()) + .name(attachment.getName()) + .file(file) + .contentType(attachment.getContentType()) + .size(attachment.getContent().length) .build(); } } diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpoint.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java similarity index 93% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpoint.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java index c8feda1..c917f67 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpoint.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,21 +21,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.io.IOException; -import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; import javax.xml.parsers.ParserConfigurationException; +import jakarta.xml.bind.JAXBElement; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.springframework.ws.server.endpoint.annotation.RequestPayload; import org.springframework.ws.server.endpoint.annotation.ResponsePayload; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.eingang.semantik.SemantikAdapter; import lombok.extern.log4j.Log4j2; @Endpoint diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapper.java similarity index 87% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapper.java index b6738d2..665d4d4 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.ArrayList; import java.util.List; @@ -32,8 +32,8 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component class FormDataIncomingFileMapper { @@ -43,30 +43,25 @@ class FormDataIncomingFileMapper { } List<IncomingFileGroup> mapAttachments(Document document) { - List<IncomingFileGroup> incomingFileGroups = new ArrayList<>(); - NodeList files = document.getElementsByTagName("file"); for (int idx = 0; idx < files.getLength(); idx++) { - String parentNodeName = buildParentNodeName(files.item(idx).getParentNode().getNodeName()); - IncomingFileGroup group = getIncomingFileGroup(incomingFileGroups, parentNodeName); - - group.getFiles().add(mapNodeToIncomingFile(files.item(idx))); + var updatedGroup = group.toBuilder().file(mapNodeToIncomingFile(files.item(idx))).build(); + incomingFileGroups.remove(group); + incomingFileGroups.add(updatedGroup); } return incomingFileGroups; } String buildParentNodeName(String parentNodeName) { - return parentNodeName.replaceAll("-item$", ""); } private IncomingFile mapNodeToIncomingFile(Node item) { - return IncomingFile.builder() .id(UUID.randomUUID().toString()) .vendorId(item.getAttributes().getNamedItem("id").getNodeValue()) @@ -77,7 +72,6 @@ class FormDataIncomingFileMapper { } private IncomingFileGroup getIncomingFileGroup(List<IncomingFileGroup> incomingFileGroups, String parentNodeName) { - return incomingFileGroups.stream() .filter(group -> group.getName().equals(parentNodeName)) .findFirst() diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/JsonService.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/JsonService.java new file mode 100644 index 0000000..58a4b81 --- /dev/null +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/JsonService.java @@ -0,0 +1,58 @@ +/* + * 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.intelliform; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +@Component +class JsonService { + + static final TypeReference<List<Map<String, Object>>> VALUE_TYPE_REF = new TypeReference<List<Map<String, Object>>>() { + }; + + @Autowired + private ObjectMapper objectMapper; + + public List<Map<String, Object>> readAsListMap(String json) { + return readValueSafety(json, VALUE_TYPE_REF); + } + + private <T> T readValueSafety(String json, TypeReference<T> typeRef) { + try { + return objectMapper.readValue(json, typeRef); + } catch (JsonProcessingException e) { + throw new TechnicalException("Error parsing JSON", e); + } + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculator.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculator.java similarity index 86% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculator.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculator.java index 52e6205..96ab024 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculator.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculator.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,15 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.List; import java.util.stream.Collectors; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component public class RepresentationsCalculator { diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java similarity index 85% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java index 7810c2e..c301df7 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,9 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; +package de.ozgcloud.eingang.intelliform; import java.io.ByteArrayInputStream; import java.util.Collections; @@ -33,13 +31,15 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.w3c.dom.Document; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; import lombok.RequiredArgsConstructor; //TODO Naming prüfen - er scheint mir nicht semantik zu mappen und befindet sich auch nicht im entsprechenden Modul @@ -86,6 +86,9 @@ class SemantikFormDataMapper { @Autowired private final AttachmentsContentAdder attachmentsContentAdder; + @Autowired + private final CustomHeaderReader customHeaderReader; + public FormData mapToFormData(Deposit depositData) { var xmlFormDataStream = getXmlFormData(depositData.getData()); @@ -100,22 +103,24 @@ class SemantikFormDataMapper { } private byte[] getXmlFormData(DepositData depositData) { + var primaryId = depositData.getPrimaryDataAttachmentId(); + return depositData.getAttachments().stream() - .filter(attachment -> attachment.getName().endsWith(CONTENT_FORMDATA_FILENAME_SUFFIX)) + .filter(attachment -> StringUtils.equals(attachment.getId(), primaryId)) .map(Attachment::getContent) .findFirst() - .orElseThrow(() -> new RuntimeException("Request does not contain a file ending with " + CONTENT_FORMDATA_FILENAME_SUFFIX)); + .orElseThrow(() -> new RuntimeException("Request does not contain primary data attachment")); } private void addFiles(Document document, List<IncomingFile> depositRequestFiles, Map<String, Object> formDataMap) { List<IncomingFileGroup> attachments = formDataIncomingFileMapper.mapAttachments(document); - attachmentsContentAdder.addContentToAttachments(attachments, depositRequestFiles); + attachments = attachmentsContentAdder.addContentToAttachments(attachments, depositRequestFiles); List<IncomingFile> representations = incomingFilesService.calculateRepresentations(attachments, depositRequestFiles); - formDataMap.put(FIELD_NAME_MAPPED_FILES, Map.of( - ATTACHMENTS, attachments, - REPRESENTATIONS, representations)); + formDataMap.put(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of( + FilesMapperHelper.ATTACHMENTS, attachments, + FilesMapperHelper.REPRESENTATIONS, representations)); removeMappedFileReferences(attachments, formDataMap); } @@ -154,6 +159,7 @@ class SemantikFormDataMapper { map.put(HEADER_CUSTOMER_ID, document.getDocumentElement().getAttribute(HEADER_CUSTOMER_ID)); map.put(HEADER_CLIENT, document.getDocumentElement().getAttribute(HEADER_CLIENT)); map.put(HEADER_CLIENT_ID, document.getDocumentElement().getAttribute(HEADER_CLIENT_ID)); + map.putAll(customHeaderReader.getHeader(document)); return map; } } \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapper.java similarity index 58% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapper.java index 6601174..f81827d 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,12 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -34,19 +36,27 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import lombok.extern.log4j.Log4j2; +@Log4j2 @Component class XmlToJavaMapsMapper { - Document parseAsW3cDocument(InputStream xmlDatenInputStream) { + static final String REST_RESPONSE_NAME = "rest_response_name"; + static final String FILE = "file"; + @Autowired + private JsonService jsonService; + + public Document parseAsW3cDocument(InputStream xmlDatenInputStream) { try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); @@ -66,13 +76,13 @@ class XmlToJavaMapsMapper { } } - Map<String, Object> mapXmlToJavaMaps(Node node) { + public Map<String, Object> mapXmlToJavaMaps(Node node) { return mapChildNodes(node.getFirstChild()); } private Map<String, Object> mapChildNodes(Node node) { - Map<String, Object> childs = new HashMap<>(); + Map<String, Object> childs = new LinkedHashMap<>(); NodeList nodeList = node.getChildNodes(); @@ -80,7 +90,7 @@ class XmlToJavaMapsMapper { Node currentNode = nodeList.item(i); - if (currentNode.getNodeType() == Node.ELEMENT_NODE) { + if (isElementNode(currentNode)) { if (isSimpleTextNode(currentNode)) { @@ -99,41 +109,50 @@ class XmlToJavaMapsMapper { return childs; } + private boolean isElementNode(Node node) { + return node.getNodeType() == Node.ELEMENT_NODE; + } + private boolean isSimpleTextNode(Node node) { + return node.getChildNodes().getLength() == 1 && isTextNode(node.getFirstChild()); + } - return node.getChildNodes().getLength() == 1 // - && node.getFirstChild().getNodeType() == Node.TEXT_NODE; + private boolean isTextNode(Node node) { + return node.getNodeType() == Node.TEXT_NODE; } - @SuppressWarnings("unchecked") private void addChildElement(Map<String, Object> childs, Node currentNode, Object content) { - if (childs.containsKey(currentNode.getNodeName())) { + addToExistingChildElement(childs, currentNode, content); + } else { + childs.put(currentNode.getNodeName(), getContentValue(currentNode, content)); + } + } - if (childs.get(currentNode.getNodeName()) instanceof List) { - - List<Object> list = (List<Object>) childs.get(currentNode.getNodeName()); - list.add(content); - - } else { - - List<Object> list = new ArrayList<>(); - list.add(childs.get(currentNode.getNodeName())); - list.add(content); - childs.put(currentNode.getNodeName(), list); - } - + @SuppressWarnings({ "unchecked", "rawtypes" }) + private void addToExistingChildElement(Map<String, Object> childs, Node currentNode, Object content) { + var existingChild = childs.get(currentNode.getNodeName()); + if (existingChild instanceof List list) { + list.add(content); } else { - if (isFileNode(currentNode)) { - childs.put(currentNode.getNodeName(), createFileContentMap(currentNode, content)); - } else { - childs.put(currentNode.getNodeName(), content); - } + var list = new ArrayList<Object>(); + list.add(existingChild); + list.add(content); + childs.put(currentNode.getNodeName(), list); + } + } + + Object getContentValue(Node currentNode, Object content) { + if (isFileNode(currentNode)) { + content = createFileContentMap(currentNode, content); + } else if (isJsonNode(currentNode)) { + content = getJsonValue(currentNode, ((String) content).trim()); } + return content; } private boolean isFileNode(Node currentNode) { - return currentNode.getNodeName().equals("file"); + return currentNode.getNodeName().equals(FILE); } private Map<String, Object> createFileContentMap(Node currentNode, Object content) { @@ -149,4 +168,20 @@ class XmlToJavaMapsMapper { return contentMap; } -} + private boolean isJsonNode(Node currentNode) { + return isRestResponseName(currentNode); + } + + private boolean isRestResponseName(Node currentNode) { + return currentNode.getNodeName().equals(REST_RESPONSE_NAME); + } + + private Object getJsonValue(Node currentNode, String content) { + try { + return jsonService.readAsListMap(content); + } catch (de.ozgcloud.common.errorhandling.TechnicalException e) { + LOG.error("Error parsing json content from <" + currentNode.getNodeName() + ">.", e); + return Collections.emptyList(); + } + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/application-dev.yml b/intelliform-adapter/src/main/resources/application-dev.yml index bcffdb5..69939e0 100644 --- a/intelliform-adapter/src/main/resources/application-dev.yml +++ b/intelliform-adapter/src/main/resources/application-dev.yml @@ -1,13 +1,13 @@ grpc: client: - pluto-kiel: - address: pluto-clusterip.sh-kiel-dev:9090 + vorgang-manager-kiel: + address: vorgang-manager-clusterip.sh-kiel-dev:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: organisationseinheiten: 9081994: kiel 9080859: kiel fallbackStrategy: FUNDSTELLE - fundstellePlutoName: kiel \ No newline at end of file + fundstelleVorgangManagerName: kiel \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/application-local.yml b/intelliform-adapter/src/main/resources/application-local.yml index 97e71c7..10ee8e7 100644 --- a/intelliform-adapter/src/main/resources/application-local.yml +++ b/intelliform-adapter/src/main/resources/application-local.yml @@ -1,12 +1,12 @@ logging: config: classpath:log4j2-local.xml level: - '[de.itvsh]': INFO + '[de.ozgcloud]': INFO grpc: client: - pluto-local: + vorgang-manager-local: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT @@ -17,9 +17,9 @@ management: server: port: 9292 -kop: +ozgcloud: adapter: - targetPlutoName: local + targetVorgangManagerName: local fallbackStrategy: DENY routingStrategy: SINGLE diff --git a/intelliform-adapter/src/main/resources/application-test.yml b/intelliform-adapter/src/main/resources/application-test.yml index 293e1f2..6626522 100644 --- a/intelliform-adapter/src/main/resources/application-test.yml +++ b/intelliform-adapter/src/main/resources/application-test.yml @@ -1,13 +1,13 @@ grpc: client: - pluto-kiel: - address: pluto-clusterip.sh-kiel-test:9090 + vorgang-manager-kiel: + address: vorgang-manager-clusterip.sh-kiel-test:9090 negotiationType: PLAINTEXT - pluto-sl: - address: pluto-clusterip.sh-sl-test:9090 + vorgang-manager-sl: + address: vorgang-manager-clusterip.sh-sl-test:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: organisationseinheiten: 9081994: kiel @@ -15,6 +15,6 @@ kop: 9535669: sl 235046657: sl fallbackStrategy: FUNDSTELLE - fundstellePlutoName: kiel + fundstelleVorgangManagerName: kiel diff --git a/intelliform-adapter/src/main/resources/application.yml b/intelliform-adapter/src/main/resources/application.yml index 351db3c..8d7d9cb 100644 --- a/intelliform-adapter/src/main/resources/application.yml +++ b/intelliform-adapter/src/main/resources/application.yml @@ -1,7 +1,7 @@ logging: level: ROOT: WARN - '[de.itvsh.ozg]': INFO + '[de.ozgcloud]': INFO server: port: 9292 @@ -31,17 +31,17 @@ management: grpc: client: - plutoschleswigflensburg: + vorgang-manager-schleswigflensburg: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT - pluto-kiel: + vorgang-manager-kiel: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT - pluto-nf: + vorgang-manager-nf: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: routingStrategy: MULTI organisationseinheiten: diff --git a/intelliform-adapter/src/main/resources/logback-spring.xml b/intelliform-adapter/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..ac9706e --- /dev/null +++ b/intelliform-adapter/src/main/resources/logback-spring.xml @@ -0,0 +1,20 @@ +<configuration> + <include resource="org/springframework/boot/logging/logback/defaults.xml"/> + <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> + + <springProfile name="!oc"> + <root> + <appender-ref ref="CONSOLE"/> + </root> + </springProfile> + + <springProfile name="oc"> + <appender name="LOGSTASH" class="ch.qos.logback.core.ConsoleAppender"> + <encoder class="net.logstash.logback.encoder.LogstashEncoder"/> + </appender> + <root> + <appender-ref ref="LOGSTASH"/> + </root> + </springProfile> + +</configuration> diff --git a/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh b/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh index 48c256b..da2dd23 100755 --- a/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh +++ b/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# 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 @@ -24,8 +24,8 @@ # -# Dev: https://afm.dev.ozg-sh.de/ws/if -# Test: https://kiel-afm.test.ozg-sh.de/ws/if +# Dev: https://kiel-afm.dev.by.ozg-cloud.de/ws/if +# Test: https://kiel-afm.test.by.ozg-cloud.de/ws/if URL=http://localhost:9292/ws/if if [ -n "$1" ]; then @@ -35,329 +35,9 @@ fi echo "Send request to ${URL} ..." echo -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHhtbG5zOnU9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdXNlciIgdDppZD0iMjAyMTA0MTQzMjQxMjAwOTAyMDciIHQ6dGltZXN0YW1wPSIyMDIxLTA0LTE0VDA3OjAwOjEyLjQ4OFoiIHQ6c2VuZGVyPSJzdGFnZS5hZm0uc2NobGVzd2lnLWhvbHN0ZWluLmRlIiB0OmZvcm09IkVpbmdsaWVkZXJ1bmdzaGlsZmUgTWluZGVyasOkaHJpZ2UiIHQ6Zm9ybS1pZD0icGZtX3Bvc3RmYWNobWl0dGVpbHVuZyIgdDpjdXN0b21lcj0iS3JlaXMgU2VnZWJlcmciIHQ6Y3VzdG9tZXItaWQ9ImtyZWlzLXNlZ2ViZXJnL2tyZWlzLXNlZ2ViZXJnIiB0OmNsaWVudD0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmNsaWVudC1pZD0ibGFuZCIgdTpVc2VybmFtZT0iYWZtdDcwQHdlYi5kZSIgdTpQcmluY2lwYWxUeXBlPSJDaXRpemVuIiB1OnVzZXJuYW1lPSJkZTkzN2ExNy1iMTU2LTRhYWYtOTQ3Ni0yNjU4YmM4NzI2NTkiIHU6R2l2ZW5OYW1lcz0iRGF0YXBvcnQiIHU6QXNzdXJhbmNlTGV2ZWw9IkxvdyIgdTpkaXNwbGF5TmFtZT0iRGF0YXBvcnQgU0gtVXNlciIgdTptYWlsQWRkcmVzcz0iYWZtdDcwQHdlYi5kZSIgdTpFbWFpbEFkZHJlc3M9ImFmbXQ3MEB3ZWIuZGUiIHU6Zmlyc3ROYW1lPSJEYXRhcG9ydCIgdTpsYXN0TmFtZT0iU0gtVXNlciI+PGxlaXN0dW5nZW4+PGhlaWxwIGxhYmVsPSJIZWlscMOkZGFnb2dpc2NoZSBMZWlzdHVuZ2VuIj50cnVlPC9oZWlscD48aGlsZmUgbGFiZWw9IkhpbGZlIHp1ciBUZWlsaGFiZSBpbiBkZXIgR2VtZWluc2NoYWZ0Ij5mYWxzZTwvaGlsZmU+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48c2NodWwgbGFiZWw9IkxlaXN0dW5nZW4genVyIFRlaWxoYWJlIGFuIEJpbGR1bmciPmZhbHNlPC9zY2h1bD48dW50ZXJiIGxhYmVsPSJMZWlzdHVuZ2VuIMO8YmVyIFRhZyB1bmQgTmFjaHQiPmZhbHNlPC91bnRlcmI+PC9sZWlzdHVuZ2VuPjxiZWdydWVuZHVuZz50ZXN0PC9iZWdydWVuZHVuZz48bmFtZWlkPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvbmFtZWlkPjxyZXN0X3Jlc3BvbnNlX25hbWU+W3sibWVtYmVyY29udGV4dCI6ImRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OSIsIm1lbWJlcnNjb3BlIjpbeyJ0ZW5hbnQiOiJTSCIsIm1haWxib3hndWlkIjoiYzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyIiwibWFpbGJveG5hbWUiOiJOL0EiLCJtYWlsYm94ZGVzY3JpcHRpb24iOiJUZXN0IiwibWFpbGJveHR5cGUiOjEsImd1aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJpZCI6MjM1OTkxNn1dfV08L3Jlc3RfcmVzcG9uc2VfbmFtZT48bWFpbGJveGd1aWQ+YzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyPC9tYWlsYm94Z3VpZD48bmFjaG5hbWU+dGVydDwvbmFjaG5hbWU+PHZvcm5hbWU+dGVzdDwvdm9ybmFtZT48Z2VidXJ0c2RhdHVtPjIwMDAtMDQtMDc8L2dlYnVydHNkYXR1bT48ZGV1dHNjaD5kZXV0c2NoPC9kZXV0c2NoPjxiZXRyZXV1bmdfb19zY2h1bGU+ZGFoZWltPC9iZXRyZXV1bmdfb19zY2h1bGU+PHN0cmFzc2U+dGVzdDwvc3RyYXNzZT48aGF1c251bW1lcj4xMjI8L2hhdXNudW1tZXI+PHBsej4yMjIyMjwvcGx6PjxvcnQ+dGVzdDwvb3J0PjxwZmxlZ2VncmFkPmtlaW5lcjwvcGZsZWdlZ3JhZD48a3Jhbmtlbmthc3NlPnRlc3Q8L2tyYW5rZW5rYXNzZT48dmVyc2ljaGVydW5nc251bW1lcj53ZXRzZXQ8L3ZlcnNpY2hlcnVuZ3NudW1tZXI+PHNjaHdlcmJlaGluZGVydW5nPmZhbHNlPC9zY2h3ZXJiZWhpbmRlcnVuZz48ZWdoX2ZvbGdlYW50cmFnPmZhbHNlPC9lZ2hfZm9sZ2VhbnRyYWc+PGJldHJldXVuZz5kYWhlaW08L2JldHJldXVuZz48ZWx0ZXJuPjxlbHRlcm4taXRlbT48cm9sbGVfZWx0ZXI+dmF0ZXI8L3JvbGxlX2VsdGVyPjxuYWNobmFtZV9lbHRlcj5TSC1Vc2VyPC9uYWNobmFtZV9lbHRlcj48dm9ybmFtZV9lbHRlcj5EYXRhcG9ydDwvdm9ybmFtZV9lbHRlcj48Z2VidXJ0c3RhZ19lbHRlcj4yMDAwLTA0LTA5PC9nZWJ1cnRzdGFnX2VsdGVyPjxmZXN0bmV0el9lbHRlcj4yMzQ8L2Zlc3RuZXR6X2VsdGVyPjxtYWlsX2VsdGVyPmFmbXQ3MEB3ZWIuZGU8L21haWxfZWx0ZXI+PGFsdF9hZHJfZWx0ZXI+ZmFsc2U8L2FsdF9hZHJfZWx0ZXI+PC9lbHRlcm4taXRlbT48L2VsdGVybj48c29yZ2VyZWNodD52YXRlcjwvc29yZ2VyZWNodD48Z2VzY2h3aXN0ZXIvPjxwZmxlZ2VmYW1pbGllPmZhbHNlPC9wZmxlZ2VmYW1pbGllPjxhcnp0PnRlc3Q8L2FyenQ+PGRpYWdub3Nlbj50ZXN0PC9kaWFnbm9zZW4+PHVudGVyc3VjaHVuZ2VuPjxhdWdlbiBsYWJlbD0iQXVnZW5hcnp0Ij5mYWxzZTwvYXVnZW4+PGhubyBsYWJlbD0iSE5PLUFyenQiPnRydWU8L2hubz48a2ggbGFiZWw9IkRpYWdub3N0aWtlbiBpbSBLcmFua2VuaGF1cyI+ZmFsc2U8L2toPjxvcnRobyBsYWJlbD0iT3J0aG9ww6RkaWUiPmZhbHNlPC9vcnRobz48b3RoZXIgbGFiZWw9IiI+ZmFsc2U8L290aGVyPjxwc3ljaGF0ZXIgbGFiZWw9IktpbmRlci0gdW5kIEp1Z2VuZHBzeWNoaWF0ZXIiPmZhbHNlPC9wc3ljaGF0ZXI+PHNvemlhbCBsYWJlbD0iU296aWFscMOkZGlhdHJpc2NoZXMgWmVudHJ1bSI+ZmFsc2U8L3NvemlhbD48L3VudGVyc3VjaHVuZ2VuPjxtYXNzbmFobWVuPjxlcmdvIGxhYmVsPSJFcmdvdGhlcmFwaWUiPnRydWU8L2VyZ28+PGtnIGxhYmVsPSJLcmFua2VuZ3ltbmFzdGlrIj5mYWxzZTwva2c+PGxvZ28gbGFiZWw9IkxvZ29ww6RkaWUiPmZhbHNlPC9sb2dvPjxtdXNpayBsYWJlbD0iVGVpbG5haG1lIGFuIGVpbmVyIE11c2lrZ3J1cHBlIj5mYWxzZTwvbXVzaWs+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48cHN5Y2hvIGxhYmVsPSJQc3ljaG90aGVyYXBpZSI+ZmFsc2U8L3BzeWNobz48c2Nod2ltbWVuIGxhYmVsPSJTY2h3aW1tZW4iPmZhbHNlPC9zY2h3aW1tZW4+PHNwcmFjaCBsYWJlbD0iU3ByYWNoZsO2cmRlcnVuZyBpbiBkZXIgS2luZGVydGFnZXNzdMOkdHRlIj5mYWxzZTwvc3ByYWNoPjx2ZXJlaW4gbGFiZWw9Ik1pdGdsaWVkc2NoYWZ0IGluIGVpbmVtIFR1cm4tL1Nwb3J0dmVyZWluIj5mYWxzZTwvdmVyZWluPjwvbWFzc25haG1lbj48anVnZW5kYW10X2tvbnRha3Q+ZmFsc2U8L2p1Z2VuZGFtdF9rb250YWt0PjxqdWdlbmRhbXRfYWt0ZW5laW5zaWNodD50cnVlPC9qdWdlbmRhbXRfYWt0ZW5laW5zaWNodD48cGVyc29uYWxhdXN3ZWlzPjxwZXJzb25hbGF1c3dlaXMtaXRlbT48ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3BkZiIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuM0Y0QzVGOUI5NzM3MzMzOTMzQjkzNTZFNDlBQTM1RUIzRDkyNzJCOSIgbGVuZ3RoPSIxODE5MjYiPnRlc3QucGRmPC9maWxlPjwvcGVyc29uYWxhdXN3ZWlzLWl0ZW0+PC9wZXJzb25hbGF1c3dlaXM+PHNvcmdlcmVjaHRzbmFjaHdlaXM+PGZpbGUgY29udGVudC10eXBlPSJhcHBsaWNhdGlvbi9wZGYiIGRlc2NyaXB0aW9uPSIiIGlkPSJhc3Npc3RhbnRzLjdDOUFDMDc0M0NFMDY1QTc0RTBEQzJEODVGOTY4MkJGQzQ5MDM1QkIiIGxlbmd0aD0iMTgxOTI2Ij50ZXN0ICgxKS5wZGY8L2ZpbGU+PC9zb3JnZXJlY2h0c25hY2h3ZWlzPjxlcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz50cnVlPC9lcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz48ZGF0ZW5zY2h1dHo+dHJ1ZTwvZGF0ZW5zY2h1dHo+PHBvc3RmYWNoYmV0cmVmZj5JaHIgQW50cmFnIGF1ZiBFaW5nbGllZGVydW5nc2hpbGZlIGbDvHIgTWluZGVyasOkaHJpZ2U8L3Bvc3RmYWNoYmV0cmVmZj48cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW50cmFnc3RlbGxlcippbiwgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0lociBBbnRyYWcgd3VyZGUgZXJmb2xncmVpY2ggw7xiZXJtaXR0ZWx0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHLDpGd0LiBTaWUgZXJoYWx0ZW4gdW5hdWZnZWZvcmRlcnQgZWluZSBSw7xja21lbGR1bmcgenUgSWhyZW0gQW50cmFnLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIGZpbmRlbiBTaWUgaW0gYW5nZWjDpG5ndGVuIERva3VtZW50LiAmbHQ7YnIvJmd0O0JpdHRlIGdlYmVuIFNpZSBkaWVzZSBWb3JnYW5nc251bW1lciBiZWkgYWxsZW4gQW5mcmFnZW4genUgSWhyZW0gQW50cmFnIGFuLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O01pdCBmcmVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyIEtyZWlzIFNlZ2ViZXJnJmx0O2JyLyZndDsmbHQ7YnIvJmd0Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtLcmVpcyBTZWdlYmVyZyAmbHQ7YnIvJmd0O0VpbmdsaWVkZXJ1bmdzaGlsZmUgZsO8ciBNaW5kZXJqw6RocmlnZSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtQb3N0YW5zY2hyaWZ0OiZsdDtici8mZ3Q7SGFtYnVyZ2VyIFN0ci4gMzAmbHQ7YnIvJmd0OzIzNzk1IEJhZCBTZWdlYmVyZyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCZXN1Y2hlcmFuc2NocmlmdDombHQ7YnIvJmd0O0J1cmdmZWxkc3RyLiA0MWEgJmx0O2JyLyZndDsyMzc5NSBCYWQgU2VnZWJlcmcgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0ZheDogKzQ5NDU1MS85NTEtOTU2NSAmbHQ7YnIvJmd0O0UtTWFpbDogJmx0O2EgaGVyZj0ibWFpbHRvOmludGVncmF0aW9uLmtpbmRlckBzZWdlYmVyZy5kZSImZ3Q7aW50ZWdyYXRpb24ua2luZGVyQHNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7SW50ZXJuZXQ6ICZsdDthIGhyZWY9Ind3dy5zZWdlYmVyZy5kZSImZ3Q7d3d3LnNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD48L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4IiBJc3N1ZUluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxzYW1sOklzc3Vlcj51cm46ZGF0YXBvcnQ6b3NpOnNlcnZpY2Vrb250bzppZHA6cnoyOnN0YWdlOnNoPC9zYW1sOklzc3Vlcj48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiNfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCBzYW1sIGRzIHhzIHhzaSIvPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPi8raURwbHVXdGFMd20rY1M5aCtYVEc0aTBiQy9jYS9WbjdMMWFObWtXNFk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkdVMm9NOWNTZWFyZCt0MlU1WTBzNDVQKzlQdzJKNVdwSzh6MXNYa2NvT0RHY0lhVzljU3dKa0RTc2U0Z0lHQ1VYTXYxcWRhbytJdmFuQlJReXc3Mmo1SFVWdFNkWktBUkg5NjBoeEJ4YVhQRVN3VUQ5OTF4TzlYWVJ2ZmoxZU5waTNkRWpVRWtKUEN3T1g2NmlsWUZhQ0VCeFdwOXF4MGVVZVdzdnVOOUg1aytoWFJpdHpPdGdRMmFTenUrZUlzQnpOU3hoVHJkSXJPck9nV0orVHEwTmhZOC84WDNUT3EzQW9qMHJJTHcrVEZYMWFENmo2NUNWKzQ0eGtCWjlDK0F3NENrcTRRYUk4ckt6UzY4djlReUt2MTVOT2dhcmx6TGE3OUNNc2h1aUk4eDZldFZOSHpHcm15RC9Nc243bmticlhEWTdoQUNuL294bXlydk1YQXpGdz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlHM3pDQ0JNZWdBd0lCQWdJVGJRQUxpdm01eVVoSU9TYmQwQUFCQUF1SytUQU5CZ2txaGtpRzl3MEJBUXNGQURBK01Rc3dDUVlEVlFRR0V3SkVSVEVXTUJRR0ExVUVDZ3dOUkdGMFlYQnZjblFnUWNPMlVqRVhNQlVHQTFVRUF3d09SR0YwWVhCdmNuUWdRMEVnTURRd0hoY05NakF3TkRJM01EY3dOelUwV2hjTk1qSXdOek14TURjd056VTBXakNCcWpFTE1Ba0dBMVVFQmhNQ1JFVXhHekFaQmdOVkJBZ01FbE5qYUd4bGMzZHBaeTFJYjJ4emRHVnBiakVTTUJBR0ExVUVCd3dKUVd4MFpXNW9iMng2TVJFd0R3WURWUVFLREFoRVlYUmhjRzl5ZERFTk1Bc0dBMVVFQ3d3RVZGb3hOREZJTUVZR0ExVUVBd3cvYzJGdGJDNXBaSEF1YzJWeWRtbGpaV3R2Ym5SdkxuTjBZV2RsTG5ObGNuWnBZMlZ3YjNKMFlXd3VjMk5vYkdWemQybG5MV2h2YkhOMFpXbHVMbVJsTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFwUFRUZHhpQ3laenJEU2NZclQ5ckNxcHl1RFRqYzY1ZTJTTzBjRE03Mmd0dW1zOFZqQVp2T1Jic09vWm90dEFUYmlSWWpXM2t1Z3ZkeGFHdk1lYlRCNE93YVd0UDlwUDNRdTZjaWVrRG9IdmpQUHQyTG05TmdNT3BTVFNMSENxT3QrdWFiNEdYU1NPQmt3TXFlNDNMa2RaU3E5WS9tazJ6QlBZcXlVMzEwN2dkd01xUWRGdWhqZU5iYVEvMFFYa1laTGdVeFR1OGpVSmxGZXh1QkxZTjZ1WHJHVllyV0dQTU9Vdk83cGYzc3BzMjRnUVJFWlVHMkJkU0tkbjhqaDRjR0Y2ODhtNk5uTlBOVGZ5L3BWbmRDVDQzY0lGT0JQSHRvTitTcWs2ZGVKVVJoY3hyeE56U3Z2RUYvRWVMOE1WSUU3Ym5IRGhaZGtmbXU5MkVldlNoQXdJREFRQUJvNElDWnpDQ0FtTXdIUVlEVlIwT0JCWUVGQmczOU0yVGlPNkE0aHh1QjFKKytLbTgxYUVpTUE0R0ExVWREd0VCL3dRRUF3SUZvREJLQmdOVkhSRUVRekJCZ2o5ellXMXNMbWxrY0M1elpYSjJhV05sYTI5dWRHOHVjM1JoWjJVdWMyVnlkbWxqWlhCdmNuUmhiQzV6WTJoc1pYTjNhV2N0YUc5c2MzUmxhVzR1WkdVd0h3WURWUjBqQkJnd0ZvQVVzZUttMi95SjVUZm83NkxMT295WTBQUkpKTjh3UmdZRFZSMGZCRDh3UFRBN29EbWdONFkxYUhSMGNEb3ZMM0JyYVM1elpYSjJhV05sWkhCaGIzSXVaR1V2WTNKc0wwUmhkR0Z3YjNKMEpUSXdRMEVsTWpBd05DNWpjbXd3Z1lBR0NDc0dBUVVGQndFQkJIUXdjakFyQmdnckJnRUZCUWN3QVlZZmFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdmIyTnpjREJEQmdnckJnRUZCUWN3QW9ZM2FIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyRXZSR0YwWVhCdmNuUWxNakJEUVNVeU1EQTBLREVwTG1OeWREQU1CZ05WSFJNQkFmOEVBakFBTUQwR0NTc0dBUVFCZ2pjVkJ3UXdNQzRHSmlzR0FRUUJnamNWQ09yYVk0WE0zRUNDcVpjZ2hOVGpjNEg0cFhhQlhvTzFsanVEdnJ0dUFnRmtBZ0VpTUNjR0ExVWRKUVFnTUI0R0NDc0dBUVVGQndNQkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSUFnSXdNd1lKS3dZQkJBR0NOeFVLQkNZd0pEQUtCZ2dyQmdFRkJRY0RBVEFLQmdnckJnRUZCUWNEQWpBS0JnZ3JCZ0VGQlFnQ0FqQlBCZ05WSFNBRVNEQkdNRVFHRFNzR0FRUUJncWxYZzMyQlNBSXdNekF4QmdnckJnRUZCUWNDQVJZbGFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyVnlkR05zWVhOekFEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFPbG9Kc05vaUdoN09TRWdLelF1TEE1ZUozUFpLOGJ4MGdmVXlOZVJvSVlVQnErZ1lVSW1IM2tRU3R1bDg2WXhwU3JrUzNGNkU3c2pqWitncHRXai95aDcwMUYzR0EvZEk3TDVBTGNmSXdWWjlVckIzdnlKWHYwWGNQSmlMb05uZ3N0TDdBUzFobFV3d0NYN0pCS1FVdnFnS2dMWGFyWGpHYko2emZCMlVTSG9LSWJkVlo4R0ZhUENPWU5QZmlHanBDaSs4WUllTWY5eHRhSUJ6dGFRUEJ2eW4yVC9CNzBNSjBLK1JFZTdzTUNSSXBmYTdsZThRNVBlaGJEQWpkOWhCb3hzbWJtUXhxZmtKUHNYVDNqeGIxZk5pWHRyNjFRVkh0ODQ4dTNkOXhCVkc5OSthRlZlNnJRd01wdDA4TWpBYWdWemNpS2RlRU01WTAzaUNBVFdabDZEYjZINjhlVU9FdTdJTmxmNDF1UGQ3U0FOMnpRT1pIZ3pnZTJjbXNwcGZlKyt4NU1VK3YyUy9rOUJrVHQwU2FqWEtHcjczdk92VU1pMUhvNjEwMkpKdWg5K2NyVDRRM1VFRkp3QStkZHVVK25MVDRDWGZjOGs3RGVCTGJBME1IQzNhOXFLcmZKcnNlM2NkVmdRQmVSWFFDTk55OGJHV2swdHNueXhWMDJhdG92TnJ6ZXBMekE3dCtOU2lPNUNUWXo5U3NXSXRLTk5Wd3kyZ3ZwQjVNU1Fsc2tQRWNFMzh2UTYvc1p2Nks0MGczbnY1Q2Z1RlMyait2eDdsSTVCVmJQSW1KNDN3QXB0dktnUVAyVEtuTFEwTmRCWE5VSzlQZGI3MlJtM1BGTlp3eHVMdncyV1BXNk9SNVRvdk44Q3VIdHNGTmU0UHlPTVg2QnN4elVqb0dFMD08L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OnBlcnNpc3RlbnQiIE5hbWVRdWFsaWZpZXI9InVybjpvc3A6bmFtZXM6cmVhbG06c3RhZ2U6c2giPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2Q3M2VlMTJlYmIwMjY0OWQyM2Q4M2U2OWM2OWM4NTcxIiBOb3RPbk9yQWZ0ZXI9IjIwMjEtMDQtMTRUMTc6MDA6MTMuNjM4WiIgUmVjaXBpZW50PSJodHRwczovL3N0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUvb3NpL1NoaWJib2xldGguc3NvL1NBTUwyL1BPU1QiLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdE9uT3JBZnRlcj0iMjAyMS0wNC0xNFQxNzowMDoxMy42MzhaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3RhZ2UuYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgU2Vzc2lvbkluZGV4PSJiZjA0NjNhNy0xYjdkLTQ5ZWMtODE5Yy1jZDFhZGM4ZTFlZGEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj5odHRwOi8vZWlkYXMuZXVyb3BhLmV1L0xvQS9sb3c8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJVc2VybmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5hZm10NzBAd2ViLmRlPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkFzc3VyYW5jZUxldmVsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxvdzwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJUaXRsZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5IZXJyPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkdpdmVuTmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+RGF0YXBvcnQ8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmFtaWx5TmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+U0gtVXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbEFkZHJlc3MiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+YWZtdDcwQHdlYi5kZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJQcmluY2lwYWxUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkNpdGl6ZW48L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iQ2l0aXplblByb2ZpbGVUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPlN0YW5kYXJkPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPg==</content> - <contentType>text/xml</contentType> - <id>saml-assertion</id> - <name>SAML-Assertion.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> - <contentType>application/pdf</contentType> - <id>assistants.3F4C5F9B9737333933B9356E49AA35EB3D9272B9</id> - <name>test.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> - <contentType>application/pdf</contentType> - <id>assistants.7C9AC0743CE065A74E0DC2D85F9682BFC49035BB</id> - <name>test (1).pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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ZW5kb2JqDQozNCAwIG9iag0KPDwNCi9PcGVuQWN0aW9uIFsgMSAwIFIgL1hZWiBudWxsIG51bGwgMSBdDQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL1BhZ2VzIDE2IDAgUg0KPj4NCmVuZG9iag0KMzUgMCBvYmoNCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MTQwOTAxNDUrMDInMDAnKQ0KL1Byb2R1Y2VyIChjaXQgcGRmc3VpdGUgXCh3d3cuY2l0LmRlXCkpDQovQXV0aG9yIDxmZWZmMDA0YjAwNmMwMDYxMDA3NTAwNzMwMDIwMDA1NzAwNjEwMDZlMDA2ZTAwNjUwMDcyPg0KPj4NCmVuZG9iag0KeHJlZg0KMCAzNiANCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDA2OCAwMDAwMCBuDQowMDAwMDAwMjU1IDAwMDAwIG4NCjAwMDAwMTI3MjYgMDAwMDAgbg0KMDAwMDAxMjc1MCAwMDAwMCBuDQowMDAwMDQ0MzE5IDAwMDAwIG4NCjAwMDAwNTQxODMgMDAwMDAgbg0KMDAwMDA1NDIwNiAwMDAwMCBuDQowMDAwMDU0MzkzIDAwMDAwIG4NCjAwMDAwNjU3NTEgMDAwMDAgbg0KMDAwMDA2NTc3NSAwMDAwMCBuDQowMDAwMDY1OTY0IDAwMDAwIG4NCjAwMDAwNzc4NTkgMDAwMDAgbg0KMDAwMDA3Nzg4NCAwMDAwMCBuDQowMDAwMDc4MDczIDAwMDAwIG4NCjAwMDAwODkwNTkgMDAwMDAgbg0KMDAwMDA4OTA4NCAwMDAwMCBuDQowMDAwMDg5MjE3IDAwMDAwIG4NCjAwMDAwOTEyNjAgMDAwMDAgbg0KMDAwMDA5MTI4NCAwMDAwMCBuDQowMDAwMDkxNDk3IDAwMDAwIG4NCjAwMDAwOTE4MDYgMDAwMDAgbg0KMDAwMDA5MTk5MCAwMDAwMCBuDQowMDAwMTAwNDEyIDAwMDAwIG4NCjAwMDAxMDA0MzYgMDAwMDAgbg0KMDAwMDEwMDY1OCAwMDAwMCBuDQowMDAwMTAxMjA5IDAwMDAwIG4NCjAwMDAxMDE2MjMgMDAwMDAgbg0KMDAwMDExMDE3MCAwMDAwMCBuDQowMDAwMTEwMTk0IDAwMDAwIG4NCjAwMDAxMTA0MTMgMDAwMDAgbg0KMDAwMDExMDk5MiAwMDAwMCBuDQowMDAwMTExNDI4IDAwMDAwIG4NCjAwMDAxMTE0OTAgMDAwMDAgbg0KMDAwMDExMTYwOCAwMDAwMCBuDQowMDAwMTExNzIwIDAwMDAwIG4NCnRyYWlsZXINCjw8DQovSW5mbyAzNSAwIFINCi9JRCBbIDw4YmVlYWQzNmY0ODliNDBkNzk2NWZhNDQ5ODVjOWFmNT4gPDAxMDJlNWRhZGQwNTgzMzQ4YTMzN2NiOTc3ZjE0MzQ5PiBdDQovUm9vdCAzNCAwIFINCi9TaXplIDM2DQovRG9jQ2hlY2tzdW0gLzA1NjMzRjY4QUU3RkI1MUU5MzA1QTBDNDdEMTI3MjlGDQo+Pg0Kc3RhcnR4cmVmDQoxMTE5MzMNCiUlRU9GDQo=</content> - <contentType>application/pdf</contentType> - <id>myForm-pdf</id> - <name>Eingliederungshilfe-Antrag.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPC9oZWFkPgo8Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTFwdDsiPgogICAgICAgICAgICBTZWhyIGdlZWhydGUvciBBbnRyYWdzdGVsbGVyKmluLCA8YnI+Cjxicj4KSWhyIEFudHJhZyB3dXJkZSBlcmZvbGdyZWljaCAmdXVtbDtiZXJtaXR0ZWx0Ljxicj4KPGJyPgpCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHImYXVtbDtndC4gU2llIGVyaGFsdGVuIHVuYXVmZ2Vmb3JkZXJ0IGVpbmUgUiZ1dW1sO2NrbWVsZHVuZyB6dSBJaHJlbSBBbnRyYWcuPGJyPgo8YnI+IApJaHJlIFZvcmdhbmdzbnVtbWVyIGxhdXRldDogCjUxLzUxLjIwLzIwMjEwNDE0MzI0MTIwMDkwMjA3LgpCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVtIEFudHJhZyBhbi48YnI+Cjxicj4KPGJyPgpNaXQgZnJlbmRsaWNoZW4gR3ImdXVtbDsmc3psaWc7ZW48YnI+CklociBLcmVpcyBTZWdlYmVyZzxicj4KPGJyPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Cjxicj4KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDlwdDsiPktyZWlzIFNlZ2ViZXJnIDxicj4KRWluZ2xpZWRlcnVuZ3NoaWxmZSBmJnV1bWw7ciBNaW5kZXJqJmF1bWw7aHJpZ2U8YnI+Cjxicj4KUG9zdGFuc2NocmlmdDo8YnI+CkhhbWJ1cmdlciBTdHIuIDMwPGJyPgoyMzc5NSBCYWQgU2VnZWJlcmc8YnI+Cjxicj4KQmVzdWNoZXJhbnNjaHJpZnQ6PGJyPgpCdXJnZmVsZHN0ci4gNDFhIDxicj4KMjM3OTUgQmFkIFNlZ2ViZXJnIDxicj4KPGJyPgpGYXg6ICs0OTQ1NTEvOTUxLTk1NjUgPGJyPgpFLU1haWw6IDxhIGhlcmY9Im1haWx0bzppbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgIj5pbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgPC9hPgo8YnI+CkludGVybmV0OiA8YSBocmVmPSJ3d3cuc2VnZWJlcmcuZGUiPnd3dy5zZWdlYmVyZy5kZTwvYT48L3NwYW4+Cjxicj4KPC9ib2R5Pgo8L2h0bWw+Cg==</content> - <contentType>text/xml</contentType> - <id>EmailBodyTemplate</id> - <name>EmailBodyTemplate.xml</name> - </attachments> - <caller/> - <client>Schleswig-Holstein</client> - <clientId>land</clientId> - <customParameters> - <key>AbsenderBehoerdenkennung</key> - <value>afmsh:afm_eGewerbeAbmeldung</value> - </customParameters> - <customParameters> - <key>EmailAdresseSachbearbeitung</key> - <value>oscar.mourbare@dataport.de</value> - </customParameters> - <customParameters> - <key>EmailSubjectTemplate</key> - <value>EGH Stage Deposit Prüfung</value> - </customParameters> - <customParameters> - <key>EmpfaengerBehoerdenkennung</key> - <value>afmsh:12345_eGewerbeAbmeldung</value> - </customParameters> - <customParameters> - <key>mailboxguid</key> - <value>c5a446b7-d6b0-4c61-9ad2-aae600857982</value> - </customParameters> - <customParameters> - <key>PostfachAttachmentIds</key> - <value>myForm-pdf</value> - </customParameters> - <customParameters> - <key>PostfachBodyTemplate</key> - <value>Sehr geehrte/r Antragsteller*in, <br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte beachten Sie, dass die Bearbeitungszeit nach Eingang aller Unterlagen 2 Wochen bis 2 Monate beträgt. Sie erhalten unaufgefordert eine Rückmeldung zu Ihrem Antrag.<br/><br/>Ihre Vorgangsnummer finden Sie im angehängten Dokument. <br/>Bitte geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrem Antrag an.<br/><br/><br/>Mit frendlichen Grüßen<br/>Ihr Kreis Segeberg<br/><br/>---------------------------------------------------<br/><br/>Kreis Segeberg <br/>Eingliederungshilfe für Minderjährige<br/><br/>Postanschrift:<br/>Hamburger Str. 30<br/>23795 Bad Segeberg<br/><br/>Besucheranschrift:<br/>Burgfeldstr. 41a <br/>23795 Bad Segeberg <br/><br/>Fax: +494551/951-9565 <br/>E-Mail: <a herf="mailto:integration.kinder@segeberg.de">integration.kinder@segeberg.de</a><br/>Internet: <a href="www.segeberg.de">www.segeberg.de</a><br/></value> - </customParameters> - <customParameters> - <key>PostfachIsHtml</key> - <value>true</value> - </customParameters> - <customParameters> - <key>PostfachSubjectTemplate</key> - <value>Ihr Antrag auf Eingliederungshilfe für Minderjährige</value> - </customParameters> - <customer>Kreis Segeberg</customer> - <customerId>kreis-segeberg/kreis-segeberg</customerId> - <form>Eingliederungshilfe Minderjährige</form> - <formId>pfm_postfachmitteilung</formId> - <id>20210414324120090207</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> - <sender>stage.afm.schleswig-holstein.de</sender> - <timestamp>2021-04-14T09:01:49.030+02:00</timestamp> - <username>de937a17-b156-4aaf-9476-2658bc872659</username> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} +SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIiB0OmZvcm0tdmVyc2lvbj0iMi4wMTMiIHQ6dXVpZD0iNzgxNGI2YjUtMmZlYy00ZDBiLTg4OGYtYTM3N2ExOWIwZGEzIiB0OmlkPSIyMDIxMTIwODQyNjkyMDE3OTIwMCIgdDp0aW1lc3RhbXA9IjIwMjEtMTItMDhUMTA6NTE6MzIuNTMxWiIgdDpzZW5kZXI9InN0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUiIHQ6Zm9ybT0iV2FobGhlbGZlcmluIHdlcmRlbiIgdDpmb3JtLWlkPSJvZHBfd2FobGhlbGZlci9vZHBfd2FobGhlbGZlciIgdDpjdXN0b21lcj0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmN1c3RvbWVyLWlkPSJzaCIgdDpjbGllbnQ9IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiPjxnZWJpZXRfaWQ+OTAwNzE3ODwvZ2ViaWV0X2lkPjxzZXNzaW9uaWQ+ZjA1M2M0MmMtZjU0ZS00ZTZlLWIxODMtNWVmM2QxZDFlMDQyPC9zZXNzaW9uaWQ+PGFubGllZ2VuX2lkPjg5Njc5MTM8L2FubGllZ2VuX2lkPjx6c3Rfb25saW5lX2RpZW5zdD5XYWhsaGVsZmVyIC0gQWx0ZW5ob2x6L0UtTWFpbC1adXN0ZWxsdW5nOzI1NDQwNDQwMDtodHRwczovL3d3dy5kYXRhcG9ydC5kZS9kYXRlbnNjaHV0ei87aHR0cHM6Ly93d3cuZGF0YXBvcnQuZGUvaW1wcmVzc3VtLztFTUFJTF9MTjs7b2xhZi5sZWllckBkYXRhcG9ydC5kZTs7dHJ1ZTwvenN0X29ubGluZV9kaWVuc3Q+PGdlYmlldGJlemVpY2hudW5nPkFsdGVuaG9sejwvZ2ViaWV0YmV6ZWljaG51bmc+PGRhdGVuc2NodXR6X3p1c3RpbW11bmc+dHJ1ZTwvZGF0ZW5zY2h1dHpfenVzdGltbXVuZz48d2FobD5MYW5kdGFnc3dhaGwgU2NobGVzd2lnIEhvaGxzdGVpbiA4LiBNYWkgMjAyMjwvd2FobD48d2VpdGVyZV93YWhsZW4+dHJ1ZTwvd2VpdGVyZV93YWhsZW4+PGVpbnNhdHpvcnQ+PGF1c3NlcmhhbGIgbGFiZWw9Ik5pY2h0IGltIGVpZ2VuZW4gV2FobGJlemlyayI+ZmFsc2U8L2F1c3NlcmhhbGI+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48d29obm9ydCBsYWJlbD0iTnVyIGluIFdvaG5vcnRuw6RoZSI+dHJ1ZTwvd29obm9ydD48L2VpbnNhdHpvcnQ+PGVyZmFocnVuZz5KYTwvZXJmYWhydW5nPjxmdW5rdGlvbj48YmVpc2l0emVyIGxhYmVsPSJCZWlzaXR6ZXI6aW4iPmZhbHNlPC9iZWlzaXR6ZXI+PHNjaHJpZnRmdWVocmVyIGxhYmVsPSJTY2hyaWZ0ZsO8aHJlcjppbiI+ZmFsc2U8L3NjaHJpZnRmdWVocmVyPjxzdGVsbF9zY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFNjaHJpZnRmw7xocmVyOmluIj5mYWxzZTwvc3RlbGxfc2NocmlmdGZ1ZWhyZXI+PHN0ZWxsX3dhaGx2b3JzdGVoZXIgbGFiZWw9IlN0ZWxsdmVydHJldGVuZGU6ciBXYWhsdm9yc3RlaGVyOmluIj5mYWxzZTwvc3RlbGxfd2FobHZvcnN0ZWhlcj48d2FobHZvcnN0ZWhlciBsYWJlbD0iV2FobHZvcnN0ZWhlcjppbiI+dHJ1ZTwvd2FobHZvcnN0ZWhlcj48L2Z1bmt0aW9uPjxwb3N0ZmFjaG5hY2hyaWNodD5TZWhyIGdlZWhydGUvciBBbnplaWdlbmRlKnIsICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHIgQW50cmFnIHd1cmRlIGFuIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZ2VzZW5kZXQuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0locmUgVm9yZ2FuZ3NudW1tZXIgdW5kIHp1c3TDpG5kaWdlIFN0ZWxsZSBmaW5kZW4gU2llIGltIGFuZ2Vow6RuZ3RlbiBEb2t1bWVudC4mbHQ7YnIvJmd0O0JpdHRlIGdlYmVuIFNpZSBkaWVzZSBWb3JnYW5nc251bW1lciBiZWkgYWxsZW4gQW5mcmFnZW4genUgSWhyZXIgQW56ZWlnZSBhbi4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtNaXQgZnJldW5kbGljaGVuIEdyw7zDn2VuJmx0O2JyLyZndDtJaHJlIE9ubGluZS1CZWjDtnJkZSZsdDtici8mZ3Q7Jmx0O2JyLyZndDs8L3Bvc3RmYWNobmFjaHJpY2h0PjxuYW1laWQvPjxyZXN0X3Jlc3BvbnNlX25hbWUvPjxtYWlsYm94Z3VpZC8+PG5hY2huYW1lPmZyZ2g8L25hY2huYW1lPjx2b3JuYW1lPmZyZ2g8L3Zvcm5hbWU+PGdlYnVydHNkYXR1bS8+PHN0YWF0ZW4+REU8L3N0YWF0ZW4+PHN0cmFzc2VfbnI+PHN0cmFzc2VfbnItaXRlbT48c3RyYXNzZT5zZmc8L3N0cmFzc2U+PGhhdXNudW1tZXI+MjI8L2hhdXNudW1tZXI+PGFkcmVzc3p1c2F0ei8+PC9zdHJhc3NlX25yLWl0ZW0+PC9zdHJhc3NlX25yPjxwbHpfb3J0PjxwbHpfb3J0LWl0ZW0+PHBvc3RsZWl0emFobD4yMjIyMjwvcG9zdGxlaXR6YWhsPjxvcnQ+c2RmZ3NmZDwvb3J0PjwvcGx6X29ydC1pdGVtPjwvcGx6X29ydD48ZW1haWw+c2RmZ3NAYXNkZi5jb208L2VtYWlsPjx0ZWxlZm9uPjIzNDwvdGVsZWZvbj48T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjI1NDQwNDQwMDwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+RGF0YXBvcnQtQUZNLVNILUVudHdpY2tsdW5nPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+PHp1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfbmIvPjx6dXN0X2tvbnRha3RzeXN0ZW1rZW5udW5nX2xuPm9sYWYubGVpZXJAZGF0YXBvcnQuZGU8L3p1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfbG4+PHp1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfd3MvPjx6dXN0X3N0cmFzc2U+QWx0ZW5ob2x6ZXIgU3RyYcOfZTwvenVzdF9zdHJhc3NlPjx6dXN0X2hhdXNudW1tZXI+MTA8L3p1c3RfaGF1c251bW1lcj48enVzdF9wb3N0bGVpdHphaGw+MjQxNjE8L3p1c3RfcG9zdGxlaXR6YWhsPjxvcnRJRD45MDA3MTc4PC9vcnRJRD48enVzdF9vcnQ+QWx0ZW5ob2x6PC96dXN0X29ydD48enVzdF90ZWxlZm9ubnVtbWVyPis0OSA0MCA0Mjg0Ni00MDMyPC96dXN0X3RlbGVmb25udW1tZXI+PHp1c3RfZmF4bnVtbWVyLz48enVzdF9lbWFpbGFkcmVzc2U+UmFtaW4uSmV5cmFuaUBkYXRhcG9ydC5kZTwvenVzdF9lbWFpbGFkcmVzc2U+PHp1c3RlbGx1bmdfbmFjaHJpY2h0ZW5icm9rZXI+ZmFsc2U8L3p1c3RlbGx1bmdfbmFjaHJpY2h0ZW5icm9rZXI+PHp1c3RlbGx1bmdfZWxla3Ryb25pc2NoPnRydWU8L3p1c3RlbGx1bmdfZWxla3Ryb25pc2NoPjwvbXlGb3JtPg==</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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DQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL091dGxpbmVzIDIzIDAgUg0KL1BhZ2VzIDEwIDAgUg0KPj4KZW5kb2JqCjI2IDAgb2JqCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTEyMDgxMTUxNTYrMDEnMDAnKQ0KL1Byb2R1Y2VyIDxmZWZmMDA0YzAwNjkwMDYyMDA3MjAwNjUwMDRmMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNjAwMmUwMDM0Pg0KL0F1dGhvciA8ZmVmZjAwNGIwMDZjMDA2MTAwNzUwMDczMDAyMDAwNTcwMDYxMDA2ZTAwNmUwMDY1MDA3Mj4NCj4+CmVuZG9iagp4cmVmDQowIDI3IA0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDY3IDAwMDAwIG4NCjAwMDAwMDAyNTEgMDAwMDAgbg0KMDAwMDAwMTcxMCAwMDAwMCBuDQowMDAwMDAxNzMwIDAwMDAwIG4NCjAwMDAwMDE5MTQgMDAwMDAgbg0KMDAwMDAwMzQ4OCAwMDAwMCBuDQowMDAwMDAzNTA4IDAwMDAwIG4NCjAwMDAwMDM2OTIgMDAwMDAgbg0KMDAwMDAwNDYzNiAwMDAwMCBuDQowMDAwMDA0NjU1IDAwMDAwIG4NCjAwMDAwMDQ3NzcgMDAwMDAgbg0KMDAwMDAxODQ2MSAwMDAwMCBuDQowMDAwMDE4NDgzIDAwMDAwIG4NCjAwMDAwMTg2OTcgMDAwMDAgbg0KMDAwMDAxOTMxMyAwMDAwMCBuDQowMDAwMDE5Nzg4IDAwMDAwIG4NCjAwMDAwMjc0NDUgMDAwMDAgbg0KMDAwMDAyNzQ2NiAwMDAwMCBuDQowMDAwMDI3Njg3IDAwMDAwIG4NCjAwMDAwMjgxMDEgMDAwMDAgbg0KMDAwMDAyODM4NSAwMDAwMCBuDQowMDAwMDI4NDMyIDAwMDAwIG4NCjAwMDAwMjg0OTQgMDAwMDAgbg0KMDAwMDAyODU1NiAwMDAwMCBuDQowMDAwMDI4NzQ5IDAwMDAwIG4NCjAwMDAwMjg4NzYgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9JbmZvIDI2IDAgUg0KL0lEIFsgPGFhNThmNDE1OWVlNzI2NWY1MTg0N2ZiNmU1NmZmYTA1PiA8Y2Q3MmFiZTE4ZDk4NGM4NjAyMTJjOTU5NzM5MzNiNmU+IF0NCi9Sb290IDI1IDAgUg0KL1NpemUgMjcNCi9Eb2NDaGVja3N1bSAvOTA3Q0UzMzczRTZCREE3QzVERjk1NUNGMERBNEU3ODYNCj4+DQpzdGFydHhyZWYNCjI5MTIzDQolJUVPRg0K</content> - <contentType>application/pdf</contentType> - <id>myForm-pdf</id> - <name>Wahlhelferin.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CjwvaGVhZD4KPGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgZm9udC1zaXplOiAxMXB0OyI+CjxwPlNlaHIgZ2VlaHJ0ZS9yIFNhY2hiZWFyYmVpdGVyKmluPC9wPgo8cD5FaW4gbmV1ZXIgQW50cmFnIHd1cmRlIGdlc3RlbGx0PC9wPgo8cD5BY2h0dW5nOiBBbnR3b3J0ZW4gU2llIG5pY2h0IGF1ZiBkaWVzZSBFLU1haWwuIERpZSBFLU1haWwgd3VyZGUgYXV0b21hdGlzY2ggZXJzdGVsbHQuIEVpbmUgQW50d29ydCB3aXJkIG5pY2h0IGJlYXJiZWl0ZXQgdW5kIGdlbGVzZW4hLiBCaXR0ZSB3ZW5kZW4gU2llIHNpY2ggYW4gZGVuIGltIEFudHJhZyBnZW5hbm50ZW4gQW50cmFnc3RlbGxlci48L3A+CjwvYm9keT4KPC9odG1sPgo=</content> - <contentType>text/xml</contentType> - <id>EmailBodySachbearbeiterTemplate</id> - <name>EmailBodySachbearbeiterTemplate.xml</name> - </attachments> - <caller/> - <client>Schleswig-Holstein</client> - <clientId>land</clientId> - <customParameters> - <key>EmailAdresseSachbearbeiter</key> - <value>markus.fraedrich@dataport.de</value> - </customParameters> - <customParameters> - <key>EmailSubjectSachbearbeiterTemplate</key> - <value>Wahlhelferin</value> - </customParameters> - <customer>Schleswig-Holstein</customer> - <customerId>sh</customerId> - <form>Wahlhelferin werden</form> - <formId>odp_wahlhelfer/odp_wahlhelfer</formId> - <id>20211208426920179200</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> - <sender>stage.afm.schleswig-holstein.de</sender> - <timestamp>2021-12-08T11:51:57.542+01:00</timestamp> - <username/> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJeG1sbnM6dT0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS91c2VyIgoJdDp1dWlkPSI4OGRhYTdkNC0xOTNhLTQzZmUtYjc1OC0wZDk0NGExOTk3YTQiCgl0OmlkPSIyMDIxMDkyMTM2MDQ0MDkyNzAwMiIgdDp0aW1lc3RhbXA9IjIwMjEtMDktMjFUMDg6MDA6NDQuMzUzWiIKCXQ6c2VuZGVyPSJzdGFnZS5hZm0uc2NobGVzd2lnLWhvbHN0ZWluLmRlIgoJdDpmb3JtPSJLbGVpbmVyIFdhZmZlbHNjaGVpbiBnZW0uIMKnIDEwIEFicy4gNCBTYXR6IDQgV2FmZmVuZ2VzZXR6IChXYWZmRykiCgl0OmZvcm0taWQ9IndhZmZlbi9rbGVpbmVyV2FmZmVuc2NoZWluIgoJdDpjdXN0b21lcj0iRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIiIHQ6Y3VzdG9tZXItaWQ9ImVhLXNoIgoJdDpjbGllbnQ9IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiCgl1OkZhbWlseU5hbWVzPSJGaXNjaGVyIiB1OlByaW5jaXBhbFR5cGU9IkNpdGl6ZW4iCgl1OlVzZXJuYW1lPSJzdXNhbm5lLmZpc2NoZXIuZGF0YXBvcnRAZ21haWwuY29tIgoJdTpDaXRpemVuUHJvZmlsZVR5cGU9IlN0YW5kYXJkIgoJdTp1c2VybmFtZT0iZjIyZTExZjctMTJjNS00NTdjLTEwYzQtMDhkOTdjZDVjZmNhIgoJdTpHaXZlbk5hbWVzPSJTdXNhbm5lIiB1OkFzc3VyYW5jZUxldmVsPSJMb3ciCgl1OmRpc3BsYXlOYW1lPSJTdXNhbm5lIEZpc2NoZXIiCgl1Om1haWxBZGRyZXNzPSJzdXNhbm5lLmZpc2NoZXIuZGF0YXBvcnRAZ21haWwuY29tIgoJdTpFbWFpbEFkZHJlc3M9InN1c2FubmUuZmlzY2hlci5kYXRhcG9ydEBnbWFpbC5jb20iCgl1OmZpcnN0TmFtZT0iU3VzYW5uZSIgdTpsYXN0TmFtZT0iRmlzY2hlciIgdDpyZXF1aXJlZC1sb2dpbi1sZXZlbD0iTE9XIgoJdDplZmZlY3RpdmUtbG9naW4tbGV2ZWw9IkxPVyI+Cgk8S29udGFrdHN5c3RlbVR5cEE+MjMzMDM0NjAwPC9Lb250YWt0c3lzdGVtVHlwQT4KCTxLb250YWt0c3lzdGVtVHlwQj4yMzMwMzQ2MDE8L0tvbnRha3RzeXN0ZW1UeXBCPgoJPEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD4KCTxuYW1laWQ+ZjIyZTExZjctMTJjNS00NTdjLTEwYzQtMDhkOTdjZDVjZmNhPC9uYW1laWQ+Cgk8cmVzdF9yZXNwb25zZV9uYW1lPgoJCVt7Im1lbWJlcmNvbnRleHQiOiJmMjJlMTFmNy0xMmM1LTQ1N2MtMTBjNC0wOGQ5N2NkNWNmY2EiLCJtZW1iZXJzY29wZSI6W3sidGVuYW50IjoiU0giLCJtYWlsYm94Z3VpZCI6IjZlZWI3Yzg3LTVmYTctNDE2ZC1iNzY5LTE1MGUzNGE2M2UzZCIsIm1haWxib3huYW1lIjoiIiwibWFpbGJveGRlc2NyaXB0aW9uIjoiIiwibWFpbGJveHR5cGUiOjEsImd1aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJpZCI6MTc2MTQ2NzZ9XX1dCgk8L3Jlc3RfcmVzcG9uc2VfbmFtZT4KCTxtYWlsYm94Z3VpZD42ZWViN2M4Ny01ZmE3LTQxNmQtYjc2OS0xNTBlMzRhNjNlM2Q8L21haWxib3hndWlkPgoJPGFudHJhZ3N0ZWxsZXI+CgkJPHBlcnNfYW5yZWRlPkZyYXUkMDI8L3BlcnNfYW5yZWRlPgoJCTxwZXJzX25hY2huYW1lPkZpc2NoZXI8L3BlcnNfbmFjaG5hbWU+CgkJPHBlcnNfdm9ybmFtZT5TdXNhbm5lPC9wZXJzX3Zvcm5hbWU+CgkJPHBlcnNfZ2VidXJ0c25hbWU+RmlzY2hlcjwvcGVyc19nZWJ1cnRzbmFtZT4KCQk8cGVyc19nZWJ1cnRzZGF0dW0+MjAwMC0wMS0wMTwvcGVyc19nZWJ1cnRzZGF0dW0+CgkJPHBlcnNfZ2VidXJ0c29ydD5IYW1idXJnPC9wZXJzX2dlYnVydHNvcnQ+CgkJPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfZ2VidXJ0c2xhbmQ+CgkJPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfYW5yZWRlPkZyYXU8L2JfYW5yZWRlPgoJCTxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDI8L2JfYW5yZWRlX3NjaGx1ZXNzZWxucj4KCQk8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KCQk8Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KCQk8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+CgkJPHNoX3N0cmFzc2U+SGF1cHRzdHJhw59lPC9zaF9zdHJhc3NlPgoJCTxzaF9oYXVzbnVtbWVyPjE8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yMzc5NTwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3NDA0JDAxMDYwMDA1PC9vcnRfYXVzd2FobD4KCQk8b3J0PkJhZCBTZWdlYmVyZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3NDA0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+QmFkIFNlZ2ViZXJnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDYwMDA1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXIgLz4KCQk8a29udF9tb2JpbG51bW1lciAvPgoJCTxrb250X3RlbGVmYXhudW1tZXIgLz4KCQk8a29udF9lbWFpbD5zdXNhbm5lLmZpc2NoZXIuZGF0YXBvcnRAZ21haWwuY29tPC9rb250X2VtYWlsPgoJCTxrb250X2RlbWFpbCAvPgoJCTxwZXJzb2VubGljaGVFaWdudW5nPgoJCQk8bWFlbmdlbHZvcmhhbmRlbj50cnVlPC9tYWVuZ2Vsdm9yaGFuZGVuPgoJCQk8ZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+dHJ1ZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz50cnVlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz4KCQkJPG1hZW5nZWxCZXNjaHJlaWJ1bmc+c2Q8L21hZW5nZWxCZXNjaHJlaWJ1bmc+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbmJlc2NocmVpYnVuZz5zPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbmJlc2NocmVpYnVuZz4KCQkJPG1pdGdsaWVkc2NoYWZ0YmVzY2hyZWlidW5nPnNkPC9taXRnbGllZHNjaGFmdGJlc2NocmVpYnVuZz4KCQk8L3BlcnNvZW5saWNoZUVpZ251bmc+Cgk8L2FudHJhZ3N0ZWxsZXI+Cgk8R2ViaWV0SUQ+OTAwNzQwNDwvR2ViaWV0SUQ+Cgk8enVzdGFlbmRpZ2VzdGVsbGU+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjI0NjM3ODA4MjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDMwMjI5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5PcmRudW5ncy0gdW5kCgkJCUdld2VyYmVhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5IYW1idXJnZXIgU3RyLjwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj4zMDwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjIzNzk1PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDc0MDQ8L29ydElEPgoJCTxvcnQ+QmFkIFNlZ2ViZXJnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXIgLz4KCQk8dGVsZWZheG51bW1lciAvPgoJCTxlbWFpbGFkcmVzc2UgLz4KCQk8ZGVtYWlsYWRyZXNzZSAvPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmcgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6IC8+CgkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJPGxlaWthS0VZTElTVD45OTA4OTEyMjAwMTAwMDwvbGVpa2FLRVlMSVNUPgoJCTxhdXN3YWhsX3p1c3RlbGx1bmc+enVzZW5kZW48L2F1c3dhaGxfenVzdGVsbHVuZz4KCQk8Yl96dXN0ZWxsdW5nPgoJCQlCaXR0ZSBzZW5kZW4gU2llIG1pciBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gYW4gZGllIHZvbiBtaXIgYW5nZWdlYmVuZQoJCQlBZHJlc3NlIGRlciBIYXVwdHdvaG51bmcuCgkJPC9iX3p1c3RlbGx1bmc+Cgk8L3p1c3RhZW5kaWdlc3RlbGxlPgoJPGVtcGZhbmdlbmRlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyCgkJCVNjaGxlc3dpZy1Ib2xzdGVpbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJhc3NlPgoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CgkJPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPgoJCTxvcnRJRD45MDA2NDAyPC9vcnRJRD4KCQk8b3J0PktpZWw8L29ydD4KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgoJCTx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2U+ZWEtcG9zdHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0ZW1fa2VubnVuZz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4KCTwvZW1wZmFuZ2VuZGVzdGVsbGU+Cgk8ZXJrbGFlcnVuZ2VuPgoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgoJCTxjaGVja19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KCQk8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4KCQk8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCQkqIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbiBkZXMgZWxla3Ryb25pc2NoZW4KCQkJQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbiBlcmhvYmVuIHdlcmRlbiBrw7ZubmVuLgoJCTwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz4KCQkJR2Viw7xociBiZWkgQXVzc3RlbGx1bmcgZGVzIGtsZWluZW4gV2FmZmVuc2NoZWluczogNjAsMDAgRXVyby4KCQkJQmVhcmJlaXR1bmdzZ2Viw7xociBiZWkgVmVyc2FndW5nOiA0NSwwMCBFdXJvLiBTaWUgc2luZCBnZW3DpMOfIMKnIDM5CgkJCVdhZmZHIHZlcnBmbGljaHRldCwgZGVyIHp1c3TDpG5kaWdlbiBCZWjDtnJkZSBkaWUgenVyIER1cmNoZsO8aHJ1bmcgZGVzCgkJCUdlc2V0emVzIGVyZm9yZGVybGljaGVuIEF1c2vDvG5mdGUgenUgZXJ0ZWlsZW4uIFp1ciBQcsO8ZnVuZyBJaHJlcgoJCQl3YWZmZW5yZWNodGxpY2hlbiBadXZlcmzDpHNzaWdrZWl0IHVuZCBFaWdudW5nIGhvbHQgZGllIEJlaMO2cmRlIGVpbmUKCQkJdW5iZXNjaHLDpG5rdGUgQXVza3VuZnQgYXVzIGRlbSBCdW5kZXN6ZW50cmFscmVnaXN0ZXIsIGVpbmUgQXVza3VuZnQKCQkJYXVzIGRlbSB6ZW50cmFsZW4gc3RhYXRzYW53YWx0c2NoYWZ0bGljaGVuIFZlcmZhaHJlbnNyZWdpc3RlciwgZWluZQoJCQlTdGVsbHVuZ25haG1lIGRlciDDtnJ0bGljaGVuIFBvbGl6ZWlkaWVuc3RzdGVsbGUgdW5kIElocmVyCgkJCVdvaG5zaXR6Z2VtZWluZGUgZWluLgoJCTwvYl9nZWJ1ZWhyZW5faW50cm8+CgkJPGJfcmljaHRpZ2tlaXQ+KiBJY2ggYmVzdMOkdGlnZSBkaWUgUmljaHRpZ2tlaXQgbWVpbmVyIEFuZ2FiZW4uPC9iX3JpY2h0aWdrZWl0PgoJCTxiX2RhdGVuc2NodXR6PgoJCQkqIEljaCBlcmtsw6RyZSBtaWNoIGRhbWl0IGVpbnZlcnN0YW5kZW4sIGRhc3MgZGVyIEVpbmhlaXRsaWNoZXIKCQkJQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiB6dXIgRXJmw7xsbHVuZyBzZWluZXIgQXVmZ2FiZW4KCQkJbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcgoJCQlEYXRlbnNjaHV0ei1HcnVuZHZlcm9yZG51bmcgKERTLUdWTykgdW5kIGRlcwoJCQlMYW5kZXNkYXRlbnNjaHV0emdlc2V0emVzIFNjaGxlc3dpZy1Ib2xzdGVpbiAoTERTRy1TSCkgc3BlaWNoZXJ0LAoJCQl2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQoJCQlmw7xyIGRpZSBFbnRzY2hlaWR1bmcgenVzdMOkbmRpZ2UgU3RlbGxlIHdlaXRlcmxlaXRldC4gRWJlbnNvIGJpbiBpY2gKCQkJbWl0IGRlciByZWNodHNrb25mb3JtZW4gRGF0ZW52ZXJhcmJlaXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUKCQkJRWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIKCQkJZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50bG91YWxsZWUKCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyCgkJCWRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kCgkJCWRhdm9uIG5pY2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuCgkJCXp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcKCQkJS2VubnRuaXMgZXJsYW5ndC4KCQk8L2JfZGF0ZW5zY2h1dHo+CgkJPGJfbWlzc2JyYXVjaD4KCQkJKiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlciBOdXR6dW5nIGRpZQoJCQlEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMgYXVmZ2V6ZWljaG5ldCB1bmQKCQkJdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLgoJCTwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+CgkJCWh0dHA6Ly93YWZteHFhMDAyLmRwYW9yLmRlL3NoL2RhdGVuc2NodXR6L2RhdGVuc2NodXR6ZXJrbGFlcnVuZ0VBX2RlLmRvYwoJCTwvcG9saWN5dXJsPgoJPC9lcmtsYWVydW5nZW4+Cgk8bG9nb3VybD4KCQlodHRwOi8vd2FmbXhxYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jCgk8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5GcmF1PC9hbnJlZGU+CgkJCTx2b3JuYW1lPlN1c2FubmU8L3Zvcm5hbWU+CgkJCTxmYW1pbGllbm5hbWU+RmlzY2hlcjwvZmFtaWxpZW5uYW1lPgoJCQk8YW5zY2hyaWZ0PgoJCQkJPHN0cmFzc2U+SGF1cHRzdHJhw59lPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+MTwvaGF1c251bW1lcj4KCQkJCTxwb3N0ZmFjaCAvPgoJCQkJPHBvc3RsZWl0emFobD4yMzc5NTwvcG9zdGxlaXR6YWhsPgoJCQkJPG9ydD5CYWQgU2VnZWJlcmc8L29ydD4KCQkJCTxvcnRzdGVpbCAvPgoJCQkJPHp1c2F0eiAvPgoJCQkJPHN0YWF0PkRldXRzY2hsYW5kPC9zdGFhdD4KCQkJPC9hbnNjaHJpZnQ+CgkJCTxrb250YWt0PgoJCQkJPHRlbGVmb25udW1tZXIgLz4KCQkJCTxtb2JpbG51bW1lciAvPgoJCQkJPHRlbGVmYXhudW1tZXIgLz4KCQkJCTxlbWFpbGFkcmVzc2U+c3VzYW5uZS5maXNjaGVyLmRhdGFwb3J0QGdtYWlsLmNvbTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2UgLz4KCQkJPC9rb250YWt0PgoJCTwvYW5zcHJlY2hwYXJ0bmVyPgoJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+CgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPgoJCQkJPGF1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KCQkJCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjEyMzQ1Njc4PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5PcmRudW5ncy0gdW5kCgkJCQkJCUdld2VyYmVhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDc0MDQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPkJhZCBTZWdlYmVyZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MTIyMDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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</content> - <contentType>image/jpeg</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>Helge1.jpg</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> - <contentType>application/vnd.oasis.opendocument.text</contentType> - <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> - <name>Helgetext2.odt</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>OZG-1362Formular</form> - <formId>OZG-1362Formular</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCiAgICB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgogICAgdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCiAgICB0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKICAgIHQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgogICAgdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKICAgIHQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKICAgIHQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KICAgIDxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+CiAgICA8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KICAgIDxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CiAgICA8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KICAgIDxhbnRyYWdzdGVsbGVyPgogICAgICAgIDxwZXJzX2FucmVkZT5IZXJyJDAzPC9wZXJzX2FucmVkZT4KICAgICAgICA8cGVyc19uYWNobmFtZT5UZXN0ZXJtYW5uPC9wZXJzX25hY2huYW1lPgogICAgICAgIDxwZXJzX3Zvcm5hbWU+TWF4PC9wZXJzX3Zvcm5hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L3BlcnNfZ2VidXJ0c25hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2RhdHVtPjE5OTUtMDMtMjE8L3BlcnNfZ2VidXJ0c2RhdHVtPgogICAgICAgIDxwZXJzX2dlYnVydHNvcnQ+RmxlbnNidXJnPC9wZXJzX2dlYnVydHNvcnQ+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfZ2VidXJ0c2xhbmQ+CiAgICAgICAgPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CiAgICAgICAgPGJfYW5yZWRlPkhlcnI8L2JfYW5yZWRlPgogICAgICAgIDxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDM8L2JfYW5yZWRlX3NjaGx1ZXNzZWxucj4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CiAgICAgICAgPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KICAgICAgICA8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+CiAgICAgICAgPHNoX3N0cmFzc2U+S8O2bmlnc3dlZzwvc2hfc3RyYXNzZT4KICAgICAgICA8c2hfaGF1c251bW1lcj43NDwvc2hfaGF1c251bW1lcj4KICAgICAgICA8c2hfcGx6PjI0ODM3PC9zaF9wbHo+CiAgICAgICAgPG9ydF9hdXN3YWhsPjkwMDczMTQkMDEwNTkwNzU8L29ydF9hdXN3YWhsPgogICAgICAgIDxvcnQ+U2NobGVzd2lnPC9vcnQ+CiAgICAgICAgPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgogICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgIDxHZWJpZXRHTlI5NF9HTlI+MDEwNTkwNzU8L0dlYmlldEdOUjk0X0dOUj4KICAgICAgICA8c3RhYXQ+MDAwPC9zdGFhdD4KICAgICAgICA8aXNvMzE2Nm51bWVyaXNjaD4yNzY8L2lzbzMxNjZudW1lcmlzY2g+CiAgICAgICAgPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPgogICAgICAgIDxrb250X21vYmlsbnVtbWVyPis0OSAxMjM8L2tvbnRfbW9iaWxudW1tZXI+CiAgICAgICAgPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4KICAgICAgICA8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPgogICAgICAgIDxwZXJzb2VubGljaGVFaWdudW5nPgogICAgICAgICAgICA8bWFlbmdlbHZvcmhhbmRlbj5mYWxzZTwvbWFlbmdlbHZvcmhhbmRlbj4KICAgICAgICAgICAgPGVybWl0dGx1bmdzdmVyZmFocmVuPmZhbHNlPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbj4KICAgICAgICAgICAgPE1pdGdsaWVkc2NoYWZ0SW5WZXJib3Rlcm5lclZlcmVpbmlndW5nPmZhbHNlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz4KICAgICAgICA8L3BlcnNvZW5saWNoZUVpZ251bmc+CiAgICA8L2FudHJhZ3N0ZWxsZXI+CiAgICA8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CiAgICA8enVzdGFlbmRpZ2VzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTUzNTY2OTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+S3JlaXMKICAgICAgICAgICAgU2NobGVzd2lnLUZsZW5zYnVyZy9LcmVpc3ZlcndhbHR1bmcgLSBBbGxnZW1laW5lCiAgICAgICAgICAgIE9yZG51bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgPHN0cmFzc2U+RmxlbnNidXJnZXIgU3RyYcOfZTwvc3RyYXNzZT4KICAgICAgICA8aGF1c251bW1lcj43PC9oYXVzbnVtbWVyPgogICAgICAgIDxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KICAgICAgICA8b3J0SUQ+OTAwNzMxNDwvb3J0SUQ+CiAgICAgICAgPG9ydD5TY2hsZXN3aWc8L29ydD4KICAgICAgICA8dGVsZWZvbm51bW1lcj4wNDYyMSA4Ny0wPC90ZWxlZm9ubnVtbWVyPgogICAgICAgIDx0ZWxlZmF4bnVtbWVyPjA0NjIxIDg3LTM2NjwvdGVsZWZheG51bW1lcj4KICAgICAgICA8ZW1haWxhZHJlc3NlPkdlZmFocmVuYWJ3ZWhyQEtpZWwuZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICA8ZGVtYWlsYWRyZXNzZSAvPgogICAgICAgIDxrb250YWt0c3lzdGVtX2tlbm51bmc+YWZtc2g6OTUzNTY2OV9rbGVpbmVyV2FmZmVuc2NoZWluPC9rb250YWt0c3lzdGVtX2tlbm51bmc+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0eiAvPgogICAgICAgIDxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPgogICAgICAgIDxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD4KICAgICAgICA8YXVzd2FobF96dXN0ZWxsdW5nPmFiaG9sZW48L2F1c3dhaGxfenVzdGVsbHVuZz4KICAgICAgICA8Yl96dXN0ZWxsdW5nPkljaCBob2xlIGRlbiBLbGVpbmVuIFdhZmZlbnNjaGVpbiBzZWxic3QgYWIuPC9iX3p1c3RlbGx1bmc+CiAgICA8L3p1c3RhZW5kaWdlc3RlbGxlPgogICAgPGVtcGZhbmdlbmRlc3RlbGxlPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyCiAgICAgICAgICAgIFNjaGxlc3dpZy1Ib2xzdGVpbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgogICAgICAgIDxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJhc3NlPgogICAgICAgIDxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CiAgICAgICAgPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPgogICAgICAgIDxvcnRJRD45MDA2NDAyPC9vcnRJRD4KICAgICAgICA8b3J0PktpZWw8L29ydD4KICAgICAgICA8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgogICAgICAgIDx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CiAgICAgICAgPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CiAgICAgICAgPGRlbWFpbGFkcmVzc2U+ZWEtcG9zdHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgogICAgICAgIDxrb250YWt0c3lzdGVtX2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0ZW1fa2VubnVuZz4KICAgICAgICA8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4KICAgIDwvZW1wZmFuZ2VuZGVzdGVsbGU+CiAgICA8ZXJrbGFlcnVuZ2VuPgogICAgICAgIDxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgogICAgICAgIDxjaGVja19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KICAgICAgICA8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CiAgICAgICAgPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4KICAgICAgICA8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuCiAgICAgICAgICAgIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24gZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuCiAgICAgICAgICAgIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4uPC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+CiAgICAgICAgPGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIgYmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6CiAgICAgICAgICAgIDYwLDAwIEV1cm8uIEJlYXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4KICAgICAgICAgICAgU2llIHNpbmQgZ2Vtw6TDnyDCpyAzOSBXYWZmRyB2ZXJwZmxpY2h0ZXQsIGRlciB6dXN0w6RuZGlnZW4gQmVow7ZyZGUgZGllIHp1cgogICAgICAgICAgICBEdXJjaGbDvGhydW5nIGRlcyBHZXNldHplcyBlcmZvcmRlcmxpY2hlbiBBdXNrw7xuZnRlIHp1IGVydGVpbGVuLiBadXIKICAgICAgICAgICAgUHLDvGZ1bmcgSWhyZXIgd2FmZmVucmVjaHRsaWNoZW4gWnV2ZXJsw6Rzc2lna2VpdCB1bmQgRWlnbnVuZyBob2x0IGRpZQogICAgICAgICAgICBCZWjDtnJkZSBlaW5lIHVuYmVzY2hyw6Rua3RlIEF1c2t1bmZ0IGF1cyBkZW0gQnVuZGVzemVudHJhbHJlZ2lzdGVyLAogICAgICAgICAgICBlaW5lIEF1c2t1bmZ0IGF1cyBkZW0gemVudHJhbGVuIHN0YWF0c2Fud2FsdHNjaGFmdGxpY2hlbgogICAgICAgICAgICBWZXJmYWhyZW5zcmVnaXN0ZXIsIGVpbmUgU3RlbGx1bmduYWhtZSBkZXIgw7ZydGxpY2hlbgogICAgICAgICAgICBQb2xpemVpZGllbnN0c3RlbGxlIHVuZCBJaHJlciBXb2huc2l0emdlbWVpbmRlIGVpbi48L2JfZ2VidWVocmVuX2ludHJvPgogICAgICAgIDxiX3JpY2h0aWdrZWl0PiogSWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGlna2VpdD4KICAgICAgICA8Yl9kYXRlbnNjaHV0ej4qIEljaCBlcmtsw6RyZSBtaWNoIGRhbWl0IGVpbnZlcnN0YW5kZW4sIGRhc3MgZGVyCiAgICAgICAgICAgIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiB6dXIgRXJmw7xsbHVuZyBzZWluZXIKICAgICAgICAgICAgQXVmZ2FiZW4gbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcgogICAgICAgICAgICBEYXRlbnNjaHV0ei1HcnVuZHZlcm9yZG51bmcgKERTLUdWTykgdW5kIGRlcwogICAgICAgICAgICBMYW5kZXNkYXRlbnNjaHV0emdlc2V0emVzIFNjaGxlc3dpZy1Ib2xzdGVpbiAoTERTRy1TSCkgc3BlaWNoZXJ0LAogICAgICAgICAgICB2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQogICAgICAgICAgICBmw7xyIGRpZSBFbnRzY2hlaWR1bmcgenVzdMOkbmRpZ2UgU3RlbGxlIHdlaXRlcmxlaXRldC4gRWJlbnNvIGJpbiBpY2gKICAgICAgICAgICAgbWl0IGRlciByZWNodHNrb25mb3JtZW4gRGF0ZW52ZXJhcmJlaXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZQogICAgICAgICAgICB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUKICAgICAgICAgICAgRWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIKICAgICAgICAgICAgZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50bG91YWxsZWUKICAgICAgICAgICAgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyCiAgICAgICAgICAgIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kCiAgICAgICAgICAgIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4KICAgICAgICAgICAgRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuCiAgICAgICAgICAgIHp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcKICAgICAgICAgICAgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+CiAgICAgICAgPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyCiAgICAgICAgICAgIE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRnZXLDpHRlcwogICAgICAgICAgICBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21pc3NicmF1Y2g+CiAgICAgICAgPHBvbGljeXVybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9kYXRlbnNjaHV0ei9kYXRlbnNjaHV0emVya2xhZXJ1bmdFQV9kZS5kb2M8L3BvbGljeXVybD4KICAgIDwvZXJrbGFlcnVuZ2VuPgogICAgPGxvZ291cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvbG9nb3Mva29wZl85MDY4ODczLmRvYzwvbG9nb3VybD4KICAgIDxmbT4KICAgICAgICA8YW5zcHJlY2hwYXJ0bmVyPgogICAgICAgICAgICA8ZmlybWVubmFtZSAvPgogICAgICAgICAgICA8YW5yZWRlPkhlcnI8L2FucmVkZT4KICAgICAgICAgICAgPHZvcm5hbWU+TWF4PC92b3JuYW1lPgogICAgICAgICAgICA8ZmFtaWxpZW5uYW1lPlRlc3Rlcm1hbm48L2ZhbWlsaWVubmFtZT4KICAgICAgICAgICAgPGFuc2NocmlmdD4KICAgICAgICAgICAgICAgIDxzdHJhc3NlPkvDtm5pZ3N3ZWc8L3N0cmFzc2U+CiAgICAgICAgICAgICAgICA8aGF1c251bW1lcj43NDwvaGF1c251bW1lcj4KICAgICAgICAgICAgICAgIDxwb3N0ZmFjaCAvPgogICAgICAgICAgICAgICAgPHBvc3RsZWl0emFobD4yNDgzNzwvcG9zdGxlaXR6YWhsPgogICAgICAgICAgICAgICAgPG9ydD5TY2hsZXN3aWc8L29ydD4KICAgICAgICAgICAgICAgIDxvcnRzdGVpbCAvPgogICAgICAgICAgICAgICAgPHp1c2F0eiAvPgogICAgICAgICAgICAgICAgPHN0YWF0PkRldXRzY2hsYW5kPC9zdGFhdD4KICAgICAgICAgICAgPC9hbnNjaHJpZnQ+CiAgICAgICAgICAgIDxrb250YWt0PgogICAgICAgICAgICAgICAgPHRlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmb25udW1tZXI+CiAgICAgICAgICAgICAgICA8bW9iaWxudW1tZXI+KzQ5IDEyMzwvbW9iaWxudW1tZXI+CiAgICAgICAgICAgICAgICA8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZheG51bW1lcj4KICAgICAgICAgICAgICAgIDxlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9lbWFpbGFkcmVzc2U+CiAgICAgICAgICAgICAgICA8ZGVtYWlsYWRyZXNzZT5tYXgudGVzdGVybWFubkBnbXguZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KICAgICAgICAgICAgPC9rb250YWt0PgogICAgICAgIDwvYW5zcHJlY2hwYXJ0bmVyPgogICAgICAgIDx2ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+CiAgICAgICAgICAgIDx2ZXJ3YWx0dW5nc2xlaXN0dW5nPgogICAgICAgICAgICAgICAgPGF1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KICAgICAgICAgICAgICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KICAgICAgICAgICAgICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCiAgICAgICAgICAgICAgICAgICAgICAgIFNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQogICAgICAgICAgICAgICAgICAgICAgICBPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPC9hdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CiAgICAgICAgICAgICAgICA8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CiAgICAgICAgICAgICAgICA8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KICAgICAgICAgICAgICAgIDxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CiAgICAgICAgICAgICAgICA8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KICAgICAgICAgICAgICAgIDxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD4KICAgICAgICAgICAgICAgIDxsZWlrYUJFWkVJQ0hOVU5HIC8+CiAgICAgICAgICAgIDwvdmVyd2FsdHVuZ3NsZWlzdHVuZz4KICAgICAgICA8L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4KICAgIDwvZm0+CjwvbXlGb3JtPg==</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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</content> - <contentType>image/jpeg</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>Helge1.jpg</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> - <contentType>application/vnd.oasis.opendocument.text</contentType> - <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> - <name>Helgetext2.odt</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServerVonTorsten</form> - <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiDQoJeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiINCgl0OmlkPSIyMDIwMTIwMjU3NTIzMDQ0MzAwNCIgdDp0aW1lc3RhbXA9IjIwMjAtMTItMDJUMTQ6NTg6NDMuNzkwWiINCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIgdDpmb3JtPSJHZXdlcmJlYW5tZWxkdW5nIg0KCXQ6Zm9ybS1pZD0iZUdld2VyYmUvZUdld2VyYmVBbm1lbGR1bmciDQoJdDpjdXN0b21lcj0iRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIiIHQ6Y3VzdG9tZXItaWQ9ImVhLXNoIg0KCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4NCgk8R3VlbHRpZ0FiPjIwMjAtMTEtMDI8L0d1ZWx0aWdBYj4NCgk8R3J1bmRBbm1lbGR1bmdTY2hsdWVzc2VsPjAxPC9HcnVuZEFubWVsZHVuZ1NjaGx1ZXNzZWw+DQoJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgk8TmllZGVybGFzc3VuZ0FydD4xPC9OaWVkZXJsYXNzdW5nQXJ0Pg0KCTxJc3RSZWlzZWdld2VyYmU+ZmFsc2U8L0lzdFJlaXNlZ2V3ZXJiZT4NCgk8QmV0cmllYkFydEluZHVzdHJpZT5mYWxzZTwvQmV0cmllYkFydEluZHVzdHJpZT4NCgk8QmV0cmllYkFydEhhbmR3ZXJrPmZhbHNlPC9CZXRyaWViQXJ0SGFuZHdlcms+DQoJPEJldHJpZWJBcnRIYW5kZWw+ZmFsc2U8L0JldHJpZWJBcnRIYW5kZWw+DQoJPEJldHJpZWJBcnRTb25zdGlnZXM+dHJ1ZTwvQmV0cmllYkFydFNvbnN0aWdlcz4NCgk8cmVjaHRzZm9ybT5uaWNodCBlaW5nZXRyYWdlbmVzIEVpbnplbHVudGVybmVobWVuPC9yZWNodHNmb3JtPg0KCTxyZm0+MTgwPC9yZm0+DQoJPHJlZ2lzdGVyYXJ0IC8+DQoJPG1pbjJnZXNlbGxzY2hhZnRlcj5mYWxzZTwvbWluMmdlc2VsbHNjaGFmdGVyPg0KCTxnZXNldHpsaWNoZXJ2ZXJ0cmV0ZXI+SW5oYWJlcjwvZ2VzZXR6bGljaGVydmVydHJldGVyPg0KCTxCZXRyaWViPg0KCQk8SUQ+OTEwODM4PC9JRD4NCgkJPGdlc2NoYWVmdHNiZXplaWNobnVuZz5PWkctQ29uc3VsdGluZzwvZ2VzY2hhZWZ0c2JlemVpY2hudW5nPg0KCQk8RWludHJhZ3VuZ1BMWiAvPg0KCQk8RWludHJhZ3VuZ09ydCAvPg0KCQk8R2VyaWNodFNjaGx1ZXNzZWwgLz4NCgk8L0JldHJpZWI+DQoJPHNoX3N0cmFzc2U+UmV2ZW50bG91YWxsZTwvc2hfc3RyYXNzZT4NCgk8c2hfenVzYXR6IC8+DQoJPHNoX2hhdXNudW1tZXI+Njwvc2hfaGF1c251bW1lcj4NCgk8c2hfcGx6PjI0MTA1PC9zaF9wbHo+DQoJPG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPg0KCTxzaF9vcnRzdGVpbCAvPg0KCTxvcnQ+S2llbDwvb3J0Pg0KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJPEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPg0KCTxzdGFhdD4wMDA8L3N0YWF0Pg0KCTxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD4NCgk8a29udF90ZWxlZm9ubnVtbWVyPjA0MzEgMTIzPC9rb250X3RlbGVmb25udW1tZXI+DQoJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCTxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4NCgk8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPg0KCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgk8Yl9rb250X3ZvcndhaGxfdGVsZWZvbj4wNDMxPC9iX2tvbnRfdm9yd2FobF90ZWxlZm9uPg0KCTxiX2tvbnRfdGVsZWZvbj4xMjM8L2Jfa29udF90ZWxlZm9uPg0KCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgk8Yl9rb250X3RlbGVmYXg+OTY1NDwvYl9rb250X3RlbGVmYXg+DQoJPFRhZXRpZ2tlaXRlbkdlc2FtdD4NCgkJPFRhZXRpZ2tlaXRlbkdlc2FtdC1pdGVtPg0KCQkJPGF1c3dhaGxfb2JlcmJlZ3JpZmY+UzwvYXVzd2FobF9vYmVyYmVncmlmZj4NCgkJCTxhdXN3YWhsX2thdGVnb3JpZT45NjwvYXVzd2FobF9rYXRlZ29yaWU+DQoJCQk8Y2hlY2tfdGFldGlna2VpdHNzY2h3ZXJwdW5rdD50cnVlPC9jaGVja190YWV0aWdrZWl0c3NjaHdlcnB1bmt0Pg0KCQkJPGFfdGFldGlna2VpdD5PWkctRW50d2lja2x1bmc8L2FfdGFldGlna2VpdD4NCgkJCTxiX29iZXJiZWdyaWZmPlMgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIERpZW5zdGxlaXN0dW5nZW48L2Jfb2JlcmJlZ3JpZmY+DQoJCQk8Yl9rYXRlZ29yaWU+OTYgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIMO8YmVyd2llZ2VuZCBwZXJzw7ZubGljaGVuDQoJCQkJRGllbnN0bGVpc3R1bmdlbjwvYl9rYXRlZ29yaWU+DQoJCQk8Yl91bnRlcmtsYXNzZT45Ni4wOS4wIEVyYnJpbmd1bmcgdm9uIHNvbnN0aWdlbiBEaWVuc3RsZWlzdHVuZ2VuIGEuDQoJCQkJbi4gZy48L2JfdW50ZXJrbGFzc2U+DQoJCQk8Yl91bnRlcmtsYXNzZV9zY2hsdWVzc2VsPjk2LjA5LjA8L2JfdW50ZXJrbGFzc2Vfc2NobHVlc3NlbD4NCgkJCTxiX2lua2w+LSBUw6R0aWdrZWl0ZW4gdm9uIEFzdHJvbG9naW5uZW4sIEFzdHJvbG9nZW4gU3Bpcml0aXN0aW5uZW51bmQNCgkJCQlTcGlyaXRpc3RlbiAtIEVyYnJpbmd1bmcgcGVyc8O2bmxpY2hlciBEaWVuc3RsZWlzdHVuZ2VuIHdpZQ0KCQkJCUJlZ2xlaXRkaWVuc3RlLCBIZWlyYXRzLSB1bmQgUGFydG5lcnZlcm1pdHRsdW5nIC0gQmV0cmV1dW5nIHZvbg0KCQkJCUhhdXN0aWVyZW4gd2llIFVudGVyYnJpbmd1bmcsIFBmbGVnZSwgQmVhdWZzaWNodGlndW5nIHVuZCBEcmVzc3VyIC0NCgkJCQlUw6R0aWdrZWl0ZW4gdm9uIEFobmVuZm9yc2NodW5nc2luc3RpdHV0ZW4gLSBUw6R0aWdrZWl0ZW4gdm9uDQoJCQkJVMOkdG93aWVydW5ncy0gdW5kIFBpZXJjaW5nc3R1ZGlvcyAtIFTDpHRpZ2tlaXRlbiB2b24gU2NodWhwdXR6ZXJpbm5lbg0KCQkJCXVuZCBTY2h1aHB1dHplcm4sIFRyw6RnZXJpbm5lbiB1bmQgVHLDpGdlcm4sIFBhcmtwbGF0enp1d2Vpc2VyaW5uZW4NCgkJCQl1bmQgLXp1d2Vpc2VybiB1c3cuIC0gQmV0cmllYiB2b24gbcO8bnpiZXRyaWViZW5lbiBHZXLDpHRlbiBmw7xyDQoJCQkJcGVyc8O2bmxpY2hlIERpZW5zdGxlaXN0dW5nZW4gd2llIEZvdG9hdXRvbWF0ZW4sIFdhYWdlbiwNCgkJCQlCbHV0ZHJ1Y2ttZXNzZXJuLCBTY2hsaWXDn2bDpGNoZXJuIHVzdy48L2JfaW5rbD4NCgkJPC9UYWV0aWdrZWl0ZW5HZXNhbXQtaXRlbT4NCgk8L1RhZXRpZ2tlaXRlbkdlc2FtdD4NCgk8SXN0TmViZW5lcndlcmI+ZmFsc2U8L0lzdE5lYmVuZXJ3ZXJiPg0KCTxBbnphaGxWb2xsemVpdEJlc2NoYWVmdGlndGU+MTwvQW56YWhsVm9sbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxBbnphaGxUZWlsemVpdEJlc2NoYWVmdGlndGU+MDwvQW56YWhsVGVpbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxCZXRlaWxpZ3RlUGVyc29uPg0KCQk8QmV0ZWlsaWd0ZVBlcnNvbi1pdGVtPg0KCQkJPHBlcnNvbkZ1bmt0aW9uPjE8L3BlcnNvbkZ1bmt0aW9uPg0KCQkJPHBlcnNvbkZ1bmt0aW9uVGV4dD5FaW56ZWxnZXdlcmJldHJlaWJlbmRlcjwvcGVyc29uRnVua3Rpb25UZXh0Pg0KCQkJPGRva3RvcmdyYWRTY2hsdWVzc2VsIC8+DQoJCQk8ZG9rdG9yZ3JhZCAvPg0KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+DQoJCQk8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+DQoJCQk8Z2VzY2hsZWNodFRleHQ+bcOkbm5saWNoPC9nZXNjaGxlY2h0VGV4dD4NCgkJCTxnZXNjaGxlY2h0PjE8L2dlc2NobGVjaHQ+DQoJCQk8Z2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L2dlYnVydHNuYW1lPg0KCQkJPGdlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9nZWJ1cnRzZGF0dW0+DQoJCQk8Z2VidXJ0c29ydD5GbGVuc2J1cmc8L2dlYnVydHNvcnQ+DQoJCQk8Z2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2dlYnVydHNsYW5kPg0KCQkJPGdlYnVydHNsYW5kU2NobHVlc2VsPjAwMDwvZ2VidXJ0c2xhbmRTY2hsdWVzZWw+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPjAwMDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPg0KCQkJPGFkcl9zdHJhc3NlPkvDtm5pZ3N3ZWc8L2Fkcl9zdHJhc3NlPg0KCQkJPGFkcl96dXNhdHo+QXBwYXJ0bWVudCAzMjE8L2Fkcl96dXNhdHo+DQoJCQk8YWRyX2hhdXNudW1tZXI+NzQ8L2Fkcl9oYXVzbnVtbWVyPg0KCQkJPGFkcl9wbHo+MjQ4Mzc8L2Fkcl9wbHo+DQoJCQk8YWRyX29ydD5TY2hsZXN3aWc8L2Fkcl9vcnQ+DQoJCQk8YWRyX29ydHN0ZWlsPlNjaGxlc3dpZzwvYWRyX29ydHN0ZWlsPg0KCQkJPGFkcl9sYW5kPkRldXRzY2hsYW5kJERFJERFVSQyNzYkLmRlPC9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9udW1lcmlzY2g+Mjc2PC9iX2Fkcl9udW1lcmlzY2g+DQoJCQk8Yl9hZHJfbGFuZD5EZXV0c2NobGFuZDwvYl9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9hbHBoYTI+REU8L2JfYWRyX2FscGhhMj4NCgkJCTxiX2Fkcl9hbHBoYTM+REVVPC9iX2Fkcl9hbHBoYTM+DQoJCQk8Yl9hZHJfZG9tYWluPi5kZTwvYl9hZHJfZG9tYWluPg0KCQkJPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPg0KCQkJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCQkJPGtvbnRfZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9rb250X2VtYWlsPg0KCQkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4NCgkJCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZm9uPisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdGVsZWZvbj45NjU0PC9iX2tvbnRfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgkJCTxiX2tvbnRfdGVsZWZheD45NjU0PC9iX2tvbnRfdGVsZWZheD4NCgkJCTxTdGF0dXNfRXJsYXVibmlzPjA8L1N0YXR1c19FcmxhdWJuaXM+DQoJCQk8Yl9FcmxhdWJuaXM+TGllZ3QgbmljaHQgdm9yPC9iX0VybGF1Ym5pcz4NCgkJPC9CZXRlaWxpZ3RlUGVyc29uLWl0ZW0+DQoJPC9CZXRlaWxpZ3RlUGVyc29uPg0KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3RzeXN0ZW1UeXBBPg0KCTxLb250YWt0c3lzdGVtVHlwQj4yMzMwMzQ2MDE8L0tvbnRha3RzeXN0ZW1UeXBCPg0KCTx6dXN0YWVuZGlnZXN0ZWxsZT4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5MYW5kZXNoYXVwdHN0YWR0IEtpZWwgLSBCw7xyZ2VyLSB1bmQNCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+RmFicmlrc3RyYcOfZTwvc3RyYXNzZT4NCgkJPGhhdXNudW1tZXI+OC0xMCAgICAgIDwvaGF1c251bW1lcj4NCgkJPHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPg0KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+DQoJCTxvcnQ+S2llbDwvb3J0Pg0KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDkwMS0yODA3PC90ZWxlZm9ubnVtbWVyPg0KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDkwMS02MjA3MDwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5HZXdlcmJlbWVsZGVzdGVsbGVAa2llbC5kZTwvZW1haWxhZHJlc3NlPg0KCQk8ZGVtYWlsYWRyZXNzZSAvPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nIC8+DQoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4NCgkJPEFubGllZ2VuQkVaRUlDSE5VTkc+R2V3ZXJiZWFubWVsZHVuZywgRWxla3Ryb25pc2NoZSBHZXdlcmJlYW56ZWlnZTwvQW5saWVnZW5CRVpFSUNITlVORz4NCgkJPGxlaWthS0VZTElTVD45OTA1MDAxMjEwNDAwMDwvbGVpa2FLRVlMSVNUPg0KCTwvenVzdGFlbmRpZ2VzdGVsbGU+DQoJPGVtcGZhbmdlbmRlc3RlbGxlPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+DQoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyDQoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+DQoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4NCgkJPG9ydElEPjkwMDY0MDI8L29ydElEPg0KCQk8b3J0PktpZWw8L29ydD4NCgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4NCgkJPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+DQoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4NCgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4NCgk8L2VtcGZhbmdlbmRlc3RlbGxlPg0KCTxlcmtsYWVydW5nZW4+DQoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPg0KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+DQoJCTxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4NCgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4NCgkJPGNoZWNrX2hpbndlaXM+dHJ1ZTwvY2hlY2tfaGlud2Vpcz4NCgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIERpZSBHZXdlcmJlYW5tZWxkdW5nIGlzdCBrb3N0ZW5wZmxpY2h0aWcuDQoJCQlEaWUgSMO2aGUgZGVyIEdlYsO8aHJlbiBiZW1pc3N0IHNpY2ggbmFjaCBkZXIgTGFuZGVzdmVyb3JkbnVuZyDDvGJlcg0KCQkJVmVyd2FsdHVuZ3NnZWLDvGhyZW4gKEFsbGdlbWVpbmVyIEdlYsO8aHJlbnRhcmlmKSBUYXJpZnN0ZWxsZSAxMS4xLjEgLQ0KCQkJVndHZWJWLiBHZW5hdWUgQXVza8O8bmZ0ZSBoaWVyenUgZXJ0ZWlsdCBkYXMgenVzdMOkbmRpZ2UgR2V3ZXJiZWFtdC48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4NCgkJPGJfZ2VidWVocmVuX2ludHJvIC8+DQoJCTxiX3JpY2h0aWdrZWl0PiogSWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGlna2VpdD4NCgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcg0KCQkJRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcg0KCQkJQXVmZ2FiZW4gbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcg0KCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMNCgkJCUxhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsDQoJCQl2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQ0KCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoDQoJCQltaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllDQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUNCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyDQoJCQlkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQ0KCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyDQoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZA0KCQkJZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbg0KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuDQoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nDQoJCQlLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4NCgkJPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyDQoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMNCgkJCWF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4NCgkJPGJfaGlud2Vpc19iZXNjaHJpZnR1bmc+KiBEaWVzZSBBbnplaWdlIGJlcmVjaHRpZ3QgbmljaHQgenVtIEJlZ2lubg0KCQkJZGVzIEdld2VyYmViZXRyaWViZXMsIHdlbm4gbm9jaCBlaW5lIEVybGF1Ym5pcyBvZGVyIGVpbmUgRWludHJhZ3VuZw0KCQkJaW4gZGllIEhhbmR3ZXJrc3JvbGxlIG5vdHdlbmRpZyBpc3QuIFp1d2lkZXJoYW5kbHVuZ2VuIGvDtm5uZW4gbWl0DQoJCQlHZWxkYnXDn2Ugb2RlciBHZWxkc3RyYWZlIG9kZXIgRnJlaWhlaXRzc3RyYWZlIGdlYWhuZGV0IHdlcmRlbi4gRGllc2UNCgkJCUFuemVpZ2UgaXN0IGtlaW5lIEdlbmVobWlndW5nIHp1ciBFcnJpY2h0dW5nIGVpbmVyIEJldHJpZWJzc3TDpHR0ZQ0KCQkJZW50c3ByZWNoZW5kIGRlbSBQbGFudW5ncy0gdW5kIEJhdXJlY2h0LjwvYl9oaW53ZWlzX2Jlc2NocmlmdHVuZz4NCgkJPGJfaGlud2Vpc19pbnRybz5IaW53ZWlzPC9iX2hpbndlaXNfaW50cm8+DQoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+DQoJPC9lcmtsYWVydW5nZW4+DQoJPGJfdGltZXN0YW1wPjIwMjAxMjAyMTYwMzIzPC9iX3RpbWVzdGFtcD4NCgk8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPg0KCTxmbT4NCgkJPGFuc3ByZWNocGFydG5lcj4NCgkJCTxmaXJtZW5uYW1lIC8+DQoJCQk8YW5yZWRlPkhlcnI8L2FucmVkZT4NCgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4NCgkJCTxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPg0KCQkJPGFuc2NocmlmdD4NCgkJCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlPC9zdHJhc3NlPg0KCQkJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCQkJPHBvc3RmYWNoIC8+DQoJCQkJPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPg0KCQkJCTxvcnQ+S2llbDwvb3J0Pg0KCQkJCTxvcnRzdGVpbCAvPg0KCQkJCTx6dXNhdHogLz4NCgkJCQk8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0Pg0KCQkJPC9hbnNjaHJpZnQ+DQoJCQk8a29udGFrdD4NCgkJCQk8dGVsZWZvbm51bW1lcj4wNDMxIDEyMzwvdGVsZWZvbm51bW1lcj4NCgkJCQk8bW9iaWxudW1tZXIgLz4NCgkJCQk8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZheG51bW1lcj4NCgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPg0KCQkJCTxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPg0KCQkJPC9rb250YWt0Pg0KCQk8L2Fuc3ByZWNocGFydG5lcj4NCgkJPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+DQoJCQkJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA4MTk5NDwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQkJCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXItDQoJCQkJCQl1bmQgT3JkbnVuZ3NhbXQsIEdld2VyYmVtZWxkZXN0ZWxsZTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPg0KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPg0KCQkJCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgkJCQk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJCQkJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgkJCQk8QW5saWVnZW5CRVpFSUNITlVORz5HZXdlcmJlYW5tZWxkdW5nLCBFbGVrdHJvbmlzY2hlIEdld2VyYmVhbnplaWdlPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPg0KCQkJCTxsZWlrYUtFWUxJU1Q+OTkwNTAwMTIxMDQwMDA8L2xlaWthS0VZTElTVD4NCgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPg0KCQkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgk8L2ZtPg0KPC9teUZvcm0+</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServerVonTorsten</form> - <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} \ No newline at end of file +for file in ${SCRIPT_DIR}/vorgang-*.xml; +do + curl -v --header "Content-Type: text/xml;charset=UTF-8" --data @$file ${URL}; +done diff --git a/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml b/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml new file mode 100644 index 0000000..3fed263 --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml @@ -0,0 +1,142 @@ +<!-- + + 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. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHhtbG5zOnU9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdXNlciIgdDppZD0iMjAyMTA0MTQzMjQxMjAwOTAyMDciIHQ6dGltZXN0YW1wPSIyMDIxLTA0LTE0VDA3OjAwOjEyLjQ4OFoiIHQ6c2VuZGVyPSJzdGFnZS5hZm0uc2NobGVzd2lnLWhvbHN0ZWluLmRlIiB0OmZvcm09IkVpbmdsaWVkZXJ1bmdzaGlsZmUgTWluZGVyasOkaHJpZ2UiIHQ6Zm9ybS1pZD0icGZtX3Bvc3RmYWNobWl0dGVpbHVuZyIgdDpjdXN0b21lcj0iS3JlaXMgU2VnZWJlcmciIHQ6Y3VzdG9tZXItaWQ9ImtyZWlzLXNlZ2ViZXJnL2tyZWlzLXNlZ2ViZXJnIiB0OmNsaWVudD0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmNsaWVudC1pZD0ibGFuZCIgdTpVc2VybmFtZT0iYWZtdDcwQHdlYi5kZSIgdTpQcmluY2lwYWxUeXBlPSJDaXRpemVuIiB1OnVzZXJuYW1lPSJkZTkzN2ExNy1iMTU2LTRhYWYtOTQ3Ni0yNjU4YmM4NzI2NTkiIHU6R2l2ZW5OYW1lcz0iRGF0YXBvcnQiIHU6QXNzdXJhbmNlTGV2ZWw9IkxvdyIgdTpkaXNwbGF5TmFtZT0iRGF0YXBvcnQgU0gtVXNlciIgdTptYWlsQWRkcmVzcz0iYWZtdDcwQHdlYi5kZSIgdTpFbWFpbEFkZHJlc3M9ImFmbXQ3MEB3ZWIuZGUiIHU6Zmlyc3ROYW1lPSJEYXRhcG9ydCIgdTpsYXN0TmFtZT0iU0gtVXNlciI+PGxlaXN0dW5nZW4+PGhlaWxwIGxhYmVsPSJIZWlscMOkZGFnb2dpc2NoZSBMZWlzdHVuZ2VuIj50cnVlPC9oZWlscD48aGlsZmUgbGFiZWw9IkhpbGZlIHp1ciBUZWlsaGFiZSBpbiBkZXIgR2VtZWluc2NoYWZ0Ij5mYWxzZTwvaGlsZmU+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48c2NodWwgbGFiZWw9IkxlaXN0dW5nZW4genVyIFRlaWxoYWJlIGFuIEJpbGR1bmciPmZhbHNlPC9zY2h1bD48dW50ZXJiIGxhYmVsPSJMZWlzdHVuZ2VuIMO8YmVyIFRhZyB1bmQgTmFjaHQiPmZhbHNlPC91bnRlcmI+PC9sZWlzdHVuZ2VuPjxiZWdydWVuZHVuZz50ZXN0PC9iZWdydWVuZHVuZz48bmFtZWlkPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvbmFtZWlkPjxyZXN0X3Jlc3BvbnNlX25hbWU+W3sibWVtYmVyY29udGV4dCI6ImRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OSIsIm1lbWJlcnNjb3BlIjpbeyJ0ZW5hbnQiOiJTSCIsIm1haWxib3hndWlkIjoiYzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyIiwibWFpbGJveG5hbWUiOiJOL0EiLCJtYWlsYm94ZGVzY3JpcHRpb24iOiJUZXN0IiwibWFpbGJveHR5cGUiOjEsImd1aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJpZCI6MjM1OTkxNn1dfV08L3Jlc3RfcmVzcG9uc2VfbmFtZT48bWFpbGJveGd1aWQ+YzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyPC9tYWlsYm94Z3VpZD48bmFjaG5hbWU+dGVydDwvbmFjaG5hbWU+PHZvcm5hbWU+dGVzdDwvdm9ybmFtZT48Z2VidXJ0c2RhdHVtPjIwMDAtMDQtMDc8L2dlYnVydHNkYXR1bT48ZGV1dHNjaD5kZXV0c2NoPC9kZXV0c2NoPjxiZXRyZXV1bmdfb19zY2h1bGU+ZGFoZWltPC9iZXRyZXV1bmdfb19zY2h1bGU+PHN0cmFzc2U+dGVzdDwvc3RyYXNzZT48aGF1c251bW1lcj4xMjI8L2hhdXNudW1tZXI+PHBsej4yMjIyMjwvcGx6PjxvcnQ+dGVzdDwvb3J0PjxwZmxlZ2VncmFkPmtlaW5lcjwvcGZsZWdlZ3JhZD48a3Jhbmtlbmthc3NlPnRlc3Q8L2tyYW5rZW5rYXNzZT48dmVyc2ljaGVydW5nc251bW1lcj53ZXRzZXQ8L3ZlcnNpY2hlcnVuZ3NudW1tZXI+PHNjaHdlcmJlaGluZGVydW5nPmZhbHNlPC9zY2h3ZXJiZWhpbmRlcnVuZz48ZWdoX2ZvbGdlYW50cmFnPmZhbHNlPC9lZ2hfZm9sZ2VhbnRyYWc+PGJldHJldXVuZz5kYWhlaW08L2JldHJldXVuZz48ZWx0ZXJuPjxlbHRlcm4taXRlbT48cm9sbGVfZWx0ZXI+dmF0ZXI8L3JvbGxlX2VsdGVyPjxuYWNobmFtZV9lbHRlcj5TSC1Vc2VyPC9uYWNobmFtZV9lbHRlcj48dm9ybmFtZV9lbHRlcj5EYXRhcG9ydDwvdm9ybmFtZV9lbHRlcj48Z2VidXJ0c3RhZ19lbHRlcj4yMDAwLTA0LTA5PC9nZWJ1cnRzdGFnX2VsdGVyPjxmZXN0bmV0el9lbHRlcj4yMzQ8L2Zlc3RuZXR6X2VsdGVyPjxtYWlsX2VsdGVyPmFmbXQ3MEB3ZWIuZGU8L21haWxfZWx0ZXI+PGFsdF9hZHJfZWx0ZXI+ZmFsc2U8L2FsdF9hZHJfZWx0ZXI+PC9lbHRlcm4taXRlbT48L2VsdGVybj48c29yZ2VyZWNodD52YXRlcjwvc29yZ2VyZWNodD48Z2VzY2h3aXN0ZXIvPjxwZmxlZ2VmYW1pbGllPmZhbHNlPC9wZmxlZ2VmYW1pbGllPjxhcnp0PnRlc3Q8L2FyenQ+PGRpYWdub3Nlbj50ZXN0PC9kaWFnbm9zZW4+PHVudGVyc3VjaHVuZ2VuPjxhdWdlbiBsYWJlbD0iQXVnZW5hcnp0Ij5mYWxzZTwvYXVnZW4+PGhubyBsYWJlbD0iSE5PLUFyenQiPnRydWU8L2hubz48a2ggbGFiZWw9IkRpYWdub3N0aWtlbiBpbSBLcmFua2VuaGF1cyI+ZmFsc2U8L2toPjxvcnRobyBsYWJlbD0iT3J0aG9ww6RkaWUiPmZhbHNlPC9vcnRobz48b3RoZXIgbGFiZWw9IiI+ZmFsc2U8L290aGVyPjxwc3ljaGF0ZXIgbGFiZWw9IktpbmRlci0gdW5kIEp1Z2VuZHBzeWNoaWF0ZXIiPmZhbHNlPC9wc3ljaGF0ZXI+PHNvemlhbCBsYWJlbD0iU296aWFscMOkZGlhdHJpc2NoZXMgWmVudHJ1bSI+ZmFsc2U8L3NvemlhbD48L3VudGVyc3VjaHVuZ2VuPjxtYXNzbmFobWVuPjxlcmdvIGxhYmVsPSJFcmdvdGhlcmFwaWUiPnRydWU8L2VyZ28+PGtnIGxhYmVsPSJLcmFua2VuZ3ltbmFzdGlrIj5mYWxzZTwva2c+PGxvZ28gbGFiZWw9IkxvZ29ww6RkaWUiPmZhbHNlPC9sb2dvPjxtdXNpayBsYWJlbD0iVGVpbG5haG1lIGFuIGVpbmVyIE11c2lrZ3J1cHBlIj5mYWxzZTwvbXVzaWs+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48cHN5Y2hvIGxhYmVsPSJQc3ljaG90aGVyYXBpZSI+ZmFsc2U8L3BzeWNobz48c2Nod2ltbWVuIGxhYmVsPSJTY2h3aW1tZW4iPmZhbHNlPC9zY2h3aW1tZW4+PHNwcmFjaCBsYWJlbD0iU3ByYWNoZsO2cmRlcnVuZyBpbiBkZXIgS2luZGVydGFnZXNzdMOkdHRlIj5mYWxzZTwvc3ByYWNoPjx2ZXJlaW4gbGFiZWw9Ik1pdGdsaWVkc2NoYWZ0IGluIGVpbmVtIFR1cm4tL1Nwb3J0dmVyZWluIj5mYWxzZTwvdmVyZWluPjwvbWFzc25haG1lbj48anVnZW5kYW10X2tvbnRha3Q+ZmFsc2U8L2p1Z2VuZGFtdF9rb250YWt0PjxqdWdlbmRhbXRfYWt0ZW5laW5zaWNodD50cnVlPC9qdWdlbmRhbXRfYWt0ZW5laW5zaWNodD48cGVyc29uYWxhdXN3ZWlzPjxwZXJzb25hbGF1c3dlaXMtaXRlbT48ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3BkZiIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuM0Y0QzVGOUI5NzM3MzMzOTMzQjkzNTZFNDlBQTM1RUIzRDkyNzJCOSIgbGVuZ3RoPSIxODE5MjYiPnRlc3QucGRmPC9maWxlPjwvcGVyc29uYWxhdXN3ZWlzLWl0ZW0+PC9wZXJzb25hbGF1c3dlaXM+PHNvcmdlcmVjaHRzbmFjaHdlaXM+PGZpbGUgY29udGVudC10eXBlPSJhcHBsaWNhdGlvbi9wZGYiIGRlc2NyaXB0aW9uPSIiIGlkPSJhc3Npc3RhbnRzLjdDOUFDMDc0M0NFMDY1QTc0RTBEQzJEODVGOTY4MkJGQzQ5MDM1QkIiIGxlbmd0aD0iMTgxOTI2Ij50ZXN0ICgxKS5wZGY8L2ZpbGU+PC9zb3JnZXJlY2h0c25hY2h3ZWlzPjxlcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz50cnVlPC9lcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz48ZGF0ZW5zY2h1dHo+dHJ1ZTwvZGF0ZW5zY2h1dHo+PHBvc3RmYWNoYmV0cmVmZj5JaHIgQW50cmFnIGF1ZiBFaW5nbGllZGVydW5nc2hpbGZlIGbDvHIgTWluZGVyasOkaHJpZ2U8L3Bvc3RmYWNoYmV0cmVmZj48cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW50cmFnc3RlbGxlcippbiwgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0lociBBbnRyYWcgd3VyZGUgZXJmb2xncmVpY2ggw7xiZXJtaXR0ZWx0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHLDpGd0LiBTaWUgZXJoYWx0ZW4gdW5hdWZnZWZvcmRlcnQgZWluZSBSw7xja21lbGR1bmcgenUgSWhyZW0gQW50cmFnLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIGZpbmRlbiBTaWUgaW0gYW5nZWjDpG5ndGVuIERva3VtZW50LiAmbHQ7YnIvJmd0O0JpdHRlIGdlYmVuIFNpZSBkaWVzZSBWb3JnYW5nc251bW1lciBiZWkgYWxsZW4gQW5mcmFnZW4genUgSWhyZW0gQW50cmFnIGFuLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O01pdCBmcmVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyIEtyZWlzIFNlZ2ViZXJnJmx0O2JyLyZndDsmbHQ7YnIvJmd0Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtLcmVpcyBTZWdlYmVyZyAmbHQ7YnIvJmd0O0VpbmdsaWVkZXJ1bmdzaGlsZmUgZsO8ciBNaW5kZXJqw6RocmlnZSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtQb3N0YW5zY2hyaWZ0OiZsdDtici8mZ3Q7SGFtYnVyZ2VyIFN0ci4gMzAmbHQ7YnIvJmd0OzIzNzk1IEJhZCBTZWdlYmVyZyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCZXN1Y2hlcmFuc2NocmlmdDombHQ7YnIvJmd0O0J1cmdmZWxkc3RyLiA0MWEgJmx0O2JyLyZndDsyMzc5NSBCYWQgU2VnZWJlcmcgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0ZheDogKzQ5NDU1MS85NTEtOTU2NSAmbHQ7YnIvJmd0O0UtTWFpbDogJmx0O2EgaGVyZj0ibWFpbHRvOmludGVncmF0aW9uLmtpbmRlckBzZWdlYmVyZy5kZSImZ3Q7aW50ZWdyYXRpb24ua2luZGVyQHNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7SW50ZXJuZXQ6ICZsdDthIGhyZWY9Ind3dy5zZWdlYmVyZy5kZSImZ3Q7d3d3LnNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD48L215Rm9ybT4=</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4IiBJc3N1ZUluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxzYW1sOklzc3Vlcj51cm46ZGF0YXBvcnQ6b3NpOnNlcnZpY2Vrb250bzppZHA6cnoyOnN0YWdlOnNoPC9zYW1sOklzc3Vlcj48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiNfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCBzYW1sIGRzIHhzIHhzaSIvPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPi8raURwbHVXdGFMd20rY1M5aCtYVEc0aTBiQy9jYS9WbjdMMWFObWtXNFk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkdVMm9NOWNTZWFyZCt0MlU1WTBzNDVQKzlQdzJKNVdwSzh6MXNYa2NvT0RHY0lhVzljU3dKa0RTc2U0Z0lHQ1VYTXYxcWRhbytJdmFuQlJReXc3Mmo1SFVWdFNkWktBUkg5NjBoeEJ4YVhQRVN3VUQ5OTF4TzlYWVJ2ZmoxZU5waTNkRWpVRWtKUEN3T1g2NmlsWUZhQ0VCeFdwOXF4MGVVZVdzdnVOOUg1aytoWFJpdHpPdGdRMmFTenUrZUlzQnpOU3hoVHJkSXJPck9nV0orVHEwTmhZOC84WDNUT3EzQW9qMHJJTHcrVEZYMWFENmo2NUNWKzQ0eGtCWjlDK0F3NENrcTRRYUk4ckt6UzY4djlReUt2MTVOT2dhcmx6TGE3OUNNc2h1aUk4eDZldFZOSHpHcm15RC9Nc243bmticlhEWTdoQUNuL294bXlydk1YQXpGdz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlHM3pDQ0JNZWdBd0lCQWdJVGJRQUxpdm01eVVoSU9TYmQwQUFCQUF1SytUQU5CZ2txaGtpRzl3MEJBUXNGQURBK01Rc3dDUVlEVlFRR0V3SkVSVEVXTUJRR0ExVUVDZ3dOUkdGMFlYQnZjblFnUWNPMlVqRVhNQlVHQTFVRUF3d09SR0YwWVhCdmNuUWdRMEVnTURRd0hoY05NakF3TkRJM01EY3dOelUwV2hjTk1qSXdOek14TURjd056VTBXakNCcWpFTE1Ba0dBMVVFQmhNQ1JFVXhHekFaQmdOVkJBZ01FbE5qYUd4bGMzZHBaeTFJYjJ4emRHVnBiakVTTUJBR0ExVUVCd3dKUVd4MFpXNW9iMng2TVJFd0R3WURWUVFLREFoRVlYUmhjRzl5ZERFTk1Bc0dBMVVFQ3d3RVZGb3hOREZJTUVZR0ExVUVBd3cvYzJGdGJDNXBaSEF1YzJWeWRtbGpaV3R2Ym5SdkxuTjBZV2RsTG5ObGNuWnBZMlZ3YjNKMFlXd3VjMk5vYkdWemQybG5MV2h2YkhOMFpXbHVMbVJsTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFwUFRUZHhpQ3laenJEU2NZclQ5ckNxcHl1RFRqYzY1ZTJTTzBjRE03Mmd0dW1zOFZqQVp2T1Jic09vWm90dEFUYmlSWWpXM2t1Z3ZkeGFHdk1lYlRCNE93YVd0UDlwUDNRdTZjaWVrRG9IdmpQUHQyTG05TmdNT3BTVFNMSENxT3QrdWFiNEdYU1NPQmt3TXFlNDNMa2RaU3E5WS9tazJ6QlBZcXlVMzEwN2dkd01xUWRGdWhqZU5iYVEvMFFYa1laTGdVeFR1OGpVSmxGZXh1QkxZTjZ1WHJHVllyV0dQTU9Vdk83cGYzc3BzMjRnUVJFWlVHMkJkU0tkbjhqaDRjR0Y2ODhtNk5uTlBOVGZ5L3BWbmRDVDQzY0lGT0JQSHRvTitTcWs2ZGVKVVJoY3hyeE56U3Z2RUYvRWVMOE1WSUU3Ym5IRGhaZGtmbXU5MkVldlNoQXdJREFRQUJvNElDWnpDQ0FtTXdIUVlEVlIwT0JCWUVGQmczOU0yVGlPNkE0aHh1QjFKKytLbTgxYUVpTUE0R0ExVWREd0VCL3dRRUF3SUZvREJLQmdOVkhSRUVRekJCZ2o5ellXMXNMbWxrY0M1elpYSjJhV05sYTI5dWRHOHVjM1JoWjJVdWMyVnlkbWxqWlhCdmNuUmhiQzV6WTJoc1pYTjNhV2N0YUc5c2MzUmxhVzR1WkdVd0h3WURWUjBqQkJnd0ZvQVVzZUttMi95SjVUZm83NkxMT295WTBQUkpKTjh3UmdZRFZSMGZCRDh3UFRBN29EbWdONFkxYUhSMGNEb3ZMM0JyYVM1elpYSjJhV05sWkhCaGIzSXVaR1V2WTNKc0wwUmhkR0Z3YjNKMEpUSXdRMEVsTWpBd05DNWpjbXd3Z1lBR0NDc0dBUVVGQndFQkJIUXdjakFyQmdnckJnRUZCUWN3QVlZZmFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdmIyTnpjREJEQmdnckJnRUZCUWN3QW9ZM2FIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyRXZSR0YwWVhCdmNuUWxNakJEUVNVeU1EQTBLREVwTG1OeWREQU1CZ05WSFJNQkFmOEVBakFBTUQwR0NTc0dBUVFCZ2pjVkJ3UXdNQzRHSmlzR0FRUUJnamNWQ09yYVk0WE0zRUNDcVpjZ2hOVGpjNEg0cFhhQlhvTzFsanVEdnJ0dUFnRmtBZ0VpTUNjR0ExVWRKUVFnTUI0R0NDc0dBUVVGQndNQkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSUFnSXdNd1lKS3dZQkJBR0NOeFVLQkNZd0pEQUtCZ2dyQmdFRkJRY0RBVEFLQmdnckJnRUZCUWNEQWpBS0JnZ3JCZ0VGQlFnQ0FqQlBCZ05WSFNBRVNEQkdNRVFHRFNzR0FRUUJncWxYZzMyQlNBSXdNekF4QmdnckJnRUZCUWNDQVJZbGFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyVnlkR05zWVhOekFEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFPbG9Kc05vaUdoN09TRWdLelF1TEE1ZUozUFpLOGJ4MGdmVXlOZVJvSVlVQnErZ1lVSW1IM2tRU3R1bDg2WXhwU3JrUzNGNkU3c2pqWitncHRXai95aDcwMUYzR0EvZEk3TDVBTGNmSXdWWjlVckIzdnlKWHYwWGNQSmlMb05uZ3N0TDdBUzFobFV3d0NYN0pCS1FVdnFnS2dMWGFyWGpHYko2emZCMlVTSG9LSWJkVlo4R0ZhUENPWU5QZmlHanBDaSs4WUllTWY5eHRhSUJ6dGFRUEJ2eW4yVC9CNzBNSjBLK1JFZTdzTUNSSXBmYTdsZThRNVBlaGJEQWpkOWhCb3hzbWJtUXhxZmtKUHNYVDNqeGIxZk5pWHRyNjFRVkh0ODQ4dTNkOXhCVkc5OSthRlZlNnJRd01wdDA4TWpBYWdWemNpS2RlRU01WTAzaUNBVFdabDZEYjZINjhlVU9FdTdJTmxmNDF1UGQ3U0FOMnpRT1pIZ3pnZTJjbXNwcGZlKyt4NU1VK3YyUy9rOUJrVHQwU2FqWEtHcjczdk92VU1pMUhvNjEwMkpKdWg5K2NyVDRRM1VFRkp3QStkZHVVK25MVDRDWGZjOGs3RGVCTGJBME1IQzNhOXFLcmZKcnNlM2NkVmdRQmVSWFFDTk55OGJHV2swdHNueXhWMDJhdG92TnJ6ZXBMekE3dCtOU2lPNUNUWXo5U3NXSXRLTk5Wd3kyZ3ZwQjVNU1Fsc2tQRWNFMzh2UTYvc1p2Nks0MGczbnY1Q2Z1RlMyait2eDdsSTVCVmJQSW1KNDN3QXB0dktnUVAyVEtuTFEwTmRCWE5VSzlQZGI3MlJtM1BGTlp3eHVMdncyV1BXNk9SNVRvdk44Q3VIdHNGTmU0UHlPTVg2QnN4elVqb0dFMD08L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OnBlcnNpc3RlbnQiIE5hbWVRdWFsaWZpZXI9InVybjpvc3A6bmFtZXM6cmVhbG06c3RhZ2U6c2giPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2Q3M2VlMTJlYmIwMjY0OWQyM2Q4M2U2OWM2OWM4NTcxIiBOb3RPbk9yQWZ0ZXI9IjIwMjEtMDQtMTRUMTc6MDA6MTMuNjM4WiIgUmVjaXBpZW50PSJodHRwczovL3N0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUvb3NpL1NoaWJib2xldGguc3NvL1NBTUwyL1BPU1QiLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdE9uT3JBZnRlcj0iMjAyMS0wNC0xNFQxNzowMDoxMy42MzhaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3RhZ2UuYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgU2Vzc2lvbkluZGV4PSJiZjA0NjNhNy0xYjdkLTQ5ZWMtODE5Yy1jZDFhZGM4ZTFlZGEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj5odHRwOi8vZWlkYXMuZXVyb3BhLmV1L0xvQS9sb3c8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJVc2VybmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5hZm10NzBAd2ViLmRlPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkFzc3VyYW5jZUxldmVsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxvdzwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJUaXRsZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5IZXJyPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkdpdmVuTmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+RGF0YXBvcnQ8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmFtaWx5TmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+U0gtVXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbEFkZHJlc3MiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+YWZtdDcwQHdlYi5kZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJQcmluY2lwYWxUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkNpdGl6ZW48L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iQ2l0aXplblByb2ZpbGVUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPlN0YW5kYXJkPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPg==</content> + <contentType>text/xml</contentType> + <id>saml-assertion</id> + <name>SAML-Assertion.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> + <contentType>application/pdf</contentType> + <id>assistants.3F4C5F9B9737333933B9356E49AA35EB3D9272B9</id> + <name>test.pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> + <contentType>application/pdf</contentType> + <id>assistants.7C9AC0743CE065A74E0DC2D85F9682BFC49035BB</id> + <name>test (1).pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>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ZW5kb2JqDQozNCAwIG9iag0KPDwNCi9PcGVuQWN0aW9uIFsgMSAwIFIgL1hZWiBudWxsIG51bGwgMSBdDQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL1BhZ2VzIDE2IDAgUg0KPj4NCmVuZG9iag0KMzUgMCBvYmoNCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MTQwOTAxNDUrMDInMDAnKQ0KL1Byb2R1Y2VyIChjaXQgcGRmc3VpdGUgXCh3d3cuY2l0LmRlXCkpDQovQXV0aG9yIDxmZWZmMDA0YjAwNmMwMDYxMDA3NTAwNzMwMDIwMDA1NzAwNjEwMDZlMDA2ZTAwNjUwMDcyPg0KPj4NCmVuZG9iag0KeHJlZg0KMCAzNiANCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDA2OCAwMDAwMCBuDQowMDAwMDAwMjU1IDAwMDAwIG4NCjAwMDAwMTI3MjYgMDAwMDAgbg0KMDAwMDAxMjc1MCAwMDAwMCBuDQowMDAwMDQ0MzE5IDAwMDAwIG4NCjAwMDAwNTQxODMgMDAwMDAgbg0KMDAwMDA1NDIwNiAwMDAwMCBuDQowMDAwMDU0MzkzIDAwMDAwIG4NCjAwMDAwNjU3NTEgMDAwMDAgbg0KMDAwMDA2NTc3NSAwMDAwMCBuDQowMDAwMDY1OTY0IDAwMDAwIG4NCjAwMDAwNzc4NTkgMDAwMDAgbg0KMDAwMDA3Nzg4NCAwMDAwMCBuDQowMDAwMDc4MDczIDAwMDAwIG4NCjAwMDAwODkwNTkgMDAwMDAgbg0KMDAwMDA4OTA4NCAwMDAwMCBuDQowMDAwMDg5MjE3IDAwMDAwIG4NCjAwMDAwOTEyNjAgMDAwMDAgbg0KMDAwMDA5MTI4NCAwMDAwMCBuDQowMDAwMDkxNDk3IDAwMDAwIG4NCjAwMDAwOTE4MDYgMDAwMDAgbg0KMDAwMDA5MTk5MCAwMDAwMCBuDQowMDAwMTAwNDEyIDAwMDAwIG4NCjAwMDAxMDA0MzYgMDAwMDAgbg0KMDAwMDEwMDY1OCAwMDAwMCBuDQowMDAwMTAxMjA5IDAwMDAwIG4NCjAwMDAxMDE2MjMgMDAwMDAgbg0KMDAwMDExMDE3MCAwMDAwMCBuDQowMDAwMTEwMTk0IDAwMDAwIG4NCjAwMDAxMTA0MTMgMDAwMDAgbg0KMDAwMDExMDk5MiAwMDAwMCBuDQowMDAwMTExNDI4IDAwMDAwIG4NCjAwMDAxMTE0OTAgMDAwMDAgbg0KMDAwMDExMTYwOCAwMDAwMCBuDQowMDAwMTExNzIwIDAwMDAwIG4NCnRyYWlsZXINCjw8DQovSW5mbyAzNSAwIFINCi9JRCBbIDw4YmVlYWQzNmY0ODliNDBkNzk2NWZhNDQ5ODVjOWFmNT4gPDAxMDJlNWRhZGQwNTgzMzQ4YTMzN2NiOTc3ZjE0MzQ5PiBdDQovUm9vdCAzNCAwIFINCi9TaXplIDM2DQovRG9jQ2hlY2tzdW0gLzA1NjMzRjY4QUU3RkI1MUU5MzA1QTBDNDdEMTI3MjlGDQo+Pg0Kc3RhcnR4cmVmDQoxMTE5MzMNCiUlRU9GDQo=</content> + <contentType>application/pdf</contentType> + <id>myForm-pdf</id> + <name>Eingliederungshilfe-Antrag.pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPC9oZWFkPgo8Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTFwdDsiPgogICAgICAgICAgICBTZWhyIGdlZWhydGUvciBBbnRyYWdzdGVsbGVyKmluLCA8YnI+Cjxicj4KSWhyIEFudHJhZyB3dXJkZSBlcmZvbGdyZWljaCAmdXVtbDtiZXJtaXR0ZWx0Ljxicj4KPGJyPgpCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHImYXVtbDtndC4gU2llIGVyaGFsdGVuIHVuYXVmZ2Vmb3JkZXJ0IGVpbmUgUiZ1dW1sO2NrbWVsZHVuZyB6dSBJaHJlbSBBbnRyYWcuPGJyPgo8YnI+IApJaHJlIFZvcmdhbmdzbnVtbWVyIGxhdXRldDogCjUxLzUxLjIwLzIwMjEwNDE0MzI0MTIwMDkwMjA3LgpCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVtIEFudHJhZyBhbi48YnI+Cjxicj4KPGJyPgpNaXQgZnJlbmRsaWNoZW4gR3ImdXVtbDsmc3psaWc7ZW48YnI+CklociBLcmVpcyBTZWdlYmVyZzxicj4KPGJyPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Cjxicj4KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDlwdDsiPktyZWlzIFNlZ2ViZXJnIDxicj4KRWluZ2xpZWRlcnVuZ3NoaWxmZSBmJnV1bWw7ciBNaW5kZXJqJmF1bWw7aHJpZ2U8YnI+Cjxicj4KUG9zdGFuc2NocmlmdDo8YnI+CkhhbWJ1cmdlciBTdHIuIDMwPGJyPgoyMzc5NSBCYWQgU2VnZWJlcmc8YnI+Cjxicj4KQmVzdWNoZXJhbnNjaHJpZnQ6PGJyPgpCdXJnZmVsZHN0ci4gNDFhIDxicj4KMjM3OTUgQmFkIFNlZ2ViZXJnIDxicj4KPGJyPgpGYXg6ICs0OTQ1NTEvOTUxLTk1NjUgPGJyPgpFLU1haWw6IDxhIGhlcmY9Im1haWx0bzppbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgIj5pbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgPC9hPgo8YnI+CkludGVybmV0OiA8YSBocmVmPSJ3d3cuc2VnZWJlcmcuZGUiPnd3dy5zZWdlYmVyZy5kZTwvYT48L3NwYW4+Cjxicj4KPC9ib2R5Pgo8L2h0bWw+Cg==</content> + <contentType>text/xml</contentType> + <id>EmailBodyTemplate</id> + <name>EmailBodyTemplate.xml</name> + </attachments> + <caller/> + <client>Schleswig-Holstein</client> + <clientId>land</clientId> + <customParameters> + <key>AbsenderBehoerdenkennung</key> + <value>afmsh:afm_eEingliederungshilfe</value> + </customParameters> + <customParameters> + <key>EmailAdresseSachbearbeitung</key> + <value>oscar.mourbare@dataport.de</value> + </customParameters> + <customParameters> + <key>EmailSubjectTemplate</key> + <value>EGH Stage Deposit Prüfung</value> + </customParameters> + <customParameters> + <key>EmpfaengerBehoerdenkennung</key> + <value>afmsh:12345_eEingliederungshilfe</value> + </customParameters> + <customParameters> + <key>mailboxguid</key> + <value>c5a446b7-d6b0-4c61-9ad2-aae600857982</value> + </customParameters> + <customParameters> + <key>PostfachAttachmentIds</key> + <value>myForm-pdf</value> + </customParameters> + <customParameters> + <key>PostfachBodyTemplate</key> + <value>Sehr geehrte/r Antragsteller*in, <br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte beachten Sie, dass die Bearbeitungszeit nach Eingang aller Unterlagen 2 Wochen bis 2 Monate beträgt. Sie erhalten unaufgefordert eine Rückmeldung zu Ihrem Antrag.<br/><br/>Ihre Vorgangsnummer finden Sie im angehängten Dokument. <br/>Bitte geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrem Antrag an.<br/><br/><br/>Mit frendlichen Grüßen<br/>Ihr Kreis Segeberg<br/><br/>---------------------------------------------------<br/><br/>Kreis Segeberg <br/>Eingliederungshilfe für Minderjährige<br/><br/>Postanschrift:<br/>Hamburger Str. 30<br/>23795 Bad Segeberg<br/><br/>Besucheranschrift:<br/>Burgfeldstr. 41a <br/>23795 Bad Segeberg <br/><br/>Fax: +494551/951-9565 <br/>E-Mail: <a herf="mailto:integration.kinder@segeberg.de">integration.kinder@segeberg.de</a><br/>Internet: <a href="www.segeberg.de">www.segeberg.de</a><br/></value> + </customParameters> + <customParameters> + <key>PostfachIsHtml</key> + <value>true</value> + </customParameters> + <customParameters> + <key>PostfachSubjectTemplate</key> + <value>Ihr Antrag auf Eingliederungshilfe für Minderjährige</value> + </customParameters> + <customer>Kreis Segeberg</customer> + <customerId>kreis-segeberg/kreis-segeberg</customerId> + <form>Eingliederungshilfe Minderjährige</form> + <formId>pfm_postfachmitteilung</formId> + <id>20210414324120090207</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> + <sender>stage.afm.schleswig-holstein.de</sender> + <timestamp>2021-04-14T09:01:49.030+02:00</timestamp> + <username>de937a17-b156-4aaf-9476-2658bc872659</username> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> diff --git a/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml b/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml new file mode 100644 index 0000000..75607c1 --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml @@ -0,0 +1,55 @@ +<!-- + + 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. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiDQoJeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiINCgl0OmlkPSIyMDIwMTIwMjU3NTIzMDQ0MzAwNCIgdDp0aW1lc3RhbXA9IjIwMjAtMTItMDJUMTQ6NTg6NDMuNzkwWiINCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIgdDpmb3JtPSJHZXdlcmJlYW5tZWxkdW5nIg0KCXQ6Zm9ybS1pZD0iZUdld2VyYmUvZUdld2VyYmVBbm1lbGR1bmciDQoJdDpjdXN0b21lcj0iRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIiIHQ6Y3VzdG9tZXItaWQ9ImVhLXNoIg0KCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4NCgk8R3VlbHRpZ0FiPjIwMjAtMTEtMDI8L0d1ZWx0aWdBYj4NCgk8R3J1bmRBbm1lbGR1bmdTY2hsdWVzc2VsPjAxPC9HcnVuZEFubWVsZHVuZ1NjaGx1ZXNzZWw+DQoJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgk8TmllZGVybGFzc3VuZ0FydD4xPC9OaWVkZXJsYXNzdW5nQXJ0Pg0KCTxJc3RSZWlzZWdld2VyYmU+ZmFsc2U8L0lzdFJlaXNlZ2V3ZXJiZT4NCgk8QmV0cmllYkFydEluZHVzdHJpZT5mYWxzZTwvQmV0cmllYkFydEluZHVzdHJpZT4NCgk8QmV0cmllYkFydEhhbmR3ZXJrPmZhbHNlPC9CZXRyaWViQXJ0SGFuZHdlcms+DQoJPEJldHJpZWJBcnRIYW5kZWw+ZmFsc2U8L0JldHJpZWJBcnRIYW5kZWw+DQoJPEJldHJpZWJBcnRTb25zdGlnZXM+dHJ1ZTwvQmV0cmllYkFydFNvbnN0aWdlcz4NCgk8cmVjaHRzZm9ybT5uaWNodCBlaW5nZXRyYWdlbmVzIEVpbnplbHVudGVybmVobWVuPC9yZWNodHNmb3JtPg0KCTxyZm0+MTgwPC9yZm0+DQoJPHJlZ2lzdGVyYXJ0IC8+DQoJPG1pbjJnZXNlbGxzY2hhZnRlcj5mYWxzZTwvbWluMmdlc2VsbHNjaGFmdGVyPg0KCTxnZXNldHpsaWNoZXJ2ZXJ0cmV0ZXI+SW5oYWJlcjwvZ2VzZXR6bGljaGVydmVydHJldGVyPg0KCTxCZXRyaWViPg0KCQk8SUQ+OTEwODM4PC9JRD4NCgkJPGdlc2NoYWVmdHNiZXplaWNobnVuZz5PWkctQ29uc3VsdGluZzwvZ2VzY2hhZWZ0c2JlemVpY2hudW5nPg0KCQk8RWludHJhZ3VuZ1BMWiAvPg0KCQk8RWludHJhZ3VuZ09ydCAvPg0KCQk8R2VyaWNodFNjaGx1ZXNzZWwgLz4NCgk8L0JldHJpZWI+DQoJPHNoX3N0cmFzc2U+UmV2ZW50bG91YWxsZTwvc2hfc3RyYXNzZT4NCgk8c2hfenVzYXR6IC8+DQoJPHNoX2hhdXNudW1tZXI+Njwvc2hfaGF1c251bW1lcj4NCgk8c2hfcGx6PjI0MTA1PC9zaF9wbHo+DQoJPG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPg0KCTxzaF9vcnRzdGVpbCAvPg0KCTxvcnQ+S2llbDwvb3J0Pg0KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJPEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPg0KCTxzdGFhdD4wMDA8L3N0YWF0Pg0KCTxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD4NCgk8a29udF90ZWxlZm9ubnVtbWVyPjA0MzEgMTIzPC9rb250X3RlbGVmb25udW1tZXI+DQoJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCTxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4NCgk8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPg0KCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgk8Yl9rb250X3ZvcndhaGxfdGVsZWZvbj4wNDMxPC9iX2tvbnRfdm9yd2FobF90ZWxlZm9uPg0KCTxiX2tvbnRfdGVsZWZvbj4xMjM8L2Jfa29udF90ZWxlZm9uPg0KCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgk8Yl9rb250X3RlbGVmYXg+OTY1NDwvYl9rb250X3RlbGVmYXg+DQoJPFRhZXRpZ2tlaXRlbkdlc2FtdD4NCgkJPFRhZXRpZ2tlaXRlbkdlc2FtdC1pdGVtPg0KCQkJPGF1c3dhaGxfb2JlcmJlZ3JpZmY+UzwvYXVzd2FobF9vYmVyYmVncmlmZj4NCgkJCTxhdXN3YWhsX2thdGVnb3JpZT45NjwvYXVzd2FobF9rYXRlZ29yaWU+DQoJCQk8Y2hlY2tfdGFldGlna2VpdHNzY2h3ZXJwdW5rdD50cnVlPC9jaGVja190YWV0aWdrZWl0c3NjaHdlcnB1bmt0Pg0KCQkJPGFfdGFldGlna2VpdD5PWkctRW50d2lja2x1bmc8L2FfdGFldGlna2VpdD4NCgkJCTxiX29iZXJiZWdyaWZmPlMgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIERpZW5zdGxlaXN0dW5nZW48L2Jfb2JlcmJlZ3JpZmY+DQoJCQk8Yl9rYXRlZ29yaWU+OTYgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIMO8YmVyd2llZ2VuZCBwZXJzw7ZubGljaGVuDQoJCQkJRGllbnN0bGVpc3R1bmdlbjwvYl9rYXRlZ29yaWU+DQoJCQk8Yl91bnRlcmtsYXNzZT45Ni4wOS4wIEVyYnJpbmd1bmcgdm9uIHNvbnN0aWdlbiBEaWVuc3RsZWlzdHVuZ2VuIGEuDQoJCQkJbi4gZy48L2JfdW50ZXJrbGFzc2U+DQoJCQk8Yl91bnRlcmtsYXNzZV9zY2hsdWVzc2VsPjk2LjA5LjA8L2JfdW50ZXJrbGFzc2Vfc2NobHVlc3NlbD4NCgkJCTxiX2lua2w+LSBUw6R0aWdrZWl0ZW4gdm9uIEFzdHJvbG9naW5uZW4sIEFzdHJvbG9nZW4gU3Bpcml0aXN0aW5uZW51bmQNCgkJCQlTcGlyaXRpc3RlbiAtIEVyYnJpbmd1bmcgcGVyc8O2bmxpY2hlciBEaWVuc3RsZWlzdHVuZ2VuIHdpZQ0KCQkJCUJlZ2xlaXRkaWVuc3RlLCBIZWlyYXRzLSB1bmQgUGFydG5lcnZlcm1pdHRsdW5nIC0gQmV0cmV1dW5nIHZvbg0KCQkJCUhhdXN0aWVyZW4gd2llIFVudGVyYnJpbmd1bmcsIFBmbGVnZSwgQmVhdWZzaWNodGlndW5nIHVuZCBEcmVzc3VyIC0NCgkJCQlUw6R0aWdrZWl0ZW4gdm9uIEFobmVuZm9yc2NodW5nc2luc3RpdHV0ZW4gLSBUw6R0aWdrZWl0ZW4gdm9uDQoJCQkJVMOkdG93aWVydW5ncy0gdW5kIFBpZXJjaW5nc3R1ZGlvcyAtIFTDpHRpZ2tlaXRlbiB2b24gU2NodWhwdXR6ZXJpbm5lbg0KCQkJCXVuZCBTY2h1aHB1dHplcm4sIFRyw6RnZXJpbm5lbiB1bmQgVHLDpGdlcm4sIFBhcmtwbGF0enp1d2Vpc2VyaW5uZW4NCgkJCQl1bmQgLXp1d2Vpc2VybiB1c3cuIC0gQmV0cmllYiB2b24gbcO8bnpiZXRyaWViZW5lbiBHZXLDpHRlbiBmw7xyDQoJCQkJcGVyc8O2bmxpY2hlIERpZW5zdGxlaXN0dW5nZW4gd2llIEZvdG9hdXRvbWF0ZW4sIFdhYWdlbiwNCgkJCQlCbHV0ZHJ1Y2ttZXNzZXJuLCBTY2hsaWXDn2bDpGNoZXJuIHVzdy48L2JfaW5rbD4NCgkJPC9UYWV0aWdrZWl0ZW5HZXNhbXQtaXRlbT4NCgk8L1RhZXRpZ2tlaXRlbkdlc2FtdD4NCgk8SXN0TmViZW5lcndlcmI+ZmFsc2U8L0lzdE5lYmVuZXJ3ZXJiPg0KCTxBbnphaGxWb2xsemVpdEJlc2NoYWVmdGlndGU+MTwvQW56YWhsVm9sbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxBbnphaGxUZWlsemVpdEJlc2NoYWVmdGlndGU+MDwvQW56YWhsVGVpbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxCZXRlaWxpZ3RlUGVyc29uPg0KCQk8QmV0ZWlsaWd0ZVBlcnNvbi1pdGVtPg0KCQkJPHBlcnNvbkZ1bmt0aW9uPjE8L3BlcnNvbkZ1bmt0aW9uPg0KCQkJPHBlcnNvbkZ1bmt0aW9uVGV4dD5FaW56ZWxnZXdlcmJldHJlaWJlbmRlcjwvcGVyc29uRnVua3Rpb25UZXh0Pg0KCQkJPGRva3RvcmdyYWRTY2hsdWVzc2VsIC8+DQoJCQk8ZG9rdG9yZ3JhZCAvPg0KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+DQoJCQk8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+DQoJCQk8Z2VzY2hsZWNodFRleHQ+bcOkbm5saWNoPC9nZXNjaGxlY2h0VGV4dD4NCgkJCTxnZXNjaGxlY2h0PjE8L2dlc2NobGVjaHQ+DQoJCQk8Z2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L2dlYnVydHNuYW1lPg0KCQkJPGdlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9nZWJ1cnRzZGF0dW0+DQoJCQk8Z2VidXJ0c29ydD5GbGVuc2J1cmc8L2dlYnVydHNvcnQ+DQoJCQk8Z2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2dlYnVydHNsYW5kPg0KCQkJPGdlYnVydHNsYW5kU2NobHVlc2VsPjAwMDwvZ2VidXJ0c2xhbmRTY2hsdWVzZWw+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPjAwMDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPg0KCQkJPGFkcl9zdHJhc3NlPkvDtm5pZ3N3ZWc8L2Fkcl9zdHJhc3NlPg0KCQkJPGFkcl96dXNhdHo+QXBwYXJ0bWVudCAzMjE8L2Fkcl96dXNhdHo+DQoJCQk8YWRyX2hhdXNudW1tZXI+NzQ8L2Fkcl9oYXVzbnVtbWVyPg0KCQkJPGFkcl9wbHo+MjQ4Mzc8L2Fkcl9wbHo+DQoJCQk8YWRyX29ydD5TY2hsZXN3aWc8L2Fkcl9vcnQ+DQoJCQk8YWRyX29ydHN0ZWlsPlNjaGxlc3dpZzwvYWRyX29ydHN0ZWlsPg0KCQkJPGFkcl9sYW5kPkRldXRzY2hsYW5kJERFJERFVSQyNzYkLmRlPC9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9udW1lcmlzY2g+Mjc2PC9iX2Fkcl9udW1lcmlzY2g+DQoJCQk8Yl9hZHJfbGFuZD5EZXV0c2NobGFuZDwvYl9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9hbHBoYTI+REU8L2JfYWRyX2FscGhhMj4NCgkJCTxiX2Fkcl9hbHBoYTM+REVVPC9iX2Fkcl9hbHBoYTM+DQoJCQk8Yl9hZHJfZG9tYWluPi5kZTwvYl9hZHJfZG9tYWluPg0KCQkJPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPg0KCQkJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCQkJPGtvbnRfZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9rb250X2VtYWlsPg0KCQkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4NCgkJCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZm9uPisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdGVsZWZvbj45NjU0PC9iX2tvbnRfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgkJCTxiX2tvbnRfdGVsZWZheD45NjU0PC9iX2tvbnRfdGVsZWZheD4NCgkJCTxTdGF0dXNfRXJsYXVibmlzPjA8L1N0YXR1c19FcmxhdWJuaXM+DQoJCQk8Yl9FcmxhdWJuaXM+TGllZ3QgbmljaHQgdm9yPC9iX0VybGF1Ym5pcz4NCgkJPC9CZXRlaWxpZ3RlUGVyc29uLWl0ZW0+DQoJPC9CZXRlaWxpZ3RlUGVyc29uPg0KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3RzeXN0ZW1UeXBBPg0KCTxLb250YWt0c3lzdGVtVHlwQj4yMzMwMzQ2MDE8L0tvbnRha3RzeXN0ZW1UeXBCPg0KCTx6dXN0YWVuZGlnZXN0ZWxsZT4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5MYW5kZXNoYXVwdHN0YWR0IEtpZWwgLSBCw7xyZ2VyLSB1bmQNCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+RmFicmlrc3RyYcOfZTwvc3RyYXNzZT4NCgkJPGhhdXNudW1tZXI+OC0xMCAgICAgIDwvaGF1c251bW1lcj4NCgkJPHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPg0KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+DQoJCTxvcnQ+S2llbDwvb3J0Pg0KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDkwMS0yODA3PC90ZWxlZm9ubnVtbWVyPg0KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDkwMS02MjA3MDwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5HZXdlcmJlbWVsZGVzdGVsbGVAa2llbC5kZTwvZW1haWxhZHJlc3NlPg0KCQk8ZGVtYWlsYWRyZXNzZSAvPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nIC8+DQoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4NCgkJPEFubGllZ2VuQkVaRUlDSE5VTkc+R2V3ZXJiZWFubWVsZHVuZywgRWxla3Ryb25pc2NoZSBHZXdlcmJlYW56ZWlnZTwvQW5saWVnZW5CRVpFSUNITlVORz4NCgkJPGxlaWthS0VZTElTVD45OTA1MDAxMjEwNDAwMDwvbGVpa2FLRVlMSVNUPg0KCTwvenVzdGFlbmRpZ2VzdGVsbGU+DQoJPGVtcGZhbmdlbmRlc3RlbGxlPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+DQoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyDQoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+DQoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4NCgkJPG9ydElEPjkwMDY0MDI8L29ydElEPg0KCQk8b3J0PktpZWw8L29ydD4NCgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4NCgkJPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+DQoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4NCgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4NCgk8L2VtcGZhbmdlbmRlc3RlbGxlPg0KCTxlcmtsYWVydW5nZW4+DQoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPg0KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+DQoJCTxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4NCgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4NCgkJPGNoZWNrX2hpbndlaXM+dHJ1ZTwvY2hlY2tfaGlud2Vpcz4NCgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIERpZSBHZXdlcmJlYW5tZWxkdW5nIGlzdCBrb3N0ZW5wZmxpY2h0aWcuDQoJCQlEaWUgSMO2aGUgZGVyIEdlYsO8aHJlbiBiZW1pc3N0IHNpY2ggbmFjaCBkZXIgTGFuZGVzdmVyb3JkbnVuZyDDvGJlcg0KCQkJVmVyd2FsdHVuZ3NnZWLDvGhyZW4gKEFsbGdlbWVpbmVyIEdlYsO8aHJlbnRhcmlmKSBUYXJpZnN0ZWxsZSAxMS4xLjEgLQ0KCQkJVndHZWJWLiBHZW5hdWUgQXVza8O8bmZ0ZSBoaWVyenUgZXJ0ZWlsdCBkYXMgenVzdMOkbmRpZ2UgR2V3ZXJiZWFtdC48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4NCgkJPGJfZ2VidWVocmVuX2ludHJvIC8+DQoJCTxiX3JpY2h0aWdrZWl0PiogSWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGlna2VpdD4NCgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcg0KCQkJRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcg0KCQkJQXVmZ2FiZW4gbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcg0KCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMNCgkJCUxhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsDQoJCQl2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQ0KCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoDQoJCQltaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllDQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUNCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyDQoJCQlkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQ0KCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyDQoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZA0KCQkJZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbg0KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuDQoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nDQoJCQlLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4NCgkJPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyDQoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMNCgkJCWF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4NCgkJPGJfaGlud2Vpc19iZXNjaHJpZnR1bmc+KiBEaWVzZSBBbnplaWdlIGJlcmVjaHRpZ3QgbmljaHQgenVtIEJlZ2lubg0KCQkJZGVzIEdld2VyYmViZXRyaWViZXMsIHdlbm4gbm9jaCBlaW5lIEVybGF1Ym5pcyBvZGVyIGVpbmUgRWludHJhZ3VuZw0KCQkJaW4gZGllIEhhbmR3ZXJrc3JvbGxlIG5vdHdlbmRpZyBpc3QuIFp1d2lkZXJoYW5kbHVuZ2VuIGvDtm5uZW4gbWl0DQoJCQlHZWxkYnXDn2Ugb2RlciBHZWxkc3RyYWZlIG9kZXIgRnJlaWhlaXRzc3RyYWZlIGdlYWhuZGV0IHdlcmRlbi4gRGllc2UNCgkJCUFuemVpZ2UgaXN0IGtlaW5lIEdlbmVobWlndW5nIHp1ciBFcnJpY2h0dW5nIGVpbmVyIEJldHJpZWJzc3TDpHR0ZQ0KCQkJZW50c3ByZWNoZW5kIGRlbSBQbGFudW5ncy0gdW5kIEJhdXJlY2h0LjwvYl9oaW53ZWlzX2Jlc2NocmlmdHVuZz4NCgkJPGJfaGlud2Vpc19pbnRybz5IaW53ZWlzPC9iX2hpbndlaXNfaW50cm8+DQoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+DQoJPC9lcmtsYWVydW5nZW4+DQoJPGJfdGltZXN0YW1wPjIwMjAxMjAyMTYwMzIzPC9iX3RpbWVzdGFtcD4NCgk8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPg0KCTxmbT4NCgkJPGFuc3ByZWNocGFydG5lcj4NCgkJCTxmaXJtZW5uYW1lIC8+DQoJCQk8YW5yZWRlPkhlcnI8L2FucmVkZT4NCgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4NCgkJCTxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPg0KCQkJPGFuc2NocmlmdD4NCgkJCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlPC9zdHJhc3NlPg0KCQkJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCQkJPHBvc3RmYWNoIC8+DQoJCQkJPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPg0KCQkJCTxvcnQ+S2llbDwvb3J0Pg0KCQkJCTxvcnRzdGVpbCAvPg0KCQkJCTx6dXNhdHogLz4NCgkJCQk8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0Pg0KCQkJPC9hbnNjaHJpZnQ+DQoJCQk8a29udGFrdD4NCgkJCQk8dGVsZWZvbm51bW1lcj4wNDMxIDEyMzwvdGVsZWZvbm51bW1lcj4NCgkJCQk8bW9iaWxudW1tZXIgLz4NCgkJCQk8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZheG51bW1lcj4NCgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPg0KCQkJCTxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPg0KCQkJPC9rb250YWt0Pg0KCQk8L2Fuc3ByZWNocGFydG5lcj4NCgkJPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+DQoJCQkJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA4MTk5NDwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQkJCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXItDQoJCQkJCQl1bmQgT3JkbnVuZ3NhbXQsIEdld2VyYmVtZWxkZXN0ZWxsZTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPg0KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPg0KCQkJCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgkJCQk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJCQkJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgkJCQk8QW5saWVnZW5CRVpFSUNITlVORz5HZXdlcmJlYW5tZWxkdW5nLCBFbGVrdHJvbmlzY2hlIEdld2VyYmVhbnplaWdlPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPg0KCQkJCTxsZWlrYUtFWUxJU1Q+OTkwNTAwMTIxMDQwMDA8L2xlaWthS0VZTElTVD4NCgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPg0KCQkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgk8L2ZtPg0KPC9teUZvcm0+</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnHomeServerVonTorsten</form> + <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> + <id>20210415307020414701</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.by.kop-cloud.de</sender> + <timestamp>2021-04-15T08:33:39.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml b/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml new file mode 100644 index 0000000..2c48301 --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml @@ -0,0 +1,75 @@ +<!-- + + 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. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCiAgICB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgogICAgdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCiAgICB0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKICAgIHQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgogICAgdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKICAgIHQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKICAgIHQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KICAgIDxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+CiAgICA8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KICAgIDxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CiAgICA8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KICAgIDxhbnRyYWdzdGVsbGVyPgogICAgICAgIDxwZXJzX2FucmVkZT5IZXJyJDAzPC9wZXJzX2FucmVkZT4KICAgICAgICA8cGVyc19uYWNobmFtZT5UZXN0ZXJtYW5uPC9wZXJzX25hY2huYW1lPgogICAgICAgIDxwZXJzX3Zvcm5hbWU+TWF4PC9wZXJzX3Zvcm5hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L3BlcnNfZ2VidXJ0c25hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2RhdHVtPjE5OTUtMDMtMjE8L3BlcnNfZ2VidXJ0c2RhdHVtPgogICAgICAgIDxwZXJzX2dlYnVydHNvcnQ+RmxlbnNidXJnPC9wZXJzX2dlYnVydHNvcnQ+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfZ2VidXJ0c2xhbmQ+CiAgICAgICAgPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CiAgICAgICAgPGJfYW5yZWRlPkhlcnI8L2JfYW5yZWRlPgogICAgICAgIDxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDM8L2JfYW5yZWRlX3NjaGx1ZXNzZWxucj4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CiAgICAgICAgPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KICAgICAgICA8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+CiAgICAgICAgPHNoX3N0cmFzc2U+S8O2bmlnc3dlZzwvc2hfc3RyYXNzZT4KICAgICAgICA8c2hfaGF1c251bW1lcj43NDwvc2hfaGF1c251bW1lcj4KICAgICAgICA8c2hfcGx6PjI0ODM3PC9zaF9wbHo+CiAgICAgICAgPG9ydF9hdXN3YWhsPjkwMDczMTQkMDEwNTkwNzU8L29ydF9hdXN3YWhsPgogICAgICAgIDxvcnQ+U2NobGVzd2lnPC9vcnQ+CiAgICAgICAgPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgogICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgIDxHZWJpZXRHTlI5NF9HTlI+MDEwNTkwNzU8L0dlYmlldEdOUjk0X0dOUj4KICAgICAgICA8c3RhYXQ+MDAwPC9zdGFhdD4KICAgICAgICA8aXNvMzE2Nm51bWVyaXNjaD4yNzY8L2lzbzMxNjZudW1lcmlzY2g+CiAgICAgICAgPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPgogICAgICAgIDxrb250X21vYmlsbnVtbWVyPis0OSAxMjM8L2tvbnRfbW9iaWxudW1tZXI+CiAgICAgICAgPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4KICAgICAgICA8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPgogICAgICAgIDxwZXJzb2VubGljaGVFaWdudW5nPgogICAgICAgICAgICA8bWFlbmdlbHZvcmhhbmRlbj5mYWxzZTwvbWFlbmdlbHZvcmhhbmRlbj4KICAgICAgICAgICAgPGVybWl0dGx1bmdzdmVyZmFocmVuPmZhbHNlPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbj4KICAgICAgICAgICAgPE1pdGdsaWVkc2NoYWZ0SW5WZXJib3Rlcm5lclZlcmVpbmlndW5nPmZhbHNlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz4KICAgICAgICA8L3BlcnNvZW5saWNoZUVpZ251bmc+CiAgICA8L2FudHJhZ3N0ZWxsZXI+CiAgICA8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CiAgICA8enVzdGFlbmRpZ2VzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTAzMDIyOTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KICAgICAgICA8c3RyYXNzZT5GbGVuc2J1cmdlciBTdHJhw59lPC9zdHJhc3NlPgogICAgICAgIDxoYXVzbnVtbWVyPjc8L2hhdXNudW1tZXI+CiAgICAgICAgPHBvc3RsZWl0emFobD4yNDgzNzwvcG9zdGxlaXR6YWhsPgogICAgICAgIDxvcnRJRD45MDA3MzE0PC9vcnRJRD4KICAgICAgICA8b3J0PlNjaGxlc3dpZzwvb3J0PgogICAgICAgIDx0ZWxlZm9ubnVtbWVyPjA0NjIxIDg3LTA8L3RlbGVmb25udW1tZXI+CiAgICAgICAgPHRlbGVmYXhudW1tZXI+MDQ2MjEgODctMzY2PC90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxlbWFpbGFkcmVzc2U+R2VmYWhyZW5hYndlaHJAS2llbC5kZTwvZW1haWxhZHJlc3NlPgogICAgICAgIDxkZW1haWxhZHJlc3NlIC8+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5NTM1NjY5X2tsZWluZXJXYWZmZW5zY2hlaW48L2tvbnRha3RzeXN0ZW1fa2VubnVuZz4KICAgICAgICA8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6IC8+CiAgICAgICAgPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CiAgICAgICAgPGxlaWthS0VZTElTVD45OTA4OTAwODAwMDAwMDs5OTA4OTAwODAwMTAwMDwvbGVpa2FLRVlMSVNUPgogICAgICAgIDxhdXN3YWhsX3p1c3RlbGx1bmc+YWJob2xlbjwvYXVzd2FobF96dXN0ZWxsdW5nPgogICAgICAgIDxiX3p1c3RlbGx1bmc+SWNoIGhvbGUgZGVuIEtsZWluZW4gV2FmZmVuc2NoZWluIHNlbGJzdCBhYi48L2JfenVzdGVsbHVuZz4KICAgIDwvenVzdGFlbmRpZ2VzdGVsbGU+CiAgICA8ZW1wZmFuZ2VuZGVzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+RWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIKICAgICAgICAgICAgU2NobGVzd2lnLUhvbHN0ZWluPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+CiAgICAgICAgPGhhdXNudW1tZXI+NjwvaGF1c251bW1lcj4KICAgICAgICA8cG9zdGxlaXR6YWhsPjI0MTA1PC9wb3N0bGVpdHphaGw+CiAgICAgICAgPG9ydElEPjkwMDY0MDI8L29ydElEPgogICAgICAgIDxvcnQ+S2llbDwvb3J0PgogICAgICAgIDx0ZWxlZm9ubnVtbWVyPis0OSA0MzEgOTg4LTg2NTA8L3RlbGVmb25udW1tZXI+CiAgICAgICAgPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4KICAgICAgICA8ZW1haWxhZHJlc3NlPmluZm9AZWEtc2guZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICA8ZGVtYWlsYWRyZXNzZT5lYS1wb3N0c3RlbGxlQGVhLXNoLmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPgogICAgICAgIDxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+YWxsZTwva29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PgogICAgPC9lbXBmYW5nZW5kZXN0ZWxsZT4KICAgIDxlcmtsYWVydW5nZW4+CiAgICAgICAgPGNoZWNrX2dlYnVlaHJlbj50cnVlPC9jaGVja19nZWJ1ZWhyZW4+CiAgICAgICAgPGNoZWNrX3JpY2h0aWdrZWl0PnRydWU8L2NoZWNrX3JpY2h0aWdrZWl0PgogICAgICAgIDxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4KICAgICAgICA8Y2hlY2tfbWlzc2JyYXVjaD50cnVlPC9jaGVja19taXNzYnJhdWNoPgogICAgICAgIDxiX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgZHVyY2ggZGFzIEVpbnJlaWNoZW4KICAgICAgICAgICAgZGVzIGVsZWt0cm9uaXNjaGVuIEFudHJhZ2VzIHZvbiBkZXIgenVzdMOkbmRpZ2VuIFN0ZWxsZSBHZWLDvGhyZW4KICAgICAgICAgICAgZXJob2JlbiB3ZXJkZW4ga8O2bm5lbi48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4KICAgICAgICA8Yl9nZWJ1ZWhyZW5faW50cm8+R2Viw7xociBiZWkgQXVzc3RlbGx1bmcgZGVzIGtsZWluZW4gV2FmZmVuc2NoZWluczoKICAgICAgICAgICAgNjAsMDAgRXVyby4gQmVhcmJlaXR1bmdzZ2Viw7xociBiZWkgVmVyc2FndW5nOiA0NSwwMCBFdXJvLgogICAgICAgICAgICBTaWUgc2luZCBnZW3DpMOfIMKnIDM5IFdhZmZHIHZlcnBmbGljaHRldCwgZGVyIHp1c3TDpG5kaWdlbiBCZWjDtnJkZSBkaWUgenVyCiAgICAgICAgICAgIER1cmNoZsO8aHJ1bmcgZGVzIEdlc2V0emVzIGVyZm9yZGVybGljaGVuIEF1c2vDvG5mdGUgenUgZXJ0ZWlsZW4uIFp1cgogICAgICAgICAgICBQcsO8ZnVuZyBJaHJlciB3YWZmZW5yZWNodGxpY2hlbiBadXZlcmzDpHNzaWdrZWl0IHVuZCBFaWdudW5nIGhvbHQgZGllCiAgICAgICAgICAgIEJlaMO2cmRlIGVpbmUgdW5iZXNjaHLDpG5rdGUgQXVza3VuZnQgYXVzIGRlbSBCdW5kZXN6ZW50cmFscmVnaXN0ZXIsCiAgICAgICAgICAgIGVpbmUgQXVza3VuZnQgYXVzIGRlbSB6ZW50cmFsZW4gc3RhYXRzYW53YWx0c2NoYWZ0bGljaGVuCiAgICAgICAgICAgIFZlcmZhaHJlbnNyZWdpc3RlciwgZWluZSBTdGVsbHVuZ25haG1lIGRlciDDtnJ0bGljaGVuCiAgICAgICAgICAgIFBvbGl6ZWlkaWVuc3RzdGVsbGUgdW5kIElocmVyIFdvaG5zaXR6Z2VtZWluZGUgZWluLjwvYl9nZWJ1ZWhyZW5faW50cm8+CiAgICAgICAgPGJfcmljaHRpZ2tlaXQ+KiBJY2ggYmVzdMOkdGlnZSBkaWUgUmljaHRpZ2tlaXQgbWVpbmVyIEFuZ2FiZW4uPC9iX3JpY2h0aWdrZWl0PgogICAgICAgIDxiX2RhdGVuc2NodXR6PiogSWNoIGVya2zDpHJlIG1pY2ggZGFtaXQgZWludmVyc3RhbmRlbiwgZGFzcyBkZXIKICAgICAgICAgICAgRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcgogICAgICAgICAgICBBdWZnYWJlbiBtZWluZSBEYXRlbiB1bnRlciBFaW5oYWx0dW5nIGRlciBCZXN0aW1tdW5nZW4gZGVyCiAgICAgICAgICAgIERhdGVuc2NodXR6LUdydW5kdmVyb3JkbnVuZyAoRFMtR1ZPKSB1bmQgZGVzCiAgICAgICAgICAgIExhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsCiAgICAgICAgICAgIHZlcmFyYmVpdGV0IHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4gYW4gZGllCiAgICAgICAgICAgIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVpdGV0LiBFYmVuc28gYmluIGljaAogICAgICAgICAgICBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllCiAgICAgICAgICAgIHp1c3TDpG5kaWdlIFN0ZWxsZSBlaW52ZXJzdGFuZGVuLiBNaXIgaXN0IGJla2FubnQsIGRhc3MgaWNoIGRpZQogICAgICAgICAgICBFaW53aWxsaWd1bmcgaW4gZGllIFZlcmFyYmVpdHVuZyB1bmQgw5xiZXJtaXR0bHVuZyBqZWRlcnplaXQgZ2VnZW7DvGJlcgogICAgICAgICAgICBkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQogICAgICAgICAgICA2LCAyNDEwNSBLaWVsIHdpZGVycnVmZW4ga2Fubi4gRWluIFdpZGVycnVmIGlzdCBhYmVyIG51ciB3aXJrc2FtIGbDvHIKICAgICAgICAgICAgZGllIFp1a3VuZnQuIFZlcmFyYmVpdHVuZ2VuLCBkaWUgdm9yIGRlbSBXaWRlcnJ1ZiBlcmZvbGd0IHNpbmQsIHNpbmQKICAgICAgICAgICAgZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbgogICAgICAgICAgICBEYXRlbiB1bmQgZGllIG1pciBuYWNoIGRlbiBkYXRlbnNjaHV0enJlY2h0bGljaGVuIFJlZ2VsdW5nZW4KICAgICAgICAgICAgenVzdGVoZW5kZW4gQW5zcHLDvGNoZSB1bmQgUmVjaHRlIGhhYmUgaWNoIHVudGVyIERhdGVuc2NodXR6ZXJrbMOkcnVuZwogICAgICAgICAgICBLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4KICAgICAgICA8Yl9taXNzYnJhdWNoPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIHp1ciBWZXJmb2xndW5nIHdpZGVycmVjaHRsaWNoZXIKICAgICAgICAgICAgTnV0enVuZyBkaWUgRGF0ZW4gbWVpbmVzIHp1ciBEYXRlbmVpbmdhYmUgZ2VudXR6dGVuIEVuZGdlcsOkdGVzCiAgICAgICAgICAgIGF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4KICAgICAgICA8cG9saWN5dXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2RhdGVuc2NodXR6L2RhdGVuc2NodXR6ZXJrbGFlcnVuZ0VBX2RlLmRvYzwvcG9saWN5dXJsPgogICAgPC9lcmtsYWVydW5nZW4+CiAgICA8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPgogICAgPGZtPgogICAgICAgIDxhbnNwcmVjaHBhcnRuZXI+CiAgICAgICAgICAgIDxmaXJtZW5uYW1lIC8+CiAgICAgICAgICAgIDxhbnJlZGU+SGVycjwvYW5yZWRlPgogICAgICAgICAgICA8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+CiAgICAgICAgICAgIDxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPgogICAgICAgICAgICA8YW5zY2hyaWZ0PgogICAgICAgICAgICAgICAgPHN0cmFzc2U+S8O2bmlnc3dlZzwvc3RyYXNzZT4KICAgICAgICAgICAgICAgIDxoYXVzbnVtbWVyPjc0PC9oYXVzbnVtbWVyPgogICAgICAgICAgICAgICAgPHBvc3RmYWNoIC8+CiAgICAgICAgICAgICAgICA8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CiAgICAgICAgICAgICAgICA8b3J0PlNjaGxlc3dpZzwvb3J0PgogICAgICAgICAgICAgICAgPG9ydHN0ZWlsIC8+CiAgICAgICAgICAgICAgICA8enVzYXR6IC8+CiAgICAgICAgICAgICAgICA8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0PgogICAgICAgICAgICA8L2Fuc2NocmlmdD4KICAgICAgICAgICAgPGtvbnRha3Q+CiAgICAgICAgICAgICAgICA8dGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZvbm51bW1lcj4KICAgICAgICAgICAgICAgIDxtb2JpbG51bW1lcj4rNDkgMTIzPC9tb2JpbG51bW1lcj4KICAgICAgICAgICAgICAgIDx0ZWxlZmF4bnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZmF4bnVtbWVyPgogICAgICAgICAgICAgICAgPGVtYWlsYWRyZXNzZT5tYXgudGVzdGVybWFubkBnbXguZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICAgICAgICAgIDxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgogICAgICAgICAgICA8L2tvbnRha3Q+CiAgICAgICAgPC9hbnNwcmVjaHBhcnRuZXI+CiAgICAgICAgPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4KICAgICAgICAgICAgPHZlcndhbHR1bmdzbGVpc3R1bmc+CiAgICAgICAgICAgICAgICA8YXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgogICAgICAgICAgICAgICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTUzNTY2OTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgICAgICAgICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+S3JlaXMKICAgICAgICAgICAgICAgICAgICAgICAgU2NobGVzd2lnLUZsZW5zYnVyZy9LcmVpc3ZlcndhbHR1bmcgLSBBbGxnZW1laW5lCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZG51bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgICAgICAgICA8L2F1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KICAgICAgICAgICAgICAgIDxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KICAgICAgICAgICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD4KICAgICAgICAgICAgICAgIDxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPGxlaWthS0VZTElTVD45OTA4OTAwODAwMDAwMDs5OTA4OTAwODAwMTAwMDwvbGVpa2FLRVlMSVNUPgogICAgICAgICAgICAgICAgPGxlaWthQkVaRUlDSE5VTkcgLz4KICAgICAgICAgICAgPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPgogICAgICAgIDwvdmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgogICAgPC9mbT4KPC9teUZvcm0+</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>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</content> + <contentType>image/jpeg</contentType> + <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> + <name>Helge1.jpg</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knVfz89rumG1eQI5m+DEW+UJs0xMtIkYdLT37BkrZDaB6aIH5iQrVtv20bX1XS7G+kALWWen4WCOQsMrQ+Nh7ac9b+ko0l+uSDuTwrCjsW3KBYUzs2LhPkMG4xvYyiR45CXpT+HCtE14AScXYcAsl3LJDciUllaNtIQVn0l3qHycHYFGkYDnbNqmBjepbNqhEC1ggKCRhFtFrDH54Osd3HqTHOIvDjVeDIoqFILfa4enn9iI0PmeIQD4LBTcC24TVfDHcDND4X9QgF3AVQQylDOaKVWD26W++XEvRu7l+lXydiaNGqeJjC2B1DNq/1RliYjDUaIStaAvzBJVM+VSvHlXR45HD82ickaaMWZzX4lrVC/nwLd6kUDpKhJM0K0XFMY9lsiua3y/2Gc8/Zt2wAXYZqLzRWmBRl4X3L2SrP6Ggu+Cy2su8nnP78l68/JF1bzR15u9GScpikxIYuyGE+V+mGddBqqQnOKrB7fA/Y58u/H3O91cKIlkpSStJtBAAvmim1fkGOt4ZzJiczTQbFpVNRCpzOpOVOJn9sZtCyMoNlsdscKdpcGEr8ROsEYBwN7j+6+dusgeBH53r8YW1YP9mat2L8dfD748LxeTOxSzlVbkT0SnYbrKUMVHOxwUMGgsmLn9B9V1SntOsDYeJWy5yGV12mBv1cr+eK+BGzYp6PWOkpYBVA7K82UPtDaY6JcCvAoO3jim231H1BLBwjywd7XiAMAAPQNAABQSwMEFAAICAgALESPUgAAAAAAAAAAAAAAAAoAAABzdHlsZXMueG1s7VpLk9u4Eb7nV6i4tblRFDUz65Hi8R682cpubKcqds5bEAmKiEGCBYB6+NenGyBIkCI1XI+T2qrIh3ER/UDj6wcagF7/eCr44kClYqJ8CuLlKljQMhEpK/dPwb8+/Rw+Bj+++dNrkWUsodtUJHVBSx0qfeZULUC4VFtLfApqWW4FUUxtS1JQtdXJVlS0dEJbn3trprIjRtlcccPsS2t60nOFkbcnS3bzZzbMvnQqyXGuMPICpr54JuYKnxQPMxEmoqiIZgMrTpyVn5+CXOtqG0XH43F5vFsKuY/izWYTGWprcNLyVbXkhitNIsopTqaieBlHjregmsy1D3l9k8q62FE5GxqiyYVX1WE/OyIO+wlokpzI2bFhmPvuvUvnu/cu9WULovMJnzxG74Fo/rx/18WCLObOhbw9qBLJqtnLtNy+vBCiNRUFbIIac9er1X1kvz3u41X2o2SaSo89ucqeEJ60iItiDDTgiyPgCOkBw9RxS1z0pOaHSNJKSN0aks0vUIDOuk2vXBd8Or2Q6lj3Mk1HWcGcuwhSDQI9PDB6/C7oVc7rDtgMHGDK0HMihsmvU1cF4lWEPG3agEu6oir3bdnPRF3CImCraACkp4pKhiTCjdi2p8GPMi6+QmWzV3gaegWUUe4ytF3SqBohwkKFrITAFNXWk+5VC6Xu9Jj7Pv0zQlqIuwfUx2Yeb9NcB2/cDpkJ2B0zktAwpQlXb17bytYOL+w3GvkU/Cwp/UhKFQcLKGKOqWD83NGCRU8DEsM9LWFxkFfqyJQKouuzvGNQjA3Ei48glo1M9mdSCfWXIaMdvWqAFAUpexwV0wmUvgORzMTg7zDOrvZ524BvhmkWmxeY5nng65xzVpoWL7Hgg9DCLHfx9te/Lz6+XfxEC/aO7XM9idO0yBzIZlkcTYV6M257Q7eylGak5k3H6DQ3Ju8lqXKWBI63+Q4ryFIqNYMOE5eptBSfKezxXEBT8d3d/Q8P5D5YYMmCLOa8pbxab7IE4jsT2yOoCkWlTYaWIsTvRkTlJBXHEKxVVIenp2C1vEuKUeJ5QNTQIoTQUdFQVSSBfi7MhWRfBFYZZF0/XmU+4KKSS1bYguZqvWAd0dmAzGEdR6bz0HbIGeHKi7iKSGLw7qFtSMgfkloLnAPCkKVUWFbCq5y4CYwZO0kJdJ/gIpZoR8EWAG0rRAriXIZ61wsqVqYU9108SfiLcUY6G2EXg7gRlcKomza7ZUe7L1ZTKwowlOhVM3kTLFrWtGfUVLGEYDJ0xb4APV5X2oxxUu5rsoehlJqBBHYyLSFifvprixDVsOOEn6kszepG5wyhISHlM8neiaAZTiReLR+qluwsctQvuaM0pjnC2w+XRmADzelporSZSVsWi8Fg0paas+G0LemXD0HnyV5hmFMtWtcHV2MYXCEkhGmpnoK1rQUMnN9+5ecqp6VxcchJmoKDjKGmTHBWsHZtM/OgqstE11YhlhmAAEABhz+fKC7Aw5RBuShxEugmHuIui/upVAHSXQrf4v2PH+9+xFFX34ZhKGlBWBniCdTF4mWsVrXKBywvSCZ7QPAKLad+KNm7jp2QmB4Ye7C/QCBxUikM7JdOHEpxHEwOI4Ms/kxpFWqxpzrHywRMxOcm9ie08f0R0iolMg0mi4lzHicKagTmVJdhl/r+RknqpfakOhho78nCcVNKTF+f4RMM/LZe/bYT6XnMrOfKXkEklB2ArMJm4H5tmoFufCe0xgM29AnxGkn2QJVAwMP/NeHDbbh1gukiStNFEH4kZ/VcDZooMCbNXH357/f3w1J2X+mXVqPGiEboxS23UzTVeDt6t6Spyji6tutFrjFlFpOzt2WetLjlmLa5K6xodZfSz6TyWHrAvllxcvYSaOGTX5KeX515k1l3/2pu1pmOIacYQ7j9rL6fj9I76CS+ZvlXig9HlTMSvheQ61kBGX/DiHR3IfNwekvM4fAbRgoAI8nvLNJNJX5JkTZvGvbG3RymVJ9iQsldyK+mC/dE22fHUAL6XziPwml9tsstZg11RPh/FBLzGjvP4pbe2Dw7pn6BI+3pG0YUM/quRtQ38v4fPYvNYkSt7W3BBfD/sJRgwMjpgfKG3cKBA7CstgWrixCfUwiU2RZnLHeN6BBonyQUM305eM7kJHXXHWQHZAicfYnXz2NqByyNbjOYQZMtjjQNd2dbeKE79uAYtQ2oU8ueCcj6BkgfkLsbIH1A7m+A9AF5uAHSB+SHGyB9QF7dAOkD8ngDpA/I5gbIoDFb/R8h0if5MJVCUwU9cZmxfd3cirWEsDkcZEJo/B5DLG7af/sGeSC8ptj+20EnqFqkmocFX8aeGfDlAfW5X2vgeudbSMt0ykA2bqBTj4h0FoxNM3nisS+35gJ0s+neUcbQaZR0KHCa6YbGykSaX8XhTu89ehtt3Vs3XkqDTjjBOII7q+3B2+QM3u0dVN5XRRyMMA1O4oZyZCn+iGwdL1eruLklMAR3MbTeLF9NrrCZAgDUoZAMfwjTuFpILQnTwfA2YuImYjCMGF0MysagqXerwROwjb+wIKd2LXhr1v0YomFQtHLqLBar5Sp+7CZxr2bhjsLKDT/yxKt4hIdk+DY1xtLlH5w/BWftMZyk/66VtlFgY8OOS0hi552H77vnH/srhJX5F/hv1mN+dqvNKcFHFvMR+RB4g5eKuoi8DMGGUBDV6mhnawZR09V3Et9mL3S9TBioj8Z/IvzmP1BLBwiRsGpi+QcAAGIsAABQSwMEFAAICAgALESPUgAAAAAAAAAAAAAAAAgAAABtZXRhLnhtbI2TS2+cMBSF9/0ViGQLxsAQsIBIXXQVqZU6lbIbeewbxinYyJgw/fc1rymZmUWXnPsdn+MH+fO5qZ0P0J1QsnCxH7gOSKa4kFXh/tp/81L3ufySq7c3wYBwxfoGpPEaMNSxVtmReVS4vZZE0U50RNIGOmIYUS3I1UK2NJmCZuVcC/m7cE/GtAShYRj8IfKVrhDOsgxN0xXl7MK1va4nijMENYwJHcI+Ris7NvzfUiO7raSUugSN+Fx6iguDIEbz90pXmvP63gYsGyHbkBrqfQgYHlxn2f7mwEO3XE93rFHmUxmmgRpLeNYMZRiE2AtiD+/2OCBRSKLMT9MsfopxmuXojiPnjNyzRiTY+UGCY5wkSZCjFZtTgQtjL97jvZ7WKn/sw93PJeBm+NnD/rAauhJf0Ys8sxVIsGalyxdx1PB92jba+aH/5IePL0L258NrmhyS2NkAh1ard2DGnmcTPH7tRc29cIn5t+KccHmgnbElOyOYM+mGHmvwmOqlKVx7z5MoGlrdiOo4Zl2r7YbEF03TStP2dD0YlObXGjtZmhnQ6yBeBtJe2XASBrqWMptxy6EyR59eCLr3N5Z/AVBLBwieMOOavAEAAMsDAABQSwMEFAAICAgALESPUgAAAAAAAAAAAAAAAAwAAABzZXR0aW5ncy54bWy9Wl132jgQfd9fkcN7SshXE06SHkNKS0sCB2hztm/CHkCLrPGR5BD+/Y5kk6YEb1Pb2qcQbM/IM/fO3JG4+vAUi4NHUJqjvG603h01DkCGGHG5uG58m/YOLxofbv66wvmch9COMExjkOZQgzF0iz6gx6VuZ5evG6mSbWSa67ZkMei2CduYgNw+1n55d9s5y755ElyurhtLY5J2s7ler9+tT96hWjRbl5eXTXd1e2uIcs4Xb3WV3f3SFSI+O7IPZItxzo6Pjk6b2f+Ng3yRL0Jz3LjZxmH7+jdXuYPszyE3ENvYHORf26VdN8hl+5HD+jlqjX3P/frMd7o/UMCmmDS2V8wmoSsC5aJxc3TVfG3i7WYHMDc+7D7wyCz3Gj49Pjo7r2b8M/DFcv+yWxdnxyflrE+WuB5DRBiD7pLJBegdDzNEAUw2boxKoZyPvuwoXGu4wwiKrM+Z0G82fxiz5JDLCJ4geh2s/QBzzxA11OZtIe9HO0vVRnEbbIvl4/KpLMRe66TVOitvt4gqx2dHrbJWNZ8JqJ8szmzt1HZWx4UcsQwsHV5nu4PGYFxIwJJR/oEYT8nULtqWqEylgjRgG0xNF0Uay11S12W9g7iqjdWv49JjoUG1f+2XJZPZ1xMQEBqIeoq+KLHyPV++LC5Fl/N6tf8G6o1v76bZF6lihnrzn7TVEVUwM1KoEwqAh5w5+7ZejJiXRpKtn2x3WLhaKEzlbpGuy0kXKZkofL1DICUal7497KlGTmf/k2LJkoe+lu+qrM8c99jT/Wty5h24+WagJKB6CuMJmHS32dQG9yk8mZFgISxRRLBbrOpwEySJ2IyYYgub1TumVj1UMTNTvE/jGbiYeHq5MdgJAApZVsH+lM2GZJxeZ8GlB/sfKTRRj2hciNEKxiepctXHJv+BsjKJmRAe/Pysczb/Nl63iq1dta/fWVfwJIFoxEOTqmJqV/DQE8iMYaSl7jF2iffh5Zuc0bi0cm62BPHhxyFsstF0wRfOcpLMBa49VdqpDZOvMj6hyAv4gjMvHLSc67JEj0CFpL2oHZ2f+6AFCkFe4GOcmE0XhLBUrD9gU8JsHrBMs3csiAPt5I796OHV7phZdpgGO/0Hgi+k3Tuq/9WCKNPaw/mcxKoPLPT1gM1A3ObbX77aIahKqmSYGhvpATVV8TcHEWmfDby/kKigx5U2A/Lap/FDmr706fJbEjEDVnJNIU4EffZUWDokuFYei66AMa6/AvhQja5tRBDdMuqERL5KkMqSTCvWgYwoKnKlSRzafHeZCFPhZgwfmdYwFFFOijug9RYPG1UwLKn7mQ4qUtaThIV+YDthj/BJ4Iw9FxAK4MoTtPQYbFYeYYoZJeunyFjzXcVOeWrcvG+dnB5fVBm9862D8XTgq8S6Lvufo2XVSYqgqyz3PJWmz5zILe1g4OMFIjcIuAqV8yEwE8OUBxT1bIcKUoNZVa/fQVZDfPajPeGq/zW6S3IRUhnsYpzQ3GQPzGrf0LUl6nt2GDeUXYHax5arfRPjM+N5v7B1zx5W2kLrtpELTlqWfLE8pIiSHLZtrKw0/ApKBpozOUoljbYeW6LdlwE1nP1DNXKEmltP3pBNcDA8ZMKztJ6kM2Px3RMb0hghoRiiwP3nj7A5V6fomGtnLg8TKvn6+ERolEwMgEV+akOqFKF8K/Xs3wmmKiwv+AIhcO14RGN1l8kQCvedqvAUDUHYwtknUaxM9afqXJB+t11WqXtlb7HdA0w8zVTyifyE8AMUEl5/A9Vq2jRwhzeZLCWnz3vOui8HXPsQNPlPD3LAUbn8CptdN0Sc89MOl0xt3rb3j8kLZE2Wyor55znYA8lRkuD+CYShpA5A5d9HuMjRGHE3E07dn12cvT86LVnkzUaAvsdbmLNU+Ei0nagyWVF84lXyBN3tXBF6JwaTbdetP8u3eI/mS6oNn28sjvQDN8s7JlMmfG3POZdjoMZumRgYo+xwT4LZ7nz40H+/divSszGT0R4t6/BWUskOkEVjKmIoxSum1xWzLkvsEYYt/kRFPZR2oPzfAlbt1BLU3uPKPyyC9iwn0M+jyVa4PSi6VZF4c6KxTIUq/PFC89WPA5tFP5u8+RdQSwcICbirkyoGAAB4KQAAUEsDBBQAAAgAACxEj1IAAAAAAAAAAAAAAAAaAAAAQ29uZmlndXJhdGlvbnMyL3BvcHVwbWVudS9QSwMEFAAACAAALESPUgAAAAAAAAAAAAAAAB8AAABDb25maWd1cmF0aW9uczIvaW1hZ2VzL0JpdG1hcHMvUEsDBBQAAAgAACxEj1IAAAAAAAAAAAAAAAAaAAAAQ29uZmlndXJhdGlvbnMyL3N0YXR1c2Jhci9QSwMEFAAACAAALESPUgAAAAAAAAAAAAAAABwAAABDb25maWd1cmF0aW9uczIvcHJvZ3Jlc3NiYXIvUEsDBBQAAAgAACxEj1IAAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL3Rvb2xiYXIvUEsDBBQAAAgAACxEj1IAAAAAAAAAAAAAAAAaAAAAQ29uZmlndXJhdGlvbnMyL3Rvb2xwYW5lbC9QSwMEFAAACAAALESPUgAAAAAAAAAAAAAAABwAAABDb25maWd1cmF0aW9uczIvYWNjZWxlcmF0b3IvUEsDBBQAAAgAACxEj1IAAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL2Zsb2F0ZXIvUEsDBBQAAAgAACxEj1IAAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL21lbnViYXIvUEsDBBQACAgIACxEj1IAAAAAAAAAAAAAAAAMAAAAbWFuaWZlc3QucmRmzZPNboMwEITvPIVlzthALwUFcijKuWqfwDWGWAUv8poS3r6Ok1ZRpKrqn9TjrkYz3460m+1hHMiLsqjBVDRjKSXKSGi16Ss6uy65pds62ti2Kx+aHfFqg6WfKrp3bio5X5aFLTcMbM+zoih4mvM8T7wiwdU4cUgMxrSOCAkejUJp9eR8GjnO4glmV1F066CQefcgPYvdOqmgsgphtlK9h7YgkYFAjQlMyoR0gxy6TkvFM5bzUTnBoe3ix2C904OiPGDwK47P2N6IDKblXuC9sO5cg998lWh67mN6ddPF8d8jlGCcMu5P6rs7ef/n/i7P/xnir7R2RGxAzqNn+pDntPIfVUevUEsHCLT3aNIFAQAAgwMAAFBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAAFQAAAE1FVEEtSU5GL21hbmlmZXN0LnhtbK2TS2rDMBCG9zmF0bZYarMqwk4WgZ4gPYAqjx2BNDLWKMS3r2yS2KUYYvBunv98GkbF8eZsdoUuGI8l++DvLAPUvjLYlOz7/JV/suNhVziFpoZA8mFkqQ/D0y1Z7FB6FUyQqBwESVr6FrDyOjpAkn/r5Tjp6c0A9uywy6Z5tbGQp/6un6rraG3eKrqUTCyJTGEHlVE59S2UTLWtNVpRKhNXrPgIzOecnOBGTKxhOF+i+0FlbBD0MHmLzQKDcaoBMeRXTdEeaeBLe1wQHsjFkF6lG6i3EDaXdUBqe1YgSoe5Pe3JY22a2I2XEfbixfMJEQcUHg3Xc4WVq7rHeFfVLwxOVW/3Bxbi3788/AJQSwcIm7Y4HAwBAADSAwAAUEsBAhQAFAAACAAALESPUl7GMgwnAAAAJwAAAAgAAAAAAAAAAAAAAAAAAAAAAG1pbWV0eXBlUEsBAhQAFAAACAAALESPUgYCUOZqAQAAagEAABgAAAAAAAAAAAAAAAAATQAAAFRodW1ibmFpbHMvdGh1bWJuYWlsLnBuZ1BLAQIUABQACAgIACxEj1Lywd7XiAMAAPQNAAALAAAAAAAAAAAAAAAAAO0BAABjb250ZW50LnhtbFBLAQIUABQACAgIACxEj1KRsGpi+QcAAGIsAAAKAAAAAAAAAAAAAAAAAK4FAABzdHlsZXMueG1sUEsBAhQAFAAICAgALESPUp4w45q8AQAAywMAAAgAAAAAAAAAAAAAAAAA3w0AAG1ldGEueG1sUEsBAhQAFAAICAgALESPUgm4q5MqBgAAeCkAAAwAAAAAAAAAAAAAAAAA0Q8AAHNldHRpbmdzLnhtbFBLAQIUABQAAAgAACxEj1IAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAADUWAABDb25maWd1cmF0aW9uczIvcG9wdXBtZW51L1BLAQIUABQAAAgAACxEj1IAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAG0WAABDb25maWd1cmF0aW9uczIvaW1hZ2VzL0JpdG1hcHMvUEsBAhQAFAAACAAALESPUgAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAqhYAAENvbmZpZ3VyYXRpb25zMi9zdGF0dXNiYXIvUEsBAhQAFAAACAAALESPUgAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAA4hYAAENvbmZpZ3VyYXRpb25zMi9wcm9ncmVzc2Jhci9QSwECFAAUAAAIAAAsRI9SAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAcFwAAQ29uZmlndXJhdGlvbnMyL3Rvb2xiYXIvUEsBAhQAFAAACAAALESPUgAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAUhcAAENvbmZpZ3VyYXRpb25zMi90b29scGFuZWwvUEsBAhQAFAAACAAALESPUgAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAihcAAENvbmZpZ3VyYXRpb25zMi9hY2NlbGVyYXRvci9QSwECFAAUAAAIAAAsRI9SAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAADEFwAAQ29uZmlndXJhdGlvbnMyL2Zsb2F0ZXIvUEsBAhQAFAAACAAALESPUgAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAA+hcAAENvbmZpZ3VyYXRpb25zMi9tZW51YmFyL1BLAQIUABQACAgIACxEj1K092jSBQEAAIMDAAAMAAAAAAAAAAAAAAAAADAYAABtYW5pZmVzdC5yZGZQSwECFAAUAAgICAAsRI9Sm7Y4HAwBAADSAwAAFQAAAAAAAAAAAAAAAABvGQAATUVUQS1JTkYvbWFuaWZlc3QueG1sUEsFBgAAAAARABEAZQQAAL4aAAAAAA==</content> + <contentType>application/vnd.oasis.opendocument.text</contentType> + <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> + <name>Helgetext2.odt</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnHomeServerVonTorsten</form> + <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> + <id>20210415307020414701</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.by.kop-cloud.de</sender> + <timestamp>2021-04-15T08:33:39.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml b/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml new file mode 100644 index 0000000..f6574ad --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml @@ -0,0 +1,84 @@ +<!-- + + 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. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIiB0OmZvcm0tdmVyc2lvbj0iMi4wMTMiIHQ6dXVpZD0iNzgxNGI2YjUtMmZlYy00ZDBiLTg4OGYtYTM3N2ExOWIwZGEzIiB0OmlkPSIyMDIxMTIwODQyNjkyMDE3OTIwMCIgdDp0aW1lc3RhbXA9IjIwMjEtMTItMDhUMTA6NTE6MzIuNTMxWiIgdDpzZW5kZXI9InN0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUiIHQ6Zm9ybT0iV2FobGhlbGZlcmluIHdlcmRlbiIgdDpmb3JtLWlkPSJvZHBfd2FobGhlbGZlci9vZHBfd2FobGhlbGZlciIgdDpjdXN0b21lcj0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmN1c3RvbWVyLWlkPSJzaCIgdDpjbGllbnQ9IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiPgogIDxnZWJpZXRfaWQ+OTAwNzE3ODwvZ2ViaWV0X2lkPgogIDxzZXNzaW9uaWQ+ZjA1M2M0MmMtZjU0ZS00ZTZlLWIxODMtNWVmM2QxZDFlMDQyPC9zZXNzaW9uaWQ+CiAgPGFubGllZ2VuX2lkPjg5Njc5MTM8L2FubGllZ2VuX2lkPgogIDx6c3Rfb25saW5lX2RpZW5zdD5XYWhsaGVsZmVyIC0gQWx0ZW5ob2x6L0UtTWFpbC1adXN0ZWxsdW5nOzI1NDQwNDQwMDtodHRwczovL3d3dy5kYXRhcG9ydC5kZS9kYXRlbnNjaHV0ei87aHR0cHM6Ly93d3cuZGF0YXBvcnQuZGUvaW1wcmVzc3VtLztFTUFJTF9MTjs7b2xhZi5sZWllckBkYXRhcG9ydC5kZTs7dHJ1ZTwvenN0X29ubGluZV9kaWVuc3Q+CiAgPGdlYmlldGJlemVpY2hudW5nPkFsdGVuaG9sejwvZ2ViaWV0YmV6ZWljaG51bmc+CiAgPGRhdGVuc2NodXR6X3p1c3RpbW11bmc+dHJ1ZTwvZGF0ZW5zY2h1dHpfenVzdGltbXVuZz4KICA8d2FobD5MYW5kdGFnc3dhaGwgU2NobGVzd2lnIEhvaGxzdGVpbiA4LiBNYWkgMjAyMjwvd2FobD4KICA8d2VpdGVyZV93YWhsZW4+dHJ1ZTwvd2VpdGVyZV93YWhsZW4+CiAgPGVpbnNhdHpvcnQ+CiAgICA8YXVzc2VyaGFsYiBsYWJlbD0iTmljaHQgaW0gZWlnZW5lbiBXYWhsYmV6aXJrIj5mYWxzZTwvYXVzc2VyaGFsYj4KICAgIDxvdGhlciBsYWJlbD0iIj5mYWxzZTwvb3RoZXI+CiAgICA8d29obm9ydCBsYWJlbD0iTnVyIGluIFdvaG5vcnRuw6RoZSI+dHJ1ZTwvd29obm9ydD4KICA8L2VpbnNhdHpvcnQ+CiAgPGVyZmFocnVuZz5KYTwvZXJmYWhydW5nPgogIDxmdW5rdGlvbj4KICAgIDxiZWlzaXR6ZXIgbGFiZWw9IkJlaXNpdHplcjppbiI+ZmFsc2U8L2JlaXNpdHplcj4KICAgIDxzY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU2NocmlmdGbDvGhyZXI6aW4iPmZhbHNlPC9zY2hyaWZ0ZnVlaHJlcj4KICAgIDxzdGVsbF9zY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFNjaHJpZnRmw7xocmVyOmluIj5mYWxzZTwvc3RlbGxfc2NocmlmdGZ1ZWhyZXI+CiAgICA8c3RlbGxfd2FobHZvcnN0ZWhlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFdhaGx2b3JzdGVoZXI6aW4iPmZhbHNlPC9zdGVsbF93YWhsdm9yc3RlaGVyPgogICAgPHdhaGx2b3JzdGVoZXIgbGFiZWw9IldhaGx2b3JzdGVoZXI6aW4iPnRydWU8L3dhaGx2b3JzdGVoZXI+CiAgPC9mdW5rdGlvbj4KICA8cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW56ZWlnZW5kZSpyLCAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7SWhyIEFudHJhZyB3dXJkZSBhbiBkaWUgenVzdMOkbmRpZ2UgU3RlbGxlIGdlc2VuZGV0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIHVuZCB6dXN0w6RuZGlnZSBTdGVsbGUgZmluZGVuIFNpZSBpbSBhbmdlaMOkbmd0ZW4gRG9rdW1lbnQuJmx0O2JyLyZndDtCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVyIEFuemVpZ2UgYW4uJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7TWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyZSBPbmxpbmUtQmVow7ZyZGUmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD4KICA8bmFtZWlkLz4KICA8cmVzdF9yZXNwb25zZV9uYW1lLz4KICA8bWFpbGJveGd1aWQvPgogIDxuYWNobmFtZT5mcmdoPC9uYWNobmFtZT4KICA8dm9ybmFtZT5mcmdoPC92b3JuYW1lPgogIDxnZWJ1cnRzZGF0dW0vPgogIDxzdGFhdGVuPkRFPC9zdGFhdGVuPgogIDxzdHJhc3NlX25yPgogICAgPHN0cmFzc2VfbnItaXRlbT4KICAgICAgPHN0cmFzc2U+c2ZnPC9zdHJhc3NlPgogICAgICA8aGF1c251bW1lcj4yMjwvaGF1c251bW1lcj4KICAgICAgPGFkcmVzc3p1c2F0ei8+CiAgICA8L3N0cmFzc2VfbnItaXRlbT4KICA8L3N0cmFzc2VfbnI+CiAgPHBsel9vcnQ+CiAgICA8cGx6X29ydC1pdGVtPgogICAgICA8cG9zdGxlaXR6YWhsPjIyMjIyPC9wb3N0bGVpdHphaGw+CiAgICAgIDxvcnQ+c2RmZ3NmZDwvb3J0PgogICAgPC9wbHpfb3J0LWl0ZW0+CiAgPC9wbHpfb3J0PgogIDxlbWFpbD5zZGZnc0Bhc2RmLmNvbTwvZW1haWw+CiAgPHRlbGVmb24+MjM0PC90ZWxlZm9uPgogIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTAzMDIyOTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KICA8enVzdF9rb250YWt0c3lzdGVta2VubnVuZ19uYi8+CiAgPHp1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfbG4+b2xhZi5sZWllckBkYXRhcG9ydC5kZTwvenVzdF9rb250YWt0c3lzdGVta2VubnVuZ19sbj4KICA8enVzdF9rb250YWt0c3lzdGVta2VubnVuZ193cy8+CiAgPHp1c3Rfc3RyYXNzZT5BbHRlbmhvbHplciBTdHJhw59lPC96dXN0X3N0cmFzc2U+CiAgPHp1c3RfaGF1c251bW1lcj4xMDwvenVzdF9oYXVzbnVtbWVyPgogIDx6dXN0X3Bvc3RsZWl0emFobD4yNDE2MTwvenVzdF9wb3N0bGVpdHphaGw+CiAgPG9ydElEPjkwMDcxNzg8L29ydElEPgogIDx6dXN0X29ydD5BbHRlbmhvbHo8L3p1c3Rfb3J0PgogIDx6dXN0X3RlbGVmb25udW1tZXI+KzQ5IDQwIDQyODQ2LTQwMzI8L3p1c3RfdGVsZWZvbm51bW1lcj4KICA8enVzdF9mYXhudW1tZXIvPgogIDx6dXN0X2VtYWlsYWRyZXNzZT5SYW1pbi5KZXlyYW5pQGRhdGFwb3J0LmRlPC96dXN0X2VtYWlsYWRyZXNzZT4KICA8enVzdGVsbHVuZ19uYWNocmljaHRlbmJyb2tlcj5mYWxzZTwvenVzdGVsbHVuZ19uYWNocmljaHRlbmJyb2tlcj4KICA8enVzdGVsbHVuZ19lbGVrdHJvbmlzY2g+dHJ1ZTwvenVzdGVsbHVuZ19lbGVrdHJvbmlzY2g+CjwvbXlGb3JtPg==</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>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DQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL091dGxpbmVzIDIzIDAgUg0KL1BhZ2VzIDEwIDAgUg0KPj4KZW5kb2JqCjI2IDAgb2JqCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTEyMDgxMTUxNTYrMDEnMDAnKQ0KL1Byb2R1Y2VyIDxmZWZmMDA0YzAwNjkwMDYyMDA3MjAwNjUwMDRmMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNjAwMmUwMDM0Pg0KL0F1dGhvciA8ZmVmZjAwNGIwMDZjMDA2MTAwNzUwMDczMDAyMDAwNTcwMDYxMDA2ZTAwNmUwMDY1MDA3Mj4NCj4+CmVuZG9iagp4cmVmDQowIDI3IA0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDY3IDAwMDAwIG4NCjAwMDAwMDAyNTEgMDAwMDAgbg0KMDAwMDAwMTcxMCAwMDAwMCBuDQowMDAwMDAxNzMwIDAwMDAwIG4NCjAwMDAwMDE5MTQgMDAwMDAgbg0KMDAwMDAwMzQ4OCAwMDAwMCBuDQowMDAwMDAzNTA4IDAwMDAwIG4NCjAwMDAwMDM2OTIgMDAwMDAgbg0KMDAwMDAwNDYzNiAwMDAwMCBuDQowMDAwMDA0NjU1IDAwMDAwIG4NCjAwMDAwMDQ3NzcgMDAwMDAgbg0KMDAwMDAxODQ2MSAwMDAwMCBuDQowMDAwMDE4NDgzIDAwMDAwIG4NCjAwMDAwMTg2OTcgMDAwMDAgbg0KMDAwMDAxOTMxMyAwMDAwMCBuDQowMDAwMDE5Nzg4IDAwMDAwIG4NCjAwMDAwMjc0NDUgMDAwMDAgbg0KMDAwMDAyNzQ2NiAwMDAwMCBuDQowMDAwMDI3Njg3IDAwMDAwIG4NCjAwMDAwMjgxMDEgMDAwMDAgbg0KMDAwMDAyODM4NSAwMDAwMCBuDQowMDAwMDI4NDMyIDAwMDAwIG4NCjAwMDAwMjg0OTQgMDAwMDAgbg0KMDAwMDAyODU1NiAwMDAwMCBuDQowMDAwMDI4NzQ5IDAwMDAwIG4NCjAwMDAwMjg4NzYgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9JbmZvIDI2IDAgUg0KL0lEIFsgPGFhNThmNDE1OWVlNzI2NWY1MTg0N2ZiNmU1NmZmYTA1PiA8Y2Q3MmFiZTE4ZDk4NGM4NjAyMTJjOTU5NzM5MzNiNmU+IF0NCi9Sb290IDI1IDAgUg0KL1NpemUgMjcNCi9Eb2NDaGVja3N1bSAvOTA3Q0UzMzczRTZCREE3QzVERjk1NUNGMERBNEU3ODYNCj4+DQpzdGFydHhyZWYNCjI5MTIzDQolJUVPRg0K</content> + <contentType>application/pdf</contentType> + <id>myForm-pdf</id> + <name>Wahlhelferin.pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CjwvaGVhZD4KPGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgZm9udC1zaXplOiAxMXB0OyI+CjxwPlNlaHIgZ2VlaHJ0ZS9yIFNhY2hiZWFyYmVpdGVyKmluPC9wPgo8cD5FaW4gbmV1ZXIgQW50cmFnIHd1cmRlIGdlc3RlbGx0PC9wPgo8cD5BY2h0dW5nOiBBbnR3b3J0ZW4gU2llIG5pY2h0IGF1ZiBkaWVzZSBFLU1haWwuIERpZSBFLU1haWwgd3VyZGUgYXV0b21hdGlzY2ggZXJzdGVsbHQuIEVpbmUgQW50d29ydCB3aXJkIG5pY2h0IGJlYXJiZWl0ZXQgdW5kIGdlbGVzZW4hLiBCaXR0ZSB3ZW5kZW4gU2llIHNpY2ggYW4gZGVuIGltIEFudHJhZyBnZW5hbm50ZW4gQW50cmFnc3RlbGxlci48L3A+CjwvYm9keT4KPC9odG1sPgo=</content> + <contentType>text/xml</contentType> + <id>EmailBodySachbearbeiterTemplate</id> + <name>EmailBodySachbearbeiterTemplate.xml</name> + </attachments> + <caller/> + <client>Schleswig-Holstein</client> + <clientId>land</clientId> + <customParameters> + <key>EmailAdresseSachbearbeiter</key> + <value>markus.fraedrich@dataport.de</value> + </customParameters> + <customParameters> + <key>EmailSubjectSachbearbeiterTemplate</key> + <value>Wahlhelferin</value> + </customParameters> + <customer>Schleswig-Holstein</customer> + <customerId>sh</customerId> + <form>Wahlhelferin werden</form> + <formId>odp_wahlhelfer/odp_wahlhelfer</formId> + <id>20211208426920179200</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> + <sender>stage.afm.schleswig-holstein.de</sender> + <timestamp>2021-12-08T11:51:57.542+01:00</timestamp> + <username/> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointITCase.java b/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointITCase.java deleted file mode 100644 index 9a7976e..0000000 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointITCase.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.intelliform; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.util.Optional; - -import javax.xml.bind.JAXBException; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.soap.SOAPException; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -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.context.ApplicationContext; -import org.springframework.core.io.Resource; -import org.springframework.ws.test.server.MockWebServiceClient; -import org.springframework.ws.test.server.RequestCreators; -import org.springframework.ws.test.server.ResponseActions; -import org.springframework.ws.test.server.ResponseMatchers; -import org.xml.sax.SAXException; - -import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; - -@SpringBootTest -class FormDataEndpointITCase { - - private final static String REQUEST = "EinfachesFormularZweiAnhaengeSoapRequest.xml"; - private final static String RESPONSE = "EinfachesFormularZweiAnhaengeSoapResponse.xml"; - - @Autowired - private ApplicationContext applicationContext; - @MockBean - private VorgangRemoteService vorgangRemoteService; - - @Captor - private ArgumentCaptor<GrpcEingang> grpcEingangCaptor; - @Captor - private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor; - - private MockWebServiceClient mockClient; - - @BeforeEach - void initTest() { - mockClient = MockWebServiceClient.createClient(applicationContext); - } - - @Nested - class TestAntragWithAttachments { - - @BeforeEach - void init() throws SAXException, IOException, ParserConfigurationException, JAXBException, SOAPException { - sendWebserviceRequest(REQUEST); - - verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture()); - } - - @Nested - class checkAntragsteller { - - @Test - void validateAntragstellerEmail() { - assertThat(grpcEingangCaptor.getValue().getAntragsteller().getEmail()).isEqualTo("schneider@helgeschneider.local"); - } - } - - @Nested - class checkAttachments { - - @Test - void validateOrganisationsEinheitId() { - assertThat(organisationsEinheitIdCaptor.getValue()).isPresent().hasValue("10363455"); - } - - @Test - void checkAttachmentsCount() throws IOException { - assertThat(grpcEingangCaptor.getValue().getNumberOfAttachments()).isEqualTo(2); - } - - @Test - void checkAttachmentGroupCount() { - assertThat(grpcEingangCaptor.getValue().getAttachmentsCount()).isEqualTo(2); - } - - @Test - void checkAttachmentGroup1Count() { - GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(0); - - assertThat(group.getFilesCount()).isEqualTo(1); - } - - @Test - void checkAttachmentGroup1Files() { - GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(0).getFiles(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("assistants.E0FBA361C191F8B723949467AE302BEA24E4745E"); - assertThat(file.getName()).isEqualTo("Helge1.jpg"); - assertThat(file.getContentType()).isEqualTo("image/jpeg"); - assertThat(file.getContent().size()).isGreaterThan(1000); - } - - @Test - void checkAttachmentGroup2Count() { - GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(1); - - assertThat(group.getFilesCount()).isEqualTo(1); - } - - @Test - void checkAttachmentGroup2Files() { - GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(1).getFiles(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7"); - assertThat(file.getName()).isEqualTo("Helgetext2.odt"); - assertThat(file.getContentType()).isEqualTo("application/vnd.oasis.opendocument.text"); - assertThat(file.getContent().size()).isGreaterThan(1000); - } - } - - @Nested - class validateRepresentations { - @Test - void checkRepresentationsCount() { - assertThat(grpcEingangCaptor.getValue().getRepresentationsCount()).isEqualTo(1); - assertThat(grpcEingangCaptor.getValue().getNumberOfRepresentations()).isEqualTo(1); - } - - @Test - void checkRepresentation1() { - GrpcIncomingFile file = grpcEingangCaptor.getValue().getRepresentations(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("myForm-xml"); - assertThat(file.getName()).isEqualTo("XML-Daten.xml"); - assertThat(file.getContentType()).isEqualTo("text/xml"); - assertThat(file.getContent().size()).isGreaterThan(1000); - } - } - } - - @Nested - class TestOtherNameForFormData { - - @Test - void shouldSucceed() throws IOException { // NOSONAR contains andExpect of mockClient - sendWebserviceRequest("soaprequest_other-name.xml") - .andExpect(ResponseMatchers.noFault()); - } - - @Test - void shouldHaveOrgaId() throws IOException { - sendWebserviceRequest("soaprequest_other-name.xml"); - - verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), any()); - - assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("0815"); - } - - } - - private ResponseActions sendWebserviceRequest(String requestFileName) throws IOException { - return mockClient.sendRequest(RequestCreators.withSoapEnvelope(getResource(requestFileName))) - .andExpect(ResponseMatchers.noFault()) - .andExpect(ResponseMatchers.payload(getResource(RESPONSE))); - } - - private Resource getResource(String fileName) { - return applicationContext.getResource("classpath:intelliform/" + fileName); - } -} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java similarity index 96% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentTestFactory.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java index b81e7b5..f53d6f8 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentTestFactory.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; public class AttachmentTestFactory { diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdderTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdderTest.java similarity index 68% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdderTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdderTest.java index e9db311..d458e46 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdderTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -30,15 +30,14 @@ import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; +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; +import lombok.SneakyThrows; class AttachmentsContentAdderTest { - private final static byte[] TESTCONTENT1 = "TestBytes".getBytes(); - AttachmentsContentAdder service; private List<IncomingFileGroup> attachments; @@ -50,17 +49,17 @@ class AttachmentsContentAdderTest { service = new AttachmentsContentAdder(); - attachments = List.of(IncomingFileGroupTestFactory.createBuilder() - .files(List.of(IncomingFileTestFactory.createBuilder().content(null).build())).build()); + attachments = List.of(IncomingFileGroupTestFactory.createBuilder().clearFiles() + .files(List.of(IncomingFileTestFactory.createBuilder().file(null).build())).build()); - depositRequestFiles = List.of(IncomingFileTestFactory.createBuilder().content(TESTCONTENT1).build()); + depositRequestFiles = List.of(IncomingFileTestFactory.create()); } + @SneakyThrows @Test void testAddContentToAttachments() { - List<IncomingFileGroup> attachmentsWithContent = service.addContentToAttachments(attachments, depositRequestFiles); - assertThat(attachmentsWithContent.get(0).getFiles().get(0).getContent()).isEqualTo(TESTCONTENT1); + assertThat(attachmentsWithContent.get(0).getFiles().get(0).getContentStream()).hasBinaryContent(IncomingFileTestFactory.CONTENT); } } diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderReaderTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderReaderTest.java new file mode 100644 index 0000000..32e10fd --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderReaderTest.java @@ -0,0 +1,171 @@ +/* + * 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.intelliform; + +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.mockito.InjectMocks; +import org.mockito.Mock; +import org.w3c.dom.Attr; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +class CustomHeaderReaderTest { + + @InjectMocks + private CustomHeaderReader reader; + + @Mock + private Document document; + @Mock + private Element element; + @Mock + private Attr attribute; + + @BeforeEach + void setup() { + when(document.getDocumentElement()).thenReturn(element); + } + + @Test + void shouldNotAddIfNotPresent() { + var formData = reader.getHeader(document); + + assertThat(formData).isEmpty(); + } + + @Nested + class TestHeaderAdded { + + @BeforeEach + void setup() { + when(element.getAttributeNode(any())).thenReturn(attribute); + } + + @Test + void shouldAddPostfachId() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_POSTFACH_ID); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.POSTFACH_ID); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_POSTFACH_ID, CustomHeaderTestFactory.POSTFACH_ID); + } + + @Test + void shouldAddVorname() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_VORNAME); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.VORNAME); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_VORNAME, CustomHeaderTestFactory.VORNAME); + } + + @Test + void shouldAddNachname() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_NACHNAME); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.NACHNAME); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_NACHNAME, CustomHeaderTestFactory.NACHNAME); + } + + @Test + void shouldAddGeburtsname() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_GEBURTSNAME); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.GEBURTSNAME); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_GEBURTSNAME, CustomHeaderTestFactory.GEBURTSNAME); + } + + @Test + void shouldAddGeburtsort() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_GEBURTSORT); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.GEBURTSORT); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_GEBURTSORT, CustomHeaderTestFactory.GEBURTSORT); + } + + @Test + void shouldAddEmail() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_EMAIL); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.EMAIL); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_EMAIL, CustomHeaderTestFactory.EMAIL); + } + + @Test + void shouldAddTelefon() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_TELEFON); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.TELEFON); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_TELEFON, CustomHeaderTestFactory.TELEFON); + } + + @Test + void shouldAddStrasse() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_STRASSE); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.STRASSE); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_STRASSE, CustomHeaderTestFactory.STRASSE); + } + + @Test + void shouldAddPlz() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_PLZ); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.PLZ); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_PLZ, CustomHeaderTestFactory.PLZ); + } + + @Test + void shouldAddOrt() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_ORT); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.ORT); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_ORT, CustomHeaderTestFactory.ORT); + } + } + +} \ No newline at end of file diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderTestFactory.java new file mode 100644 index 0000000..991624e --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderTestFactory.java @@ -0,0 +1,58 @@ +/* + * 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.intelliform; + + +import java.util.HashMap; +import java.util.Map; + +public class CustomHeaderTestFactory { + + public static final String POSTFACH_ID = "postfach_id"; + public static final String VORNAME = "vorname"; + public static final String NACHNAME = "nachname"; + public static final String GEBURTSNAME = "geburtsname"; + public static final String GEBURTSORT = "geburtsort"; + public static final String EMAIL = "email"; + public static final String TELEFON = "telefon"; + public static final String STRASSE = "strasse"; + public static final String PLZ = "plz"; + public static final String ORT = "ort"; + + public static Map<String, Object> create() { + var map = new HashMap<String, Object>(); + map.put(CustomHeaderReader.HEADER_POSTFACH_ID, POSTFACH_ID); + map.put(CustomHeaderReader.HEADER_VORNAME, VORNAME); + map.put(CustomHeaderReader.HEADER_NACHNAME, NACHNAME); + map.put(CustomHeaderReader.HEADER_GEBURTSNAME, GEBURTSNAME); + map.put(CustomHeaderReader.HEADER_GEBURTSORT, GEBURTSORT); + map.put(CustomHeaderReader.HEADER_EMAIL, EMAIL); + map.put(CustomHeaderReader.HEADER_TELEFON, TELEFON); + map.put(CustomHeaderReader.HEADER_STRASSE, STRASSE); + map.put(CustomHeaderReader.HEADER_PLZ, PLZ); + map.put(CustomHeaderReader.HEADER_ORT, ORT); + return map; + } + +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapperTest.java similarity index 87% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapperTest.java index 4a2e6c2..d7500c0 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -30,7 +30,7 @@ import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFile; class DepositRequestIncomingFileMapperTest { @@ -56,7 +56,7 @@ class DepositRequestIncomingFileMapperTest { List<IncomingFile> files = mapper.mapFiles(DepositTestFactory.create()); IncomingFile file = files.get(0); - assertThat(file.getContent()).isEqualTo(AttachmentTestFactory.XML_CONTENT); + assertThat(file.getContentStream()).hasBinaryContent(AttachmentTestFactory.XML_CONTENT); assertThat(file.getContentType()).isEqualTo(AttachmentTestFactory.XML_CONTENT_TYPE); assertThat(file.getVendorId()).isEqualTo(AttachmentTestFactory.XML_ID); assertThat(file.getName()).isEqualTo(AttachmentTestFactory.XML_NAME); diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java similarity index 89% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositTestFactory.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java index 84e1a8f..0e1a7c8 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositTestFactory.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.List; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; public class DepositTestFactory { @@ -47,6 +47,7 @@ public class DepositTestFactory { static Deposit withData(DepositData data) { Deposit deposit = new Deposit(); + data.setPrimaryDataAttachmentId(AttachmentTestFactory.XML_ID); deposit.setData(data); return deposit; diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java new file mode 100644 index 0000000..4efaf9e --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java @@ -0,0 +1,373 @@ +/* + * 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.intelliform; + +import static de.ozgcloud.eingang.intelliform.XmlDaten1Container.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Optional; + +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.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.Resource; +import org.springframework.ws.test.server.MockWebServiceClient; +import org.springframework.ws.test.server.RequestCreators; +import org.springframework.ws.test.server.ResponseActions; +import org.springframework.ws.test.server.ResponseMatchers; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.router.VorgangRemoteService; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFormData; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; +import lombok.SneakyThrows; + +@SpringBootTest +class FormDataEndpointITCase { + + private final static String TEST_FILE_PATH = "classpath:itcase/"; + + private final static String REQUEST = "EinfachesFormularZweiAnhaengeSoapRequest.xml"; + private final static String RESPONSE = "EinfachesFormularZweiAnhaengeSoapResponse.xml"; + + private static final String SOAP_REQUEST_OTHER_NAME = "XML-Daten-1-other_name_SoapRequest.xml"; + + @Autowired + private ApplicationContext applicationContext; + @MockBean + private VorgangRemoteService vorgangRemoteService; + + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + @Captor + private ArgumentCaptor<GrpcEingang> grpcEingangCaptor; + @Captor + private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor; + + private MockWebServiceClient mockClient; + + @BeforeEach + void initTest() { + mockClient = MockWebServiceClient.createClient(applicationContext); + } + + @DisplayName("Send antrag with attachments") + @Nested + class TestAntragWithAttachments { + + @Test + void shouldSendRequest() { + sendRequest(); + + verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any()); + } + + @Nested + class checkAntragsteller { + + @Test + void validateAntragstellerEmail() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getAntragsteller().getEmail()).isEqualTo("schneider@helgeschneider.local"); + } + + @Test + void shouldMapAntragstellerPostfachId() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getAntragsteller().getPostfachId()).isEqualTo("nameIdAsOsiPostfachIdV1"); + } + } + + @Nested + class checkAttachments { + + @Test + void validateOrganisationsEinheitId() { + sendRequest(); + + assertThat(organisationsEinheitIdCaptor.getValue()).isPresent().hasValue("10363455"); + } + + @Test + void checkAttachmentsCount() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getNumberOfAttachments()).isEqualTo(2); + } + + @Test + void checkAttachmentGroupCount() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getAttachmentsCount()).isEqualTo(2); + } + + @Test + void checkAttachmentGroup1Count() { + sendRequest(); + + GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(0); + + assertThat(group.getFilesCount()).isEqualTo(1); + } + + @Test + void checkAttachmentGroup1Files() { + sendRequest(); + + GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(0).getFiles(0); + + assertThat(file.getId()).isNotNull(); + assertThat(file.getVendorId()).isEqualTo("assistants.E0FBA361C191F8B723949467AE302BEA24E4745E"); + assertThat(file.getName()).isEqualTo("Helge1.jpg"); + assertThat(file.getContentType()).isEqualTo("image/jpeg"); + assertThat(file.getContent().size()).isZero(); + } + + @Test + void checkForAttachmentFileContentStream() { + sendRequest(); + + var fileStream = formDataCaptor.getValue().getAttachments().get(0).getFiles().get(0).getContentStream(); + + assertThat(fileStream).isNotNull(); + } + + @Test + void checkAttachmentGroup2Count() { + sendRequest(); + + GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(1); + + assertThat(group.getFilesCount()).isEqualTo(1); + } + + @Test + void checkAttachmentGroup2Files() { + sendRequest(); + + GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(1).getFiles(0); + + assertThat(file.getId()).isNotNull(); + assertThat(file.getVendorId()).isEqualTo("assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7"); + assertThat(file.getName()).isEqualTo("Helgetext2.odt"); + assertThat(file.getContentType()).isEqualTo("application/vnd.oasis.opendocument.text"); + assertThat(file.getContent().size()).isZero(); + } + } + + @Nested + class validateRepresentations { + @Test + void checkRepresentationsCount() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getRepresentationsCount()).isEqualTo(1); + assertThat(grpcEingangCaptor.getValue().getNumberOfRepresentations()).isEqualTo(1); + } + + @Test + void checkRepresentation1() { + sendRequest(); + + GrpcIncomingFile file = grpcEingangCaptor.getValue().getRepresentations(0); + + assertThat(file.getId()).isNotNull(); + assertThat(file.getVendorId()).isEqualTo("myForm-xml"); + assertThat(file.getName()).isEqualTo("XML-Daten.xml"); + assertThat(file.getContentType()).isEqualTo("text/xml"); + assertThat(file.getContent().size()).isZero(); + } + + @Test + void checkForRepresentationFileContentStream() { + sendRequest(); + + var fileStream = formDataCaptor.getValue().getRepresentations().get(0).getContentStream(); + + assertThat(fileStream).isNotNull(); + } + } + + @DisplayName("service konto") + @Nested + class TestServiceKonto { + + @Test + void shouldReturnMappedServiceKonto() { + var eingang = sendRequest(); + + assertThat(eingang.getHeader().getServiceKonto()).isNotNull(); + assertThat(eingang.getHeader().getServiceKonto().getType()).isEqualTo("OSI"); + } + + @Test + void shoulContainsPostfachAddresses() { + var eingang = sendRequest(); + + assertThat(eingang.getHeader().getServiceKonto().getPostfachAddressesList()).hasSize(1); + } + + @Test + void shoulReturnMappedPostfachAddress() { + var postfachAddress = sendRequest().getHeader().getServiceKonto().getPostfachAddressesList().get(0); + + assertThat(postfachAddress.getVersion()).isEqualTo(PostfachAddressTestFactory.VERSION); + assertThat(postfachAddress.getIdentifier().getPropertyList()).hasSize(1); + assertThat(postfachAddress.getIdentifier().getProperty(0).getName()).isEqualTo("postfachId"); + assertThat(postfachAddress.getIdentifier().getProperty(0).getValue(0)).isEqualTo("nameIdAsOsiPostfachIdV1"); + assertThat(postfachAddress.getType()).isEqualTo(1); + } + } + + @SneakyThrows + private GrpcEingang sendRequest() { + sendWebserviceRequest(REQUEST); + + return grpcEingangCaptor.getValue(); + } + } + + @Nested + class TestOtherNameForFormData { + + @Test + void shouldSucceed() { // NOSONAR contains andExpect of mockClient + sendWebserviceRequest(SOAP_REQUEST_OTHER_NAME).andExpect(ResponseMatchers.noFault()); + } + + @Test + void shouldHaveOrgaId() { + sendWebserviceRequest(SOAP_REQUEST_OTHER_NAME); + + verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any()); + + assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("0815"); + } + + } + + @Nested + class TestKeepFormDataOrder { + + @Test + void shouldKeepEingangFieldsOrder() { + var grpcFormData = requestFormData(); + + assertThat(grpcFormData.getFieldList()).isEqualTo(XmlDaten1Container.EINGANG_FIELDS); + } + + @Test + void shouldKeepZustaendigestelleFieldsOrder() { + var formFields = requestFormData().getForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ZUSTAENDIGESTELLE_FIELDS); + } + + @Test + void shouldKeepEmpfangendestelleFieldsOrder() { + var formFields = requestFormData().getForm(1).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.EMPFANGENDESTELLE_FIELDS); + } + + @Test + void shouldKeepErklaerungenFieldsOrder() { + var formFields = requestFormData().getForm(2).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ERKLAERUNGEN_FIELDS); + } + + @Test + void shouldKeepAnsprechpartnerFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ANSPRECHPARTNER_FIELDS); + } + + @Test + void shouldKeepAnschriftFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ANSCHRIFT_FIELDS); + } + + @Test + void shouldKeepKontaktFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(1).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.KONTAKT_FIELDS); + } + + @Test + void shouldKeepVerwaltungsleistungFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.VERWALTUNGSLEISTUNG_FIELDS); + } + + @Test + void shouldKeepAusgewaehlteZustaendigestelleFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS); + } + + private GrpcFormData requestFormData() { + sendWebserviceRequest(REQUEST_XML_NAME); + + verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any()); + return grpcEingangCaptor.getValue().getFormData(); + } + } + + @SneakyThrows + private ResponseActions sendWebserviceRequest(String requestFileName) { + var response = mockClient.sendRequest(RequestCreators.withSoapEnvelope(getResource(requestFileName))) + .andExpect(ResponseMatchers.noFault()) + .andExpect(ResponseMatchers.payload(getResource(RESPONSE))); + + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture()); + + return response; + } + + private Resource getResource(String fileName) { + return applicationContext.getResource(TEST_FILE_PATH + fileName); + } +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java similarity index 89% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java index 3d5e2ff..ca6112e 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -38,9 +38,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.xml.sax.SAXException; -import de.itvsh.kop.common.test.TestUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; class FormDataEndpointTest { diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapperTest.java similarity index 95% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapperTest.java index 916d661..1f5d29a 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -39,9 +39,9 @@ import org.junit.jupiter.api.Test; import org.w3c.dom.Document; import org.xml.sax.SAXException; -import de.itvsh.kop.common.test.TestUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; class FormDataIncomingFileMapperTest { diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java new file mode 100644 index 0000000..d242117 --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java @@ -0,0 +1,33 @@ +/* + * 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.intelliform; + +import de.ozgcloud.vorgang.vorgang.GrpcFormField; + +public class GrpcFormFieldTestFactory { + + public static GrpcFormField create(String fieldName, String fieldValue) { + return GrpcFormField.newBuilder().setName(fieldName).setValue(fieldValue).build(); + } +} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/JsonServiceTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/JsonServiceTest.java new file mode 100644 index 0000000..a6f0048 --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/JsonServiceTest.java @@ -0,0 +1,121 @@ +/* + * 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.intelliform; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Collections; +import java.util.List; +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.Mockito; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.SneakyThrows; + +class JsonServiceTest { + + @InjectMocks + private JsonService service; + @Mock + private ObjectMapper objectMapper; + + @DisplayName("Map form data") + @Nested + class TestMapFormData { + + @DisplayName("with invalid json") + @Nested + class TestWithInvalidJson { + + @SneakyThrows + @BeforeEach + void mockNode() { + when(objectMapper.readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any())) + .thenThrow(JsonProcessingException.class); + } + + @SneakyThrows + @Test + void shouldCallObjectMapper() { + try { + mapFormData(); + } catch (TechnicalException e) { + verify(objectMapper).readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any()); + } + } + + @Test + void shouldThrowTechnicalException() { + assertThatThrownBy(() -> mapFormData()) + .isInstanceOf(TechnicalException.class) + .hasMessageStartingWith("Error parsing JSON") + .hasMessageContaining("ExceptionId"); + } + } + + @DisplayName("with valid json") + @Nested + class TestWithValidJson { + + @SneakyThrows + @BeforeEach + void mockNode() { + when(objectMapper.readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any())) + .thenReturn(Collections.emptyList()); + } + + @SneakyThrows + @Test + void shouldCallObjectMapper() { + mapFormData(); + + verify(objectMapper).readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any()); + } + + @Test + void shouldReturnValue() { + var list = mapFormData(); + + assertThat(list).isEmpty(); + } + } + + private List<Map<String, Object>> mapFormData() { + return service.readAsListMap("{}"); + } + } +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculatorTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculatorTest.java similarity index 85% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculatorTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculatorTest.java index 23c8923..2aea69c 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculatorTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculatorTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -31,10 +31,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; +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; class RepresentationsCalculatorTest { diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapperTest.java similarity index 75% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapperTest.java index 66260ae..05d6314 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,10 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; -import static de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; import java.io.IOException; import java.util.HashMap; @@ -33,18 +35,28 @@ import java.util.Map; import javax.xml.parsers.ParserConfigurationException; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.Mock; import org.xml.sax.SAXException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; class SemantikFormDataMapperTest { - private SemantikFormDataMapper mapper = new SemantikFormDataMapper(new XmlToJavaMapsMapper(), new FormDataIncomingFileMapper(), - new RepresentationsCalculator(), new DepositRequestIncomingFileMapper(), new AttachmentsContentAdder()); + private SemantikFormDataMapper mapper; + + @Mock + private CustomHeaderReader customHeaderReader; + + @BeforeEach + void setup() { + mapper = new SemantikFormDataMapper(new XmlToJavaMapsMapper(), new FormDataIncomingFileMapper(), + new RepresentationsCalculator(), new DepositRequestIncomingFileMapper(), new AttachmentsContentAdder(), customHeaderReader); + } @Nested class TestMapFormData { @@ -106,13 +118,13 @@ class SemantikFormDataMapperTest { assertThat(pdfAttachment.get().getContentType()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_CONTENT_TYPE); assertThat(pdfAttachment.get().getVendorId()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_ID); assertThat(pdfAttachment.get().getName()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_NAME); - assertThat(pdfAttachment.get().getContent()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_CONTENT); + assertThat(pdfAttachment.get().getContentStream()).hasBinaryContent(AttachmentTestFactory.PDF_ATTACHMENT_CONTENT); } @SuppressWarnings("unchecked") private List<IncomingFile> getRepresentations(FormData formData) { - return (List<IncomingFile>) ((Map<String, Object>) formData.getFormData().get(AbstractFileMapper.FIELD_NAME_MAPPED_FILES)) - .get(AbstractFileMapper.REPRESENTATIONS); + return (List<IncomingFile>) ((Map<String, Object>) formData.getFormData().get(FilesMapperHelper.FIELD_NAME_MAPPED_FILES)) + .get(FilesMapperHelper.REPRESENTATIONS); } } @@ -136,6 +148,17 @@ class SemantikFormDataMapperTest { .containsEntry(SemantikFormDataMapper.HEADER_CLIENT_ID, "land"); } + @Test + void shouldAddBayernHeader() { + Map<String, Object> bayernHeader = Map.of(CustomHeaderReader.HEADER_POSTFACH_ID, CustomHeaderTestFactory.POSTFACH_ID); + when(customHeaderReader.getHeader(any())).thenReturn(bayernHeader); + + var formData = mapToFormData(deposit); + + verify(customHeaderReader).getHeader(any()); + assertThat(getHeader(formData)).containsEntry(CustomHeaderReader.HEADER_POSTFACH_ID, CustomHeaderTestFactory.POSTFACH_ID); + } + @SuppressWarnings("unchecked") private Map<String, Object> getHeader(FormData formData) { return (Map<String, Object>) formData.getFormData().get(SemantikFormDataMapper.HEADER_FIELD); diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java new file mode 100644 index 0000000..c933df6 --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java @@ -0,0 +1,162 @@ +/* + * 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.intelliform; + + +import static de.ozgcloud.eingang.intelliform.GrpcFormFieldTestFactory.*; + +import java.util.List; + +import de.ozgcloud.vorgang.vorgang.GrpcFormField; + +public class XmlDaten1Container { + + public final static String REQUEST_XML_NAME = "XML-Daten-1-SoapRequest.xml"; + + public static final List<GrpcFormField> EINGANG_FIELDS = List.of( + create("kontaktsystemtypid", "233034600"), + create("kontaktsystemtypidln", "233034601"), + create("AnliegenID", "8966671"), + create("mailboxguid", "f977368b-6991-46b9-af18-8a2a03d9ad1b"), + create("GebietID", "9007314"), + create("logourl", "http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc") + ); + + public static final List<GrpcFormField> EMPFANGENDESTELLE_FIELDS = List.of( + create("OrganisationseinheitenAuswahl", "9068873"), + create("OrganisationseinheitenID", "9068873"), + create("OrganisationseinheitenBEZEICHNUNG", "Einheitlicher Ansprechpartner\n\t\t\tSchleswig-Holstein"), + create("strasse", "Reventlouallee"), + create("hausnummer", "6"), + create("postleitzahl", "24105"), + create("ortID", "9006402"), + create("ort", "Kiel"), + create("telefonnummer", "+49 431 988-8650"), + create("telefaxnummer", "+49 431 988-6161111"), + create("emailadresse", "info@ea-sh.de"), + create("demailadresse", "ea-poststelle@ea-sh.de-mail.de"), + create("kontaktsystem_kennung", "afmsh:9068873_AusnahmeLKWFahrverbot"), + create("kontaktsystem_kennungzusatz", "alle") + ); + + public static final List<GrpcFormField> ERKLAERUNGEN_FIELDS = List.of( + create("check_gebuehren", "true"), + create("check_richtigkeit", "true"), + create("check_datenschutz", "true"), + create("check_missbrauch", "true"), + create("b_gebuehren_beschriftung", """ + * Mir ist bekannt, dass durch das Einreichen + des elektronischen Antrages von der zuständigen Stelle Gebühren + erhoben werden können."""), + create("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."""), + create("b_richtigkeit", "* Ich bestätige die Richtigkeit meiner Angaben."), + create("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, Reventlouallee + 6, 24105 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."""), + create("b_missbrauch", """ + * Mir ist bekannt, dass zur Verfolgung widerrechtlicher + Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes + aufgezeichnet und verwendet werden können."""), + create("policyurl", "http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc") + ); + + public static final List<GrpcFormField> ANSPRECHPARTNER_FIELDS = List.of( + create("anrede", "Herr"), + create("vorname", "Max"), + create("familienname", "Testermann") + ); + + public static final List<GrpcFormField> ANSCHRIFT_FIELDS = List.of( + create("strasse", "Königsweg"), + create("hausnummer", "74"), + create("postleitzahl", "24837"), + create("ort", "Schleswig"), + create("staat", "Deutschland") + ); + + public static final List<GrpcFormField> KONTAKT_FIELDS = List.of( + create("telefonnummer", "+ 49 4621 9654"), + create("mobilnummer", "+49 123"), + create("telefaxnummer", "+ 49 4621 9654"), + create("emailadresse", "max.testermann@gmx.de"), + create("demailadresse", "max.testermann@gmx.de-mail.de") + ); + + public static final List<GrpcFormField> AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS = List.of( + create("OrganisationseinheitenID", "9535669"), + create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\t\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\t\t\t\tOrdnungsangelegenheiten") + ); + + public static final List<GrpcFormField> VERWALTUNGSLEISTUNG_FIELDS = List.of( + create("GebietID", "9007314"), + create("GebietBEZEICHNUNG", "Schleswig"), + create("AnliegenID", "8966671"), + create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"), + create("leikaKEYLIST", "99089008000000;99089008001000") + ); + + public static final List<GrpcFormField> ZUSTAENDIGESTELLE_FIELDS = List.of( + create("OrganisationseinheitenAuswahl", "9535669"), + create("OrganisationseinheitenID", "9535669"), + create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\tOrdnungsangelegenheiten"), + create("strasse", "Flensburger Straße"), + create("hausnummer", "7"), + create("postleitzahl", "24837"), + create("ortID", "9007314"), + create("ort", "Schleswig"), + create("telefonnummer", "04621 87-0"), + create("telefaxnummer", "04621 87-366"), + create("emailadresse", "Gefahrenabwehr@Kiel.de"), + create("kontaktsystem_kennung", "afmsh:9535669_kleinerWaffenschein"), + create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"), + create("leikaKEYLIST", "99089008000000;99089008001000"), + create("auswahl_zustellung", "abholen"), + create("b_zustellung", "Ich hole den Kleinen Waffenschein selbst ab.") + ); + +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapperTest.java similarity index 74% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapperTest.java index f7761c4..3370469 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,35 +21,42 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; -import java.io.IOException; +import java.util.Collections; import java.util.List; import java.util.Map; +import jakarta.xml.soap.Node; + 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.w3c.dom.Document; -class XmlToJavaMapsMapperTest { +import de.ozgcloud.common.errorhandling.TechnicalException; - private XmlToJavaMapsMapper mapper; - private Document document; +class XmlToJavaMapsMapperTest { - @BeforeEach - void init() throws IOException { + @InjectMocks + private XmlToJavaMapsMapper mapper = new XmlToJavaMapsMapper(); + @Mock + private JsonService jsonService; - mapper = new XmlToJavaMapsMapper(); - document = mapper.parseAsW3cDocument(XmlToJavaMapsMapperTest.class.getResourceAsStream("/intelliform/SimpleFormDataMapperTestFile.xml")); - } + private final Document document = mapper.parseAsW3cDocument( + XmlToJavaMapsMapperTest.class.getResourceAsStream("/intelliform/SimpleFormDataMapperTestFile.xml")); @Test void testSimpleNode() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey("simplenode"); assertThat(formData.get("simplenode")).isInstanceOf(String.class).isEqualTo("simplenodevalue"); @@ -58,7 +65,7 @@ class XmlToJavaMapsMapperTest { @Test void testEmptyNodeNotMapped() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).doesNotContainKey("emptynode"); } @@ -71,7 +78,7 @@ class XmlToJavaMapsMapperTest { @Test void nestedMapNodeShouldBeMap() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey(MAIN_NODE_NAME); assertThat(formData.get(MAIN_NODE_NAME)).isInstanceOf(Map.class); @@ -81,7 +88,7 @@ class XmlToJavaMapsMapperTest { @SuppressWarnings("unchecked") void nestedMapNodeShouldContainValues() { - Map<String, Object> nestedMapNode = (Map<String, Object>) mapper.mapXmlToJavaMaps(document).get(MAIN_NODE_NAME); + Map<String, Object> nestedMapNode = (Map<String, Object>) mapXmlToJavaMaps().get(MAIN_NODE_NAME); assertThat(nestedMapNode).hasSize(2) .containsEntry("nestedmapnode1", "nestedmapnodevalue1") @@ -99,7 +106,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainNestedListWithStringsNode() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey(MAIN_NODE_NAME); } @@ -107,7 +114,7 @@ class XmlToJavaMapsMapperTest { @Test void valuesShouldBeJavaList() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); @@ -118,7 +125,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainValues() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); List<String> nestedList = (List<String>) mainNode.get(NESTED_NODE_NAME); @@ -136,7 +143,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainNestedListWithObjectsNode() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey(MAIN_NODE_NAME); } @@ -144,7 +151,7 @@ class XmlToJavaMapsMapperTest { @Test void valuesShouldBeJavaList() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); @@ -155,7 +162,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainTwoElements() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); List<Object> nestedList = getNestedList(formData); assertThat(nestedList).hasSize(2); @@ -164,7 +171,7 @@ class XmlToJavaMapsMapperTest { @Test void validateLevel2ValuesOfMap1() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); List<Object> nestedList = getNestedList(formData); Map<String, Object> map1 = (Map<String, Object>) nestedList.get(0); @@ -176,7 +183,7 @@ class XmlToJavaMapsMapperTest { @Test void validateLevel2ValuesOfMap2() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); List<Object> nestedList = getNestedList(formData); Map<String, Object> map2 = (Map<String, Object>) nestedList.get(1); @@ -264,9 +271,60 @@ class XmlToJavaMapsMapperTest { return (Map<String, Object>) singleFileParentItem.get(FILE); } } + } + + @DisplayName("Get content value") + @Nested + class TestGetContentValue { + + @DisplayName("from json node") + @Nested + class TestJsonNode { + + private static final String VALID_EMPTY_JSON = "{}"; + + @Mock + private Node node; + + @BeforeEach + void mockNode() { + when(node.getNodeName()).thenReturn(XmlToJavaMapsMapper.REST_RESPONSE_NAME); + } + + @Test + void shouldCallJSONService() { + getContentValue(); - private Map<String, Object> mapXmlToJavaMaps() { - return mapper.mapXmlToJavaMaps(document); + verify(jsonService).readAsListMap(any()); + } + + @Test + void shouldReturnValueOnValidJson() { + var expectedValue = Collections.<Map<String, Object>>emptyList(); + when(jsonService.readAsListMap(anyString())).thenReturn(expectedValue); + + var value = getContentValue(); + + assertThat(value).isEqualTo(expectedValue); + } + + @Test + void shouldReturnEmptyListOnException() { + when(jsonService.readAsListMap(anyString())).thenThrow(TechnicalException.class); + + var value = getContentValue(); + + assertThat(value).isEmpty(); + } + + @SuppressWarnings("unchecked") + private List<Object> getContentValue() { + return (List<Object>) mapper.getContentValue(node, VALID_EMPTY_JSON); + } } } -} + + private Map<String, Object> mapXmlToJavaMaps() { + return mapper.mapXmlToJavaMaps(document); + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml index 767e3ce..e01c0e9 100644 --- a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml +++ b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml @@ -1,5 +1,5 @@ <?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="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.ozg-sh.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> +<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.by.kop-cloud.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> <KontaktsystemTypA>233034600</KontaktsystemTypA> <KontaktsystemTypB>233034601</KontaktsystemTypB> <AnliegenID>8966671</AnliegenID> diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml index 0103d52..6220390 100644 --- a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml +++ b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml @@ -1,5 +1,5 @@ <?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="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.ozg-sh.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> +<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.by.kop-cloud.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> <KontaktsystemTypA>233034600</KontaktsystemTypA> <KontaktsystemTypB>233034601</KontaktsystemTypB> <AnliegenID>8966671</AnliegenID> diff --git a/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml b/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml index 076f3da..73be339 100644 --- a/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml +++ b/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml @@ -185,7 +185,7 @@ L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4KCTwvZm0+CjwvbXlGb3JtPg==</content> <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> <id>20210415307020414701</id> <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> + <sender>intelliform.by.kop-cloud.de</sender> <timestamp>2021-04-15T08:33:39.443Z</timestamp> <username /> </data> diff --git a/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml b/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml index 8759b53..9a02da3 100644 --- a/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml +++ b/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <myForm> - <!-- { simplenode: "simplenodevalue" } --> <simplenode>simplenodevalue</simplenode> <emptynode /> @@ -55,4 +54,7 @@ </single_file_parent-item> </single_file_parent> -</myForm> + <rest_response_name> + [{"strName":"strNameValue","objectName":[{"objectStrName":"objectStrNameValue","objectNumberName": 1 }]}] + </rest_response_name> +</myForm> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml b/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml new file mode 100644 index 0000000..ea9ad42 --- /dev/null +++ b/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml @@ -0,0 +1,30 @@ +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KCTxuYW1laWQ+Y2JhY2IwMWEtMjgxMC0xMWVjLWJiNmYtYzMxOTM5Zjg4NzRlPC9uYW1laWQ+Cgk8YW50cmFnc3RlbGxlcj4KCQk8cGVyc19hbnJlZGU+SGVyciQwMzwvcGVyc19hbnJlZGU+CgkJPHBlcnNfbmFjaG5hbWU+VGVzdGVybWFubjwvcGVyc19uYWNobmFtZT4KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPgoJCTxwZXJzX2dlYnVydHNuYW1lPk1heCBUZXN0ZXJtYW5uPC9wZXJzX2dlYnVydHNuYW1lPgoJCTxwZXJzX2dlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9wZXJzX2dlYnVydHNkYXR1bT4KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5zYnVyZzwvcGVyc19nZWJ1cnRzb3J0PgoJCTxwZXJzX2dlYnVydHNsYW5kPmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX2dlYnVydHNsYW5kPgoJCTxwZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PgoJCTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4KCQk8Yl9hbnJlZGVfc2NobHVlc3NlbG5yPjAzPC9iX2FucmVkZV9zY2hsdWVzc2VsbnI+CgkJPGJfZ2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2JfZ2VidXJ0c2xhbmQ+CgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5kX3NpZ25hdHVyPgoJCTxiX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2g8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+MDAwPC9iX3N0YWF0c2FuZ2Vob2VyaWdrZWl0X3NpZ25hdHVyPgoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8L3NoX3N0cmFzc2U+CgkJPHNoX2hhdXNudW1tZXI+NzQ8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yNDgzNzwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRfYXVzd2FobD4KCQk8b3J0PlNjaGxlc3dpZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDU5MDc1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZvbm51bW1lcj4KCQk8a29udF9tb2JpbG51bW1lcj4rNDkgMTIzPC9rb250X21vYmlsbnVtbWVyPgoJCTxrb250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4KCQk8a29udF9lbWFpbD5tYXgudGVzdGVybWFubkBnbXguZGU8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4KCQk8cGVyc29lbmxpY2hlRWlnbnVuZz4KCQkJPG1hZW5nZWx2b3JoYW5kZW4+ZmFsc2U8L21hZW5nZWx2b3JoYW5kZW4+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbj5mYWxzZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwvTWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+CgkJPC9wZXJzb2VubGljaGVFaWdudW5nPgoJPC9hbnRyYWdzdGVsbGVyPgoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCVNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPkZsZW5zYnVyZ2VyIFN0cmHDn2U8L3N0cmFzc2U+CgkJPGhhdXNudW1tZXI+NzwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDczMTQ8L29ydElEPgoJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4wNDYyMSA4Ny0zNjY8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2UgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjk1MzU2Njlfa2xlaW5lcldhZmZlbnNjaGVpbjwva29udGFrdHN5c3RlbV9rZW5udW5nPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4KCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9hdXN3YWhsX3p1c3RlbGx1bmc+CgkJPGJfenVzdGVsbHVuZz5JY2ggaG9sZSBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gc2VsYnN0IGFiLjwvYl96dXN0ZWxsdW5nPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KCTxlbXBmYW5nZW5kZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lcgoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVsPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+Cgk8L2VtcGZhbmdlbmRlc3RlbGxlPgoJPGVya2xhZXJ1bmdlbj4KCQk8Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+CgkJPGNoZWNrX2RhdGVuc2NodXR6PnRydWU8L2NoZWNrX2RhdGVuc2NodXR6PgoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3NicmF1Y2g+CgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbgoJCQlkZXMgZWxla3Ryb25pc2NoZW4gQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbgoJCQllcmhvYmVuIHdlcmRlbiBrw7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz5HZWLDvGhyIGJlaSBBdXNzdGVsbHVuZyBkZXMga2xlaW5lbiBXYWZmZW5zY2hlaW5zOgoJCQk2MCwwMCBFdXJvLiBCZWFyYmVpdHVuZ3NnZWLDvGhyIGJlaSBWZXJzYWd1bmc6IDQ1LDAwIEV1cm8uCgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIKCQkJRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyCgkJCVByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUKCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwKCQkJZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4KCQkJVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcgoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyCgkJCUF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIKCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMKCQkJTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwKCQkJdmVyYXJiZWl0ZXQgdW5kIGRpZXNlIGltIFJhaG1lbiBkZXIgZ2VzZXR6bGljaGVuIEJlc3RpbW11bmdlbiBhbiBkaWUKCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERhdGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUKCQkJenVzdMOkbmRpZ2UgU3RlbGxlIGVpbnZlcnN0YW5kZW4uIE1pciBpc3QgYmVrYW5udCwgZGFzcyBpY2ggZGllCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlCgkJCTYsIDI0MTA1IEtpZWwgd2lkZXJydWZlbiBrYW5uLiBFaW4gV2lkZXJydWYgaXN0IGFiZXIgbnVyIHdpcmtzYW0gZsO8cgoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZAoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcgbWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuCgkJCURhdGVuIHVuZCBkaWUgbWlyIG5hY2ggZGVuIGRhdGVuc2NodXR6cmVjaHRsaWNoZW4gUmVnZWx1bmdlbgoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nCgkJCUtlbm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6PgoJCTxiX21pc3NicmF1Y2g+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlcgoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMKCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdlbj4KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5IZXJyPC9hbnJlZGU+CgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+CgkJCTxhbnNjaHJpZnQ+CgkJCQk8c3RyYXNzZT5Lw7ZuaWdzd2VnPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+CgkJCQk8cG9zdGZhY2ggLz4KCQkJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJCQk8b3J0c3RlaWwgLz4KCQkJCTx6dXNhdHogLz4KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwvc3RhYXQ+CgkJCTwvYW5zY2hyaWZ0PgoJCQk8a29udGFrdD4KCQkJCTx0ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPgoJCQkJPG1vYmlsbnVtbWVyPis0OSAxMjM8L21vYmlsbnVtbWVyPgoJCQkJPHRlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmYXhudW1tZXI+CgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CgkJCTwva29udGFrdD4KCQk8L2Fuc3ByZWNocGFydG5lcj4KCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgoJCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcwoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJnL0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUKCQkJCQkJT3JkbnVuZ3NhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPlNjaGxlc3dpZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnTestServer</form> + <formId>SimpleFormSendetAnTestServer</formId> + <id>20221212092912345678</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.ozg-sh.de</sender> + <timestamp>2022-12-12T09:30:29.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> diff --git a/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml b/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml index 2e5cee1..0680f1f 100644 --- a/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml +++ b/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml @@ -26,7 +26,7 @@ <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> <id>20210415307020414701</id> <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> + <sender>intelliform.by.kop-cloud.de</sender> <timestamp>2021-04-15T08:33:39.443Z</timestamp> <username /> </data> diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml similarity index 96% rename from intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapRequest.xml rename to intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml index ef8db92..7310f90 100644 --- a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapRequest.xml +++ b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml @@ -8,7 +8,114 @@ <key>X-IntelliForm-Signed</key> <value>false</value> </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHQ6dXVpZD0iZWFjMjQ4MGUtNzE2Ni00YjE2LWJkZGQtODgwNTkxZTdkOTNiIiB0OmlkPSIyMDIxMDQxNTMwNzAyMDQxNDcwMSIgdDp0aW1lc3RhbXA9IjIwMjEtMDQtMTVUMDg6MzE6NDIuMzk4WiIgdDpzZW5kZXI9ImludGVsbGlmb3JtLm96Zy1zaC5kZSIgdDpmb3JtPSJTaW1wbGVGb3JtU2VuZGV0QW5Ib21lU2VydmVyVm9uVG9yc3RlbiIgdDpmb3JtLWlkPSJTaW1wbGVGb3JtU2VuZGV0QW5Ib21lU2VydmVyVm9uVG9yc3RlbiIgdDpjdXN0b21lcj0iS2llbCIgdDpjdXN0b21lci1pZD0iS2llbCIgdDpjbGllbnQ9InNoLWRldiIgdDpjbGllbnQtaWQ9InNoLWRldiI+PEtvbnRha3RzeXN0ZW1UeXBBPjIzMzAzNDYwMDwvS29udGFrdHN5c3RlbVR5cEE+PEtvbnRha3RzeXN0ZW1UeXBCPjIzMzAzNDYwMTwvS29udGFrdHN5c3RlbVR5cEI+PEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD48YW50cmFnc3RlbGxlcj48c2hfc3RyYXNzZT5BbiBkZXIgU2NobmVpZGVyZWk8L3NoX3N0cmFzc2U+PHNoX2hhdXNudW1tZXI+MTwvc2hfaGF1c251bW1lcj48c2hfcGx6PjI0MTAzPC9zaF9wbHo+PG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPjxvcnQ+S2llbDwvb3J0PjxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD48R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+PEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPjxzdGFhdD4wMDA8L3N0YWF0Pjxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD48a29udF90ZWxlZm9ubnVtbWVyLz48a29udF9tb2JpbG51bW1lci8+PGtvbnRfdGVsZWZheG51bW1lci8+PGtvbnRfZW1haWw+c2NobmVpZGVyQGhlbGdlc2NobmVpZGVyLmxvY2FsPC9rb250X2VtYWlsPjxrb250X2RlbWFpbC8+PC9hbnRyYWdzdGVsbGVyPjxVcGxvYWQxPjxmaWxlIGNvbnRlbnQtdHlwZT0iaW1hZ2UvanBlZyIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuRTBGQkEzNjFDMTkxRjhCNzIzOTQ5NDY3QUUzMDJCRUEyNEU0NzQ1RSIgbGVuZ3RoPSIxNTUyNTEiPkhlbGdlMS5qcGc8L2ZpbGU+PC9VcGxvYWQxPjxVcGxvYWQyPjxmaWxlIGNvbnRlbnQtdHlwZT0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0IiBkZXNjcmlwdGlvbj0iIiBpZD0iYXNzaXN0YW50cy41MkQ3OUU1QjIxMThEMTc0MDA0NUFCODcxNTE1MzVEQ0FEMjRFOUE3IiBsZW5ndGg9Ijc5OTMiPkhlbGdldGV4dDIub2R0PC9maWxlPjwvVXBsb2FkMj48R2ViaWV0SUQ+OTAwNjQwMjwvR2ViaWV0SUQ+PHp1c3RhZW5kaWdlc3RlbGxlPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4xMDM2MzQ1NTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4xMDM2MzQ1NTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kIE9yZG51bmdzYW10LCBTYWNoYmVyZWljaCBHZWZhaHJlbmFid2VociwgV2FmZmVuYW5nZWxlZ2VuaGVpdGVuLCBKYWdkYmVow7ZyZGUsIEJlc3RhdHR1bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+PHN0cmFzc2U+U3RyZXNlbWFubnBsYXR6PC9zdHJhc3NlPjxoYXVzbnVtbWVyPjU8L2hhdXNudW1tZXI+PHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPjxvcnRJRD45MDA2NDAyPC9vcnRJRD48b3J0PktpZWw8L29ydD48dGVsZWZvbm51bW1lci8+PHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5MDEtNjIxODE8L3RlbGVmYXhudW1tZXI+PGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+PGRlbWFpbGFkcmVzc2UvPjxrb250YWt0c3lzdGVtX2tlbm51bmcvPjxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHovPjxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPjxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD48L3p1c3RhZW5kaWdlc3RlbGxlPjxlbXBmYW5nZW5kZXN0ZWxsZT48T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz48c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT48aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPjxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD48b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+PG9ydD5LaWVsPC9vcnQ+PHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj48dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPjxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPjxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT48a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+PGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+PC9lbXBmYW5nZW5kZXN0ZWxsZT48ZXJrbGFlcnVuZ2VuPjxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPjxjaGVja19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD48Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+PGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD48Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24gZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4uPC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+PGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIgYmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6IDYwLDAwIEV1cm8uIEJlYXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4gClNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIgRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyIFByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUgQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwgZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4gVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4gUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz48Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+PGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlciBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyIEF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIgRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMgTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwgdmVyYXJiZWl0ZXQgIHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4gYW4gZGllIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVpdGV0LiBFYmVuc28gYmluIGljaCBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiAgRGF0ZW52ZXJhcmJlaXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUgRWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIgZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50bG91YWxsZWUgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4gRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuIHp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+PGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyIE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRnZXLDpHRlcyBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21pc3NicmF1Y2g+PHBvbGljeXVybD5odHRwOi8vd3d3LmVhLXNoLmluZm8vZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+PC9lcmtsYWVydW5nZW4+PGxvZ291cmw+aHR0cDovL3d3dy5lYS1zaC5pbmZvL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+PC9teUZvcm0+</content> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybQoJeG1sbnM6cGRm +PSJodHRwOi8veG1sbnMuY2l0LmRlL2Fzc2lzdGFudHMvcGRmIgoJeG1sbnM6dD0iaHR0cDovL3ht +bG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiIgdDp1dWlkPSJlYWMyNDgwZS03MTY2 +LTRiMTYtYmRkZC04ODA1OTFlN2Q5M2IiIHQ6aWQ9IjIwMjEwNDE1MzA3MDIwNDE0NzAxIiB0OnRp +bWVzdGFtcD0iMjAyMS0wNC0xNVQwODozMTo0Mi4zOThaIiB0OnNlbmRlcj0iaW50ZWxsaWZvcm0u +b3pnLXNoLmRlIiB0OmZvcm09IlNpbXBsZUZvcm1TZW5kZXRBbkhvbWVTZXJ2ZXJWb25Ub3JzdGVu +IiB0OmZvcm0taWQ9IlNpbXBsZUZvcm1TZW5kZXRBbkhvbWVTZXJ2ZXJWb25Ub3JzdGVuIiB0OmN1 +c3RvbWVyPSJLaWVsIiB0OmN1c3RvbWVyLWlkPSJLaWVsIiB0OmNsaWVudD0ic2gtZGV2IiB0OmNs +aWVudC1pZD0ic2gtZGV2Ij4KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3Rz +eXN0ZW1UeXBBPgoJPEtvbnRha3RzeXN0ZW1UeXBCPjIzMzAzNDYwMTwvS29udGFrdHN5c3RlbVR5 +cEI+Cgk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJPG5hbWVpZD5uYW1lSWRBc09z +aVBvc3RmYWNoSWRWMTwvbmFtZWlkPgoJPHJlc3RfcmVzcG9uc2VfbmFtZT4KCQlbeyJtZW1iZXJj +b250ZXh0IjoiNTE1MjI2MjAtMDNkMi00NTA3LWIxZjAtMDhkODY5MjBlZmVkIiwibWVtYmVyc2Nv +cGUiOlt7InRlbmFudCI6IlNIIiwibWFpbGJveGd1aWQiOiI2ODI0ZDU3My1mZjI2LTQzNGQtODFh +ZS0yYzM2NzQwZTNjYjQiLCJtYWlsYm94bmFtZSI6IiIsIm1haWxib3hkZXNjcmlwdGlvbiI6IiIs +Im1haWxib3h0eXBlIjoxLCJndWlkIjoiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAw +MDAwIiwiaWQiOjgxMjExNTV9XX1dCgk8L3Jlc3RfcmVzcG9uc2VfbmFtZT4KCTxhbnRyYWdzdGVs +bGVyPgoJCTxzaF9zdHJhc3NlPkFuIGRlciBTY2huZWlkZXJlaTwvc2hfc3RyYXNzZT4KCQk8c2hf +aGF1c251bW1lcj4xPC9zaF9oYXVzbnVtbWVyPgoJCTxzaF9wbHo+MjQxMDM8L3NoX3Bsej4KCQk8 +b3J0X2F1c3dhaGw+OTAwNjQwMiQwMTAwMjAwMDwvb3J0X2F1c3dhaGw+CgkJPG9ydD5LaWVsPC9v +cnQ+CgkJPEdlYmlldElEPjkwMDY0MDI8L0dlYmlldElEPgoJCTxHZWJpZXRCRVpFSUNITlVORz5L +aWVsPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDAyMDAwPC9HZWJp +ZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2 +PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXIvPgoJCTxrb250X21vYmls +bnVtbWVyLz4KCQk8a29udF90ZWxlZmF4bnVtbWVyLz4KCQk8a29udF9lbWFpbD5zY2huZWlkZXJA +aGVsZ2VzY2huZWlkZXIubG9jYWw8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsLz4KCTwvYW50 +cmFnc3RlbGxlcj4KCTxVcGxvYWQxPgoJCTxmaWxlIGNvbnRlbnQtdHlwZT0iaW1hZ2UvanBlZyIg +ZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuRTBGQkEzNjFDMTkxRjhCNzIzOTQ5NDY3QUUz +MDJCRUEyNEU0NzQ1RSIgbGVuZ3RoPSIxNTUyNTEiPkhlbGdlMS5qcGc8L2ZpbGU+Cgk8L1VwbG9h +ZDE+Cgk8VXBsb2FkMj4KCQk8ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vYXNp +cy5vcGVuZG9jdW1lbnQudGV4dCIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuNTJENzlF +NUIyMTE4RDE3NDAwNDVBQjg3MTUxNTM1RENBRDI0RTlBNyIgbGVuZ3RoPSI3OTkzIj5IZWxnZXRl +eHQyLm9kdDwvZmlsZT4KCTwvVXBsb2FkMj4KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4K +CTx6dXN0YWVuZGlnZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+MTAz +NjM0NTU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgoJCTxPcmdhbmlzYXRpb25zZWlu +aGVpdGVuSUQ+MTAzNjM0NTU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0 +aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXIt +IHVuZCBPcmRudW5nc2FtdCwgU2FjaGJlcmVpY2ggR2VmYWhyZW5hYndlaHIsIFdhZmZlbmFuZ2Vs +ZWdlbmhlaXRlbiwgSmFnZGJlaMO2cmRlLCBCZXN0YXR0dW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3Jn +YW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlN0cmVzZW1hbm5wbGF0 +ejwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj41PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+ +MjQxMDM8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVs +PC9vcnQ+CgkJPHRlbGVmb25udW1tZXIvPgoJCTx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTAxLTYy +MTgxPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+R2VmYWhyZW5hYndlaHJAS2llbC5k +ZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlLz4KCQk8a29udGFrdHN5c3RlbV9rZW5u +dW5nLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6Lz4KCQk8QW5saWVnZW5CRVpFSUNI +TlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNI +TlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlr +YUtFWUxJU1Q+Cgk8L3p1c3RhZW5kaWdlc3RlbGxlPgoJPGVtcGZhbmdlbmRlc3RlbGxlPgoJCTxP +cmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVp +dGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNh +dGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVp +bmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbjwvT3JnYW5pc2F0 +aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJh +c3NlPgoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CgkJPHBvc3RsZWl0emFobD4yNDEwNTwv +cG9zdGxlaXR6YWhsPgoJCTxvcnRJRD45MDA2NDAyPC9vcnRJRD4KCQk8b3J0PktpZWw8L29ydD4K +CQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgoJCTx0ZWxl +ZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRy +ZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2U+ZWEtcG9z +dHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgoJCTxrb250YWt0c3lzdGVt +X2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0 +ZW1fa2VubnVuZz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3Rz +eXN0ZW1fa2VubnVuZ3p1c2F0ej4KCTwvZW1wZmFuZ2VuZGVzdGVsbGU+Cgk8ZXJrbGFlcnVuZ2Vu +PgoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgoJCTxjaGVja19yaWNo +dGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KCQk8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1 +ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlz +c2JyYXVjaD4KCQk8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBk +YXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24g +ZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4u +PC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+CgkJPGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIg +YmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6IDYwLDAwIEV1cm8uIEJl +YXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4gClNpZSBzaW5kIGdl +bcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRl +IGRpZSB6dXIgRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8 +bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyIFByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1 +dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUgQmVow7ZyZGUgZWluZSB1bmJlc2No +csOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwgZWluZSBBdXNr +dW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4gVmVyZmFocmVu +c3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4gUG9saXplaWRpZW5z +dHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRy +bz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWlu +ZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOk +cmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlciBFaW5oZWl0bGljaGVyIEFuc3By +ZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyIEF1Zmdh +YmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIgRGF0 +ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMgTGFuZGVzZGF0ZW5zY2h1 +dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwgdmVyYXJi +ZWl0ZXQgIHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4g +YW4gZGllIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVp +dGV0LiBFYmVuc28gYmluIGljaCBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiAgRGF0ZW52ZXJhcmJl +aXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVy +c3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUgRWlud2lsbGlndW5nIGluIGRp +ZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIgZGVt +IEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50 +bG91YWxsZWUgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3Qg +YWJlciBudXIgd2lya3NhbSBmw7xyIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZv +ciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4g +w5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4gRGF0ZW4gdW5k +IGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuIHp1c3Rl +aGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVy +a2zDpHJ1bmcgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+CgkJPGJfbWlzc2JyYXVj +aD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVy +IE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRn +ZXLDpHRlcyBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21p +c3NicmF1Y2g+CgkJPHBvbGljeXVybD5odHRwOi8vd3d3LmVhLXNoLmluZm8vZGF0ZW5zY2h1dHov +ZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdl +bj4KCTxsb2dvdXJsPmh0dHA6Ly93d3cuZWEtc2guaW5mby9sb2dvcy9rb3BmXzkwNjg4NzMuZG9j +PC9sb2dvdXJsPgo8L215Rm9ybT4=</content> <contentType>text/xml</contentType> <id>myForm-xml</id> <name>XML-Daten.xml</name> @@ -42,7 +149,7 @@ <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> <id>20210415307020414701</id> <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> + <sender>intelliform.by.kop-cloud.de</sender> <timestamp>2021-04-15T08:33:39.443Z</timestamp> <username /> </data> diff --git a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml new file mode 100644 index 0000000..7dd1250 --- /dev/null +++ b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml @@ -0,0 +1,84 @@ +<?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="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.ozg-sh.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> + <KontaktsystemTypA>233034600</KontaktsystemTypA> + <KontaktsystemTypB>233034601</KontaktsystemTypB> + <AnliegenID>8966671</AnliegenID> + <nameid>nameIdAsOsiPostfachIdV1</nameid> + <rest_response_name> + [{"membercontext":"51522620-03d2-4507-b1f0-08d86920efed","memberscope":[{"tenant":"SH","mailboxguid":"6824d573-ff26-434d-81ae-2c36740e3cb4","mailboxname":"","mailboxdescription":"","mailboxtype":1,"guid":"00000000-0000-0000-0000-000000000000","id":8121155}]}] + </rest_response_name> + <antragsteller> + <sh_strasse>An der Schneiderei</sh_strasse> + <sh_hausnummer>1</sh_hausnummer> + <sh_plz>24103</sh_plz> + <ort_auswahl>9006402$01002000</ort_auswahl> + <ort>Kiel</ort> + <GebietID>9006402</GebietID> + <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> + <GebietGNR94_GNR>01002000</GebietGNR94_GNR> + <staat>000</staat> + <iso3166numerisch>276</iso3166numerisch> + <kont_telefonnummer/> + <kont_mobilnummer/> + <kont_telefaxnummer/> + <kont_email>schneider@helgeschneider.local</kont_email> + <kont_demail/> + </antragsteller> + <Upload1> + <file content-type="image/jpeg" description="" id="assistants.E0FBA361C191F8B723949467AE302BEA24E4745E" length="155251">Helge1.jpg</file> + </Upload1> + <Upload2> + <file content-type="application/vnd.oasis.opendocument.text" description="" id="assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7" length="7993">Helgetext2.odt</file> + </Upload2> + <GebietID>9006402</GebietID> + <zustaendigestelle> + <OrganisationseinheitenAuswahl>10363455</OrganisationseinheitenAuswahl> + <OrganisationseinheitenID>10363455</OrganisationseinheitenID> + <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- und Ordnungsamt, Sachbereich Gefahrenabwehr, Waffenangelegenheiten, Jagdbehörde, Bestattungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG> + <strasse>Stresemannplatz</strasse> + <hausnummer>5</hausnummer> + <postleitzahl>24103</postleitzahl> + <ortID>9006402</ortID> + <ort>Kiel</ort> + <telefonnummer/> + <telefaxnummer>+49 431 901-62181</telefaxnummer> + <emailadresse>Gefahrenabwehr@Kiel.de</emailadresse> + <demailadresse/> + <kontaktsystem_kennung/> + <kontaktsystem_kennungzusatz/> + <AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG> + <leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST> + </zustaendigestelle> + <empfangendestelle> + <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> + <OrganisationseinheitenID>9068873</OrganisationseinheitenID> + <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> + <strasse>Reventlouallee</strasse> + <hausnummer>6</hausnummer> + <postleitzahl>24105</postleitzahl> + <ortID>9006402</ortID> + <ort>Kiel</ort> + <telefonnummer>+49 431 988-8650</telefonnummer> + <telefaxnummer>+49 431 988-6161111</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, Reventlouallee 6, 24105 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> +</myForm> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapResponse.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml similarity index 100% rename from intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapResponse.xml rename to intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml diff --git a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml new file mode 100644 index 0000000..373c068 --- /dev/null +++ b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml @@ -0,0 +1,31 @@ +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KCTxuYW1laWQ+Y2JhY2IwMWEtMjgxMC0xMWVjLWJiNmYtYzMxOTM5Zjg4NzRlPC9uYW1laWQ+Cgk8YW50cmFnc3RlbGxlcj4KCQk8cGVyc19hbnJlZGU+SGVyciQwMzwvcGVyc19hbnJlZGU+CgkJPHBlcnNfbmFjaG5hbWU+VGVzdGVybWFubjwvcGVyc19uYWNobmFtZT4KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPgoJCTxwZXJzX2dlYnVydHNuYW1lPk1heCBUZXN0ZXJtYW5uPC9wZXJzX2dlYnVydHNuYW1lPgoJCTxwZXJzX2dlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9wZXJzX2dlYnVydHNkYXR1bT4KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5zYnVyZzwvcGVyc19nZWJ1cnRzb3J0PgoJCTxwZXJzX2dlYnVydHNsYW5kPmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX2dlYnVydHNsYW5kPgoJCTxwZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PgoJCTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4KCQk8Yl9hbnJlZGVfc2NobHVlc3NlbG5yPjAzPC9iX2FucmVkZV9zY2hsdWVzc2VsbnI+CgkJPGJfZ2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2JfZ2VidXJ0c2xhbmQ+CgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5kX3NpZ25hdHVyPgoJCTxiX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2g8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+MDAwPC9iX3N0YWF0c2FuZ2Vob2VyaWdrZWl0X3NpZ25hdHVyPgoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8L3NoX3N0cmFzc2U+CgkJPHNoX2hhdXNudW1tZXI+NzQ8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yNDgzNzwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRfYXVzd2FobD4KCQk8b3J0PlNjaGxlc3dpZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDU5MDc1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZvbm51bW1lcj4KCQk8a29udF9tb2JpbG51bW1lcj4rNDkgMTIzPC9rb250X21vYmlsbnVtbWVyPgoJCTxrb250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4KCQk8a29udF9lbWFpbD5tYXgudGVzdGVybWFubkBnbXguZGU8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4KCQk8cGVyc29lbmxpY2hlRWlnbnVuZz4KCQkJPG1hZW5nZWx2b3JoYW5kZW4+ZmFsc2U8L21hZW5nZWx2b3JoYW5kZW4+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbj5mYWxzZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwvTWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+CgkJPC9wZXJzb2VubGljaGVFaWdudW5nPgoJPC9hbnRyYWdzdGVsbGVyPgoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCVNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPkZsZW5zYnVyZ2VyIFN0cmHDn2U8L3N0cmFzc2U+CgkJPGhhdXNudW1tZXI+NzwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDczMTQ8L29ydElEPgoJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4wNDYyMSA4Ny0zNjY8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2UgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjk1MzU2Njlfa2xlaW5lcldhZmZlbnNjaGVpbjwva29udGFrdHN5c3RlbV9rZW5udW5nPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4KCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9hdXN3YWhsX3p1c3RlbGx1bmc+CgkJPGJfenVzdGVsbHVuZz5JY2ggaG9sZSBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gc2VsYnN0IGFiLjwvYl96dXN0ZWxsdW5nPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KCTxlbXBmYW5nZW5kZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lcgoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVsPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+Cgk8L2VtcGZhbmdlbmRlc3RlbGxlPgoJPGVya2xhZXJ1bmdlbj4KCQk8Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+CgkJPGNoZWNrX2RhdGVuc2NodXR6PnRydWU8L2NoZWNrX2RhdGVuc2NodXR6PgoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3NicmF1Y2g+CgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbgoJCQlkZXMgZWxla3Ryb25pc2NoZW4gQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbgoJCQllcmhvYmVuIHdlcmRlbiBrw7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz5HZWLDvGhyIGJlaSBBdXNzdGVsbHVuZyBkZXMga2xlaW5lbiBXYWZmZW5zY2hlaW5zOgoJCQk2MCwwMCBFdXJvLiBCZWFyYmVpdHVuZ3NnZWLDvGhyIGJlaSBWZXJzYWd1bmc6IDQ1LDAwIEV1cm8uCgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIKCQkJRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyCgkJCVByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUKCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwKCQkJZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4KCQkJVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcgoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyCgkJCUF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIKCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMKCQkJTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwKCQkJdmVyYXJiZWl0ZXQgdW5kIGRpZXNlIGltIFJhaG1lbiBkZXIgZ2VzZXR6bGljaGVuIEJlc3RpbW11bmdlbiBhbiBkaWUKCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERhdGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUKCQkJenVzdMOkbmRpZ2UgU3RlbGxlIGVpbnZlcnN0YW5kZW4uIE1pciBpc3QgYmVrYW5udCwgZGFzcyBpY2ggZGllCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlCgkJCTYsIDI0MTA1IEtpZWwgd2lkZXJydWZlbiBrYW5uLiBFaW4gV2lkZXJydWYgaXN0IGFiZXIgbnVyIHdpcmtzYW0gZsO8cgoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZAoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcgbWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuCgkJCURhdGVuIHVuZCBkaWUgbWlyIG5hY2ggZGVuIGRhdGVuc2NodXR6cmVjaHRsaWNoZW4gUmVnZWx1bmdlbgoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nCgkJCUtlbm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6PgoJCTxiX21pc3NicmF1Y2g+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlcgoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMKCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdlbj4KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5IZXJyPC9hbnJlZGU+CgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+CgkJCTxhbnNjaHJpZnQ+CgkJCQk8c3RyYXNzZT5Lw7ZuaWdzd2VnPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+CgkJCQk8cG9zdGZhY2ggLz4KCQkJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJCQk8b3J0c3RlaWwgLz4KCQkJCTx6dXNhdHogLz4KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwvc3RhYXQ+CgkJCTwvYW5zY2hyaWZ0PgoJCQk8a29udGFrdD4KCQkJCTx0ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPgoJCQkJPG1vYmlsbnVtbWVyPis0OSAxMjM8L21vYmlsbnVtbWVyPgoJCQkJPHRlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmYXhudW1tZXI+CgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CgkJCTwva29udGFrdD4KCQk8L2Fuc3ByZWNocGFydG5lcj4KCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgoJCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcwoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJnL0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUKCQkJCQkJT3JkbnVuZ3NhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPlNjaGxlc3dpZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnTestServer</form> + <formId>SimpleFormSendetAnTestServer</formId> + <id>20221212092912345678</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.ozg-sh.de</sender> + <timestamp>2022-12-12T09:30:29.443Z</timestamp> + <nameid>nameIdAsPostfachIdV1</nameid> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> diff --git a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml new file mode 100644 index 0000000..74090b9 --- /dev/null +++ b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml @@ -0,0 +1,30 @@ +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCQoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+MDgxNTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KPC9teUZvcm0+</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>anderer-name-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnHomeServerVonTorsten</form> + <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> + <id>20210415307020414701</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.by.kop-cloud.de</sender> + <timestamp>2021-04-15T08:33:39.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/lombok.config b/lombok.config index e13d17e..d07dd9b 100644 --- a/lombok.config +++ b/lombok.config @@ -27,4 +27,4 @@ lombok.log.slf4j.flagUsage = ERROR lombok.log.log4j.flagUsage = ERROR lombok.data.flagUsage = ERROR lombok.nonNull.exceptionType = IllegalArgumentException -lombok.addLombokGeneratedAnnotation = true +lombok.addLombokGeneratedAnnotation = true \ No newline at end of file diff --git a/pom.xml b/pom.xml index eea52b4..81e30d8 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + + 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 @@ -25,19 +27,20 @@ <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> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <name>Eingangs Adapter - Parent</name> - <packaging>pom</packaging> - <version>0.25.1</version> <parent> - <groupId>de.itvsh.kop.common</groupId> - <artifactId>kop-common-parent</artifactId> - <version>1.3.0</version> - <relativePath /> <!-- lookup parent from repository --> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-parent</artifactId> + <version>3.0.1</version> + <relativePath/> <!-- lookup parent from repository --> </parent> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> + <packaging>pom</packaging> + <name>OZG-Cloud Eingang Manager</name> + <modules> <module>common</module> <module>formsolutions-adapter</module> @@ -45,20 +48,23 @@ <module>router</module> <module>forwarder</module> <module>semantik-adapter</module> + <module>formcycle-adapter</module> + <module>xta-adapter</module> + <module>enterprise-adapter</module> </modules> <properties> <mapstruct.version>1.4.2.Final</mapstruct.version> - <pluto.version>1.1.0</pluto.version> + <vorgang-manager.version>2.4.0</vorgang-manager.version> <jsoup.version>1.14.3</jsoup.version> <xmlschema.version>2.3.0</xmlschema.version> - <kop.license.version>1.3.0</kop.license.version> <!-- plugins --> - <jaxb2-plugin.version>0.14.0</jaxb2-plugin.version> - <mojo-jaxb2-plugin.version>2.5.0</mojo-jaxb2-plugin.version> + <jaxb2-plugin.version>0.15.2</jaxb2-plugin.version> + <jaxb3-plugin.version>0.15.0</jaxb3-plugin.version> + <mojo-jaxb2-plugin.version>3.1.0</mojo-jaxb2-plugin.version> </properties> <dependencyManagement> @@ -66,29 +72,29 @@ <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>semantik-adapter</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-interface</artifactId> - <version>${pluto.version}</version> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <version>${vorgang-manager.version}</version> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> - <version>${pluto.version}</version> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <version>${vorgang-manager.version}</version> </dependency> <dependency> @@ -105,16 +111,16 @@ <!-- Test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> - <version>${pluto.version}</version> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <version>${vorgang-manager.version}</version> <type>test-jar</type> <scope>test</scope> </dependency> @@ -128,7 +134,7 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> - <mainClass>de.itvsh.kop.eingangsadapter.Application</mainClass> + <mainClass>de.ozgcloud.eingang.Application</mainClass> </configuration> </plugin> @@ -146,6 +152,18 @@ </execution> </executions> </plugin> + <plugin> + <groupId>com.evolvedbinary.maven.jvnet</groupId> + <artifactId>jaxb30-maven-plugin</artifactId> + <version>${jaxb3-plugin.version}</version> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + </plugin> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> @@ -159,32 +177,12 @@ </executions> </plugin> <!-- end::webservice --> - <plugin> - <groupId>com.mycila</groupId> - <artifactId>license-maven-plugin</artifactId> - <version>4.1</version> - <configuration> - <licenseSets> - <licenseSet> - <header>license/eupl_v1_2_de/header.txt</header> - <excludes> - <exclude>**/README</exclude> - <exclude>src/test/resources/**</exclude> - <exclude>src/main/resources/**</exclude> - </excludes> - </licenseSet> - </licenseSets> - </configuration> - <dependencies> - <dependency> - <groupId>de.itvsh.kop.common</groupId> - <artifactId>kop-common-license</artifactId> - <version>${kop.license.version}</version> - </dependency> - </dependencies> - </plugin> </plugins> </pluginManagement> + + <plugins> + + </plugins> </build> <distributionManagement> @@ -200,4 +198,4 @@ </snapshotRepository> </distributionManagement> -</project> \ No newline at end of file +</project> diff --git a/release-erstellen.sh b/release-erstellen.sh new file mode 100755 index 0000000..a5f3ac8 --- /dev/null +++ b/release-erstellen.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# +# 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 [ "$#" -ne 1 ]; then + echo "Aufruf: ozg-release-erstellen.sh JA" + echo "Als Parameter bitte 'JA' eintragen zur Sicherheit" + exit 1 +fi + + +## alle -SNAPSHOT in pom.xmls entfernen +SED_PARAMS="-i" +if [[ "$OSTYPE" =~ ^darwin ]]; then + SED_PARAMS="$SED_PARAMS '' -e" +fi +find . -name pom.xml -exec sed $SED_PARAMS 's/-SNAPSHOT//g' {} + + +## release version auslesen +NEWVERSION=$(xmlstarlet sel -N w="http://maven.apache.org/POM/4.0.0" -t -v '//w:project/w:version' -n pom.xml) + +echo +echo "NEXT STEPS:" +echo "***********" +echo "Änderungen prüfen" +echo "git commit -a -m 'release version "$NEWVERSION"'" +echo "git push" +echo "git tag "$NEWVERSION +echo "git push --tags" diff --git a/release-startdev.sh b/release-startdev.sh new file mode 100755 index 0000000..3ec2e48 --- /dev/null +++ b/release-startdev.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# +# 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. +# + + +#set -x + +if [ "$#" -ne 1 ]; then + echo "Aufruf: ozg-release-startdev.sh NEWVERSION" + exit 1 +fi + +NEWVERSION=$1 + +echo + +# pom.xml:main -> project.version setzen +# projectname/pom.xml:parent -> project.parent.version setzen +# projectname/pom.xml:parent,main -> project.parent.version und project.version setzen +# +PROJECTS="pom.xml:main + common/pom.xml:parent + enterprise-adapter/pom.xml:parent + formcycle-adapter/formcycle-adapter-impl/pom.xml:parent + 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 + semantik-adapter/pom.xml:parent + " + +for PROJECT in $PROJECTS; +do + POMFILE=$(echo $PROJECT | cut -d':' -f1) + ACTIONS=$(echo $PROJECT | cut -d':' -f2) + + ## Auf SNAPSHOT Versionen testen + if fgrep -q "SNAPSHOT" $POMFILE; then + RED='\033[0;31m' + NC='\033[0m' + echo "${RED}ERROR: Datei "$POMFILE" enthält noch SNAPSHOT Versionen, das sollte hier nicht passieren.${NC}" + exit 1 + fi + + ## Versionen setzen + if [[ $ACTIONS == *"main"* ]] ; then + xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:version' -v $NEWVERSION $POMFILE + fi + + if [[ $ACTIONS == *"parent"* ]]; then + xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:parent/w:version' -v $NEWVERSION $POMFILE + fi +done + + + +echo +echo "NEXT STEPS:" +echo "***********" +echo "Änderungen prüfen" +echo "git commit -a -m 'start development "$NEWVERSION"'" +echo "git push" + diff --git a/router/pom.xml b/router/pom.xml index 5d533d9..ebf7c37 100644 --- a/router/pom.xml +++ b/router/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + 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 @@ -26,9 +27,9 @@ <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.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -38,16 +39,16 @@ <dependencies> <!-- own Projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-interface</artifactId> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> </dependency> <!-- spring --> @@ -70,14 +71,14 @@ <!-- Test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> @@ -101,4 +102,4 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java b/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java deleted file mode 100644 index 2eaaed5..0000000 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.router; - -import java.io.ByteArrayInputStream; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.google.protobuf.ByteString; - -import de.itvsh.kop.common.binaryfile.GrpcFileUploadUtils; -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileMetaData; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileRequest; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileResponse; -import de.itvsh.ozg.pluto.grpc.command.GrpcCallContext; -import de.itvsh.ozg.pluto.vorgang.GrpcCreateVorgangRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFinishCreationRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.stub.CallStreamObserver; -import io.grpc.stub.StreamObserver; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Service -public class VorgangRemoteService { - - @Autowired - private PlutoServerResolver plutoServerResolver; - - public String createVorgang(GrpcEingang eingang, Optional<String> organisationsEinheitId) { - var plutoStub = plutoServerResolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(organisationsEinheitId); - LOG.info("Connecting to pluto server " + plutoStub.getChannel().authority() + "; OrganisationsEinheitId: " + organisationsEinheitId); - - return createVorgang(eingang, plutoStub, getBinaryFileServiceStub(organisationsEinheitId)); - } - - public String createVorgang(GrpcEingang eingang, VorgangServiceBlockingStub remoteStub, BinaryFileServiceStub remoteAsyncStub) { - return new VorgangCreator(eingang, remoteStub, remoteAsyncStub).create(); - } - - private BinaryFileServiceStub getBinaryFileServiceStub(Optional<String> organisationseinheitenId) { - return plutoServerResolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationseinheitenId); - } - - @RequiredArgsConstructor - public class VorgangCreator { - - static final String VORGANG_ATTACHMENT_FIELD = "vorgangAttachment"; - static final String CALL_CONTEXT_CLIENT = "eingangAdpater"; - - private final GrpcEingang eingang; - private final VorgangServiceBlockingStub vorgangRemoteStub; - private final BinaryFileServiceStub binaryFileRemoteStub; - - @Getter - private String vorgangId; - @Getter - private List<GrpcIncomingFileGroup> uploadedAttachments; - @Getter - private List<GrpcIncomingFile> uploadedRepresentations; - - String create() { - vorgangId = startCreation(); - - uploadedAttachments = uploadAttachments(); - uploadedRepresentations = uploadRepresentations(); - - return finishCreation(); - } - - String startCreation() { - return vorgangRemoteStub.startCreation(buildStartCreationRequest()).getVorgangId(); - } - - private GrpcCreateVorgangRequest buildStartCreationRequest() { - var eingangWithoutFiles = eingang.toBuilder().clearAttachments().clearRepresentations().build(); - return GrpcCreateVorgangRequest.newBuilder().setEingang(eingangWithoutFiles).build(); - } - - List<GrpcIncomingFileGroup> uploadAttachments() { - return eingang.getAttachmentsList().stream().map(this::uploadAttachment).toList(); - } - - private GrpcIncomingFileGroup uploadAttachment(GrpcIncomingFileGroup attachment) { - var filesWithId = attachment.getFilesList().stream() - .map(file -> file.toBuilder().setId(uploadIncomingFile(file)).build()) - .toList(); - - return GrpcIncomingFileGroup.newBuilder().setName(attachment.getName()).addAllFiles(filesWithId).build(); - } - - List<GrpcIncomingFile> uploadRepresentations() { - return eingang.getRepresentationsList().stream().map(rep -> rep.toBuilder().setId(uploadIncomingFile(rep)).build()).toList(); - } - - String uploadIncomingFile(GrpcIncomingFile incomingFile) { - var resultFuture = GrpcFileUploadUtils - .createSender(this::buildChunkRequest, new ByteArrayInputStream(incomingFile.getContent().toByteArray()), - this::buildCallStreamObserver) - .withMetaData(buildMetaDataRequest(incomingFile)) - .send(); - - var response = waitUntilFutureToComplete(resultFuture); - - return response.getFileId(); - } - - GrpcUploadBinaryFileRequest buildChunkRequest(byte[] bytes) { - return GrpcUploadBinaryFileRequest.newBuilder().setFileContent((ByteString.copyFrom(bytes))).build(); - } - - private CallStreamObserver<GrpcUploadBinaryFileRequest> buildCallStreamObserver( - StreamObserver<GrpcUploadBinaryFileResponse> responseObserver) { - return (CallStreamObserver<GrpcUploadBinaryFileRequest>) binaryFileRemoteStub.uploadBinaryFileAsStream(responseObserver); - } - - GrpcUploadBinaryFileRequest buildMetaDataRequest(GrpcIncomingFile ingomingFile) { - return GrpcUploadBinaryFileRequest.newBuilder() - .setMetadata(GrpcUploadBinaryFileMetaData.newBuilder() - .setContext(GrpcCallContext.newBuilder().setClient(CALL_CONTEXT_CLIENT).build()) - .setVorgangId(getVorgangId()) - .setField(VORGANG_ATTACHMENT_FIELD) - .setContentType(ingomingFile.getContentType()) - .setSize(ingomingFile.getSize()) - .setFileName(ingomingFile.getName())) - .build(); - } - - GrpcUploadBinaryFileResponse waitUntilFutureToComplete(CompletableFuture<GrpcUploadBinaryFileResponse> streamFuture) { - try { - return streamFuture.get(10, TimeUnit.MINUTES); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new TechnicalException(e.getMessage(), e); - } catch (ExecutionException | TimeoutException e) { - throw new TechnicalException(e.getMessage(), e); - } - } - - String finishCreation() { - return vorgangRemoteStub.finishCreation(buildFinishCreationRequest()).getMessage(); - } - - GrpcFinishCreationRequest buildFinishCreationRequest() { - return GrpcFinishCreationRequest.newBuilder() - .addAllAttachments(getAttachmentsWithoutContent()) - .addAllRepresentations(getRepresentationsWithoutContent()) - .setVorgangId(getVorgangId()) - .build(); - } - - private List<GrpcIncomingFileGroup> getAttachmentsWithoutContent() { - return getUploadedAttachments().stream().map(this::clearContent).toList(); - } - - private GrpcIncomingFileGroup clearContent(GrpcIncomingFileGroup fileGroup) { - var files = fileGroup.getFilesList().stream().map(this::clearContent).toList(); - return fileGroup.toBuilder().clearFiles().addAllFiles(files).build(); - } - - private List<GrpcIncomingFile> getRepresentationsWithoutContent() { - return getUploadedRepresentations().stream().map(this::clearContent).toList(); - } - - private GrpcIncomingFile clearContent(GrpcIncomingFile file) { - return file.toBuilder().clearContent().build(); - } - } -} \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/CallContext.java b/router/src/main/java/de/ozgcloud/eingang/router/CallContext.java similarity index 88% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/CallContext.java rename to router/src/main/java/de/ozgcloud/eingang/router/CallContext.java index 23e1780..849ea8d 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/CallContext.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/CallContext.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/FileIdMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java similarity index 87% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/FileIdMapper.java rename to router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java index 001c667..c1d4b06 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/FileIdMapper.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import org.mapstruct.Mapper; -import de.itvsh.kop.common.binaryfile.FileId; +import de.ozgcloud.common.binaryfile.FileId; @Mapper interface FileIdMapper { diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcClientsProperties.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java similarity index 83% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcClientsProperties.java rename to router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java index 1d065dc..95db9f8 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcClientsProperties.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,12 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Map; +import jakarta.validation.constraints.NotEmpty; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.validation.annotation.Validated; import lombok.Getter; import lombok.Setter; @@ -34,6 +37,7 @@ import lombok.Setter; @Getter @Setter @Configuration +@Validated @ConfigurationProperties(prefix = "grpc") public class GrpcClientsProperties { @@ -42,8 +46,9 @@ public class GrpcClientsProperties { @Getter @Setter static class ClientProperty { + @NotEmpty private String address; - private String negotationType; + private String negotationType = "TLS"; } } diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java similarity index 75% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapper.java rename to router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java index 8fe72c7..4522894 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapper.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.UUID; @@ -34,21 +34,22 @@ import org.mapstruct.ReportingPolicy; import com.google.protobuf.ByteString; -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; -import de.itvsh.ozg.pluto.vorgang.GrpcAntragsteller; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; -import de.itvsh.ozg.pluto.vorgang.GrpcZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; +import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; +import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle; @Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, // unmappedSourcePolicy = ReportingPolicy.WARN, // nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, // nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, // collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, // - uses = GrpcFormDataMapper.class) + uses = { GrpcFormDataMapper.class, ServiceKontoMapper.class }) public interface GrpcEingangMapper { @Mapping(source = "antragsteller.data", target = "antragsteller.otherData") @@ -76,10 +77,9 @@ public interface GrpcEingangMapper { @Mapping(target = "organisationseinheitenIdBytes", ignore = true) @Mapping(target = "unknownFields", ignore = true) @Mapping(target = "allFields", ignore = true) + GrpcZustaendigeStelle toZustaendigeStelle(ZustaendigeStelle zustaendigeStelle); - GrpcZustaendigeStelle toZustaendigeStelle(de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle zustaendigeStelle); - - GrpcAntragsteller map(Antragsteller antragsteller); + GrpcAntragsteller toAntragsteller(Antragsteller antragsteller); default String uuidToString(UUID id) { return id.toString(); @@ -90,6 +90,8 @@ public interface GrpcEingangMapper { @Mapping(target = "attachments", ignore = true) @Mapping(target = "representation", ignore = true) @Mapping(target = "representations", ignore = true) + // TOASK: Wird aktuell nicht gebraucht, trotzdem implementiern? + @Mapping(target = "header.serviceKonto", ignore = true) FormData toFormData(GrpcEingang eingang); } diff --git a/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java new file mode 100644 index 0000000..e95858f --- /dev/null +++ b/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java @@ -0,0 +1,73 @@ +/* + * 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.router; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.vorgang.common.GrpcObject; +import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper; +import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; + +@Component +class ServiceKontoMapper { + + @Autowired + private GrpcObjectMapper grpcObjectMapper; + + public GrpcServiceKonto toServiceKonto(ServiceKonto serviceKonto) { + return GrpcServiceKonto.newBuilder() + .setType(serviceKonto.getType()) + .addAllPostfachAddresses(getPostfachAddresses(serviceKonto)) + .build(); + } + + private List<GrpcPostfachAddress> getPostfachAddresses(ServiceKonto serviceKonto) { + return serviceKonto.getPostfachAddresses().stream().map(this::fromPostfachAddress).toList(); + } + + private GrpcPostfachAddress fromPostfachAddress(PostfachAddress postfachAddress) { + return GrpcPostfachAddress.newBuilder() + .setVersion(postfachAddress.getVersion()) + .setType(postfachAddress.getType()) + .setIdentifier(mapFromIdentifier(postfachAddress.getIdentifier())) + .build(); + } + + GrpcObject mapFromIdentifier(PostfachAddressIdentifier identifier) { + return grpcObjectMapper.fromMap(Map.of(StringBasedIdentifier.POSTFACH_ID_FIELD, getStringBasedValue(identifier))); + } + + private String getStringBasedValue(PostfachAddressIdentifier identifier) { + return ((StringBasedIdentifier) identifier).getPostfachId(); + } +} \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoListProperties.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java similarity index 57% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoListProperties.java rename to router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java index 764833b..55e81ba 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoListProperties.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; @@ -35,18 +35,18 @@ import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors; -import javax.validation.Constraint; -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; -import javax.validation.Payload; -import javax.validation.constraints.NotNull; +import jakarta.validation.Constraint; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.Payload; +import jakarta.validation.constraints.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.validation.annotation.Validated; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.PlutoListPropertiesConstraint; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.VorgangManagerListPropertiesConstraint; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -54,10 +54,10 @@ import lombok.Setter; @Getter @Setter @Configuration -@ConfigurationProperties(prefix = "kop.adapter") +@ConfigurationProperties(prefix = "ozgcloud.adapter") @Validated -@PlutoListPropertiesConstraint -class PlutoListProperties { +@VorgangManagerListPropertiesConstraint +class VorgangManagerListProperties { enum FallbackStrategy { DENY, FUNDSTELLE @@ -74,16 +74,16 @@ class PlutoListProperties { private RoutingStrategy routingStrategy; private Optional<FallbackStrategy> fallbackStrategy = Optional.empty(); - private Optional<String> targetPlutoName = Optional.empty(); - private Optional<String> fundstellePlutoName = Optional.empty(); + private Optional<String> targetVorgangManagerName = Optional.empty(); + private Optional<String> fundstelleVorgangManagerName = Optional.empty(); private Map<String, String> organisationseinheiten = Collections.emptyMap(); @Documented - @Constraint(validatedBy = PlutoListPropertiesValidator.class) + @Constraint(validatedBy = VorgangManagerListPropertiesValidator.class) @Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) - static @interface PlutoListPropertiesConstraint { + static @interface VorgangManagerListPropertiesConstraint { String message() default "Routing Configuration invalid"; Class<?>[] groups() default {}; @@ -92,34 +92,34 @@ class PlutoListProperties { } @AllArgsConstructor - public static class PlutoListPropertiesValidator implements ConstraintValidator<PlutoListPropertiesConstraint, PlutoListProperties> { + public static class VorgangManagerListPropertiesValidator implements ConstraintValidator<VorgangManagerListPropertiesConstraint, VorgangManagerListProperties> { - private static final Predicate<PlutoListProperties> IS_SINGLE_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.SINGLE; - private static final Predicate<PlutoListProperties> HAS_TARGET_NAME = props -> props.getTargetPlutoName().isPresent(); + private static final Predicate<VorgangManagerListProperties> IS_SINGLE_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.SINGLE; + private static final Predicate<VorgangManagerListProperties> HAS_TARGET_NAME = props -> props.getTargetVorgangManagerName().isPresent(); - private static final Predicate<PlutoListProperties> IS_MULTI_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.MULTI; - private static final Predicate<PlutoListProperties> HAS_FALLBACK_STRATEGY = props -> Objects.nonNull(props.getFallbackStrategy()); + private static final Predicate<VorgangManagerListProperties> IS_MULTI_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.MULTI; + private static final Predicate<VorgangManagerListProperties> HAS_FALLBACK_STRATEGY = props -> Objects.nonNull(props.getFallbackStrategy()); - private static final Predicate<PlutoListProperties> IS_FALLBACK_TO_FUNDSTELLE = props -> props.getFallbackStrategy() + private static final Predicate<VorgangManagerListProperties> IS_FALLBACK_TO_FUNDSTELLE = props -> props.getFallbackStrategy() .map(strategy -> strategy == FallbackStrategy.FUNDSTELLE).orElse(false); - private static final Predicate<PlutoListProperties> HAS_FUNDSTELLE = props -> props.getFundstellePlutoName().isPresent(); + private static final Predicate<VorgangManagerListProperties> HAS_FUNDSTELLE = props -> props.getFundstelleVorgangManagerName().isPresent(); @Override - public boolean isValid(PlutoListProperties value, ConstraintValidatorContext context) { + public boolean isValid(VorgangManagerListProperties value, ConstraintValidatorContext context) { return IS_SINGLE_ROUTING.and(HAS_TARGET_NAME) .or(IS_MULTI_ROUTING.and(HAS_FALLBACK_STRATEGY)) .and(IS_FALLBACK_TO_FUNDSTELLE.negate().or(HAS_FUNDSTELLE)) - .and(this::hasAllPlutosConfigured) + .and(this::hasAllVorgangManagersConfigured) .test(value); } - private boolean hasAllPlutosConfigured(PlutoListProperties props) { + private boolean hasAllVorgangManagersConfigured(VorgangManagerListProperties props) { var clientNames = props.getClientProperties() .map(ps -> ps.getClient()) .map(Map::keySet) .orElse(Collections.emptySet()); - return props.getOrganisationseinheiten().values().stream().map(plutoName -> clientNames.contains("pluto-" + plutoName)) + return props.getOrganisationseinheiten().values().stream().map(organisationseinheitName -> clientNames.contains("vorgang-manager-" + organisationseinheitName)) .collect(Collectors.reducing(true, Boolean::logicalAnd)); } } diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolver.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java similarity index 80% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolver.java rename to router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java index a86d346..287b711 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolver.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,24 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Collection; import java.util.Collections; import java.util.Optional; -import javax.annotation.PostConstruct; -import javax.validation.Valid; +import jakarta.annotation.PostConstruct; +import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.FallbackStrategy; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.RoutingStrategy; -import de.itvsh.kop.eingangsadapter.router.errorhandling.AdapterConfigurationException; -import de.itvsh.kop.eingangsadapter.router.errorhandling.UnknownOrganisationseinheitException; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.FallbackStrategy; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.RoutingStrategy; +import de.ozgcloud.eingang.router.errorhandling.AdapterConfigurationException; +import de.ozgcloud.eingang.router.errorhandling.UnknownOrganisationseinheitException; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.Channel; import io.grpc.stub.AbstractStub; import lombok.NonNull; @@ -49,15 +49,15 @@ import net.devh.boot.grpc.client.stubfactory.StubFactory; @Component @Log4j2 -class PlutoServerResolver { +public class VorgangManagerServerResolver { - static final String CHANNEL_NAME_PREFIX = "pluto-"; + static final String CHANNEL_NAME_PREFIX = "vorgang-manager-"; @Autowired private GrpcChannelFactory grpcChannelFactory; @Autowired @Valid - private PlutoListProperties properties; + private VorgangManagerListProperties properties; @Autowired(required = false) private Collection<StubFactory> stubFactories = Collections.emptyList(); @@ -105,7 +105,7 @@ class PlutoServerResolver { Optional<String> target; if (properties.getRoutingStrategy() == RoutingStrategy.SINGLE) { - target = properties.getTargetPlutoName(); + target = properties.getTargetVorgangManagerName(); } else { target = organisationsEinheitId.map(properties.getOrganisationseinheiten()::get); } @@ -122,8 +122,8 @@ class PlutoServerResolver { if (fallbackStrategy == FallbackStrategy.DENY) { throw new UnknownOrganisationseinheitException(); } else { - return properties.getFundstellePlutoName().map(this::addChannelPrefix).orElseThrow(() -> new AdapterConfigurationException( - "Property 'fundstellePlutoName' is missing but required for fallbackStrategy 'FUNDSTELLE'")); + return properties.getFundstelleVorgangManagerName().map(this::addChannelPrefix).orElseThrow(() -> new AdapterConfigurationException( + "Property 'fundstelleVorgangManagerName' is missing but required for fallbackStrategy 'FUNDSTELLE'")); } }).orElseThrow(() -> { LOG.warn("Missing required routing fallback Strategy. Falling back to 'DENY'"); diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java new file mode 100644 index 0000000..b624e08 --- /dev/null +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java @@ -0,0 +1,219 @@ +/* + * 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.router; + +import java.io.InputStream; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.google.protobuf.ByteString; + +import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils; +import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils.FileSender; +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; +import de.ozgcloud.vorgang.grpc.command.GrpcCallContext; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationRequest; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import io.grpc.stub.CallStreamObserver; +import io.grpc.stub.StreamObserver; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Service +public class VorgangRemoteService { + + @Autowired + private VorgangManagerServerResolver vorgangManagerServerResolver; + + public String createVorgang(FormData formData, GrpcEingang eingang, Optional<String> organisationsEinheitenId) { + var vorgangManagerStub = vorgangManagerServerResolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(organisationsEinheitenId); + LOG.info("Connecting to vorgang-manager server " + vorgangManagerStub.getChannel().authority() + "; OrganisationsEinheitId: " + organisationsEinheitenId); + + return createVorgang(formData, eingang, vorgangManagerStub, getBinaryFileServiceStub(organisationsEinheitenId)); + } + + public String createVorgang(FormData formData, GrpcEingang eingang, VorgangServiceBlockingStub remoteStub, + BinaryFileServiceStub remoteAsyncStub) { + return new VorgangCreator(formData, eingang, remoteStub, remoteAsyncStub).create(); + } + + private BinaryFileServiceStub getBinaryFileServiceStub(Optional<String> organisationsEinheitenId) { + return vorgangManagerServerResolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationsEinheitenId); + } + + @RequiredArgsConstructor + public class VorgangCreator { + + static final String VORGANG_ATTACHMENT_FIELD = "vorgangAttachment"; + static final String CALL_CONTEXT_CLIENT = "eingangAdpater"; + + private final FormData formData; + private final GrpcEingang eingang; + private final VorgangServiceBlockingStub vorgangRemoteStub; + private final BinaryFileServiceStub binaryFileRemoteStub; + + @Getter + private String vorgangId; + @Getter + private List<IncomingFileGroup> uploadedAttachments; + @Getter + private List<IncomingFile> uploadedRepresentations; + + String create() { + vorgangId = startCreation(); + + uploadedAttachments = uploadAttachments(); + uploadedRepresentations = uploadRepresentations(); + + finishCreation(); + return vorgangId; + } + + String startCreation() { + return vorgangRemoteStub.startCreation(buildStartCreationRequest(eingang)).getVorgangId(); + } + + private GrpcCreateVorgangRequest buildStartCreationRequest(GrpcEingang eingang) { + var eingangWithoutFiles = eingang.toBuilder().clearAttachments().clearRepresentations().build(); + return GrpcCreateVorgangRequest.newBuilder().setEingang(eingangWithoutFiles).build(); + } + + List<IncomingFileGroup> uploadAttachments() { + return formData.getAttachments().stream().map(this::uploadAttachment).toList(); + } + + private IncomingFileGroup uploadAttachment(IncomingFileGroup attachment) { + var filesWithId = attachment.getFiles().stream().map(file -> file.toBuilder().id(uploadIncomingFile(file)).build()).toList(); + + return IncomingFileGroup.builder().name(attachment.getName()).files(filesWithId).build(); + } + + List<IncomingFile> uploadRepresentations() { + return formData.getRepresentations().stream() + .map(representation -> representation.toBuilder().id(uploadIncomingFile(representation)).build()).toList(); + } + + String uploadIncomingFile(IncomingFile incomingFile) { + var fileContentStream = incomingFile.getContentStreamForFinalRead(); + + var resultFuture = GrpcFileUploadUtils.createSender(this::buildChunkRequest, fileContentStream, + this::buildCallStreamObserver) + .withMetaData(buildMetaDataRequest(incomingFile)) + .send(); + + return waitUntilFutureToComplete(resultFuture, fileContentStream).getFileId(); + } + + GrpcUploadBinaryFileRequest buildChunkRequest(byte[] bytes, Integer length) { + return GrpcUploadBinaryFileRequest.newBuilder().setFileContent((ByteString.copyFrom(bytes, 0, length))).build(); + } + + private CallStreamObserver<GrpcUploadBinaryFileRequest> buildCallStreamObserver( + StreamObserver<GrpcUploadBinaryFileResponse> responseObserver) { + return (CallStreamObserver<GrpcUploadBinaryFileRequest>) binaryFileRemoteStub.uploadBinaryFileAsStream(responseObserver); + } + + GrpcUploadBinaryFileRequest buildMetaDataRequest(IncomingFile ingomingFile) { + return GrpcUploadBinaryFileRequest.newBuilder() + .setMetadata(GrpcUploadBinaryFileMetaData.newBuilder() + .setContext(GrpcCallContext.newBuilder().setClient(CALL_CONTEXT_CLIENT).build()) + .setVorgangId(getVorgangId()) + .setField(VORGANG_ATTACHMENT_FIELD) + .setContentType(ingomingFile.getContentType()) + .setSize(ingomingFile.getSize()) + .setFileName(ingomingFile.getName())) + .build(); + } + + GrpcUploadBinaryFileResponse waitUntilFutureToComplete(FileSender<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> fileSender, + InputStream fileContentStream) { + try { + return fileSender.getResultFuture().get(2, TimeUnit.MINUTES); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + fileSender.cancelOnError(e); + throw new TechnicalException("Waiting for finishing upload was interrupted.", e); + } catch (ExecutionException | TimeoutException e) { + fileSender.cancelOnTimeout(); + throw new TechnicalException("Error / Timeout on uploading data.", e); + } finally { + IOUtils.closeQuietly(fileContentStream); + } + } + + String finishCreation() { + return vorgangRemoteStub.finishCreation(buildFinishCreationRequest()).getMessage(); + } + + GrpcFinishCreationRequest buildFinishCreationRequest() { + return GrpcFinishCreationRequest.newBuilder() + .addAllAttachments(getAttachmentsWithoutContent()) + .addAllRepresentations(getRepresentationsWithoutContent()) + .setVorgangId(getVorgangId()) + .build(); + } + + private List<GrpcIncomingFileGroup> getAttachmentsWithoutContent() { + return getUploadedAttachments().stream().map(this::toIncomingFileGroup).toList(); + } + + private GrpcIncomingFileGroup toIncomingFileGroup(IncomingFileGroup incomingFileGroup) { + return GrpcIncomingFileGroup.newBuilder() + .setName(incomingFileGroup.getName()) + .addAllFiles(incomingFileGroup.getFiles().stream().map(this::toIncomingFile).toList()).build(); + } + + private List<GrpcIncomingFile> getRepresentationsWithoutContent() { + return getUploadedRepresentations().stream().map(this::toIncomingFile).toList(); + } + + private GrpcIncomingFile toIncomingFile(IncomingFile incomingFile) { + return GrpcIncomingFile.newBuilder().clearContent() + .setId(incomingFile.getId()) + .setContentType(incomingFile.getContentType()) + .setName(incomingFile.getName()) + .setSize(incomingFile.getSize()).build(); + } + } +} \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java similarity index 76% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangService.java rename to router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java index 1c897a8..868659b 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangService.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,28 +21,29 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Service public class VorgangService { @Autowired private VorgangRemoteService remoteService; + @Autowired private GrpcEingangMapper grpcEingangMapper; - public void createVorgang(FormData formData) { + public String createVorgang(FormData formData) { var eingang = grpcEingangMapper.toEingang(formData); - var organisationseinheitenId = Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId); + var organisationsEinheitenId = Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId); - remoteService.createVorgang(eingang, organisationseinheitenId); + return remoteService.createVorgang(formData, eingang, organisationsEinheitenId); } } \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/AdapterConfigurationException.java b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java similarity index 89% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/AdapterConfigurationException.java rename to router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java index 5fe69ed..c596ffe 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/AdapterConfigurationException.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router.errorhandling; +package de.ozgcloud.eingang.router.errorhandling; public class AdapterConfigurationException extends RuntimeException { diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/UnknownOrganisationseinheitException.java b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java similarity index 90% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/UnknownOrganisationseinheitException.java rename to router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java index 5b8ad44..8740bdf 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/UnknownOrganisationseinheitException.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router.errorhandling; +package de.ozgcloud.eingang.router.errorhandling; public class UnknownOrganisationseinheitException extends RuntimeException { diff --git a/router/src/main/resources/META-INF/spring/README.md b/router/src/main/resources/META-INF/spring/README.md new file mode 100644 index 0000000..c744f13 --- /dev/null +++ b/router/src/main/resources/META-INF/spring/README.md @@ -0,0 +1,6 @@ +# Autoconfiguration.imports + +Fix for using grpc starter with spring-boot 3. +Remove wenn PR ist released: + +https://github.com/yidongnan/grpc-spring-boot-starter/pull/775/commits/836fcabaa9327d75640c37dbb0bc7f45a20b563e \ No newline at end of file diff --git a/router/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/router/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..099d759 --- /dev/null +++ b/router/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,6 @@ +net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientMetricAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientHealthAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientSecurityAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientTraceAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcDiscoveryClientAutoConfiguration \ No newline at end of file diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/IncomingFileTestFactory.java b/router/src/test/java/de/itvsh/kop/eingangsadapter/router/IncomingFileTestFactory.java deleted file mode 100644 index ba9f931..0000000 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/IncomingFileTestFactory.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.router; - -import java.util.UUID; - -import de.itvsh.kop.common.binaryfile.FileId; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class IncomingFileTestFactory { - - public static final FileId ID = FileId.createNew(); - public static final String VENDOR_ID = UUID.randomUUID().toString(); - public static final String NAME = "XML-Daten.xml"; - public static final String CONTENT_TYPE_STR = "application/xml"; - public static final byte[] CONTENT = "Da ziehe ich meinen virtuellen Hut!".getBytes(); - public static final long SIZE = CONTENT.length; - - public static IncomingFile create() { - return createBuilder().build(); - } - - public static IncomingFile.IncomingFileBuilder createBuilder() { - return IncomingFile.builder() - .id(ID.toString()) - .vendorId(VENDOR_ID) - .name(NAME) - .contentType(CONTENT_TYPE_STR) - .size(SIZE) - .content(CONTENT); - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java new file mode 100644 index 0000000..e7fbc2a --- /dev/null +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java @@ -0,0 +1,48 @@ +/* + * 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.router; + +import static de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory.*; + +import de.ozgcloud.vorgang.vorgang.GrpcEingangHeader; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; + +public class GrpcEingangHeaderTestFactory { + + public static GrpcEingangHeader create() { + return createBuilder().build(); + } + + public static GrpcEingangHeader.Builder createBuilder() { + return GrpcEingangHeader.newBuilder() + .setRequestId(REQUEST_ID) + .setCreatedAt(CREATED_AT_STR) + .setFormId(FORM_ID) + .setFormEngineName(FORM_ENGINE_NAME) + .setFormName(FORM_NAME) + .setSender(SENDER) + .setServiceKonto(GrpcServiceKonto.newBuilder().build()) + .setVorgangNummer(VORGANG_NUMMER); + } +} diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java similarity index 74% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperITCase.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java index 0a8d2e0..9c4caee 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperITCase.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; @@ -32,25 +32,21 @@ 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.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory; -import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; -class GrpcEingangMapperITCase { +import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; - @InjectMocks - private GrpcEingangMapper MAPPER_INSTANCE = Mappers.getMapper(GrpcEingangMapper.class); +@SpringBootTest +class GrpcEingangMapperITCase { - @Spy - private GrpcFormDataMapper grpcFormDataMapper = Mappers.getMapper(GrpcFormDataMapper.class); + @Autowired + private GrpcEingangMapper grpcEingangMapper; @DisplayName("Mapped GrpcEingang") @Nested @@ -63,7 +59,7 @@ class GrpcEingangMapperITCase { @Test void antragstellerShouldBeMapped() { - var antragSteller = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()).getAntragsteller(); + var antragSteller = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getAntragsteller(); assertThat(antragSteller.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); assertThat(antragSteller.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); @@ -73,7 +69,7 @@ class GrpcEingangMapperITCase { @Test void dataShouldBeMapped() { - var antragsteller = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()).getAntragsteller(); + var antragsteller = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getAntragsteller(); assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1); assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(AntragstellerTestFactory.GEBIET_BEZEICHNUNG_KEY); @@ -87,11 +83,11 @@ class GrpcEingangMapperITCase { @Test void eingangShouldHaveZustaendigeStelle() { - var zustaendigeStelle = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()).getZustaendigeStelle(); + var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getZustaendigeStelle(); assertThat(zustaendigeStelle).isNotNull(); - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigsStelleTestFactory.ORGANISATIONSEINHEIT_ID); - assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigsStelleTestFactory.EMAIL); + assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); + assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL); } } @@ -104,7 +100,7 @@ class GrpcEingangMapperITCase { @BeforeEach void init() { - eingang = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()); + eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create()); } @Test @@ -134,7 +130,7 @@ class GrpcEingangMapperITCase { assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } @Test @@ -152,7 +148,7 @@ class GrpcEingangMapperITCase { assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } } @@ -163,7 +159,7 @@ class GrpcEingangMapperITCase { @Test void testRepresentations() { - GrpcEingang eingang = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()); + GrpcEingang eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create()); assertThat(eingang.getRepresentationsCount()).isEqualTo(1); @@ -172,7 +168,7 @@ class GrpcEingangMapperITCase { assertThat(representation.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(representation.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(representation.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(representation.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(representation.getContent()).isEmpty(); } } @@ -183,7 +179,7 @@ class GrpcEingangMapperITCase { @Test void valueListShouldGenerateFields() { - GrpcEingang eingang = MAPPER_INSTANCE + GrpcEingang eingang = grpcEingangMapper .toEingang(FormDataTestFactory.createBuilder().formData(Map.of("key", List.of("value1", "value2"))).build()); assertThat(eingang.getFormData().getFieldCount()).isEqualTo(2); @@ -192,7 +188,7 @@ class GrpcEingangMapperITCase { @Test void objectListShouldGenerateSubForms() { - GrpcEingang eingang = MAPPER_INSTANCE + GrpcEingang eingang = grpcEingangMapper .toEingang(FormDataTestFactory.createBuilder() .formData(Map.of("key-1", List.of(Map.of("sub_key", "value1"), Map.of("sub_key", "value2")))).build()); diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java similarity index 55% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java index ddccf61..bad753c 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -35,53 +35,81 @@ import org.mapstruct.factory.Mappers; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory; -import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFormData; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; +import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFormData; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; +import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle; class GrpcEingangMapperTest { @InjectMocks private GrpcEingangMapper mapper = Mappers.getMapper(GrpcEingangMapper.class); - @Mock private GrpcFormDataMapper grpcFormDataMapper; + @Mock + private ServiceKontoMapper serviceKontoMapper; + + @DisplayName("To antragsteller") + @Nested + class TestToAntragsteller { - @BeforeEach - void mockMapperReturnValues() { - lenient().when(grpcFormDataMapper.mapToFormData(anyMap())) - .thenReturn(GrpcFormData.newBuilder().addField(GrpcFormFieldTestFactory.create()).build()); + @Test + void antragstellerShouldBeMapped() { + var mapped = toAntragsteller(); + + assertThat(mapped.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); + assertThat(mapped.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); + assertThat(mapped.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); + + } + + private GrpcAntragsteller toAntragsteller() { + return mapper.toAntragsteller(AntragstellerTestFactory.create()); + } } - @DisplayName("Mapped GrpcEingang") + @DisplayName("To zustaendigeStelle") @Nested - class TestToEingang { + class TestToZustaendigeStelle { - @Nested - @DisplayName("Mapped Antragsteller") - class TestMappingAntragsteller { + @Test + void eingangShouldHaveZustaendigeStelle() { + var zustaendigeStelle = toZustaendigeStelle(); - @Test - void antragstellerShouldBeMapped() { + assertThat(zustaendigeStelle).isNotNull(); + assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); + assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL); + } - var mapped = mapper.map(AntragstellerTestFactory.create()); + private GrpcZustaendigeStelle toZustaendigeStelle() { + return mapper.toZustaendigeStelle(ZustaendigeStelleTestFactory.create()); + } + } - assertThat(mapped.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); - assertThat(mapped.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); - assertThat(mapped.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); + @DisplayName("To eingang") + @Nested + class TestToEingang { - } + @BeforeEach + void mockMapperReturnValues() { + when(grpcFormDataMapper.mapToFormData(anyMap())) + .thenReturn(GrpcFormData.newBuilder().addField(GrpcFormFieldTestFactory.create()).build()); + when(serviceKontoMapper.toServiceKonto(any())).thenReturn(GrpcServiceKonto.newBuilder().build()); + } + + @Nested + @DisplayName("Mapped Antragsteller") + class TestMappingAntragsteller { @Test void dataShouldBeMapped() { - - var antragsteller = mapper.toEingang(FormDataTestFactory.create()).getAntragsteller(); + var antragsteller = toEingang().getAntragsteller(); assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1); assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(GrpcFormFieldTestFactory.TEST_NAME); @@ -89,84 +117,60 @@ class GrpcEingangMapperTest { } } - @Nested - @DisplayName("Mapped Zustaendinge Stelle") - class TestZustaendigeStelle { - @Test - void eingangShouldHaveZustaendigeStelle() { - - var zustaendigeStelle = mapFilledZustaendigeStelle(); - - assertThat(zustaendigeStelle).isNotNull(); - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigsStelleTestFactory.ORGANISATIONSEINHEIT_ID); - assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigsStelleTestFactory.EMAIL); - } - - private GrpcZustaendigeStelle mapFilledZustaendigeStelle() { - var eingang = mapper.toEingang(FormDataTestFactory.create()); - assertThat(eingang.getZustaendigeStelle()).isNotNull(); - return eingang.getZustaendigeStelle(); - } - } - @Nested @DisplayName("Test mapped Attachments") class TestAttachments { - private GrpcEingang eingang; - - @BeforeEach - void init() { - - eingang = mapper.toEingang(FormDataTestFactory.create()); - } - @Test void validateNumberOfAttachments() { + var eingang = toEingang(); assertThat(eingang.getNumberOfAttachments()).isEqualTo(2); } @Test void validateNumberOfAttachmentGroups() { + var eingang = toEingang(); assertThat(eingang.getAttachmentsCount()).isEqualTo(2); } @Test void validateGroup1AttachmentCount() { + var eingang = toEingang(); assertThat(eingang.getAttachmentsList().get(0).getFilesCount()).isEqualTo(1); } @Test void validateGroup1Attachment() { + var eingang = toEingang(); - GrpcIncomingFile attachment = eingang.getAttachmentsList().get(0).getFilesList().get(0); - + var attachment = eingang.getAttachmentsList().get(0).getFilesList().get(0); assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } @Test void validateGroup2AttachmentCount() { + var eingang = toEingang(); assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(1); } @Test void validateGroup2Attachment() { + var eingang = toEingang(); - GrpcIncomingFile attachment = eingang.getAttachmentsList().get(1).getFilesList().get(0); - + var attachment = eingang.getAttachmentsList().get(1).getFilesList().get(0); assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } } @@ -176,18 +180,32 @@ class GrpcEingangMapperTest { @Test void testRepresentations() { - - GrpcEingang eingang = mapper.toEingang(FormDataTestFactory.create()); + var eingang = toEingang(); assertThat(eingang.getRepresentationsCount()).isEqualTo(1); - - GrpcIncomingFile representation = eingang.getRepresentationsList().get(0); + var representation = eingang.getRepresentationsList().get(0); assertThat(representation.getId()).isEqualTo(IncomingFileTestFactory.ID); assertThat(representation.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(representation.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(representation.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(representation.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(representation.getContent()).isEmpty(); } } + + @Nested + @DisplayName("Test mapped Header") + class TestHeader { + @Test + void shouldMapAllFields() { + var header = toEingang().getHeader(); + + assertThat(header).usingRecursiveAssertion().isEqualTo(GrpcEingangHeaderTestFactory.create()); + + } + } + + private GrpcEingang toEingang() { + return mapper.toEingang(FormDataTestFactory.create()); + } } -} +} \ No newline at end of file diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcFormFieldTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java similarity index 88% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcFormFieldTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java index 6c28f5e..b65a7ba 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcFormFieldTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import de.itvsh.ozg.pluto.vorgang.GrpcFormField; +import de.ozgcloud.vorgang.vorgang.GrpcFormField; public class GrpcFormFieldTestFactory { diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileGroupTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java similarity index 85% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileGroupTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java index 368457a..b33fe6d 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileGroupTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,10 +21,10 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; public class GrpcIncomingFileGroupTestFactory { diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java similarity index 88% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java index 5791af7..6255b01 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,12 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import com.google.protobuf.ByteString; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; public class GrpcIncomingFileTestFactory { diff --git a/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java new file mode 100644 index 0000000..d9a1b7b --- /dev/null +++ b/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java @@ -0,0 +1,131 @@ +/* + * 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.router; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +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 de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.vorgang.common.GrpcObject; +import de.ozgcloud.vorgang.common.GrpcProperty; +import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; + +class ServiceKontoMapperTest { + + @InjectMocks + private ServiceKontoMapper mapper; + @Mock + private GrpcObjectMapper grpcObjectMapper; + + @Nested + @DisplayName("To servicekonto") + class TestMapServiceKonto { + + private final GrpcProperty grpcProperty = GrpcProperty.newBuilder() + .setName(StringBasedIdentifier.POSTFACH_ID_FIELD) + .addValue(PostfachAddressTestFactory.POSTFACH_ID) + .build(); + private final GrpcObject grpcObject = GrpcObject.newBuilder() + .addProperty(grpcProperty) + .build(); + + @BeforeEach + void mockGrpcObjectMapper() { + when(grpcObjectMapper.fromMap(any())).thenReturn(grpcObject); + } + + @Test + void shouldCallGrpcMapper() { + getServiceKontoFromMappedEingang(); + + verify(grpcObjectMapper).fromMap(any()); + } + + @Test + void shouldBeExist() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto).isNotNull(); + } + + @Test + void shouldContainsType() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoTestFactory.TYPE); + } + + @DisplayName("postfach address") + @Nested + class TestPostfachAddress { + + @Test + void shouldHasSize() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList()).hasSize(1); + } + + @Test + void shouldContainsVersion() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList().get(0).getVersion()).isEqualTo(PostfachAddressTestFactory.VERSION); + } + + @Test + void shouldContainsIdentifier() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList().get(0).getIdentifier().getPropertyList()).hasSize(1); + + var property = serviceKonto.getPostfachAddressesList().get(0).getIdentifier().getPropertyList().get(0); + assertThat(property.getName()).isEqualTo(StringBasedIdentifier.POSTFACH_ID_FIELD); + assertThat(property.getValue(0)).isEqualTo(PostfachAddressTestFactory.POSTFACH_ID); + } + + @Test + void shouldContainsType() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList().get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); + } + } + + private GrpcServiceKonto getServiceKontoFromMappedEingang() { + return mapper.toServiceKonto(ServiceKontoTestFactory.create()); + } + } +} \ No newline at end of file diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java similarity index 72% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java index 84009f7..c91d479 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; @@ -29,21 +29,20 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; - import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.router.GrpcClientsProperties.ClientProperty; +import de.ozgcloud.eingang.router.GrpcClientsProperties.ClientProperty; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import jakarta.validation.ValidatorFactory; -class PlutoListPropertiesTest { +class VorgangManagerListPropertiesTest { @Nested class TestSingleRouting { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createForSingleRouting(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForSingleRouting(); @Test void shouldBeValid() { @@ -62,8 +61,8 @@ class PlutoListPropertiesTest { } @Test - void shouldViolateMissingTargetPlutoName() { - props.setTargetPlutoName(Optional.empty()); + void shouldViolateMissingTargetVorgangManagerName() { + props.setTargetVorgangManagerName(Optional.empty()); var violations = getValidator().validate(props); @@ -73,7 +72,7 @@ class PlutoListPropertiesTest { @Nested class TestMultiRouting { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createForMultiRouting(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForMultiRouting(); @Test void shouldBeValid() { @@ -95,7 +94,7 @@ class PlutoListPropertiesTest { @Nested class TestFallbackFundstelle { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createWithFundstelle(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createWithFundstelle(); @Test void shouldBeValid() { @@ -106,7 +105,7 @@ class PlutoListPropertiesTest { @Test void shouldViolateMissingFundstelle() { - props.setFundstellePlutoName(Optional.empty()); + props.setFundstelleVorgangManagerName(Optional.empty()); var violations = getValidator().validate(props); @@ -116,12 +115,12 @@ class PlutoListPropertiesTest { @Nested class TestClientProperties { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createForMultiRouting(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForMultiRouting(); @Test - void shouldViolateMissingPluto() { + void shouldViolateMissingVorgangManager() { Map<String, ClientProperty> clientMap = new HashMap<>(props.getClientProperties().get().getClient()); - clientMap.remove("pluto-kiel"); + clientMap.remove("vorgang-manager-kiel"); props.getClientProperties().get().setClient(clientMap); var violations = getValidator().validate(props); diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java similarity index 61% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java index cde90b5..67e83b5 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,44 +21,53 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Map; import java.util.Optional; -import de.itvsh.kop.eingangsadapter.router.GrpcClientsProperties.ClientProperty; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.FallbackStrategy; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.RoutingStrategy; +import de.ozgcloud.eingang.router.GrpcClientsProperties.ClientProperty; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.FallbackStrategy; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.RoutingStrategy; -class PlutoListPropertiesTestFactory { +class VorgangManagerListPropertiesTestFactory { static final FallbackStrategy FALLBACK_STRATEGY = FallbackStrategy.DENY; - static final String FUNDSTELLE_PLUTO_NAME = "fundstelle"; - static final String FUNDSTELLE_CHANNEL_NAME = "pluto-" + FUNDSTELLE_PLUTO_NAME; + static final String FUNDSTELLE_VORGANG_MANAGER_NAME = "fundstelle"; + static final String FUNDSTELLE_CHANNEL_NAME = "vorgang-manager-" + FUNDSTELLE_VORGANG_MANAGER_NAME; static final String ORGANISATIONSEINHEIT_ID = "123"; - static final String PLUTO_NAME = "kiel"; - static final String CHANNEL_NAME = "pluto-" + PLUTO_NAME; + static final String VORGANG_MANAGER_NAME = "kiel"; + static final String CHANNEL_NAME = "vorgang-manager-" + VORGANG_MANAGER_NAME; static final String ADDRESS = "127.0.0.1"; - static PlutoListProperties createWithFundstelle() { + static VorgangManagerListProperties createWithFundstelle() { var props = createForMultiRouting(); props.setFallbackStrategy(Optional.of(FallbackStrategy.FUNDSTELLE)); - props.setFundstellePlutoName(Optional.of(FUNDSTELLE_PLUTO_NAME)); + props.setFundstelleVorgangManagerName(Optional.of(FUNDSTELLE_VORGANG_MANAGER_NAME)); return props; } - static PlutoListProperties createForMultiRouting() { - var props = new PlutoListProperties(); + static VorgangManagerListProperties createForMultiRouting() { + var props = new VorgangManagerListProperties(); props.setFallbackStrategy(Optional.of(FALLBACK_STRATEGY)); props.setRoutingStrategy(RoutingStrategy.MULTI); - props.setOrganisationseinheiten(Map.of(ORGANISATIONSEINHEIT_ID, PLUTO_NAME)); + props.setOrganisationseinheiten(Map.of(ORGANISATIONSEINHEIT_ID, VORGANG_MANAGER_NAME)); props.setClientProperties(Optional.of(createClientProperties())); return props; } + static VorgangManagerListProperties createForSingleRouting() { + var props = new VorgangManagerListProperties(); + props.setRoutingStrategy(RoutingStrategy.SINGLE); + props.setTargetVorgangManagerName(Optional.of(VORGANG_MANAGER_NAME)); + props.setClientProperties(Optional.of(createClientProperties())); + + return props; + } + static GrpcClientsProperties createClientProperties() { var property = new ClientProperty(); property.setAddress(ADDRESS); @@ -67,11 +76,4 @@ class PlutoListPropertiesTestFactory { return properties; } - static PlutoListProperties createForSingleRouting() { - var props = new PlutoListProperties(); - props.setRoutingStrategy(RoutingStrategy.SINGLE); - props.setTargetPlutoName(Optional.of(PLUTO_NAME)); - return props; - } - } diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java similarity index 72% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverITCase.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java index 5788f63..f9fd92c 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverITCase.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; @@ -31,19 +31,21 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -@SpringBootTest -class PlutoServerResolverITCase { +@SpringBootTest(properties = { + "grpc.client.vorgang-manager-kiel.address=static://127.0.0.1:9090" +}) +class VorgangManagerServerResolverITCase { @Autowired - private PlutoServerResolver resolver; + private VorgangManagerServerResolver resolver; @Test void shouldReturnVorgangServiceBlockingStub() { var created = resolver - .resolveVorgangServiceBlockingStubByOrganisationseinheitenId(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); + .resolveVorgangServiceBlockingStubByOrganisationseinheitenId(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); assertThat(created).isNotNull().isInstanceOf(VorgangServiceBlockingStub.class); } @@ -51,7 +53,7 @@ class PlutoServerResolverITCase { @Test void shouldReturnBinaryFileServiceStub() { var created = resolver - .resolveBinaryFileServiceStubByOrganisationsEinheitId(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); + .resolveBinaryFileServiceStubByOrganisationsEinheitId(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); assertThat(created).isNotNull().isInstanceOf(BinaryFileServiceStub.class); } diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java similarity index 66% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java index 84999d9..1a34ffc 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,17 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.util.Arrays; import java.util.Collections; import java.util.Optional; -import org.assertj.core.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -40,20 +40,19 @@ import org.mockito.Mock; import org.mockito.Spy; import org.springframework.test.util.ReflectionTestUtils; -import de.itvsh.kop.eingangsadapter.router.errorhandling.AdapterConfigurationException; -import de.itvsh.kop.eingangsadapter.router.errorhandling.UnknownOrganisationseinheitException; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.eingang.router.errorhandling.AdapterConfigurationException; +import de.ozgcloud.eingang.router.errorhandling.UnknownOrganisationseinheitException; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.Channel; import io.grpc.stub.AbstractStub; import net.devh.boot.grpc.client.channelfactory.GrpcChannelFactory; import net.devh.boot.grpc.client.inject.StubTransformer; import net.devh.boot.grpc.client.stubfactory.StubFactory; -class PlutoServerResolverTest { - +class VorgangManagerServerResolverTest { @Spy @InjectMocks - private PlutoServerResolver resolver; + private VorgangManagerServerResolver resolver; @Mock private GrpcChannelFactory channelFactory; @@ -65,9 +64,9 @@ class PlutoServerResolverTest { @Test void shouldCallChannelFactory() { - resolver.createChannelByName(PlutoListPropertiesTestFactory.PLUTO_NAME); + resolver.createChannelByName(VorgangManagerListPropertiesTestFactory.VORGANG_MANAGER_NAME); - verify(channelFactory).createChannel(PlutoListPropertiesTestFactory.PLUTO_NAME); + verify(channelFactory).createChannel(VorgangManagerListPropertiesTestFactory.VORGANG_MANAGER_NAME); } } @@ -79,17 +78,17 @@ class PlutoServerResolverTest { @Test void shouldCreateChannel() { - setProperties(PlutoListPropertiesTestFactory.createWithFundstelle()); + setProperties(VorgangManagerListPropertiesTestFactory.createWithFundstelle()); var channel = resolver.getFundstelleChannelName(); - assertThat(channel).isNotNull().isEqualTo(PlutoListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); + assertThat(channel).isNotNull().isEqualTo(VorgangManagerListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); } @Test void shouldThrowExceptionIfFundstelleIsMissing() { - var props = PlutoListPropertiesTestFactory.createWithFundstelle(); - props.setFundstellePlutoName(Optional.empty()); + var props = VorgangManagerListPropertiesTestFactory.createWithFundstelle(); + props.setFundstelleVorgangManagerName(Optional.empty()); setProperties(props); assertThrows(AdapterConfigurationException.class, () -> resolver.getFundstelleChannelName()); @@ -101,7 +100,7 @@ class PlutoServerResolverTest { @Test void shouldThrowException() { - setProperties(PlutoListPropertiesTestFactory.createForMultiRouting()); + setProperties(VorgangManagerListPropertiesTestFactory.createForMultiRouting()); assertThrows(UnknownOrganisationseinheitException.class, () -> resolver.getFundstelleChannelName()); } @@ -113,30 +112,30 @@ class PlutoServerResolverTest { @Test void shouldUseSingleName() { - setProperties(PlutoListPropertiesTestFactory.createForSingleRouting()); + setProperties(VorgangManagerListPropertiesTestFactory.createForSingleRouting()); var name = resolver.getChannelName(Optional.empty()); - assertThat(name).contains(PlutoListPropertiesTestFactory.CHANNEL_NAME); + assertThat(name).contains(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); } @Test void shouldUseNameFromMap() { - setProperties(PlutoListPropertiesTestFactory.createForMultiRouting()); + setProperties(VorgangManagerListPropertiesTestFactory.createForMultiRouting()); - var name = resolver.getChannelName(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); + var name = resolver.getChannelName(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); - assertThat(name).contains(PlutoListPropertiesTestFactory.CHANNEL_NAME); + assertThat(name).contains(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); } @Test void shouldGetFundstellenName() { - setProperties(PlutoListPropertiesTestFactory.createWithFundstelle()); + setProperties(VorgangManagerListPropertiesTestFactory.createWithFundstelle()); var name = resolver.getChannelName(Optional.of("4711")); verify(resolver).getFundstelleChannelName(); - assertThat(name).isEqualTo(PlutoListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); + assertThat(name).isEqualTo(VorgangManagerListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); } } @@ -180,7 +179,7 @@ class PlutoServerResolverTest { @BeforeEach void initTest() { - doReturn(PlutoListPropertiesTestFactory.CHANNEL_NAME).when(resolver).getChannelName(any()); + doReturn(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME).when(resolver).getChannelName(any()); doReturn(channel).when(resolver).createChannelByName(any()); } @@ -188,7 +187,7 @@ class PlutoServerResolverTest { void shouldGetChannel() { createStub(); - verify(resolver).createChannelByName(PlutoListPropertiesTestFactory.CHANNEL_NAME); + verify(resolver).createChannelByName(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); } @Test @@ -206,7 +205,7 @@ class PlutoServerResolverTest { } private AbstractStub<?> createStub() { - return resolver.createStub(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID), stubFactory, stubClass); + return resolver.createStub(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID), stubFactory, stubClass); } } @@ -225,13 +224,13 @@ class PlutoServerResolverTest { @Test void shouldCallTransform() { - resolver.applyStubTransformers(stub, PlutoListPropertiesTestFactory.CHANNEL_NAME); + resolver.applyStubTransformers(stub, VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); - verify(transformer).transform(PlutoListPropertiesTestFactory.CHANNEL_NAME, stub); + verify(transformer).transform(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME, stub); } } - private void setProperties(PlutoListProperties properties) { + private void setProperties(VorgangManagerListProperties properties) { ReflectionTestUtils.setField(resolver, "properties", properties); } } diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java similarity index 79% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java index d14887c..7710d2c 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,19 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.CallOptions; import io.grpc.Channel; import io.grpc.ClientCall; import io.grpc.MethodDescriptor; import io.grpc.stub.AbstractStub; -public class PlutoServerResolverTestFactory { +public class VorgangManagerServerResolverTestFactory { public static AbstractStub<?> createAbstractStub() { return VorgangServiceGrpc.newBlockingStub(new TestChannel()); diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java similarity index 69% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteServiceTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java index 27ff53b..7e7add4 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,13 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.io.InputStream; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -45,34 +46,42 @@ import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService.VorgangCreator; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileMetaData; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileRequest; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileResponse; -import de.itvsh.ozg.pluto.vorgang.GrpcCreateVorgangRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcCreateVorgangResponse; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFinishCreationRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcFinishCreationResponse; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils.FileSender; +import de.ozgcloud.common.errorhandling.TechnicalException; +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.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.router.VorgangRemoteService.VorgangCreator; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationRequest; +import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationResponse; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.stub.CallStreamObserver; +import lombok.SneakyThrows; class VorgangRemoteServiceTest { @InjectMocks private VorgangRemoteService remoteService; @Mock - private final VorgangServiceBlockingStub vorgangStub = PlutoServerResolverTestFactory.createVorgangBlockingStub(); + private final VorgangServiceBlockingStub vorgangStub = VorgangManagerServerResolverTestFactory.createVorgangBlockingStub(); @Mock - private final BinaryFileServiceStub binaryFileStub = PlutoServerResolverTestFactory.createBinaryFileStub(); + private final BinaryFileServiceStub binaryFileStub = VorgangManagerServerResolverTestFactory.createBinaryFileStub(); + @Mock + private GrpcEingangMapper eingangMapper; private VorgangCreator vorgangCreator; + private final FormData formData = FormDataTestFactory.create(); private final GrpcEingang eingang = GrpcEingang.newBuilder() .addAttachments(GrpcIncomingFileGroupTestFactory.create()) .addRepresentations(GrpcIncomingFileTestFactory.create()) @@ -82,7 +91,7 @@ class VorgangRemoteServiceTest { @BeforeEach void init() { - vorgangCreator = spy(remoteService.new VorgangCreator(eingang, vorgangStub, binaryFileStub)); + vorgangCreator = spy(remoteService.new VorgangCreator(formData, eingang, vorgangStub, binaryFileStub)); } @Nested @@ -152,10 +161,10 @@ class VorgangRemoteServiceTest { } @Test - void shouldReturnMessage() { + void shouldReturnVorgangId() { var result = createVorgang(); - assertThat(result).isEqualTo(finishResponse.getMessage()); + assertThat(result).isEqualTo(vorgangId); } private String createVorgang() { @@ -175,14 +184,14 @@ class VorgangRemoteServiceTest { void shouldCallUploadIncomingFile() { vorgangCreator.uploadAttachments(); - verify(vorgangCreator).uploadIncomingFile(any(GrpcIncomingFile.class)); + verify(vorgangCreator, times(2)).uploadIncomingFile(any(IncomingFile.class)); } @Test void shouldSetFileId() { var uploadedAttachments = vorgangCreator.uploadAttachments(); - assertThat(uploadedAttachments.get(0).getFilesList().get(0).getId()).isEqualTo(fileId); + assertThat(uploadedAttachments.get(0).getFiles().get(0).getId()).isEqualTo(fileId); } } @@ -198,7 +207,7 @@ class VorgangRemoteServiceTest { void shouldCallUploadIncomingFile() { vorgangCreator.uploadRepresentations(); - verify(vorgangCreator).uploadIncomingFile(any(GrpcIncomingFile.class)); + verify(vorgangCreator).uploadIncomingFile(any(IncomingFile.class)); } @Test @@ -260,19 +269,30 @@ class VorgangRemoteServiceTest { } private GrpcUploadBinaryFileMetaData buildMetaData() { - return vorgangCreator.buildMetaDataRequest(GrpcIncomingFileTestFactory.create()).getMetadata(); + return vorgangCreator.buildMetaDataRequest(IncomingFileTestFactory.create()).getMetadata(); } } @Nested class TestWaitUntilFutureToComplete { + @Mock + private FileSender<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> sender; + @Mock private CompletableFuture<GrpcUploadBinaryFileResponse> streamFuture; + @Mock + private InputStream inputStream; + + @BeforeEach + void initSender() { + when(sender.getResultFuture()).thenReturn(streamFuture); + } + @Test void shouldNotThrowException() { - assertDoesNotThrow(() -> vorgangCreator.waitUntilFutureToComplete(streamFuture)); + assertDoesNotThrow(() -> vorgangCreator.waitUntilFutureToComplete(sender, inputStream)); } @ParameterizedTest @@ -281,15 +301,41 @@ class VorgangRemoteServiceTest { throws InterruptedException, ExecutionException, TimeoutException { doThrow(exception).when(streamFuture).get(anyLong(), any(TimeUnit.class)); - assertThrows(TechnicalException.class, () -> vorgangCreator.waitUntilFutureToComplete(streamFuture)); + assertThrows(TechnicalException.class, () -> vorgangCreator.waitUntilFutureToComplete(sender, inputStream)); + } + + @ParameterizedTest + @ValueSource(classes = { InterruptedException.class, ExecutionException.class, TimeoutException.class }) + @SneakyThrows + void shouldCloseFileContentStreamOnException(Class<Exception> exception) { + doThrow(exception).when(streamFuture).get(anyLong(), any(TimeUnit.class)); + + try { + vorgangCreator.waitUntilFutureToComplete(sender, inputStream); + } catch (Exception e) { + // ignored + } + verify(inputStream).close(); + } + + @Test + @SneakyThrows + void shouldCloseFileContent() { + try { + vorgangCreator.waitUntilFutureToComplete(sender, inputStream); + } catch (Exception e) { + // ignored + } + + verify(inputStream).close(); } } @Nested class TestBuildFinishCreationRequest { - private final GrpcIncomingFileGroup attachment = GrpcIncomingFileGroupTestFactory.create(); - private final GrpcIncomingFile representation = GrpcIncomingFileTestFactory.create(); + private final IncomingFileGroup attachment = IncomingFileGroupTestFactory.create(); + private final IncomingFile representation = IncomingFileTestFactory.create(); @BeforeEach void mock() { diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java similarity index 78% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangServiceTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java index 3056945..7405693 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -34,10 +34,10 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; class VorgangServiceTest { @@ -63,7 +63,7 @@ class VorgangServiceTest { void shouldCallRemoteService() { callCreateVorgangNew(); - verify(remoteService).createVorgang(eingang, Optional.ofNullable(ZustaendigsStelleTestFactory.ORGANISATIONSEINHEIT_ID)); + verify(remoteService).createVorgang(formData, eingang, Optional.ofNullable(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); } private void callCreateVorgangNew() { diff --git a/run_filereader.sh b/run_filereader.sh new file mode 100755 index 0000000..66434cf --- /dev/null +++ b/run_filereader.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# 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. +# + + +set -x + +TEST_DIR=/tmp/kop-afm-filereader + +rm -R $TEST_DIR +mkdir -p $TEST_DIR +cp -a src/test/resources/intelliform/filereader/example/* $TEST_DIR + + +./mvnw spring-boot:run -Dspring-boot.run.arguments="--ozgcloud.adapter.intelliform.filereader.path=file:$TEST_DIR" diff --git a/run_helm_test.sh b/run_helm_test.sh new file mode 100755 index 0000000..185d2ab --- /dev/null +++ b/run_helm_test.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# 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. +# + + +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' . \ No newline at end of file diff --git a/run_local.sh b/run_local.sh new file mode 100755 index 0000000..67ca638 --- /dev/null +++ b/run_local.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# +# 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. +# + + + +./mvnw spring-boot:run -Dspring-boot.run.profiles=local diff --git a/semantik-adapter/pom.xml b/semantik-adapter/pom.xml index 8e70d6c..0295000 100644 --- a/semantik-adapter/pom.xml +++ b/semantik-adapter/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + 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 @@ -23,15 +24,13 @@ 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"> +<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.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> </parent> <artifactId>semantik-adapter</artifactId> @@ -40,13 +39,24 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> </dependency> + + <!-- Tools --> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-xml</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> + </dependency> <!-- test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> @@ -83,4 +93,4 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java deleted file mode 100644 index 02e1acf..0000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; - -//TODO Vererbung ausbauen und durch Utils ersetzen -public abstract class AbstractFileMapper implements EngineBasedMapper { - public static final String ATTACHMENTS = "parsedAttachments"; - public static final String REPRESENTATIONS = "parsedRepresentations"; - public static final String FIELD_NAME_MAPPED_FILES = "mappedFiles"; - - @Override - public FormData parseFormData(FormData formData) { - var processed = processFiles(formData); - - return removeProcessedData(processed); - } - - protected FormData processFiles(FormData formData) { - var builder = formData.toBuilder(); - Optional.ofNullable(getMappedFiles(formData)).ifPresent(files -> { - addAttachments(builder, formData); - addRepresentations(builder, formData); - }); - - return builder.build(); - } - - @SuppressWarnings("unchecked") - protected FormData.FormDataBuilder addAttachments(FormData.FormDataBuilder builder, FormData formData) { - Optional.ofNullable((List<IncomingFileGroup>) getMappedFiles(formData).get(ATTACHMENTS)) - .ifPresent(attachments -> builder - .attachments(attachments) - .numberOfAttachments(getSizeOfAttachments(attachments))); - - return builder; - } - - private int getSizeOfAttachments(List<IncomingFileGroup> attachments) { - return attachments.stream().flatMap(attachmentGroup -> attachmentGroup.getFiles().stream()).toList().size(); - } - - @SuppressWarnings("unchecked") - protected FormData.FormDataBuilder addRepresentations(FormData.FormDataBuilder builder, FormData formData) { - Optional.ofNullable((List<IncomingFile>) getMappedFiles(formData).get(REPRESENTATIONS)) - .ifPresent(representations -> builder.representations(representations).numberOfRepresentations(representations.size())); - - return builder; - } - - protected Map<String, Object> getMappedFiles(FormData formData) { - return FormDataUtils.getSubMap(formData, FIELD_NAME_MAPPED_FILES); - } - - protected FormData removeProcessedData(FormData formData) { - return FormDataUtils.from(formData).remove(FIELD_NAME_MAPPED_FILES).build(); - - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapper.java deleted file mode 100644 index b3b2ca8..0000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapper.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.util.HashMap; -import java.util.Map; - -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; - -@Component -class AfmHeaderMapper implements AfmEngineBasedMapper { - - static final String AFM_FORMENGINE_NAME = "AFM"; - - static final String HEADER_FIELD = "header"; - - static final String ID = "t:id"; - static final String TIMESTAMP = "t:timestamp"; - static final String FORM_ID = "t:form-id"; - static final String FORM = "t:form"; - static final String SENDER = "t:sender"; - - @Override - public FormData parseFormData(FormData formData) { - var header = buildHeader(formData); - var processed = formData.toBuilder().header(header).build(); - - return removeMappedData(processed); - } - - private FormHeader buildHeader(FormData formData) { - var headerDataMap = getHeaderMap(formData); - - return FormHeader.builder() - .requestId((String) headerDataMap.get(ID)) - .createdAt(ZonedDateTime.parse((String) headerDataMap.get(TIMESTAMP), DateTimeFormatter.ISO_OFFSET_DATE_TIME)) - .formId((String) headerDataMap.get(FORM_ID)) - .formName((String) headerDataMap.get(FORM)) - .sender((String) headerDataMap.get(SENDER)) - .formEngineName(AFM_FORMENGINE_NAME) - .build(); - } - - FormData removeMappedData(FormData formData) { - var data = new HashMap<>(formData.getFormData()); - data.remove(HEADER_FIELD); - return formData.toBuilder().formData(data).build(); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getHeaderMap(FormData formData) { - return (Map<String, Object>) formData.getFormData().get(HEADER_FIELD); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java deleted file mode 100644 index 5aea6ce..0000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; - -@Component -public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper { - - public static final String ANTRAGSTELLER_PANEL_IDENTIFIER = "Antragstellende Person"; - - public static final String POSTKORBHANDLE = "postkorbhandle"; - - public static final String VORNAME_KEY = "AS_Vorname"; - public static final String NACHNAME_KEY = "AS_Name"; - - @Override - public FormData parseFormData(FormData formData) { - return FormDataUtils.from(formData) - .remove(POSTKORBHANDLE) - .builder() - .antragsteller(buildAntragsteller(formData)) - .build(); - } - - Antragsteller buildAntragsteller(FormData formData) { - var antragstellerData = findAntragstellerData(formData.getFormData()); - - return Antragsteller.builder() - .postfachId(getPostkorbhandle(formData)) - .vorname(getVorname(antragstellerData)) - .nachname(getNachname(antragstellerData)) - .build(); - } - - private String getVorname(Map<String, String> antragstellerData) { - return Optional.ofNullable(antragstellerData.get(VORNAME_KEY)).orElse(null); - } - - private String getNachname(Map<String, String> antragstellerData) { - return Optional.ofNullable(antragstellerData.get(NACHNAME_KEY)).orElse(null); - } - - private String getPostkorbhandle(FormData formData) { - return (String) formData.getFormData().get(POSTKORBHANDLE); - } - - private Map<String, String> findAntragstellerData(Map<String, Object> formData) { - var names = new HashMap<String, String>(); - addContent(getAssistantPanels(formData), names); - return names; - } - - private void addContent(List<Map<String, Object>> panels, Map<String, String> names) { - panels.stream().forEach(entry -> handleContentEntry(entry, names)); - } - - private void handleContentEntry(Map<String, Object> entry, Map<String, String> names) { - if (entry.containsKey(COMPONENTS)) { - addContent(getComponentList(entry), names); - } else if (entry.containsKey(STRING_VALUE)) { - names.put((String) entry.get(IDENTIFIER), (String) entry.get(STRING_VALUE)); - } - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getComponentList(Map<String, Object> entry) { - return (List<Map<String, Object>>) entry.get(COMPONENTS); - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getAssistantPanels(Map<String, Object> formData) { - return ((List<Map<String, Object>>) ((Map<String, Object>) formData.get(ASSISTANT)).get(PANELS)); - } - -} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapper.java deleted file mode 100644 index a6e99be..0000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapper.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URLConnection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; -import java.util.zip.ZipEntry; -import java.util.zip.ZipException; -import java.util.zip.ZipInputStream; - -import org.springframework.stereotype.Component; -import org.springframework.util.MimeTypeUtils; - -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import lombok.extern.log4j.Log4j2; - -@Component -@Log4j2 -class FormSolutionsFilesMapper extends AbstractFileMapper implements FormSolutionsEngineBasedMapper { - - public static final String EXTRAHIERTE_ATTACHMENTS = "Extrahierte Attachments"; - - @Override - @SuppressWarnings("unchecked") - protected FormData.FormDataBuilder addAttachments(FormData.FormDataBuilder builder, FormData formData) { - Optional.ofNullable((List<IncomingFileGroup>) getMappedFiles(formData).get(ATTACHMENTS)) - .ifPresent(attachments -> { - var files = collectZipContent(attachments); - builder.attachments(files).numberOfAttachments(getAttachmentCount(files)); - }); - return builder; - } - - List<IncomingFileGroup> collectZipContent(List<IncomingFileGroup> attachmentZip) { - if (attachmentZip.isEmpty()) { - return Collections.emptyList(); - } - - return fillIncomingFileGroupList(attachmentZip); - } - - private List<IncomingFileGroup> fillIncomingFileGroupList(List<IncomingFileGroup> attachmentZips) { - byte[] zipFile = attachmentZips.get(0).getFiles().get(0).getContent(); - return processZipContent(attachmentZips, zipFile); - } - - private List<IncomingFileGroup> processZipContent(List<IncomingFileGroup> attachmentZips, byte[] zipFile) { - IncomingFileGroup fileGroup = IncomingFileGroup.builder().name(EXTRAHIERTE_ATTACHMENTS).build(); - try (ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(zipFile))) { - addIncomingFile(fileGroup, zipIn); - } catch (ZipException e) { - LOG.info("Unable to extract ZIP file, attaching unextracted file. Cause: {}", e.getMessage()); - fileGroup = attachmentZips.get(0); - } catch (IOException e) { - throw new TechnicalException("Error extracting zip content.", e); - } - return List.of(fileGroup); - } - - private void addIncomingFile(IncomingFileGroup fileGroup, ZipInputStream zipIn) throws IOException { - ZipEntry zipEntry = zipIn.getNextEntry(); - while (Objects.nonNull(zipEntry)) { - fileGroup.getFiles().add(createIncomingFile(zipIn, zipEntry)); - zipEntry = zipIn.getNextEntry(); - } - } - - private IncomingFile createIncomingFile(ZipInputStream zipIn, ZipEntry zipEntry) throws IOException { - return IncomingFile.builder() - .content(readZipEntry(zipIn)) - .name(zipEntry.getName()) - .contentType(getContentType(zipEntry.getName())) - .id(UUID.randomUUID().toString()) - .size(zipEntry.getSize()) - .build(); - } - - byte[] readZipEntry(ZipInputStream zipIn) throws IOException { - byte[] content = new byte[0]; - try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - byte[] buffer = new byte[1024]; - int len; - while ((len = zipIn.read(buffer)) > 0) { - baos.write(buffer, 0, len); - } - content = baos.toByteArray(); - } - - return content; - } - - String getContentType(String name) { - return Objects.requireNonNullElse(URLConnection.guessContentTypeFromName(name), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - int getAttachmentCount(List<IncomingFileGroup> fileGroups) { - if (fileGroups.isEmpty()) { - return 0; - } - - return Optional.ofNullable(fileGroups.get(0)).map(fileGroup -> fileGroup.getFiles().size()).orElse(0); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapper.java deleted file mode 100644 index 31558e9..0000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapper.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -@Component -public class FormSolutionsPanelMapper implements FormSolutionsEngineBasedMapper { - public static final String COMPONENTS = "components"; - public static final String STRING_VALUE = "stringValue"; - public static final String PANELS = "panels"; - - static final Predicate<Map<String, Object>> IS_NODE_COMPONENT = component -> Objects.nonNull(component.get(IDENTIFIER)) - && Objects.nonNull(component.get(STRING_VALUE)); - static final Predicate<Map<String, Object>> HAS_CONTENT = component -> Objects.nonNull(component.get(COMPONENTS)) - || Objects.nonNull(component.get(STRING_VALUE)); - - @Override - public FormData parseFormData(FormData formData) { - var res = mapPanels(getPanels(formData)); - // TODO was passiert hier? Sieht nach dem join von zwei maps aus nur irre - // komilziert - Map<String, Object> combinedMap = Stream.concat(res.entrySet().stream(), formData.getFormData().entrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - - return formData.toBuilder().formData(combinedMap).build(); - } - - Map<String, Object> mapPanels(List<Map<String, Object>> panels) { - return panels.stream().collect(Collectors.toMap(panel -> (String) panel.get(IDENTIFIER), panel -> mapComponents(panel.get(COMPONENTS)))); - } - - @SuppressWarnings("unchecked") - Map<String, Object> mapComponents(Object components) { - if (components instanceof List) { - return ((List<Map<String, Object>>) components).stream().filter(HAS_CONTENT) - .collect(Collectors.toMap(component -> (String) component.get(IDENTIFIER), - this::mapComponent)); - } - - return new HashMap<>(); - } - - Object mapComponent(Map<String, Object> component) { - if (IS_NODE_COMPONENT.test(component)) { - return component.get(STRING_VALUE); - } - - return mapComponents(component.get(COMPONENTS)); - } - - @SuppressWarnings("unchecked") - List<Map<String, Object>> getPanels(FormData formData) { - return (List<Map<String, Object>>) ((Map<String, Object>) formData.getFormData().get(ASSISTANT)).get(PANELS); - } - -} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java similarity index 70% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java index 0cdf299..417af9f 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,20 +21,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik; +package de.ozgcloud.eingang.semantik; + +import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.router.VorgangService; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; -import de.itvsh.kop.eingangsadapter.semantik.formbased.FormBasedSemantikAdapter; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.router.VorgangService; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; @Service public class SemantikAdapter { - @Autowired + @Autowired(required = false) private EngineBasedSemantikAdapter engineBasedAdapter; @Autowired private FormBasedSemantikAdapter formBasedAdapter; @@ -42,15 +44,18 @@ public class SemantikAdapter { @Autowired private VorgangService vorgangService; - public void processFormData(FormData formData) { + public String processFormData(FormData formData) { formData = parseByEngineAdapter(formData); formData = parseByFormAdapter(formData); - vorgangService.createVorgang(formData); + return vorgangService.createVorgang(formData); } private FormData parseByEngineAdapter(FormData formData) { - return engineBasedAdapter.parseFormData(formData); + if (Objects.nonNull(engineBasedAdapter)) { + return engineBasedAdapter.parseFormData(formData); + } + return formData; } private FormData parseByFormAdapter(FormData formData) { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java new file mode 100644 index 0000000..414528c --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java @@ -0,0 +1,35 @@ +/* + * 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.common; + +public class ReadZipException extends RuntimeException { + + public ReadZipException(String message) { + super(message); + } + + public ReadZipException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java new file mode 100644 index 0000000..75c1404 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java @@ -0,0 +1,242 @@ +/* + * 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.common; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLConnection; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +import org.springframework.util.MimeTypeUtils; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.DeleteOnCloseInputStream; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import lombok.Getter; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +public class ZipAttachmentReader { + + public static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp"; + public static final String SOURCE_ZIP_PREFIX = "zip-attachment"; + static final String TARGET_ATTACHMENT_PREFIX = "ozg_fs_attachment_"; + + private static final double ZIP_MAX_THRESHOLD = 100; + private static final int ZIP_MAX_TOTAL_SIZE = 500 * 1024 * 1024; + private static final int ZIP_MAX_ENTRIES = 100; + + private final File sourceZipFile; + @Getter + private final String sourceFileName; + + ZipAttachmentReader() { + this.sourceZipFile = null; + this.sourceFileName = null; + } + + private ZipAttachmentReader(InputStream sourceZipInputStream, String originalFileName) { + try { + this.sourceZipFile = saveSourceZipToFile(sourceZipInputStream, SOURCE_ZIP_PREFIX); + sourceZipInputStream.close(); + } catch (IOException e) { + throw new TechnicalException("Can not save original ZIP.", e); + } + this.sourceFileName = originalFileName; + } + + private ZipAttachmentReader(File sourceZipInputFile, String originalFileName) { + this.sourceZipFile = sourceZipInputFile; + this.sourceFileName = originalFileName; + } + + public static ZipAttachmentReader from(InputStream sourceZipInputStream, String originalFileName) { + return new ZipAttachmentReader(sourceZipInputStream, originalFileName); + } + + public static ZipAttachmentReader from(File sourceZipInputFile, String originalFileName) { + return new ZipAttachmentReader(sourceZipInputFile, originalFileName); + } + + protected static File saveSourceZipToFile(InputStream inputStream, String namePrefix) { + try { + File tempFile = File.createTempFile(namePrefix, TMP_FILE_SUFFIX); + Files.copy(inputStream, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + tempFile.deleteOnExit(); + return tempFile; + } catch (IOException e) { + throw new ReadZipException("Cannot save source ZIP file to local storage. Processing interrupted.", e); + } + } + + public List<IncomingFile> readContent() throws ReadZipException { + try (ZipInputStream sourceZipInputStream = new ZipInputStream(new FileInputStream(sourceZipFile))) { + return readContent(sourceZipInputStream); + } catch (IOException e) { + throw new ReadZipException("Cannot save file contained in ZIP. Processing interrupted.", e); + } + } + + public void deleteSourceFile() { + try { + Files.delete(sourceZipFile.toPath()); + } catch (IOException e) { + LOG.error("Error deleting source ZIP file.", e); + } + } + + List<IncomingFile> readContent(ZipInputStream sourceZipInputStream) throws IOException, ReadZipException { + ZipEntry nextEntry = entryExists(sourceZipInputStream.getNextEntry()); + List<IncomingFile> extractedFiles = new ArrayList<>(); + + AtomicInteger totalExtractedSize = new AtomicInteger(); + int totalZipEntries = 0; + + while (Objects.nonNull(nextEntry)) { + + final ZipEntry currentEntry = nextEntry; + + Optional.of(currentEntry) + .filter(entry -> !entry.isDirectory()) + .map(entry -> createLocalTempFile()) + .map(localFile -> { + int size = saveZipFileToLocalFile(currentEntry, sourceZipInputStream, localFile); + extractedFiles.add(createContentEntry(localFile, currentEntry)); + return size; + }) + .ifPresent(totalExtractedSize::addAndGet); + + totalZipEntries++; + checkTotalExtractedSize(totalExtractedSize.get()); + checkTotalZipEntries(totalZipEntries); + + nextEntry = sourceZipInputStream.getNextEntry(); + } + + return extractedFiles; + } + + File createLocalTempFile() { + try { + File localFile = File.createTempFile(TARGET_ATTACHMENT_PREFIX, TMP_FILE_SUFFIX); + localFile.deleteOnExit(); + return localFile; + } catch (IOException e) { + throw new ReadZipException("Could not create tmp file", e); + } + } + + void checkTotalExtractedSize(Integer totalExtractedSize) { + if (totalExtractedSize > ZIP_MAX_TOTAL_SIZE) { + throw new ReadZipException("Total size of uncompressed zip file is to high (" + totalExtractedSize + "> " + ZIP_MAX_TOTAL_SIZE + ")"); + } + } + + private void checkTotalZipEntries(Integer totalZipEntries) { + if (totalZipEntries > ZIP_MAX_ENTRIES) { + throw new ReadZipException("Total entries in zip file exceeded (" + totalZipEntries + "> " + ZIP_MAX_ENTRIES + ")"); + } + } + + private ZipEntry entryExists(ZipEntry entry) { + if (Objects.isNull(entry)) { + throw new ReadZipException("Zip archive either invalid or empty."); + } + return entry; + } + + int saveZipFileToLocalFile(ZipEntry zipEntry, InputStream inputStream, File localFile) { + try { + + try (FileOutputStream out = new FileOutputStream(localFile)) { + int totalSizeEntry = 0; + + int readBytes = -1; + byte[] buffer = new byte[2048]; + while ((readBytes = inputStream.read(buffer)) > 0) { // Compliant + out.write(buffer, 0, readBytes); + totalSizeEntry += readBytes; + + double compressionRatio = (double) totalSizeEntry / zipEntry.getCompressedSize(); + if (compressionRatio > ZIP_MAX_THRESHOLD) { + throw new ReadZipException( + "Ratio between compressed and uncompressed data is highly suspicious (" + compressionRatio + + "), looks like a Zip Bomb Attack"); + } + } + + return totalSizeEntry; + } + } catch (IOException e) { + throw new ReadZipException("Cannot save file contained in ZIP. Processing interrupted.", e); + } + } + + IncomingFile createContentEntry(File file, ZipEntry zipEntry) { + return IncomingFile.builder() + .name(zipEntry.getName()) + .size(zipEntry.getSize()) + .contentType(getContentType(zipEntry.getName())) + .file(file) + .build(); + } + + @Deprecated + public InputStream getSourceZipAsStream() { + try { + return new DeleteOnCloseInputStream(sourceZipFile); + } catch (FileNotFoundException e) { + throw new TechnicalException("Original ZIP was deleted", e); + } + } + + public File getSourceZip() { + return sourceZipFile; + } + + public long getSourceFileSize() { + try { + return Files.size(sourceZipFile.toPath()); + } catch (IOException e) { + throw new TechnicalException("Cannot get size of source ZIP.", e); + } + } + + String getContentType(String name) { + Objects.requireNonNull(name); + return Objects.requireNonNullElse(URLConnection.guessContentTypeFromName(name), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java similarity index 81% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java index 2b33205..814568b 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; -interface EngineBasedMapper { +public interface EngineBasedMapper { FormData parseFormData(FormData formData); -} \ No newline at end of file +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java similarity index 84% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedSemantikAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java index 9d68792..66d3539 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedSemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; public interface EngineBasedSemantikAdapter { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java new file mode 100644 index 0000000..0c246bb --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java @@ -0,0 +1,65 @@ +/* + * 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; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class FilesMapperHelper { + + public static final String REPRESENTATIONS = "parsedRepresentations"; + public static final String FIELD_NAME_MAPPED_FILES = "mappedFiles"; + public static final String ATTACHMENTS = "parsedAttachments"; + + public static Optional<Map<String, Object>> getMappedFiles(FormData formData) { + return Optional.ofNullable(formData).map(FormData::getFormData).map(map -> (Map<String, Object>) map.get(FIELD_NAME_MAPPED_FILES)); + } + + public static Optional<List<IncomingFileGroup>> getAttachedFileGroups(FormData formData) { + return getMappedFiles(formData).map(mappedFiles -> (List<IncomingFileGroup>) mappedFiles.get(ATTACHMENTS)); + } + + public static Optional<List<IncomingFile>> getRepresentations(FormData formData) { + return getMappedFiles(formData).map(mappedFiles -> (List<IncomingFile>) mappedFiles.get(REPRESENTATIONS)); + } + + public static int countAttachedFiles(Collection<IncomingFileGroup> fileGroups) { + return fileGroups.stream().filter(Objects::nonNull).mapToInt(group -> group.getFiles().size()).sum(); + } + + public static FormData removeProcessedData(FormData formData) { + return FormDataUtils.from(formData).remove(FIELD_NAME_MAPPED_FILES).build(); + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java new file mode 100644 index 0000000..d748976 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java @@ -0,0 +1,127 @@ +/* + * 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; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; + +@Component +public class ServiceKontoBuildHelper { + + public static final int POSTFACH_ADDRESS_DEFAULT = 1; + public static final String POSTFACH_TYPE_OSI = "OSI"; + public static final String POSTFACH_TYPE_BAYERN_ID = "BayernID"; + public static final String POSTFACH_VERSION = "1.0"; + + public static final String REST_RESPONSE_NAME = "rest_response_name"; + public static final String REST_RESPONSE_NAME_MEMBER_SCOPE = "memberscope"; + public static final String REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE = "mailboxtype"; + + public ServiceKonto buildOsiServiceKonto(String postfachId) { + return buildDefault(postfachId); + } + + public ServiceKonto buildOsiServiceKonto(String postfachId, FormData formData) { + return Optional.ofNullable(getRestResponseNames(formData)) + .filter(names -> !names.isEmpty()) + .map(restResponseNames -> buildWithRestResponseNames(postfachId, restResponseNames)) + .orElseGet(() -> buildDefault(postfachId)); + } + + ServiceKonto buildDefault(String postfachId) { + return ServiceKonto.builder().type(POSTFACH_TYPE_OSI).postfachAddress(buildPostfachAddress(postfachId)).build(); + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getRestResponseNames(FormData formData) { + return Optional.ofNullable(formData.getFormData().get(REST_RESPONSE_NAME)) + .filter(Objects::nonNull) + .map(List.class::cast) + .orElse(Collections.emptyList()); + } + + ServiceKonto buildWithRestResponseNames(String postfachId, List<Map<String, Object>> restResponseNames) { + return ServiceKonto.builder() + .type(POSTFACH_TYPE_OSI) + .postfachAddresses(buildPostfachAddresses(buildIdentifier(postfachId), restResponseNames)) + .build(); + } + + List<PostfachAddress> buildPostfachAddresses(PostfachAddressIdentifier identifier, List<Map<String, Object>> restResponseNames) { + return restResponseNames.stream().map(entry -> buildOsiPostfachV1Address(identifier, entry)).toList(); + } + + PostfachAddress buildOsiPostfachV1Address(PostfachAddressIdentifier identifier, Map<String, Object> restResponseName) { + return buildOsiPostfachV1Address(identifier, getPostfachAddressType(restResponseName)); + } + + PostfachAddress buildOsiPostfachV1Address(PostfachAddressIdentifier identifier, int postfachAddressType) { + return PostfachAddress.builder() + .type(postfachAddressType) + .version(POSTFACH_VERSION) + .identifier(identifier) + .build(); + } + + int getPostfachAddressType(Map<String, Object> restResponseName) { + return getMailboxType(restResponseName); + } + + private Integer getMailboxType(Map<String, Object> restResponseName) { + return (Integer) getMemberScope(restResponseName).get(REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE); + } + + @SuppressWarnings("unchecked") + private Map<String, Object> getMemberScope(Map<String, Object> restResponseName) { + return ((List<Map<String, Object>>) restResponseName.get(REST_RESPONSE_NAME_MEMBER_SCOPE)).get(0); + } + + public ServiceKonto buildBayernIdServiceKonto(String postfachId) { + return ServiceKonto.builder().type(POSTFACH_TYPE_BAYERN_ID).postfachAddress(buildPostfachAddress(postfachId)).build(); + } + + PostfachAddress buildPostfachAddress(String postkorbHandle) { + return PostfachAddress.builder() + .type(POSTFACH_ADDRESS_DEFAULT) + .version(POSTFACH_VERSION) + .identifier(buildIdentifier(postkorbHandle)) + .build(); + } + + private PostfachAddressIdentifier buildIdentifier(String postfachId) { + return StringBasedIdentifier.builder().postfachId(postfachId).build(); + } + +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java new file mode 100644 index 0000000..ad1faf5 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java @@ -0,0 +1,90 @@ +/* + * 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.afm; + +import static java.util.Objects.*; +import static org.apache.commons.lang3.StringUtils.*; + +import java.util.Collections; +import java.util.Map; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +public class AfmAntragstellerHeaderMapper { + + static final String KEY_POSTFACH_ID = "u:saml_legacypostkorbhandle"; + static final String KEY_VORNAME = "u:saml_givenname"; + static final String KEY_NACHNAME = "u:saml_surname"; + static final String KEY_GEBURTSORT = "u:saml_placeofbirth"; + public static final String KEY_GEBURTSNAME = "u:saml_birthname"; + static final String KEY_EMAIL = "u:saml_mail"; + static final String KEY_TELEFON = "u:saml_telephonenumber"; + static final String KEY_STRASSE = "u:saml_postaladdress"; + static final String KEY_PLZ = "u:saml_postalcode"; + static final String KEY_ORT = "u:saml_localityname"; + + public FormData parseAntragstellerData(FormData formData) { + return formData.toBuilder().antragsteller(buildAntragsteller(getHeaders(formData))).build(); + } + + Antragsteller buildAntragsteller(Map<String, Object> headers) { + return Antragsteller.builder() + .postfachId((String) headers.get(KEY_POSTFACH_ID)) + .vorname((String) headers.get(KEY_VORNAME)) + .nachname((String) headers.get(KEY_NACHNAME)) + .geburtsname((String) headers.get(KEY_GEBURTSNAME)) + .geburtsort((String) headers.get(KEY_GEBURTSORT)) + .email((String) headers.get(KEY_EMAIL)) + .telefon((String) headers.get(KEY_TELEFON)) + .strasse((String) headers.get(KEY_STRASSE)) + .plz((String) headers.get(KEY_PLZ)) + .ort((String) headers.get(KEY_ORT)) + .build(); + } + + public boolean isResponsible(FormData formData) { + var headers = getHeaders(formData); + return headers.containsKey(KEY_POSTFACH_ID) && isPostfachIdNotBlank(headers.get(KEY_POSTFACH_ID)); + } + + @SuppressWarnings("unchecked") + Map<String, Object> getHeaders(FormData formData) { + return (Map<String, Object>) formData.getFormData().getOrDefault(AfmHeaderMapper.HEADER_FIELD, Collections.emptyMap()); + } + + boolean isPostfachIdNotBlank(Object postfachId) { + if (isNull(postfachId)) { + return false; + } + if (postfachId instanceof String id) { + return isNotBlank(id); + } + throw new TechnicalException("Unexpected type of postfach id: " + postfachId.getClass().getName()); + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java similarity index 74% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java index 03a65a1..1a72ccf 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,18 +21,21 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static java.util.Objects.*; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; @Component class AfmAntragstellerMapper implements AfmEngineBasedMapper { @@ -40,7 +43,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { static final String POSTFACH_ID = "nameid"; static final String ANTRAGSTELLER = "antragsteller"; - + static final String ANTRAGSTELLER_UPPERCASE = "Antragsteller"; static final String ANREDE = "b_anrede"; static final String VORNAME = "pers_vorname"; static final String NACHNAME = "pers_nachname"; @@ -54,18 +57,24 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { static final String PLZ = "sh_plz"; static final String ORT = "ort"; + @Autowired + private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; + @Override public FormData parseFormData(FormData formData) { + if (antragstellerHeaderMapper.isResponsible(formData)) { + return antragstellerHeaderMapper.parseAntragstellerData(formData); + } var formDataMap = formData.getFormData(); var builder = Antragsteller.builder().postfachId(getPostfachId(formDataMap)); - var filledBuilder = getAntragstellerMap(formDataMap) + var antragsteller = getAntragstellerMap(formDataMap) .map(antragstellerMap -> addAntragstellerData(builder, antragstellerMap)) - .orElse(builder); + .orElse(builder) + .build(); var cleanedMap = removeMappedData(formDataMap); - var antragsterller = filledBuilder.build(); - return formData.toBuilder().antragsteller(antragsterller).formData(cleanedMap).build(); + return formData.toBuilder().antragsteller(antragsteller).formData(cleanedMap).build(); } private String getPostfachId(Map<String, Object> formDataMap) { @@ -74,7 +83,9 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { @SuppressWarnings("unchecked") private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) { - return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)).map(Map.class::cast).map(HashMap::new); + return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)) + .or(() -> Optional.ofNullable(formDataMap.get(ANTRAGSTELLER_UPPERCASE))) + .map(Map.class::cast).map(LinkedHashMap::new); } private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder, @@ -96,7 +107,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { } private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap) { - var map = new HashMap<>(antragstellerMap); + var map = new LinkedHashMap<>(antragstellerMap); getFields().forEach(map::remove); return map; } @@ -106,9 +117,12 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { } private Map<String, Object> removeMappedData(Map<String, Object> formDataMap) { - var editableMap = new HashMap<>(formDataMap); - editableMap.remove(ANTRAGSTELLER); - editableMap.remove(POSTFACH_ID); + var editableMap = new LinkedHashMap<>(formDataMap); + if (nonNull(editableMap.get(ANTRAGSTELLER))) { + editableMap.remove(ANTRAGSTELLER); + } else { + editableMap.remove(ANTRAGSTELLER_UPPERCASE); + } return Collections.unmodifiableMap(editableMap); } } \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapper.java new file mode 100644 index 0000000..0995f70 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapper.java @@ -0,0 +1,47 @@ +/* + * 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.afm; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; + +@Component +class AfmAttachedFilesMapper implements AfmEngineBasedMapper { + + @Override + public FormData parseFormData(FormData formData) { + var formDataBuilder = formData.toBuilder(); + FilesMapperHelper.getAttachedFileGroups(formData) + .ifPresent(fileGroups -> formDataBuilder + .attachments(fileGroups) + .numberOfAttachments(FilesMapperHelper.countAttachedFiles(fileGroups))); + FilesMapperHelper.getRepresentations(formData) + .ifPresent(representations -> formDataBuilder.representations(representations).numberOfRepresentations(representations.size())); + + return FilesMapperHelper.removeProcessedData(formDataBuilder.build()); + } + +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java similarity index 86% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java index b73bef0..9388342 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Component class AfmEmpfangeneStelleMapper implements AfmEngineBasedMapper { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java new file mode 100644 index 0000000..05aaa0a --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java @@ -0,0 +1,55 @@ +/* + * 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.afm; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; + +public class AfmEngineBasedAdapter implements EngineBasedSemantikAdapter { + + @Autowired + private List<AfmEngineBasedMapper> mappers; + + @Override + public FormData parseFormData(FormData formData) { + var processedFormData = formData; + + for (var mapper : mappers) { + processedFormData = mapper.parseFormData(processedFormData); + } + + return removeProcessedData(processedFormData); + } + + FormData removeProcessedData(FormData formData) { + return FormDataUtils.from(formData) + .remove(AfmAntragstellerMapper.POSTFACH_ID) + .build(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java similarity index 74% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java index 0abe931..f53df11 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,27 +21,28 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; interface AfmEngineBasedMapper extends EngineBasedMapper { - static final String KOP_CONTROLDATA_NODENAME = "_kopControlData"; - static final String CONTROLDATA_METADATA_PROPERTYNAME = "metaData"; + String KOP_CONTROLDATA_NODENAME = "_kopControlData"; + String CONTROLDATA_METADATA_PROPERTYNAME = "metaData"; default FormData addControlNode(FormData formData, String nodeName) { - var editableFormMap = new HashMap<>(formData.getFormData()); + var editableFormMap = new LinkedHashMap<>(formData.getFormData()); return Optional.ofNullable(getFormNode(formData, nodeName)) - .map(HashMap::new) + .map(LinkedHashMap::new) .map(empfStelleMap -> { - empfStelleMap.put(KOP_CONTROLDATA_NODENAME, this.buildControlDataMap()); + empfStelleMap.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap()); editableFormMap.put(nodeName, empfStelleMap); return editableFormMap; }) @@ -56,7 +57,7 @@ interface AfmEngineBasedMapper extends EngineBasedMapper { } default Map<String, Object> buildControlDataMap() { - var controlMap = new HashMap<String, Object>(); + Map<String, Object> controlMap = new LinkedHashMap<>(); controlMap.put(CONTROLDATA_METADATA_PROPERTYNAME, "true"); return controlMap; } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java similarity index 86% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java index 74554a4..21dae1b 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Component class AfmErklaerungenMapper implements AfmEngineBasedMapper { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java new file mode 100644 index 0000000..c15397b --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java @@ -0,0 +1,114 @@ +/* + * 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.afm; + +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Map; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; + +@Component +class AfmHeaderMapper implements AfmEngineBasedMapper { + + static final String AFM_FORMENGINE_NAME = "AFM"; + + static final String POSTFACH_NAME_ID = "nameid"; + + static final String HEADER_FIELD = "header"; + + static final String ID = "t:id"; + static final String TIMESTAMP = "t:timestamp"; + static final String FORM_ID = "t:form-id"; + static final String FORM = "t:form"; + static final String SENDER = "t:sender"; + + @Autowired + private ServiceKontoBuildHelper serviceKontoBuildHelper; + + @Override + public FormData parseFormData(FormData formData) { + var processed = formData.toBuilder().header(buildHeader(formData)).build(); + + return removeMappedData(processed); + } + + private FormHeader buildHeader(FormData formData) { + var headerDataMap = getHeaderMap(formData); + + var formHeaderBuilder = FormHeader.builder() + .requestId((String) headerDataMap.get(ID)) + .createdAt(getCreatedAt(headerDataMap)) + .formId((String) headerDataMap.get(FORM_ID)) + .formName((String) headerDataMap.get(FORM)) + .sender((String) headerDataMap.get(SENDER)) + .formEngineName(AFM_FORMENGINE_NAME) + .build(); + + createBayernIdServiceKonto(formData).or(() -> createOsiServiceKonto(formData)).ifPresent(formHeaderBuilder::setServiceKonto); + + return formHeaderBuilder; + } + + private ZonedDateTime getCreatedAt(Map<String, Object> headerDataMap) { + return ZonedDateTime.parse((String) headerDataMap.get(TIMESTAMP), DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + Optional<ServiceKonto> createBayernIdServiceKonto(FormData formData) { + var postfachId1 = getPostfachId(formData); + return postfachId1.map(postfachId -> serviceKontoBuildHelper.buildBayernIdServiceKonto(postfachId)); + } + + Optional<String> getPostfachId(FormData formData) { + return Optional.ofNullable(getHeaderMap(formData)).map(headers -> headers.get(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID)) + .map(String.class::cast); + } + + @SuppressWarnings("unchecked") + Map<String, Object> getHeaderMap(FormData formData) { + return (Map<String, Object>) formData.getFormData().get(HEADER_FIELD); + } + + Optional<ServiceKonto> createOsiServiceKonto(FormData formData) { + return getNameId(formData).map(nameId -> serviceKontoBuildHelper.buildOsiServiceKonto(nameId, formData)); + } + + private Optional<String> getNameId(FormData formData) { + return Optional.of(formData.getFormData()).map(formDataMap -> formDataMap.get(POSTFACH_NAME_ID)).map(String.class::cast); + } + + private FormData removeMappedData(FormData formData) { + return FormDataUtils.from(formData) + .remove(ServiceKontoBuildHelper.REST_RESPONSE_NAME) + .build(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java similarity index 68% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java index 5fb4e39..45fbe4d 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,30 +21,41 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Component class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { - static final String ZUSTAENDIGESTELLE = "zustaendigestelle"; + public static final String ZUSTAENDIGESTELLE = "zustaendigestelle"; - static final String EMAIL = "emailadresse"; - static final String ORGANISATIONSEINHEITEN_ID = "OrganisationseinheitenID"; - static final String TAG_BEZEICHNUNG = "OrganisationseinheitenBEZEICHNUNG"; + public static final String EMAIL = "emailadresse"; + public static final String ORGANISATIONSEINHEITEN_ID = "OrganisationseinheitenID"; + public static final String TAG_BEZEICHNUNG = "OrganisationseinheitenBEZEICHNUNG"; + + @Autowired + private ZustaendigeStelleMetadataMapper zustaendigeStelleMetadataMapper; @Override public FormData parseFormData(FormData formData) { + if (zustaendigeStelleMetadataMapper.isResponsible(formData)) { + return zustaendigeStelleMetadataMapper.parseZustaendigeStelleData(formData); + } + return parseZustaendigeStelleData(formData); + } + + FormData parseZustaendigeStelleData(FormData formData) { var zustaendigeStelleMap = getZustaendigeStelle(formData); var organisationseinheitenID = getOrganisationseinheitenId(formData); var builder = ZustaendigeStelle.builder(); @@ -64,15 +75,15 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { return formData.toBuilder().formData(addMetaDataFlag(formData)).zustaendigeStelle(zustaendigeStelle).build(); } - private String getOrganisationseinheitenId(FormData formData) { + String getOrganisationseinheitenId(FormData formData) { return (String) formData.getFormData().get(ORGANISATIONSEINHEITEN_ID); } Map<String, Object> addMetaDataFlag(FormData formData) { - var editableFormData = new HashMap<>(formData.getFormData()); + var editableFormData = new LinkedHashMap<>(formData.getFormData()); Optional.ofNullable(getZustaendigeStelle(formData)) - .map(HashMap::new) + .map(LinkedHashMap::new) .ifPresent(zustaendigeStelle -> { zustaendigeStelle.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap()); editableFormData.put(ZUSTAENDIGESTELLE, zustaendigeStelle); @@ -82,7 +93,7 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { } @SuppressWarnings("unchecked") - private Map<String, Object> getZustaendigeStelle(FormData formData) { + Map<String, Object> getZustaendigeStelle(FormData formData) { return (Map<String, Object>) formData.getFormData().get(ZUSTAENDIGESTELLE); } } \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java new file mode 100644 index 0000000..8df1da2 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java @@ -0,0 +1,44 @@ +/* + * 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.afm; + +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +@Component +public class XmlMapperSupplier { + + private final XmlMapper xmlMapper; + + public XmlMapperSupplier() { + xmlMapper = new XmlMapper(); + xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + public XmlMapper getMapper() { + return xmlMapper; + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java new file mode 100644 index 0000000..35a8446 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java @@ -0,0 +1,66 @@ +/* + * 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.afm; + +import java.util.List; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.Singular; + +@JacksonXmlRootElement(localName = "data") +@Builder +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class ZustaendigeStelleData { + + @JacksonXmlProperty(localName = "field") + @JacksonXmlElementWrapper(useWrapping = false) + @Singular + private List<Field> fields; + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class Field { + + @JacksonXmlProperty(isAttribute = true) + private String name; + + @JacksonXmlText + private String value; + + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java new file mode 100644 index 0000000..4321fbc --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java @@ -0,0 +1,109 @@ +/* + * 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.afm; + +import static java.util.Objects.*; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Component +public class ZustaendigeStelleMetadataMapper { + + static final String BEHOERDE_METADATA_FILE_NAME = "behoerde_metadata.xml"; + + private static final Predicate<IncomingFile> IS_BEHOERDE_METADATA = inFile -> StringUtils.endsWith(inFile.getName(), BEHOERDE_METADATA_FILE_NAME); + + static final String KEY_BEHOERDE_ANZEIGE_NAME = "behoerde_anzeige_name"; + static final String KEY_BEHOERDE_CALLER_ID = "behoerde_caller_id"; + static final String KEY_GEMEINDE_SCHLUESSEL_BP = "gemeinde_schluessel_bp"; + static final String KEY_BEHOERDE_EMAIL = "behoerde_email"; + static final String KEY_AMTLICHER_REGIONALSCHLUESSEL = "amtlicher_regionalschluessel"; + static final String KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE = "behoerde_hausanschrift_strasse"; + static final String KEY_BEHOERDE_HAUSANSCHRIFT_ORT = "behoerde_hausanschrift_ort"; + static final String KEY_BEHOERDE_HAUSANSCHRIFT_PLZ = "behoerde_hausanschrift_plz"; + static final String KEY_BEHOERDE_TELEFON = "behoerde_telefon"; + + @Autowired + private XmlMapperSupplier xmlMapperSupplier; + + public FormData parseZustaendigeStelleData(FormData formData) { + return formData.getRepresentations().stream().filter(IS_BEHOERDE_METADATA).findAny() + .map(this::readZustaendigeStelleMetadata) + .map(this::mapZustaendigeStelle) + .map(zustaendigeStelle -> formData.toBuilder().zustaendigeStelle(zustaendigeStelle).build()) + .orElse(formData); + } + + Map<String, String> readZustaendigeStelleMetadata(IncomingFile metadata) { + return readXmlContent(metadata).map(ZustaendigeStelleData::getFields).map(this::collectToMap).orElse(Collections.emptyMap()); + } + + Optional<ZustaendigeStelleData> readXmlContent(IncomingFile metadata) { + try { + return Optional.of(xmlMapperSupplier.getMapper().readValue(metadata.getContentStream(), ZustaendigeStelleData.class)); + } catch (IOException | TechnicalException e) { + LOG.error("Error parsing {}", BEHOERDE_METADATA_FILE_NAME, e); + } + return Optional.empty(); + } + + Map<String, String> collectToMap(List<ZustaendigeStelleData.Field> fields) { + return fields.stream().filter(field -> nonNull(field.getValue())) + .collect(Collectors.toMap(ZustaendigeStelleData.Field::getName, ZustaendigeStelleData.Field::getValue)); + } + + ZustaendigeStelle mapZustaendigeStelle(Map<String, String> zustaendigeStelleMetadata) { + return ZustaendigeStelle.builder() + .bezeichnung(zustaendigeStelleMetadata.get(KEY_BEHOERDE_ANZEIGE_NAME)) + .organisationseinheitenId(zustaendigeStelleMetadata.get(KEY_BEHOERDE_CALLER_ID)) + .gemeindeSchluessel(zustaendigeStelleMetadata.get(KEY_GEMEINDE_SCHLUESSEL_BP)) + .email(zustaendigeStelleMetadata.get(KEY_BEHOERDE_EMAIL)) + .amtlicherRegionalSchluessel(zustaendigeStelleMetadata.get(KEY_AMTLICHER_REGIONALSCHLUESSEL)) + .hausanschriftStrasse(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE)) + .hausanschriftOrt(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_ORT)) + .hausanschriftPlz(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_PLZ)) + .telefon(zustaendigeStelleMetadata.get(KEY_BEHOERDE_TELEFON)).build(); + } + + public boolean isResponsible(FormData formData) { + return formData.getRepresentations().stream().anyMatch(IS_BEHOERDE_METADATA); + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java new file mode 100644 index 0000000..5b7e0ef --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java @@ -0,0 +1,47 @@ +/* + * 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.formcycle; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; + +public class FormCycleEngineBasedAdapter implements EngineBasedSemantikAdapter { + + @Autowired + private List<FormcycleEngineBasedMapper> mappers; + + @Override + public FormData parseFormData(FormData formData) { + var processed = formData; + for (var mapper : mappers) { + processed = mapper.parseFormData(processed); + } + return processed; + } + +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java new file mode 100644 index 0000000..e204491 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java @@ -0,0 +1,85 @@ +/* + * 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.formcycle; + +import java.util.Map; +import java.util.Optional; + +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper { + + static final String KEY_ANTRAGSTELLER = "fsBKAllDaten"; + static final String KEY_ANREDE = "tfAntragstellerAnrede"; + static final String KEY_VORNAME = "tfAntragstellerVorname"; + static final String KEY_NACHNAME = "tfAntragstellerName"; + static final String KEY_GEBURTSNAME = "tfAntragstellerGeburtsname"; + static final String KEY_GEBURTSDATUM = "tfAntragstellerGeburtsdatum"; + static final String KEY_GEBURTSORT = "tfAntragstellerGeburtsort"; + static final String KEY_EMAIL = "tfAntragstellerEmail"; + static final String KEY_TELEFON = "tfAntragstellerTelefon"; + static final String KEY_ADDRESS = "tfAntragstellerAdresse"; + static final String KEY_PLZ = "tfAntragstellerPLZ"; + static final String KEY_ORT = "tfAntragstellerOrt"; + + @Override + public FormData parseFormData(final FormData formData) { + return getAntragstellerData(formData.getFormData()) + .map(this::buildAntragsteller) + .map(antragsteller -> formData.toBuilder().antragsteller(antragsteller).build()) + .orElse(formData); + } + + @SuppressWarnings("unchecked") + Optional<Map<String, Object>> getAntragstellerData(Map<String, Object> formDataMap) { + var antragstellerData = (Map<String, Object>) MapUtils.getMap(formDataMap, KEY_ANTRAGSTELLER); + return Optional.ofNullable(antragstellerData).map(map -> (Map<String, Object>) map.get("value")); + } + + Antragsteller buildAntragsteller(Map<String, Object> antragstellerData) { + return Antragsteller.builder() + .anrede(getValue(antragstellerData, KEY_ANREDE)) + .vorname(getValue(antragstellerData, KEY_VORNAME)) + .nachname(getValue(antragstellerData, KEY_NACHNAME)) + .geburtsname(getValue(antragstellerData, KEY_GEBURTSNAME)) + .geburtsdatum(getValue(antragstellerData, KEY_GEBURTSDATUM)) + .geburtsort(getValue(antragstellerData, KEY_GEBURTSORT)) + .email(getValue(antragstellerData, KEY_EMAIL)) + .telefon(getValue(antragstellerData, KEY_TELEFON)) + .strasse(getValue(antragstellerData, KEY_ADDRESS)) + .plz(getValue(antragstellerData, KEY_PLZ)) + .ort(getValue(antragstellerData, KEY_ORT)) + .build(); + } + + String getValue(Map<String, Object> formDataMap, String key) { + return Optional.ofNullable(MapUtils.getMap(formDataMap, key)).map(map -> map.get("value")).map(String::valueOf).orElse(StringUtils.EMPTY); + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java similarity index 77% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java index 9e069f7..b2104e5 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,11 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formcycle; -import org.springframework.stereotype.Component; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; -@Component -class AfmFilesMapper extends AbstractFileMapper implements AfmEngineBasedMapper { - -} \ No newline at end of file +interface FormcycleEngineBasedMapper extends EngineBasedMapper { +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java new file mode 100644 index 0000000..bbac113 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java @@ -0,0 +1,63 @@ +/* + * 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.formsolutions; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; + +@Component +class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper { + + public static final String ANTRAGSTELLER_PANEL_IDENTIFIER = "Antragstellende Person"; + + public static final String POSTKORBHANDLE = "postkorbhandle"; + + public static final String VORNAME_KEY = "AS_Vorname"; + public static final String NACHNAME_KEY = "AS_Name"; + + @Override + public FormData parseFormData(FormData formData) { + return FormDataUtils.from(formData) + .builder() + .antragsteller(buildAntragsteller(formData)) + .build(); + } + + protected Antragsteller buildAntragsteller(FormData formData) { + var antragstellerData = IdentifierValueParser.parsePanelsData(formData); + + return Antragsteller.builder() + .postfachId(getPostkorbhandle(formData)) + .vorname(antragstellerData.get(VORNAME_KEY)) + .nachname(antragstellerData.get(NACHNAME_KEY)) + .build(); + } + + private String getPostkorbhandle(FormData formData) { + return (String) formData.getFormData().get(POSTKORBHANDLE); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java similarity index 77% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java index 99e0b79..25e7d51 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,18 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter { - public static final String IDENTIFIER = "identifier"; + public static final String IDENTIFIER_KEY = "identifier"; public static final String ASSISTANT = "assistant"; public static final String ANLIEGEN_ID = "anliegenId"; @@ -52,11 +53,12 @@ public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapt return removeProcessedData(processedFormData); } - FormData removeProcessedData(FormData formData) { + protected FormData removeProcessedData(FormData formData) { return FormDataUtils.from(formData) .remove(ASSISTANT) .remove(ANLIEGEN_ID) .remove(KOMMUNALVERWALTUNG_ID) + .remove(FormSolutionsAntragstellerMapper.POSTKORBHANDLE) .build(); } } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java similarity index 83% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java index ad85945..2f070b8 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,8 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -interface FormSolutionsEngineBasedMapper extends EngineBasedMapper { +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; +interface FormSolutionsEngineBasedMapper extends EngineBasedMapper { } diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java new file mode 100644 index 0000000..3949797 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java @@ -0,0 +1,113 @@ +/* + * 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.formsolutions; + +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Stream; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@Component +@Log4j2 +class FormSolutionsFilesMapper implements FormSolutionsEngineBasedMapper { + + public static final String FILE_GROUP_ZIP_NAME = "gezippte Anhänge"; + public static final String EXTRAHIERTE_ATTACHMENTS = "Extrahierte Attachments"; + public static final String ZIP_CONTENT_TYPE = "application/zip"; + + @Override + public FormData parseFormData(FormData srcFormData) { + var formDataBuilder = srcFormData.toBuilder().clearAttachments(); + + var attachments = readAttachments(srcFormData); + if (attachments.isEmpty()) { + return formDataBuilder.build(); + } + return formDataBuilder.attachments(attachments).numberOfAttachments(FilesMapperHelper.countAttachedFiles(attachments)).build(); + } + + List<IncomingFileGroup> readAttachments(FormData srcFormData) { + return new ZippedAttachmentsProcessor(srcFormData.getAttachments()).process().toList(); + } + + @RequiredArgsConstructor + class ZippedAttachmentsProcessor { + + private final List<IncomingFileGroup> originalAttachmentsList; + private static final Predicate<IncomingFileGroup> ZIP_FILE_GROUP = fileGroup -> StringUtils.equals(FILE_GROUP_ZIP_NAME, fileGroup.getName()); + + public Stream<IncomingFileGroup> process() { + return Stream.concat(processZipGroups(), nonZipFileGroups()); + } + + private Stream<IncomingFileGroup> processZipGroups() { + var groupBuilder = IncomingFileGroup.builder().name("Anhänge"); + extractAttachments().forEach(groupBuilder::file); + var group = groupBuilder.build(); + + return group.getFiles().isEmpty() ? Stream.empty() : Stream.of(group); + } + + Stream<IncomingFileGroup> nonZipFileGroups() { + return originalAttachmentsList.stream().filter(ZIP_FILE_GROUP.negate()); + } + + Stream<IncomingFile> extractAttachments() { + return originalAttachmentsList.stream() + .filter(ZIP_FILE_GROUP) + .flatMap(fileGroup -> fileGroup.getFiles().stream()) + .flatMap(this::unzip); + } + + Stream<IncomingFile> unzip(IncomingFile zipFile) { + try { + return readFromZip(zipFile); + } catch (RuntimeException e) { + LOG.error("Cannot read source ZIP. Attach it as is.", e); + return Stream.of(zipFile); + } + } + + Stream<IncomingFile> readFromZip(IncomingFile zipFile) { + var reader = buildReader(zipFile); + var readContent = reader.readContent(); + reader.deleteSourceFile(); + return readContent.stream(); + } + + ZipAttachmentReader buildReader(IncomingFile zipFile) { + return ZipAttachmentReader.from(zipFile.getFile(), zipFile.getName()); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java similarity index 56% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java index 4e8a1b5..0d8e25c 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,25 +21,35 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; import java.util.Map; +import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; @Component -public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { +class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { + + static final int POSTFACH_ADDRESS_DEFAULT = 1; static final String TRANSACTION_ID = "transactionId"; static final String FORM_ENGINE_NAME = "FormSolutions"; + public static final String POSTKORBHANDLE = "postkorbhandle"; + + @Autowired + private ServiceKontoBuildHelper serviceKontoBuildHelper; + @Override public FormData parseFormData(FormData formData) { return FormDataUtils.from(formData) @@ -49,28 +59,31 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper .build(); } - FormHeader buildFormHeader(FormData formData) { - return FormHeader.builder() + protected FormHeader buildFormHeader(FormData formData) { + var formHeaderBuilder = FormHeader.builder() .formName(getIdentifier(formData)) .formId(getIdentifier(formData)) .requestId(getRequestId(formData)) - .formEngineName(FORM_ENGINE_NAME) - .build(); - } + .formEngineName(FORM_ENGINE_NAME); - private String getIdentifier(FormData formData) { - return (String) getAssistant(formData).get(IDENTIFIER); + Optional.ofNullable(getPostkorbhandle(formData)).map(serviceKontoBuildHelper::buildOsiServiceKonto).ifPresent(formHeaderBuilder::serviceKonto); + + return formHeaderBuilder.build(); } - private String getRequestId(FormData formData) { - return (String) formData.getFormData().get(TRANSACTION_ID); + private String getIdentifier(FormData formData) { + return (String) getAssistant(formData).get(IDENTIFIER_KEY); } private Map<String, Object> getAssistant(FormData formData) { return FormDataUtils.getSubMap(formData, ASSISTANT); } - Map<String, Object> removeProcessedData(FormData processedData) { - return FormDataUtils.from(processedData).remove(TRANSACTION_ID).build().getFormData(); + private String getRequestId(FormData formData) { + return (String) formData.getFormData().get(TRANSACTION_ID); + } + + private String getPostkorbhandle(FormData formData) { + return (String) formData.getFormData().get(POSTKORBHANDLE); } -} +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java new file mode 100644 index 0000000..ea2ad30 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java @@ -0,0 +1,94 @@ +/* + * 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.formsolutions; + +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static java.util.Objects.*; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +class FormSolutionsPanelMapper implements FormSolutionsEngineBasedMapper { + public static final String COMPONENTS = "components"; + public static final String STRING_VALUE = "stringValue"; + public static final String PANELS = "panels"; + + @Override + public FormData parseFormData(FormData formData) { + var resultMap = mapPanels(getPanels(formData)).orElseGet(HashMap::new); + resultMap.putAll(formData.getFormData()); + + return formData.toBuilder().formData(resultMap).build(); + } + + private Optional<Map<String, Object>> mapPanels(List<Map<String, Object>> panels) { + if (panels.isEmpty()) { + return Optional.empty(); + } + var resultMap = new LinkedHashMap<String, Object>(); + for (Map<String, Object> panel : panels) { + var identifier = (String) panel.get(IDENTIFIER_KEY); + if (isNull(identifier)) { + continue; + } + getValue(panel).ifPresent(value -> resultMap.put(identifier, value)); + } + + return Optional.of(resultMap); + } + + private Optional<Object> getValue(Map<String, Object> panel) { + return mapPanels(getComponentList(panel)) + .map(Object.class::cast) + .or(() -> Optional.ofNullable(panel.get(STRING_VALUE))); + } + + @SuppressWarnings("unchecked") + public static List<Map<String, Object>> getPanels(FormData formData) { + if (isNull(formData)) { + return List.of(); + } + return Optional.ofNullable(formData.getFormData()) + .map(formDataMap -> (Map<String, Object>) formDataMap.get(ASSISTANT)) + .map(assistent -> (List<Map<String, Object>>) assistent.get(PANELS)) + .orElse(List.of()); + } + + @SuppressWarnings("unchecked") + public static List<Map<String, Object>> getComponentList(Map<String, Object> panel) { + if (isNull(panel)) { + return List.of(); + } + return Optional.ofNullable(panel.get(COMPONENTS)).map(c -> (List<Map<String, Object>>) c).orElse(List.of()); + } + +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java similarity index 74% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java index 04e113b..d351f77 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,19 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Component -public class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngineBasedMapper { +class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngineBasedMapper { public static final String ZUSTAENDIGE_STELLE = "zustaendigeStelle"; @@ -45,7 +45,7 @@ public class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngine .build(); } - ZustaendigeStelle buildZustaendigeStelle(FormData formData) { + protected ZustaendigeStelle buildZustaendigeStelle(FormData formData) { return ZustaendigeStelle.builder() .organisationseinheitenId(getZustaenigeStelle(formData)) .build(); @@ -55,8 +55,8 @@ public class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngine return (String) formData.getFormData().get(ZUSTAENDIGE_STELLE); } - Map<String, Object> removeProcessedData(FormData formData) { - var cleanedData = new HashMap<String, Object>(formData.getFormData()); + protected Map<String, Object> removeProcessedData(FormData formData) { + var cleanedData = new LinkedHashMap<>(formData.getFormData()); cleanedData.remove(ZUSTAENDIGE_STELLE); return Collections.unmodifiableMap(cleanedData); diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java new file mode 100644 index 0000000..72b53a9 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java @@ -0,0 +1,64 @@ +/* + * 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.formsolutions; + +import static java.util.Objects.*; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import de.ozgcloud.eingang.common.formdata.FormData; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +class IdentifierValueParser { + + static Map<String, String> parsePanelsData(FormData formData) { + return new IdentifierValueParser().parsePanels(formData); + } + + private final Map<String, String> resultMap = new LinkedHashMap<>(); + + Map<String, String> parsePanels(FormData formData) { + parse(FormSolutionsPanelMapper.getPanels(formData)); + return Collections.unmodifiableMap(resultMap); + } + + private void parse(List<Map<String, Object>> panels) { + if (isNull(panels)) { + return; + } + for (Map<String, Object> panel : panels) { + parse(FormSolutionsPanelMapper.getComponentList(panel)); + var identifier = (String) panel.get(FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY); + var value = (String) panel.get(FormSolutionsPanelMapper.STRING_VALUE); + if (nonNull(identifier) && nonNull(value)) { + resultMap.put(identifier, value); + } + } + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedAdapter.java similarity index 67% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedAdapter.java index f34380e..3d892ad 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,28 +21,29 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.xta; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -public class AfmEngineBasedAdapter implements EngineBasedSemantikAdapter { +public class XtaEngineBasedAdapter implements EngineBasedSemantikAdapter { @Autowired - private List<AfmEngineBasedMapper> mappers; + private List<XtaEngineBasedMapper> mappers; @Override public FormData parseFormData(FormData formData) { - var processedFormData = formData; + var processed = formData; - for (int i = 0; i < mappers.size(); i++) { - var mapper = mappers.get(i); - var processed = mapper.parseFormData(processedFormData); - processedFormData = processed; + for (var mapper : mappers) { + processed = mapper.parseFormData(processed); } - return processedFormData; + + return processed; } -} \ No newline at end of file + +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedMapper.java new file mode 100644 index 0000000..62afb38 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedMapper.java @@ -0,0 +1,30 @@ +/* + * 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.xta; + +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; + +public interface XtaEngineBasedMapper extends EngineBasedMapper { + +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapper.java new file mode 100644 index 0000000..b964dae --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapper.java @@ -0,0 +1,68 @@ +/* + * 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.xta; + +import java.util.Collections; +import java.util.List; +import java.util.function.Predicate; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import lombok.extern.log4j.Log4j2; + +@Component +@Log4j2 +public class XtaZipRepresentationsMapper implements XtaEngineBasedMapper { + + public static final String ZIP_CONTENT_TYPE = "application/zip"; + + static final Predicate<IncomingFile> IS_ZIP_FILE = contentType -> ZIP_CONTENT_TYPE.equals(contentType.getContentType()); + + @Override + public FormData parseFormData(FormData srcFormData) { + + List<IncomingFile> extractedFiles = srcFormData.getRepresentations().stream() + .filter(IS_ZIP_FILE) + .map(this::extractZip) + .flatMap(List::stream) + .toList(); + + return srcFormData + .toBuilder() + .representations(extractedFiles) + .numberOfRepresentations(srcFormData.getNumberOfRepresentations() + extractedFiles.size()).build(); + } + + List<IncomingFile> extractZip(IncomingFile zipFile) { + try { + return ZipAttachmentReader.from(zipFile.getContentStream(), zipFile.getName()).readContent(); + } catch (RuntimeException e) { + LOG.error("Cannot read source ZIP. Not extracting file", e); + return Collections.emptyList(); + } + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/AnliegenId.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java similarity index 86% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/AnliegenId.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java index 1c08c07..246f81b 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/AnliegenId.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; -import de.itvsh.kop.common.datatype.StringBasedValue; +import de.ozgcloud.common.datatype.StringBasedValue; class AnliegenId extends StringBasedValue { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapper.java new file mode 100644 index 0000000..1e768b9 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapper.java @@ -0,0 +1,145 @@ +/* + * 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.formbased; + +import java.io.IOException; +import java.io.InputStream; +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 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.IncomingFile; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import lombok.NonNull; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Component +public class DFoerdermittelFormBasedMapper implements FormBasedMapper { + + 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"; + + @Autowired + private ServiceKontoBuildHelper serviceKontoHelper; + + @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) { + @SuppressWarnings("unchecked") + Map<String, Object> fachnachricht = (Map<String, Object>) MapUtils.getMap(formData.getFormData(), KEY_FACHNACHRICHT, + Collections.<String, Object>emptyMap()); + + var extendedFormData = addServiceKonto(formData, fachnachricht); + return addOrganisationsEinheitId(extendedFormData, fachnachricht); + } + + FormData addServiceKonto(FormData formData, Map<String, Object> fachnachricht) { + return Optional.ofNullable((String) fachnachricht.get(KEY_POSTFACH_ID)) + .map(this::extractPrefix) + .map(this::createServiceKonto) + .map(serviceKonto -> formData.getHeader().toBuilder().serviceKonto(serviceKonto).build()) + .map(header -> formData.toBuilder().header(header).build()) + .orElse(formData); + } + + FormData addOrganisationsEinheitId(FormData formData, Map<String, Object> fachnachricht) { + return Optional.ofNullable((String) fachnachricht.get(KEY_ORGANISATIONS_EINHEIT_ID)) + .map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelle())) + .map(zustStelle -> formData.toBuilder().zustaendigeStelle(zustStelle).build()) + .orElse(formData); + } + + private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, ZustaendigeStelle zustaendigeStelle) { + ZustaendigeStelle.ZustaendigeStelleBuilder zustaendigeStelleBuilder; + if (Objects.isNull(zustaendigeStelle)) { + zustaendigeStelleBuilder = ZustaendigeStelle.builder(); + } else { + zustaendigeStelleBuilder = zustaendigeStelle.toBuilder(); + } + + return zustaendigeStelleBuilder.organisationseinheitenId(orgaId).build(); + } + + String extractPrefix(@NonNull String postfachId) { + return postfachId.substring(postfachId.lastIndexOf("/") + 1); + } + + private ServiceKonto createServiceKonto(String postfachId) { + return serviceKontoHelper.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/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java similarity index 79% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java index aa12db8..450fee1 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,15 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; -import java.util.List; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; interface FormBasedMapper { FormData parseFormData(FormData formData); - List<AnliegenId> getResponsibleAnliegenIds(); + boolean isResponsible(FormData formData); } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java similarity index 52% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java index f841248..304d334 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,48 +21,43 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; +import java.util.Collections; import java.util.List; -import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Service public class FormBasedSemantikAdapter { @Autowired(required = false) - private List<FormBasedMapper> mappers; + private List<FormBasedMapper> mappers = Collections.emptyList(); public FormData parseFormData(FormData formData) { - var formDataAnliegenId = getAnliegenId(formData); - var processedFormData = formData; + return new FormDataProcessor().process(formData); + } + + class FormDataProcessor { + private FormData processedFormData; + + FormData process(FormData originalFormData) { + processedFormData = originalFormData; + mappers.stream() + .filter(mapper -> mapper.isResponsible(processedFormData)) + .forEach(this::parseWithMapper); - // TODO OZG-1929 Muss gekläert werden, wie damit umgegangen wird - if (Objects.isNull(mappers)) { - return formData; + return processedFormData; } - for (int i = 0; i < mappers.size(); i++) { - var mapper = mappers.get(i); - if (isResponsible(mapper, formDataAnliegenId)) { - var processed = mapper.parseFormData(processedFormData); - processedFormData = processed; - } + private void parseWithMapper(FormBasedMapper mapper) { + processedFormData = mapper.parseFormData(processedFormData); } - return processedFormData; - } - AnliegenId getAnliegenId(FormData formData) { - return null;// TODO AnliegenId aus FormData holen } - private boolean isResponsible(FormBasedMapper mapper, AnliegenId anliegenId) { - // TODO isNull rausnehmen, sobald die AnliegenIds definiert sind - return Objects.isNull(anliegenId) || mapper.getResponsibleAnliegenIds().contains(anliegenId); - } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapperTest.java deleted file mode 100644 index 1c0c01e..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapperTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static org.assertj.core.api.Assertions.*; - -import java.util.HashMap; -import java.util.UUID; - -import org.assertj.core.data.MapEntry; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class AfmAntragstellerMapperTest { - - private AfmAntragstellerMapper mapper = new AfmAntragstellerMapper(); - - @Nested - class TestParseFormData { - - @Test - void shouldDoNothingOnNullAntragstaller() { - var formData = FormData.builder().formData(new HashMap<>()).build(); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData).usingRecursiveComparison().ignoringFields(AfmAntragstellerMapper.ANTRAGSTELLER).isEqualTo(formData); - } - - private FormData formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap()).build(); - - @Test - void shouldMapAntragsteller() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") - .isEqualTo(AfmAntragstellerTestFactory.create()); - } - - @Test - void shouldMapPostfachId() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getPostfachId()).isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); - } - - @Nested - class TestMapAntragstellerData { - - @Nested - class TestWithMappedAndNotMappedValue { - - private static final String NOT_MAPPED_FIELD = "not_mapped_value"; - private static final String NOT_MAPPED_VALUE = UUID.randomUUID().toString(); - - private FormData formData; - - @BeforeEach - void buildFormData() { - var antragstellerMap = AfmAntragstellerTestFactory.createAntragstelleMap(MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE)); - - var formDataMap = new HashMap<String, Object>(); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap); - - formData = FormData.builder().formData(formDataMap).build(); - } - - @Test - void shouldNotContainDuplicateValues() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getData()).doesNotContainKeys( - AfmAntragstellerMapper.ANREDE, - AfmAntragstellerMapper.EMAIL, - AfmAntragstellerMapper.GEBURTSDATUM, - AfmAntragstellerMapper.GEBURTSNAME, - AfmAntragstellerMapper.GEBURTSORT, - AfmAntragstellerMapper.NACHNAME, - AfmAntragstellerMapper.VORNAME, - AfmAntragstellerMapper.TELEFON, - AfmAntragstellerMapper.STRASSE, - AfmAntragstellerMapper.HAUSNUMMER, - AfmAntragstellerMapper.ORT, - AfmAntragstellerMapper.PLZ); - } - - @Test - void shouldMoveNotMappedFieldsToDataMap() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getData()).containsEntry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE); - } - } - } - - @Nested - class TestRemoveFields { - - @Test - void shouldRemoveAntragsteller() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER)).isNull(); - } - } - } - - private FormData parseFormData(FormData formData) { - return mapper.parseFormData(formData); - } -} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapperTest.java deleted file mode 100644 index 6ffcfe1..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapperTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class AfmHeaderMapperTest { - - private AfmHeaderMapper mapper = new AfmHeaderMapper(); - - @Nested - class TestParseFormData { - - private FormData formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); - - @Nested - class TestMapFormHeader { - - @Test - void shouldMapRequestId() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getRequestId()).isEqualTo(AfmHeaderTestFactory.ID); - } - - @Test - void shouldMapCreatedAt() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getCreatedAt()).isEqualTo(AfmHeaderTestFactory.TIMESTAMP); - } - - @Test - void shouldMapFormId() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormId()).isEqualTo(AfmHeaderTestFactory.FORM_ID); - } - - @Test - void shouldMapFormName() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormName()).isEqualTo(AfmHeaderTestFactory.FORM); - } - - @Test - void shouldMapSender() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getSender()).isEqualTo(AfmHeaderTestFactory.SENDER); - } - - @Test - void shouldSetFormEngineName() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormEngineName()).isEqualTo(AfmHeaderMapper.AFM_FORMENGINE_NAME); - } - } - - @Test - void shouldRemoveHeader() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getFormData().get(AfmHeaderMapper.HEADER_FIELD)).isNull(); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderTestFactory.java deleted file mode 100644 index 9b14fcc..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderTestFactory.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -public class AfmHeaderTestFactory { - - public static final String ID = UUID.randomUUID().toString(); - public static final String TIMESTAMP = "2020-11-18T09:09:27.627Z"; - public static final String FORM_ID = "waffen/kleinerWaffenschein"; - public static final String FORM = "Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)"; - public static final String SENDER = "afm.schleswig-holstein.de"; - - public static Map<String, Object> createFormDataMap() { - var map = new HashMap<String, Object>(); - map.put(AfmHeaderMapper.HEADER_FIELD, createHeaderMap()); - - return map; - } - - public static Map<String, Object> createHeaderMap() { - var map = new HashMap<String, Object>(); - map.put(AfmHeaderMapper.ID, ID); - map.put(AfmHeaderMapper.TIMESTAMP, TIMESTAMP); - map.put(AfmHeaderMapper.FORM_ID, FORM_ID); - map.put(AfmHeaderMapper.FORM, FORM); - map.put(AfmHeaderMapper.SENDER, SENDER); - return map; - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java deleted file mode 100644 index a0381a0..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; - -import java.util.Base64; -import java.util.List; -import java.util.Map; - -import org.springframework.http.MediaType; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; - -//TODO TestFactory aufraeumen/entfernen -public class AttachmentsTestFactory { - - public static final String ZIP_ENCODED = "UEsDBBQACAAIAFpbf1QAAAAAAAAAAJ0AAAAHACAAMTU2LnR4dFVUDQAH3XNFYt1zRWL0c0VidXgLAAEEYmxgCwQBAmALTc3BCcNADETRu6uYAkwqSROKJYxgJa13JYO7z0IuuQ7D++8YYtA+y8DRYmBqgkxyxxE+JSVrjcTrc6ifkKY5dkxhsJLBw8seiA4LRor1hajfyuWJSjT6rAgkfwGB0ekEanrVswAZlH/eHa16Fr227QtQSwcIvuRni3EAAACdAAAAUEsDBBQACAAIAHtaS1QAAAAAAAAAABjkAwAIACAAMjU1ay50eHRVVA0AB0s4BmKlxUJiSzgGYnV4CwABBGJsYAsEAQJgC+3YTXLb6BVG4blWgQW4vIeuZNiVSSoLgElYRpo/MgE4aa8+HygpdrqSVHqQ0uvvPhNbtigCODjE1bk/X2/TeZiflu08HK+n621Y5nUYz9P6bjhcL8u0TuvW/nM8ttcc5svjMJ3m9fZuWKbjcJzH83C5Xrbzr8M0387X47BO56f2JvPly3zcLuuwrcNp/NAOMkzr8wGm4Tw+XsZhPM2ft1/bG0y3cf3u/b5cT9vTuo3vh5/W4ct0uw7Tddl/ejwctmV//Tr8dVvW63Dcri9vef/+NA636cN2fj/8uZ30cGjnOQ6/jMtxeNw+TLfH23R51862HWkc1vGX+Ty27y/j5bBu7eeXdfj5P7J4/1++hxNOv5/Tw8Mft3kZxq1dYDur0zC1F823eWvX8/za+TJ8mi7H23RrP9T+8WU7PW3ruE77y9t/TcvSLv16akeap2e2n7f9yvd3m0+n14M2Utvwcdoe53EdLtvpNA4fx8N8mpf9+K9Ibt+YnNs17F/PdyjX49yozI+XeVnm8/B5m4cPp/FybGfwdBunZWo3ZQc8ru2AX7/e5tNwnE7TZb/S7XFrV7Nf58uZtJPfz2Scf3sm/4M4h92c6Tbs5szf1PmtOU2dy/zhU7voebkLNF8O36nTjvJvxXnx5m7L+jTe79Bf1uFv7dyGdjHndtjhPO9ffGn/HM/vdhJLO+Sy3rbjMP19uh3mpsE6Xy/Dfmnnw/X21E532dq5PrVLOV2btuv+M/Ny2k/mftz5qf3srtrhem6ne/12I98PDPkXQx4e/tTu0mlun73Xx0I7lWHZ79jY7sSH9i7tfeePjclwfbrfiXbR+xEu86d21Pncbshxvt//8+7PfGxn2xw5j1/biT+dxsPdgY/738PT9X4547Lsj4A4Pd9azowH2H4eSY914+//zOmnbyf+zyu+X+fzH89EXq9iv6IXkPeLvpNp1/LCeGf0Ani/3vUb5mcgL6S/u/x2qe3r767/zuP5BjQUL7xeIexk7sd4pbO93IFv9+QH8Wn/mP2Bvmm3BacfgxMQhMFJZgdEVFzHyOwwQ2S2zJbZfYw/mS2zK+qLU0VOQBAGJ5kdEFFxHSOzwwyR2TJbZvcx/mS2zK6oL04VOQFBGJxkdkBExXWMzA4zRGbLbJndx/iT2TK7or44VeQEBGFwktkBERXXMTI7zBCZLbNldh/jT2bL7Ir64lSRExCEwUlmB0RUXMfI7DBDZLbMltl9jD+ZLbMr6otTRU5AEAYnmR0QUXEdI7PDDJHZMltm9zH+ZLbMrqgvThU5AUEYnGR2QETFdYzMDjNEZstsmd3H+JPZMruivjhV5AQEYXCS2QERFdcxMjvMEJkts2V2H+NPZsvsivriVJETEITBSWYHRFRcx8jsMENktsyW2X2MP5ktsyvqi1NFTkAQBieZHRBRcR0js8MMkdkyW2b3Mf5ktsyuqC9OFTkBQRicZHZARMV1jMwOM0Rmy2yZ3cf4k9kyu6K+OFXkBARhcJLZAREV1zEyO8wQmS2zZXYf409my+yK+uJUkRMQhMFJZgdEVFzHyOwwQ2S2zJbZfYw/mS2zK+qLU0VOQBAGJ5kdEFFxHSOzwwyR2TJbZvcx/mS2zK6oL04VOQFBGJxkdkBExXWMzA4zRGbLbJndx/iT2TK7or44VeQEBGFwktkBERXXMTI7zBCZLbNldh/jT2bL7Ir64lSRExCEwUlmB0RUXMfI7DBDZLbMltl9jD+ZLbMr6otTRU5AEAYnmR0QUXEdI7PDDJHZMltm9zH+ZLbMrqgvThU5AUEYnGR2QETFdYzMDjNEZstsmd3H+JPZMruivjhV5AQEYXCS2QERFdcxMjvMEJkts2V2H+NPZsvsivriVJETEITBSWYHRFRcx8jsMENktsyW2X2MP5ktsyvqi1NFTkAQBieZHRBRcR0js8MMkdkyW2b3Mf5ktsyuqC9OFTkBQRicZHZARMV1jMwOM0Rmy2yZ3cf4k9kyu6K+OFXkBARhcJLZAREV1zEyO8wQmS2zZXYf409my+yK+uJUkRMQhMFJZgdEVFzHvE1mPzz4BHnS4OSJ7Imc8US2+LT4tPi0+Ox8/Fl8WnxW1BenipyAIAxOMjsgouI6RmaHGSKzZbbM7mP8yWyZXVFfnCpyAoIwOMnsgIiK6xiZHWaIzJbZMruP8SezZXZFfXGqyAkIwuAkswMiKq5jZHaYITJbZsvsPsafzJbZFfXFqSInIAiDk8wOiKi4jpHZYYbIbJkts/sYfzJbZlfUF6eKnIAgDE4yOyCi4jpGZocZIrNltszuY/zJbJldUV+cKnICgjA4yeyAiIrrGJkdZojMltkyu4/xJ7NldkV9carICQjC4CSzAyIqrmNkdpghMltmy+w+xp/MltkV9cWpIicgCIOTzA6IqLiOkdlhhshsmS2z+xh/MltmV9QXp4qcgCAMTjI7IKLiOkZmhxkis2W2zO5j/MlsmV1RX5wqcgKCMDjJ7ICIiusYmR1miMyW2TK7j/Ens2V2RX1xqsgJCMLgJLMDIiquY2R2mCEyW2bL7D7Gn8yW2RX1xakiJyAIg5PMDoiouI6R2WGGyGyZLbP7GH8yW2ZX1BenipyAIAxOMjsgouI6RmaHGSKzZbbM7mP8yWyZXVFfnCpyAoIwOMnsgIiK6xiZHWaIzJbZMruP8SezZXZFfXGqyAkIwuAkswMiKq5jZHaYITJbZsvsPsafzJbZFfXFqSInIAiDk8wOiKi4jpHZYYbIbJkts/sYfzJbZlfUF6eKnIAgDE4yOyCi4jpGZocZIrNltszuY/zJbJldUV+cKnICgjA4yeyAiIrrGJkdZojMltkyu4/xJ7NldkV9carICQjC4CSzAyIqrmNkdpghMltmy+w+xp/MltkV9cWpIicgCIOTzA6IqLiOkdlhhshsmS2z+xh/MltmV9QXp4qcgCAMTjI7IKLiOkZmhxkis2W2zO5j/MlsmV1RX5wqcgKCMDjJ7ICIiusYmR1miMyW2TK7j/Ens2V2RX1xqsgJCMLgJLMDIiquY2R2mCEyW2bL7D7Gn8yW2RX1xakiJyAIg5PMDoiouI6R2WGGyGyZLbP7GH8yW2ZX1BenipyAIAxOMjsgouI65m0y++HBB8iDBicPZA/kiAeyvae9p72nvWfn48/e096zor44VeQEBGFwktkBERXXMTI7zBArYc9gnMyqt38SmVVmlZWwlbCVcIXxZyVsJVxRX5wqcgKCMDjJ7ICIiusYmR1miJWwZzBOZtXbP4nMKrPKSthK2Eq4wvizErYSrqgvThU5AUEYnGR2QETFdYzMDjPEStgzGCez6u2fRGaVWWUlbCVsJVxh/FkJWwlX1BenipyAIAxOMjsgouI6RmaHGWIl7BmMk1n19k8is8qsshK2ErYSrjD+rISthCvqi1NFTkAQBieZHRBRcR0js8MMcUPiboiHvaGIk18e3vpJ5JcHs8qO3o7ejr7C+LOjt6OvqC9OFTkBQRicZHZARMV1jMwOM8RK2DMYJ7Pq7Z9EZpVZZSVsJWwlXGH8WQlbCVfUF6eKnIAgDE4yOyCi4jpGZocZ8uAz4zPjM2M1ZTVlNVXwV0arKaupivriVJETEITByWoqIKLiOkZmhxliNeUz4zNjNWU1ZTVV8VdGqymrqYr64lSRExCEwclqKiCi4jpGZocZYjXlM+MzYzVlNWU1VfFXRqspq6mK+uJUkRMQhMHJaiogouI6RmaHGfLw8Lte7sXfvRi7H4/dwz8AUEsHCDxV0Qf9CgAAGOQDAFBLAQIUAxQACAAIAFpbf1S+5GeLcQAAAJ0AAAAHACAAAAAAAAAAAACkgQAAAAAxNTYudHh0VVQNAAfdc0Vi3XNFYvRzRWJ1eAsAAQRibGALBAECYAtQSwECFAMUAAgACAB7WktUPFXRB/0KAAAY5AMACAAgAAAAAAAAAAAApIHGAAAAMjU1ay50eHRVVA0AB0s4BmKlxUJiSzgGYnV4CwABBGJsYAsEAQJgC1BLBQYAAAAAAgACAKsAAAAZDAAAAAA="; - public static final byte[] ZIP_DECODED = Base64.getDecoder().decode(ZIP_ENCODED.getBytes()); -//TODO es bringt für den Tests nichts, den gleichen decoder zu verwenden wie im richtigen Code - umstellen auf vorkodierte Datei - private static final String ZIP_ENCRYPTED_ENCODED = "UEsDBBQACQAIAGxbgVR2JDbWfAAAAJwAAAAJABwAc21hbGwudHh0VVQJAAN8xUZifMVGYnV4CwABBGJsYAsEAQJgC+UGqCf9nYnWPRIWHX3BIKiUYURrZACUULUIS//p8/GxbgqhmNJc9vvwM63ICih6zF75gd6jvEUvHKXrvjC5fz636xmuFoCmNjdFb0qs02H4llZkM7C5IF9raesJjK+Q6u/O7sAnIc2Qa677puRTGsHfxq7FYovFFy6xWSVQSwcIdiQ21nwAAACcAAAAUEsBAh4DFAAJAAgAbFuBVHYkNtZ8AAAAnAAAAAkAGAAAAAAAAQAAAKSBAAAAAHNtYWxsLnR4dFVUBQADfMVGYnV4CwABBGJsYAsEAQJgC1BLBQYAAAAAAQABAE8AAADPAAAAAAA="; - public static final byte[] ZIP_ENCRYPTED_DECODED = Base64.getDecoder().decode(ZIP_ENCRYPTED_ENCODED.getBytes()); - - private static final String PDF_ENCODED = "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ZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yoc3VzYW5uZS5maXNjaGVyQGRhdGFwb3J0LmRlKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9UeXBlL0Fubm90L1YoaGVsbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDQ0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNzIgMCBvYmoKPDwvQlM8PC9T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NjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg=="; - private static final byte[] PDF_DECODED = Base64.getDecoder().decode(PDF_ENCODED.getBytes()); -//TODO aus Datei laden - private static final String XML_CONTENT = """ - <?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:id="20201118365670866101\" t:timestamp=\"2020-11-18T09:09:27.627Z" - t:sender="afm.schleswig-holstein.de" - t:form="Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)" - t:form-id="waffen/kleinerWaffenschein" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" - t:client-id="land"></myForm>"""; - private static final byte[] XML_BYTES = XML_CONTENT.getBytes(); - - public static final String FILE_GROUP_ZIP_NAME = "gezippte Anhänge"; - private static final String FILE_GROUP_PDF_NAME = "PDF Anhang"; - - public static final String ZIP = "zip"; - public static final String FILE_NAME_ZIP_ATTACHMENT = "attachments.zip"; - public static final String ZIP_CONTENT_TYPE = "application/zip"; - public static final String ZIP_FILE_0_CONTENT = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n\n"; - public static final String FILE_NAME_ZIP_CONTENT_0 = "156.txt"; - - public static final String JSON = "json"; - public static final String FILE_NAME_JSON_REP = "form-data.json"; - public static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON_VALUE; - - public static final String PDF = "pdf"; - public static final String FILE_NAME_PDF_REP = "eingang.pdf"; - public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE; - - public static final String XML = "xml"; - public static final String FILE_NAME_XML_REP = "XML-Daten-1.xml"; - public static final String XML_CONTENT_TYPE = MediaType.APPLICATION_XML_VALUE; - - public static final String TXT_CONTENT_TYPE = "text/plain"; - - private static final List<IncomingFileGroup> AFM_ATTACHMMENTS = createAttachments(List.of( - createFile(FILE_NAME_PDF_REP, PDF_DECODED, PDF_CONTENT_TYPE)), FILE_GROUP_PDF_NAME); - - public static final List<IncomingFile> FORMSOLUTIONS_REPRESENTATIONS = List.of( - createFile(FILE_NAME_PDF_REP, PDF_DECODED, PDF_CONTENT_TYPE), - createFile(FILE_NAME_JSON_REP, SIMPLE_JSON_DATA.getBytes(), JSON_CONTENT_TYPE)); - - private static final List<IncomingFile> AFM_REPRESENTATIONS = List.of( - createFile(FILE_NAME_XML_REP, XML_BYTES, XML_CONTENT_TYPE)); - - public static final Map<String, List<IncomingFileGroup>> FORMDATA_WITH_FORMSOLUTIONS_ATTACHMMENTS_ENCRYPTED = Map.of(ATTACHMENTS, - createAttachments(List.of( - createFile(FILE_NAME_ZIP_ATTACHMENT, ZIP_ENCRYPTED_DECODED, ZIP_CONTENT_TYPE)), FILE_GROUP_ZIP_NAME)); - - public static final Map<String, Object> FORMDATA_WITH_AFM_FILES = Map.of(FIELD_NAME_MAPPED_FILES, - Map.of( - ATTACHMENTS, AFM_ATTACHMMENTS, - REPRESENTATIONS, AFM_REPRESENTATIONS)); - - public static final Map<String, Object> FORMDATA_WITH_NO_ATTACHMENTS = Map.of(FIELD_NAME_MAPPED_FILES, - Map.of( - ATTACHMENTS, List.of(), - REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS)); - - // TODO Direkt im Test aufbauen oder FormDataTestFactory nutzen und hier den - // Code entfernen - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder().formData(Map.of( - ZIP, ZIP_ENCODED)); - } - - public static List<IncomingFileGroup> createAttachments(List<IncomingFile> files, String name) { - return List.of(IncomingFileGroup.builder() - .name(name) - .files(files) - .build()); - } - - public static IncomingFile createFile(String name, byte[] content, String contentType) { - return IncomingFile.builder() - .name(name) - .content(content) - .contentType(contentType) - .size(content.length) - .build(); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java deleted file mode 100644 index 079da08..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Spy; - -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class FormSolutionsAntragstellerMapperTest { - - @Spy - private final FormSolutionsAntragstellerMapper mapper = new FormSolutionsAntragstellerMapper(); - - @DisplayName("Parse formData") - @Nested - class TestParseFormData { - - private final FormData formData = FormSolutionsAntragstellerTestFactory.create(); - - @Test - void shouldCallBuildAntragsteller() { - parseFormData(); - - verify(mapper).buildAntragsteller(formData); - } - - @Test - void shouldCallRemoveProcessedData() { - parseFormData(); - - verify(mapper).buildAntragsteller(formData); - } - - @Test - void shouldReturnValue() { - var result = parseFormData(); - - assertThat(result).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData); - } - - @Test - void shouldRemovePostkorbhandle() { - var result = parseFormData(); - - assertThat(result.getFormData()).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - - @DisplayName("build antragsteller") - @Nested - class TestBuildAntragsteller { - - @Test - void shouldHavePostfachId() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getPostfachId()).isEqualTo(POSTFACH_ID); - } - - @Test - void shouldHaveVorname() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getVorname()).isEqualTo(VORNAME); - } - - @Test - void shouldHaveNachname() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getNachname()).isEqualTo(NACHNAME); - } - - private Antragsteller buildAntragsteller() { - return mapper.buildAntragsteller(formData); - } - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java deleted file mode 100644 index a1694d6..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsAntragstellerMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; - -import java.util.List; -import java.util.Map; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class FormSolutionsAntragstellerTestFactory { - - static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; - - public static FormData create() { - return createBuilder().build(); - } - - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder().formData(Map.of( - FormSolutionsAntragstellerMapper.POSTKORBHANDLE, POSTFACH_ID, - ASSISTANT, createAssistantMap())); - } - - private static Map<String, Object> createAssistantMap() { - return Map.of(PANELS, List.of( - Map.of(IDENTIFIER, ANTRAGSTELLER_PANEL_IDENTIFIER), - Map.of(COMPONENTS, createAntragstellerPanelContentList()))); - } - - private static List<Map<String, Object>> createAntragstellerPanelContentList() { - return List.of( - Map.of(IDENTIFIER, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), - Map.of(COMPONENTS, List.of( - Map.of(IDENTIFIER, VORNAME_KEY, STRING_VALUE, VORNAME), - Map.of(IDENTIFIER, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java deleted file mode 100644 index ea0e9dc..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; - -import java.util.List; -import java.util.Map; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; - -class FormSolutionsEngineBasedAdapterTestFactory { - - public static final String ANLIEGEN_ID_VALUE = "1234"; - public static final String KOMMUNALVERWALTUNG_ID_VALUE = "100000000"; - - public static final String ASSISTANT_IDENTIFIER_VALUE = "root"; - public static final String PANELS_IDENTIFIER_VALUE = "panels"; - - public static FormData create() { - return createBuilder().build(); - } - - public static FormData.FormDataBuilder createBuilder() { - return FormDataTestFactory.createBuilder() - .formData(createFormDataMap()); - } - - private static Map<String, Object> createFormDataMap() { - return Map.of( - ASSISTANT, createAssistantMap(), - ANLIEGEN_ID, ANLIEGEN_ID_VALUE, - KOMMUNALVERWALTUNG_ID, KOMMUNALVERWALTUNG_ID_VALUE); - } - - private static Map<String, Object> createAssistantMap() { - return Map.of( - IDENTIFIER, ASSISTANT_IDENTIFIER_VALUE, - FormSolutionsPanelMapper.PANELS, List.of(createPanelMap())); - } - - private static Map<String, Object> createPanelMap() { - return Map.of( - IDENTIFIER, PANELS_IDENTIFIER_VALUE, - FormSolutionsPanelMapper.COMPONENTS, FormDataTestFactory.NESTED_LIST_WITH_OBJECTS); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java deleted file mode 100644 index 4686f8d..0000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (C) 2022 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.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AttachmentsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsFilesMapper.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; - -class FormSolutionsFilesMapperTest { - - private final FormSolutionsFilesMapper mapper = new FormSolutionsFilesMapper(); - - @Nested - class TestAttachmentMapping { - - private final String zipName = "attachments.zip"; - private final List<IncomingFileGroup> attachments = List.of( - IncomingFileGroupTestFactory.createBuilder().name(FILE_GROUP_ZIP_NAME).files( - List.of( - IncomingFileTestFactory.createBuilder() - .name(zipName) - .content(ZIP_DECODED) - .contentType(ZIP_CONTENT_TYPE) - .size(ZIP_DECODED.length) - .build(), - IncomingFileTestFactory.create())) - .build()); - - private final FormData formData = AttachmentsTestFactory.createBuilder().formData(Map.of(FIELD_NAME_MAPPED_FILES, - Map.of( - ATTACHMENTS, attachments, - REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS))) - .build(); - - @Test - void shouldParseFormSolutionAttachments() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getContent()).isEqualTo(ZIP_FILE_0_CONTENT.getBytes()); - } - - @Test - void shouldSetContentType() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getContentType()).isEqualTo(TXT_CONTENT_TYPE); - } - - @Test - void shouldSetFileName() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getName()).isEqualTo(FILE_NAME_ZIP_CONTENT_0); - } - - @Test - void shouldSetFileSize() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getSize()).isEqualTo(157L); - } - - @Test - void shouldSetFileId() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getId()).isNotNull(); - } - - @Test - void shouldSetGroupName() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getName()).isEqualTo(EXTRAHIERTE_ATTACHMENTS); - } - - @Test - void shouldSetAttachmentNumber() { - var formData = parseFormData(); - - assertThat(formData.getNumberOfAttachments()).isEqualTo(2); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - } - - @Nested - class TestEncryptedAttachments { - - private final FormData formData = FormData.builder().formData(Map.of(FIELD_NAME_MAPPED_FILES, FORMDATA_WITH_FORMSOLUTIONS_ATTACHMMENTS_ENCRYPTED)) - .build(); - - @Test - void shouldParseFormSolutionEncryptedAttachments() { - var parsedFormData = mapper.parseFormData(formData); - - assertThat(parsedFormData.getAttachments().get(0).getFiles()).hasSize(1); - assertThat(parsedFormData.getAttachments().get(0).getFiles().get(0).getContent()).isEqualTo(ZIP_ENCRYPTED_DECODED); - } - } - - @Nested - class TestMissingAttachments { - - private final FormData formData = FormDataTestFactory.createBuilder().clearAttachments().build(); - - @Test - void shouldHandleNoAttachments() { - var parsedFormData = mapper.parseFormData(formData); - - assertThat(parsedFormData.getAttachments()).isEmpty(); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java similarity index 84% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapterTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java index 2deeb55..f4fb91f 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik; +package de.ozgcloud.eingang.semantik; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -32,10 +32,11 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.router.VorgangService; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; -import de.itvsh.kop.eingangsadapter.semantik.formbased.FormBasedSemantikAdapter; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.router.VorgangService; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; class SemantikAdapterTest { diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java new file mode 100644 index 0000000..c05258e --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java @@ -0,0 +1,322 @@ +/* + * 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.common; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.function.Predicate; +import java.util.zip.ZipException; +import java.util.zip.ZipInputStream; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.Spy; +import org.springframework.util.MimeTypeUtils; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.semantik.common.ReadZipException; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import lombok.SneakyThrows; + +class ZipAttachmentReaderTest { + private static final String TMP_DIRECTORY_PATH = System.getProperty("java.io.tmpdir"); + private static final String ZIP_1_FILE_NAME = "attachment-1file.zip"; + private static final String ZIP_ENCRYPTED = "attachment-encrypted.zip"; + + @Spy + private ZipAttachmentReader reader; + + @Nested + class TestReadZipAttachment { + + @Test + @SneakyThrows + @DisplayName("should save original zip to file system") + void shouldSaveOriginalZip() { + cleanupTempFiles(); + + createZipAttachment(ZIP_1_FILE_NAME); + + verifySourceFileSavedInTmpDirectory(); + } + + @SneakyThrows + private void verifySourceFileSavedInTmpDirectory() { + List<Path> foundFiles = Files.find(Path.of(getTmpDirectoryPath()), 1, + ((path, basicFileAttributes) -> path.getFileName().toString().startsWith(ZipAttachmentReader.SOURCE_ZIP_PREFIX))) + .toList(); + assertThat(foundFiles).hasSize(1).first(); + } + + @Test + @DisplayName("should return readable input stream for source zip file") + void shouldReturnSourceStream() { + var expectedContent = TestUtils.loadFile(ZIP_1_FILE_NAME); + + var sourceZipAsStream = createZipAttachment(ZIP_1_FILE_NAME).getSourceZipAsStream(); + + assertThat(sourceZipAsStream).hasSameContentAs(expectedContent); + } + + @Test + @DisplayName("should throw exception when reading encrypted ZIP") + void shouldFailSilentByEncryptedZip() { + var zipAttachment = createZipAttachment(ZIP_ENCRYPTED); + + assertThrows(ReadZipException.class, () -> zipAttachment.readContent()); + } + + private static ZipAttachmentReader createZipAttachment(String fileName) { + return ZipAttachmentReader.from(TestUtils.loadFile(fileName), fileName); + } + } + + @Nested + class TestReadZip { + + private static final String ZIP_2_FILE_NAME = "attachment-2files.zip"; + private static final String content_file_0_name = "zip-file-0.txt"; + private static final long content_file_0_size = getFileSize("zip-file-0.txt"); + private static final String content_file_1_name = "zip-file-1.txt"; + private static final long content_file_1_size = getFileSize("zip-file-1.txt"); + + private static Pair<String, Long> createContentPair(String fileName) { + var size = switch (fileName) { + case content_file_0_name -> content_file_0_size; + case content_file_1_name -> content_file_1_size; + default -> getFileSize(fileName); + }; + return Pair.of(fileName, size); + } + + @Test + @SneakyThrows + void shouldReadAllZipEntries() { + var zipContent = new ZipAttachmentReader().readContent(loadZip(ZIP_2_FILE_NAME)).stream() + .map(e -> Pair.of(e.getName(), e.getSize())).toList(); + + assertThat(zipContent).containsExactlyInAnyOrder(createContentPair(content_file_0_name), createContentPair(content_file_1_name)); + } + + @Test + @SneakyThrows + void shouldReadZipContent() { + var attachmentContentList = new ZipAttachmentReader().readContent(loadZip(ZIP_1_FILE_NAME)); + + assertThat(attachmentContentList).hasSize(1); + var contentEntry = attachmentContentList.get(0); + assertThat(contentEntry.getName()).isEqualTo(content_file_0_name); + assertThat(contentEntry.getSize()).isEqualTo(content_file_0_size); + assertThat(contentEntry.getContentStream()).hasSameContentAs(TestUtils.loadFile(content_file_0_name)); + } + + @Test + @SneakyThrows + void shouldSkipFolders() { + cleanupTempFiles(); + + var zipContent = new ZipAttachmentReader().readContent(loadZip("attachment-empty.zip")); + + assertThat(zipContent).isEmpty(); + assertTrue(noFilesWithSuffixInTempDirectory()); + } + + @Test + @DisplayName("should delete all temporary files after last reading of inputstream") + @SneakyThrows + void shouldDeleteContentFilesOnFinalRead() { + cleanupTempFiles(); + var contentEntries = new ZipAttachmentReader().readContent(loadZip(ZIP_2_FILE_NAME)); + + contentEntries.forEach(this::closeInputStreamFinalRead); + + assertTrue(noFilesWithSuffixInTempDirectory()); + } + + @SneakyThrows + private void closeInputStreamFinalRead(IncomingFile entry) { + entry.getContentStreamForFinalRead().close(); + } + + @Test + @DisplayName("should return readable input stream for source zip if cannot extract content") + void shouldReturnSourceStreamByError() { + var attachmentContent = new byte[] { 0, 1, 2, 3 }; + var attachment = ZipAttachmentReader.from(new ByteArrayInputStream(attachmentContent), "invalid"); + + assertThrows(ReadZipException.class, attachment::readContent); + + assertThat(attachment.getSourceZipAsStream()).hasSameContentAs(new ByteArrayInputStream(attachmentContent)); + } + + @Test + @DisplayName("should throw exception if ZIP is invalid.") + void shouldFailSilentByError() { + var invalidZip = new ByteArrayInputStream(new byte[] { 0, 1, 2, 3 }); + + var zipAttachment = ZipAttachmentReader.from(invalidZip, "invalid"); + + assertThrows(ReadZipException.class, () -> zipAttachment.readContent()); + } + + @Test + @SneakyThrows + void shouldFailByEncryptedZip() { + Assertions.assertThrows(ZipException.class, () -> new ZipAttachmentReader().readContent(loadZip(ZIP_ENCRYPTED))); + } + + } + + @SneakyThrows + private static ZipInputStream loadZip(String name) { + return new ZipInputStream(TestUtils.loadFile(name)); + } + + @Nested + class TestZipBombs { + + private static final String ZIP_BOMB_WITH_BIG_NULL_FILE_CONTENT = "zipbombs/filewithnulls.dat.zip"; + private static final String ZIP_BOMB_WITH_MANY_FILES = "zipbombs/filewithmanyfiles.dat.zip"; + + @Test + void shouldFailOnExtremCompressionRatio() { + var zip = loadZip(ZIP_BOMB_WITH_BIG_NULL_FILE_CONTENT); + + ReadZipException exception = assertThrows(ReadZipException.class, () -> reader.readContent(zip)); + + assertThat(exception.getMessage()).contains("Ratio between compressed and uncompressed data is highly suspicious"); + } + + @Test + @SneakyThrows + void shouldFailOnTotalExtractedSize() { + var zip = loadZip(ZIP_1_FILE_NAME); + reader.readContent(zip); + + verify(reader).checkTotalExtractedSize(157); + } + + @Test + void shouldFailOnTotalZipEntries() { + var zip = loadZip(ZIP_BOMB_WITH_MANY_FILES); + + ReadZipException exception = assertThrows(ReadZipException.class, () -> reader.readContent(zip)); + + assertThat(exception.getMessage()).contains("Total entries in zip file exceeded"); + } + } + + @Nested + class TestSaveFiles { + + @Test + @SneakyThrows + @DisplayName("should save file in temporary folder") + void shouldSaveFile() { + var systemTmpPathWithoutLastSlash = getTmpDirectoryPath(); + + var resultFile = reader.createLocalTempFile(); + + assertThat(resultFile).hasParent(systemTmpPathWithoutLastSlash); + } + + @Test + @SneakyThrows + @DisplayName("should save file with specific prefix and suffix") + void shouldSaveFileByName() { + var resultFileName = new ZipAttachmentReader() + .createLocalTempFile().getName(); + + assertThat(resultFileName) + .startsWith(ZipAttachmentReader.TARGET_ATTACHMENT_PREFIX) + .endsWith(ZipAttachmentReader.TMP_FILE_SUFFIX); + } + } + + @Nested + class TestContentType { + + @Test + void shouldReturnDefaultWhenNullString() { + assertThrows(NullPointerException.class, () -> reader.getContentType(null)); + } + + @Test + void shouldReturnDefaultWhenEmptyString() { + var contentType = new ZipAttachmentReader().getContentType(StringUtils.EMPTY); + + assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); + } + + @Test + void shouldReturnDefaultWhenSpaceString() { + var contentType = new ZipAttachmentReader().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(new ZipAttachmentReader()::getContentType).toList(); + + assertThat(contentTypes).containsExactlyInAnyOrder(MimeTypeUtils.APPLICATION_XML_VALUE, MimeTypeUtils.TEXT_PLAIN_VALUE); + } + } + + private static final Predicate<Path> hasNameSuffix = p -> p.getFileName().toString().endsWith(ZipAttachmentReader.TMP_FILE_SUFFIX); + + @SneakyThrows + private static void cleanupTempFiles() { + Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).filter(hasNameSuffix).map(Path::toFile).forEach(File::delete); + } + + @SneakyThrows + private static boolean noFilesWithSuffixInTempDirectory() { + return Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).noneMatch(hasNameSuffix); + } + + @SneakyThrows + private static long getFileSize(String fileName) { + Path filePath = Path.of(ZipAttachmentReaderTest.class.getClassLoader().getResource(fileName).toURI()); + return Files.size(filePath); + } + + private static String getTmpDirectoryPath() { + return TMP_DIRECTORY_PATH.endsWith("/") ? TMP_DIRECTORY_PATH.substring(0, TMP_DIRECTORY_PATH.length() - 1) : TMP_DIRECTORY_PATH; + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java new file mode 100644 index 0000000..d4b2045 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java @@ -0,0 +1,183 @@ +/* + * 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; + +import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; +import static org.assertj.core.api.Assertions.*; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; + +class FilesMapperHelperTest { + + @Nested + class TestExtractData { + + @Test + void shouldReturnMappedFiles() { + Map<String, String> expectedResult = Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE); + var mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, (Object) expectedResult); + + var extractedMappedFiles = FilesMapperHelper.getMappedFiles(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedMappedFiles.get()).isEqualTo(expectedResult); + } + + @Test + void shouldHandleMissingFiles() { + var extractedMappedFiles = FilesMapperHelper.getMappedFiles(FormDataTestFactory.withFormDataMaps(Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE))); + + assertThat(extractedMappedFiles).isEmpty(); + } + + @Test + void shouldReturnAttachedFileGroups() { + var incomingFileGroups = List.of(IncomingFileGroupTestFactory.create()); + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, + Map.of(FilesMapperHelper.ATTACHMENTS, incomingFileGroups)); + + var extractedAttachments = FilesMapperHelper.getAttachedFileGroups(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedAttachments.get()).isEqualTo(incomingFileGroups); + } + + @Nested + class getAttachedFiledGroups { + @Test + void shouldHandleMissingFileGroups() { + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE)); + + var extractedFileGroups = FilesMapperHelper.getAttachedFileGroups(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedFileGroups).isEmpty(); + } + } + + @Test + void souldReturnRepresentations() { + var incomingFileGroups = List.of(IncomingFileTestFactory.create()); + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, + Map.of(FilesMapperHelper.REPRESENTATIONS, incomingFileGroups)); + + var extractedRepresentations = FilesMapperHelper.getRepresentations(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedRepresentations.get()).isEqualTo(incomingFileGroups); + } + + @Test + void shouldHandleMissingFileRepresentations() { + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE)); + + var extractedRepresentations = FilesMapperHelper.getRepresentations(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedRepresentations).isEmpty(); + } + } + + @Nested + class TestAttachmentCount { + + @Test + void shouldCountEmptyList() { + var counter = FilesMapperHelper.countAttachedFiles(List.of()); + + assertThat(counter).isZero(); + } + + @Test + void shouldCountNoAttachedFiles() { + var counter = FilesMapperHelper.countAttachedFiles(List.of(IncomingFileGroupTestFactory.createBuilder().clearFiles().build())); + + assertThat(counter).isZero(); + } + + @Test + void shouldCountOneAttachment() { + var fileGroup = List.of(IncomingFileGroupTestFactory.createBuilder().file(IncomingFileTestFactory.create()).build()); + + var counter = FilesMapperHelper.countAttachedFiles(fileGroup); + + assertThat(counter).isEqualTo(2); + } + + @Test + void shouldCountAllAttachments() { + var counter = FilesMapperHelper.countAttachedFiles(createFileGroupsWith4Files()); + + assertThat(counter).isEqualTo(4); + } + + private static List<IncomingFileGroup> createFileGroupsWith4Files() { + return List.of(IncomingFileGroupTestFactory.createBuilder() + .clearFiles() + .files(List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create(), IncomingFileTestFactory.create())).build(), + IncomingFileGroupTestFactory.create()); + + } + } + + @Nested + class TestRemoveProcessedData { + + @Test + @DisplayName("should remove processed mapped files from raw form data") + void shouldRemoveProcessedDataOnly() { + var rawFormData = Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE, FilesMapperHelper.FIELD_NAME_MAPPED_FILES, new Object()); + + var cleanedFormData = FilesMapperHelper.removeProcessedData(withFormDataMaps(rawFormData)).getFormData(); + + assertThat(cleanedFormData) + .doesNotContainKey(FilesMapperHelper.FIELD_NAME_MAPPED_FILES) + .containsEntry(SIMPLE_VALUE_KEY, SIMPLE_VALUE); + } + + @Test + @DisplayName("should not change any other data") + void shouldNotChangeOtherFields() { + FormData formData = create(); + + var cleanedFormData = FilesMapperHelper.removeProcessedData(formData); + + assertThat(cleanedFormData.getId()).isEqualTo(formData.getId()); + assertThat(cleanedFormData.getHeader()).isEqualTo(formData.getHeader()); + assertThat(cleanedFormData.getZustaendigeStelle()).isEqualTo(formData.getZustaendigeStelle()); + assertThat(cleanedFormData.getAntragsteller()).isEqualTo(formData.getAntragsteller()); + assertThat(cleanedFormData.getNumberOfAttachments()).isEqualTo(formData.getNumberOfAttachments()); + assertThat(cleanedFormData.getAttachments()).isEqualTo(formData.getAttachments()); + assertThat(cleanedFormData.getNumberOfRepresentations()).isEqualTo(formData.getNumberOfRepresentations()); + assertThat(cleanedFormData.getRepresentations()).isEqualTo(formData.getRepresentations()); + assertThat(cleanedFormData.getFormData()).containsAllEntriesOf(formData.getFormData()); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java new file mode 100644 index 0000000..2f551fd --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java @@ -0,0 +1,194 @@ +/* + * 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; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +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.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmHeaderTestFactory; + +class ServiceKontoBuildHelperTest { + + @Spy + @InjectMocks + private ServiceKontoBuildHelper helper; + + @DisplayName("OSI service konto") + @Nested + class TestOsiServiceKonto { + + private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); + + @DisplayName("with configured postfach") + @Nested + class TestWithConfiguredPostfach { + + private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); + + @BeforeEach + void mockBuildPostfachAddresses() { + doReturn(List.of(POSTFACH_ADDRESS)).when(helper).buildPostfachAddresses(any(), any()); + } + + @Test + void shouldContainsType() { + var serviceKonto = getServiceKonto(FORM_DATA); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_TYPE_OSI); + } + + @Test + void shouldContainsPostfachAddresses() { + var serviceKonto = getServiceKonto(FORM_DATA); + + assertThat(serviceKonto.getPostfachAddresses()).hasSize(1); + assertThat(serviceKonto.getPostfachAddresses().get(0)).isEqualTo(POSTFACH_ADDRESS); + } + + @Test + void shouldBuildPostfachAddresses() { + getServiceKonto(FORM_DATA); + + verify(helper).buildPostfachAddresses(any(), any()); + } + } + + private ServiceKonto getServiceKonto(FormData formData) { + return helper.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); + } + + @DisplayName("postfach addresses") + @Nested + class TestBuildPostfachAddresses { + + @DisplayName("with rest_response_name") + @Nested + class TestWithRestResponseName { + + @Test + void shouldCallBuildAddresses() { + getPostfachAddresses(); + + verify(helper).buildOsiPostfachV1Address(any(), anyInt()); + } + + @Test + void shouldReturnPostfachAddresses() { + var addresses = getPostfachAddresses(); + + assertThat(addresses).hasSize(1); + assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); + assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) + .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); + assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_VERSION); + assertThat(addresses.get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); + } + + private List<PostfachAddress> getPostfachAddresses() { + return buildServiceKonto(FORM_DATA).getPostfachAddresses(); + } + } + + @DisplayName("without rest_response_name") + @Nested + class TestWithoutRestResponseName { + + private static final FormData FORM_DATA_WITHOUT_REST_RESPONSE_NAME = FormDataUtils.from(FORM_DATA) + .remove(ServiceKontoBuildHelper.REST_RESPONSE_NAME).build(); + + @Test + void shouldBuildDefault() { + getPostfachAddresses(); + + verify(helper).buildDefault(AfmHeaderTestFactory.POSTFACH_NAME_ID); + } + + @Test + void shouldReturnPostfachAddresses() { + var addresses = getPostfachAddresses(); + + assertThat(addresses).hasSize(1); + + assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); + + assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) + .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); + assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_VERSION); + assertThat(addresses.get(0).getType()).isEqualTo(1); + } + + private List<PostfachAddress> getPostfachAddresses() { + return buildServiceKonto(FORM_DATA_WITHOUT_REST_RESPONSE_NAME).getPostfachAddresses(); + } + } + + private ServiceKonto buildServiceKonto(FormData formData) { + return helper.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); + } + } + } + + @Nested + class TestBayernIdServiceKonto { + + private static final String POSTFACH_ID = "postfach-id"; + private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); + + @Test + void shouldSetType() { + var serviceKonto = buildBayernIdServiceKonto(); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_TYPE_BAYERN_ID); + } + + @Test + void shouldSetPostfachAddress() { + doReturn(POSTFACH_ADDRESS).when(helper).buildPostfachAddress(any()); + + var serviceKonto = buildBayernIdServiceKonto(); + + assertThat(serviceKonto.getPostfachAddresses()).containsOnly(POSTFACH_ADDRESS); + } + + ServiceKonto buildBayernIdServiceKonto() { + return helper.buildBayernIdServiceKonto(POSTFACH_ID); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java new file mode 100644 index 0000000..6be19b8 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java @@ -0,0 +1,264 @@ +/* + * 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.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.NullAndEmptySource; +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.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; + +class AfmAntragstellerHeaderMapperTest { + + @Spy + @InjectMocks + private AfmAntragstellerHeaderMapper mapper; + + @Nested + class TestParseAntragstellerData { + + @Test + void shouldCallGetHeaders() { + var formData = FormData.builder().build(); + doReturn(Collections.emptyMap()).when(mapper).getHeaders(any()); + + mapper.parseAntragstellerData(formData); + + verify(mapper).getHeaders(formData); + } + + @Test + void shouldCallBuildAntragsteller() { + var headerMap = AfmHeaderTestFactory.createCustomHeaderMap(); + doReturn(headerMap).when(mapper).getHeaders(any()); + + mapper.parseAntragstellerData(FormData.builder().build()); + + verify(mapper).buildAntragsteller(headerMap); + } + + @Test + void shouldSetAntragsteller() { + var antragsteller = AntragstellerTestFactory.create(); + doReturn(antragsteller).when(mapper).buildAntragsteller(any()); + + var result = mapper.parseAntragstellerData(FormData.builder().build()); + + assertThat(result.getAntragsteller()).isEqualTo(antragsteller); + } + + @Nested + class TestBuildAntragsteller { + + private Map<String, Object> headers = AfmHeaderTestFactory.createCustomHeaderMap(); + @Test + void shouldSetPostfachId() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getPostfachId()).isEqualTo(AfmHeaderTestFactory.CUSTOM_POSTFACH_ID); + } + + @Test + void shouldSetVorname() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getVorname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_VORNAME); + } + + @Test + void shouldSetNachname() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getNachname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_NACHNAME); + } + + @Test + void shouldSetGeburtsname() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getGeburtsname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_GEBURTSNAME); + } + + @Test + void shouldSetGeburtsort() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getGeburtsort()).isEqualTo(AfmHeaderTestFactory.CUSTOM_GEBURTSORT); + } + + @Test + void shoudlSetEmail() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getEmail()).isEqualTo(AfmHeaderTestFactory.CUSTOM_EMAIL); + } + + @Test + void shouldSetTelefon() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getTelefon()).isEqualTo(AfmHeaderTestFactory.CUSTOM_TELEFON); + } + + @Test + void shouldSetStrasse() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getStrasse()).isEqualTo(AfmHeaderTestFactory.CUSTOM_STRASSE); + } + + @Test + void shouldSetPlz() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getPlz()).isEqualTo(AfmHeaderTestFactory.CUSTOM_PLZ); + } + + @Test + void shouldSetOrt() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getOrt()).isEqualTo(AfmHeaderTestFactory.CUSTOM_ORT); + } + } + } + + @Nested + class TestIsResponsible { + + @Mock + private FormData formData; + + @Test + void shouldApproveResponsibility() { + doReturn(true).when(mapper).isPostfachIdNotBlank(any()); + doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123")).when(mapper).getHeaders(any()); + + var isResponsible = mapper.isResponsible(formData); + + assertTrue(isResponsible); + } + + @Nested + class TestDenyResponsibility { + + @Test + void shouldDenyWhenNoHeader() { + doReturn(Collections.emptyMap()).when(mapper).getHeaders(any()); + + var isResponsible = mapper.isResponsible(FormData.builder().build()); + + assertFalse(isResponsible); + } + + @Test + void shouldDenyWhenNoPostfachId() { + doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_VORNAME, "name")).when(mapper).getHeaders(any()); + + var isResponsible = mapper.isResponsible(formData); + + assertFalse(isResponsible); + } + + void shouldDenyWhenPostfachIdIsBlank() { + doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, null)).when(mapper).getHeaders(any()); + doReturn(false).when(mapper).isPostfachIdNotBlank(any()); + + var isResponsible = mapper.isResponsible(formData); + + assertFalse(isResponsible); + } + + @Nested + class TestIsPostfachIdNotBlank { + + @ParameterizedTest + @NullAndEmptySource + void shouldReturnFalseWhenPostfachIdIsBlank(String postfachId) { + var isNotBlank = mapper.isPostfachIdNotBlank(postfachId); + + assertFalse(isNotBlank); + } + + @Test + void shouldApprove() { + var isNotBlank = mapper.isPostfachIdNotBlank("123"); + + assertTrue(isNotBlank); + } + + @Test + void shouldFailOnUnexpectedType() { + var postfachId = new Object(); + + assertThrows(TechnicalException.class, () -> mapper.isPostfachIdNotBlank(postfachId)); + } + } + } + } + + @Nested + class TestGetHeaders { + + @Test + void shouldReturnHeaders() { + var headers = createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123"); + var formData = FormData.builder().formData(createHeaders(AfmHeaderMapper.HEADER_FIELD, headers)).build(); + + var result = mapper.getHeaders(formData); + + assertThat(result).isEqualTo(headers); + } + + @Test + void shouldReturnEmptyMapWhenNoHeaders() { + var formData = FormData.builder().build(); + + var result = mapper.getHeaders(formData); + + assertThat(result).isEmpty(); + } + } + + private Map<String, Object> createHeaders(String key, Object value) { + var map = new HashMap<String, Object>(); + map.put(key, value); + return map; + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java new file mode 100644 index 0000000..451fede --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java @@ -0,0 +1,219 @@ +/* + * 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.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.HashMap; +import java.util.UUID; + +import org.assertj.core.data.MapEntry; +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.Mockito; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; + +class AfmAntragstellerMapperTest { + + @InjectMocks + private AfmAntragstellerMapper mapper; + + @Mock + private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; + + private FormData formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap()).build(); + + @DisplayName("Parse form data") + @Nested + class TestParseFormData { + + @Test + void shouldCallHeaderMapper() { + FormData expectedFormData = mock(FormData.class); + when(antragstellerHeaderMapper.isResponsible(any())).thenReturn(true); + when(antragstellerHeaderMapper.parseAntragstellerData(any())).thenReturn(expectedFormData); + + var processedFormData = parseFormData(formData); + + assertThat(processedFormData).isEqualTo(expectedFormData); + } + + @Test + void shouldDoNothingOnNullAntragstaller() { + var formData = FormData.builder().formData(new HashMap<>()).build(); + + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData).usingRecursiveComparison().ignoringFields(AfmAntragstellerMapper.ANTRAGSTELLER).isEqualTo(formData); + } + + @Test + void shouldMapAntragsteller() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") + .isEqualTo(AfmAntragstellerTestFactory.create()); + } + + @Test + @DisplayName("should map antragsteller when key starts with an uppercase letter") + void shouldMapAntragstellerUppercase() { + formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build(); + + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") + .isEqualTo(AfmAntragstellerTestFactory.create()); + } + + @Test + @DisplayName("should map only antragsteller key when both present") + void shouldMapOnlyOneKey() { + var expectedAntragsteller = AfmAntragstellerTestFactory.createBuilder().anrede("anrede").vorname("firstName").nachname("lastName").build(); + + var parsedFormData = parseFormData(createFormData(expectedAntragsteller)); + + assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") + .isEqualTo(expectedAntragsteller); + } + + private FormData createFormData(Antragsteller antragsteller) { + var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); + var antragstelleMap = AfmAntragstellerTestFactory.createAntragstelleMap( + MapEntry.entry(AfmAntragstellerMapper.ANREDE, antragsteller.getAnrede()), + MapEntry.entry(AfmAntragstellerMapper.VORNAME, antragsteller.getVorname()), + MapEntry.entry(AfmAntragstellerMapper.NACHNAME, antragsteller.getNachname()) + ); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstelleMap); + return FormData.builder().formData(formDataMap).build(); + } + + @DisplayName("map antragsteller data") + @Nested + class TestMapAntragstellerData { + + @Test + void shouldMapPostfachId() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller().getPostfachId()).isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); + } + + @DisplayName("with mapped and not mapped value") + @Nested + class TestWithMappedAndNotMappedValue { + + private static final String NOT_MAPPED_FIELD = "not_mapped_value"; + private static final String NOT_MAPPED_VALUE = UUID.randomUUID().toString(); + + private FormData formData; + + @BeforeEach + void buildFormData() { + var antragstellerMap = AfmAntragstellerTestFactory.createAntragstelleMap(MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE)); + + var formDataMap = new HashMap<String, Object>(); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap); + + formData = FormData.builder().formData(formDataMap).build(); + } + + @Test + void shouldNotContainDuplicateValues() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller().getData()).doesNotContainKeys( + AfmAntragstellerMapper.ANREDE, + AfmAntragstellerMapper.EMAIL, + AfmAntragstellerMapper.GEBURTSDATUM, + AfmAntragstellerMapper.GEBURTSNAME, + AfmAntragstellerMapper.GEBURTSORT, + AfmAntragstellerMapper.NACHNAME, + AfmAntragstellerMapper.VORNAME, + AfmAntragstellerMapper.TELEFON, + AfmAntragstellerMapper.STRASSE, + AfmAntragstellerMapper.HAUSNUMMER, + AfmAntragstellerMapper.ORT, + AfmAntragstellerMapper.PLZ); + } + + @Test + void shouldMoveNotMappedFieldsToDataMap() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller().getData()).containsEntry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE); + } + } + } + + @DisplayName("remove fields") + @Nested + class TestRemoveFields { + + @Test + void shouldRemoveAntragsteller() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER)).isNull(); + } + + @Test + @DisplayName("should remove Antragsteller when key starts with an uppercase latter") + void shouldRemoveAntragstellerUppercase() { + formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build(); + + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).isNull(); + } + + @Test + @DisplayName("should remove only 'antragsteller' key when both present") + void shouldRemoveOnlyOneKey() { + var parsedFormData = parseFormData(createFormData()); + + assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).isNotNull(); + } + + private FormData createFormData() { + var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createAntragstelleMap()); + return FormData.builder().formData(formDataMap).build(); + } + } + } + + private FormData parseFormData(FormData formData) { + return mapper.parseFormData(formData); + } +} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java similarity index 84% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java index 06b00f2..71d67b7 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.Arrays; import java.util.Collections; @@ -31,7 +31,8 @@ import java.util.UUID; import org.assertj.core.data.MapEntry; -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; public class AfmAntragstellerTestFactory { @@ -72,10 +73,18 @@ public class AfmAntragstellerTestFactory { } public static Map<String, Object> createFormDataMap() { + return createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER); + } + + public static Map<String, Object> createFormDataMap(String antragstellerKey) { + return Collections.unmodifiableMap(createMutableFormDataMap(antragstellerKey)); + } + + public static Map<String, Object> createMutableFormDataMap(String antragstellerKey) { var map = new HashMap<String, Object>(); + map.put(antragstellerKey, createAntragstelleMap()); map.put(AfmAntragstellerMapper.POSTFACH_ID, POSTFACH_ID); - map.put(AfmAntragstellerMapper.ANTRAGSTELLER, createAntragstelleMap()); - return Collections.unmodifiableMap(map); + return map; } @SafeVarargs diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapperTest.java similarity index 72% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapperTest.java index f2ab3e9..0a27ca3 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,39 +21,42 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; import java.util.List; import java.util.Map; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAttachedFilesMapper; + import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; - -class AfmFilesMapperTest { +class AfmAttachedFilesMapperTest { @Spy @InjectMocks - private AfmFilesMapper mapper; + private AfmAttachedFilesMapper mapper; private IncomingFileGroup attachmentWithMultipleFiles = IncomingFileGroupTestFactory.createBuilder() .name("anotherAttachment") + .clearFiles() .files(List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create())) .build(); private FormData formData = FormDataTestFactory.createBuilder() .clearAttachments() - .formData(Map.of(AbstractFileMapper.FIELD_NAME_MAPPED_FILES, - Map.of(AbstractFileMapper.ATTACHMENTS, List.of(IncomingFileGroupTestFactory.create(), attachmentWithMultipleFiles)))) + .formData(Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, + Map.of(FilesMapperHelper.ATTACHMENTS, List.of(IncomingFileGroupTestFactory.create(), attachmentWithMultipleFiles)))) .build(); @Nested @@ -93,7 +96,7 @@ class AfmFilesMapperTest { void shouldRemoveFilesFromMap() { var parsedFormData = parseFormData(); - assertThat(parsedFormData.getFormData().get(AbstractFileMapper.FIELD_NAME_MAPPED_FILES)).isNull(); + assertThat(parsedFormData.getFormData().get(FilesMapperHelper.FIELD_NAME_MAPPED_FILES)).isNull(); } private FormData parseFormData() { diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java similarity index 79% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java index a69b82c..eb3b643 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; @@ -33,8 +33,10 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEmpfangeneStelleMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; class AfmEmpfangeneStelleMapperTest { @@ -59,7 +61,7 @@ class AfmEmpfangeneStelleMapperTest { void shouldAddControlNode() { var mapped = mapper.parseFormData(formData); - assertThat(getEmpfangeneStelle(mapped.getFormData())).containsKey(AfmEmpfangeneStelleMapper.KOP_CONTROLDATA_NODENAME); + assertThat(getEmpfangeneStelle(mapped.getFormData())).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); } @SuppressWarnings("unchecked") @@ -68,8 +70,8 @@ class AfmEmpfangeneStelleMapperTest { var mapped = mapper.parseFormData(formData); assertThat((Map<String, Object>) getEmpfangeneStelle(mapped.getFormData()) - .get(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmZustaendigeStelleMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); + .get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) + .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); } @SuppressWarnings("unchecked") diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java new file mode 100644 index 0000000..55c3ff4 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java @@ -0,0 +1,97 @@ +/* + * 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.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Collections; +import java.util.List; +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 org.springframework.test.util.ReflectionTestUtils; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedAdapter; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; + +class AfmEngineBasedAdapterTest { + + @Spy + @InjectMocks + private AfmEngineBasedAdapter adapter; + @Spy + private List<EngineBasedMapper> mappers; + @Mock + private AfmEngineBasedMapper mapper; + + @DisplayName("Parse form data") + @Nested + class TestParseFromData { + + private final Map<String, Object> formDataMap = Map.of(AfmAntragstellerMapper.POSTFACH_ID, "postfachIdValue"); + private final FormData formData = FormData.builder().formData(formDataMap).build(); + + @BeforeEach + void mockMappers() { + ReflectionTestUtils.setField(adapter, "mappers", Collections.singletonList(mapper)); + } + + @BeforeEach + void mockEngineBasedMapper() { + when(mapper.parseFormData(any())).thenReturn(formData); + } + + @Test + void shouldCallMappers() { + adapter.parseFormData(formData); + + verify(mapper).parseFormData(formData); + } + + @Test + void shouldRemoveProcessedData() { + adapter.parseFormData(formData); + + verify(adapter).removeProcessedData(formData); + } + + @Test + void shouldRemovePostfachId() { + var mappedFormData = adapter.parseFormData(formData); + + assertThat(mappedFormData.getFormData()).doesNotContainKey(AfmAntragstellerMapper.POSTFACH_ID); + } + } +} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java similarity index 79% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java index ec967cb..9dc147f 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; @@ -33,8 +33,10 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmErklaerungenMapper; class AfmErklaerungenMapperTest { @@ -59,7 +61,7 @@ class AfmErklaerungenMapperTest { void shouldAddControlNode() { var mapped = mapper.parseFormData(formData); - assertThat(getErklaerungenStelle(mapped.getFormData())).containsKey(AfmEmpfangeneStelleMapper.KOP_CONTROLDATA_NODENAME); + assertThat(getErklaerungenStelle(mapped.getFormData())).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); } @SuppressWarnings("unchecked") @@ -68,8 +70,8 @@ class AfmErklaerungenMapperTest { var mapped = mapper.parseFormData(formData); assertThat((Map<String, Object>) getErklaerungenStelle(mapped.getFormData()) - .get(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmZustaendigeStelleMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); + .get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) + .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); } @SuppressWarnings("unchecked") diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java new file mode 100644 index 0000000..2e1265d --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java @@ -0,0 +1,226 @@ +/* + * 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.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Map; +import java.util.Optional; + +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.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; + +class AfmHeaderMapperTest { + + @Spy + @InjectMocks + private AfmHeaderMapper mapper; + @Mock + private ServiceKontoBuildHelper serviceKontoBuildHelper; + + @DisplayName("Parse form data") + @Nested + class TestParseFormData { + + @DisplayName("map form header") + @Nested + class TestMapFormHeader { + + private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); + + @Test + void shouldKeepHeader() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getFormData().get(AfmHeaderMapper.HEADER_FIELD)).isNotNull(); + } + + @DisplayName("fields") + @Nested + class TestFields { + + @Test + void shouldMapRequestId() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getRequestId()).isEqualTo(AfmHeaderTestFactory.ID); + } + + @Test + void shouldMapCreatedAt() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getCreatedAt()).isEqualTo(AfmHeaderTestFactory.TIMESTAMP); + } + + @Test + void shouldMapFormId() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getFormId()).isEqualTo(AfmHeaderTestFactory.FORM_ID); + } + + @Test + void shouldMapFormName() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getFormName()).isEqualTo(AfmHeaderTestFactory.FORM); + } + + @Test + void shouldMapSender() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getSender()).isEqualTo(AfmHeaderTestFactory.SENDER); + } + + @Test + void shouldSetFormEngineName() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getFormEngineName()).isEqualTo(AfmHeaderMapper.AFM_FORMENGINE_NAME); + } + + @DisplayName("service konto") + @Nested + class TestServiceKonto { + + @DisplayName("OSI") + @Nested + class TestOsiServiceKonto { + @Test + void shouldCallBuildServiceKontoIfPresent() { + parseFormData(); + + verify(serviceKontoBuildHelper).buildOsiServiceKonto(any(), eq(FORM_DATA)); + } + + @Test + void shouldNotCallBuildServiceKontoIfNotExists() { + mapper.parseFormData(FormDataUtils.from(FORM_DATA).remove(AfmHeaderMapper.POSTFACH_NAME_ID).build()); + + verify(serviceKontoBuildHelper, never()).buildOsiServiceKonto(any(), any()); + } + } + + @DisplayName("BayernID") + @Nested + class TestBayernId { + + @Mock + private FormData formData; + @Mock + private ServiceKonto serviceKonto; + + @Test + void shouldCallCreateBayernIdServiceKonto() { + var formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMapWithExtendedHeaders()).build(); + + mapper.parseFormData(formData); + + verify(mapper).createBayernIdServiceKonto(formData); + } + + @Test + void shouldReturnServiceKonto() { + doReturn(Optional.of("id")).when(mapper).getPostfachId(any()); + when(serviceKontoBuildHelper.buildBayernIdServiceKonto(any())).thenReturn(serviceKonto); + + var parsedFormData = mapper.createBayernIdServiceKonto(formData); + + assertThat(parsedFormData).isPresent().get().isEqualTo(serviceKonto); + } + + @Test + void shouldNotCallServiceKontoBuildHelper() { + doReturn(Optional.empty()).when(mapper).getPostfachId(any()); + + mapper.createBayernIdServiceKonto(formData); + + verify(serviceKontoBuildHelper, never()).buildBayernIdServiceKonto(any()); + } + } + } + } + + private FormData parseFormData() { + return mapper.parseFormData(FORM_DATA); + } + } + + @DisplayName("remove mapped data") + @Nested + class TestRemoveMappedData { + + private final FormData formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); + + @Test + void shouldRemoveRestResponseName() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getFormData().get(ServiceKontoBuildHelper.REST_RESPONSE_NAME)).isNull(); + } + + private FormData parseFormData() { + return mapper.parseFormData(formData); + } + } + } + + @Nested + class TestGetPostfachId { + + @Mock + private FormData formData; + + @Test + void shouldReturnPostfachId() { + doReturn(Map.of(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, AfmAntragstellerTestFactory.POSTFACH_ID)).when(mapper).getHeaderMap(any()); + + var postfachId = mapper.getPostfachId(formData); + + assertThat(postfachId).isPresent().get().isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); + } + + @Test + void shouldReturnEmpty() { + doReturn(null).when(mapper).getHeaderMap(any()); + + var postfachId = mapper.getPostfachId(formData); + + assertThat(postfachId).isEmpty(); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java new file mode 100644 index 0000000..817c217 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java @@ -0,0 +1,104 @@ +/* + * 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.afm; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; + +public class AfmHeaderTestFactory { + + public static final String ID = UUID.randomUUID().toString(); + public static final String TIMESTAMP = "2020-11-18T09:09:27.627Z"; + public static final String FORM_ID = "waffen/kleinerWaffenschein"; + public static final String FORM = "Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)"; + public static final String SENDER = "afm.schleswig-holstein.de"; + + public static final String CUSTOM_POSTFACH_ID = "postfach_id"; + public static final String CUSTOM_VORNAME = "vorname"; + public static final String CUSTOM_NACHNAME = "nachname"; + public static final String CUSTOM_GEBURTSNAME = "Geburtsname"; + public static final String CUSTOM_GEBURTSORT = "geburtsort"; + public static final String CUSTOM_EMAIL = "email"; + public static final String CUSTOM_TELEFON = "telefon"; + public static final String CUSTOM_STRASSE = "strasse"; + public static final String CUSTOM_PLZ = "plz"; + public static final String CUSTOM_ORT = "ort"; + + public static final String POSTFACH_NAME_ID = "name-id-value"; + + public static final int REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE = 1; + + public static Map<String, Object> createFormDataMap() { + var map = new HashMap<String, Object>(); + map.put(AfmHeaderMapper.HEADER_FIELD, createHeaderMap()); + map.put(AfmHeaderMapper.POSTFACH_NAME_ID, POSTFACH_NAME_ID); + map.put(ServiceKontoBuildHelper.REST_RESPONSE_NAME, List.of(createRestResponseNameMap())); + + return map; + } + + @SuppressWarnings("unchecked") + public static Map<String, Object> createFormDataMapWithExtendedHeaders() { + var map = new HashMap<>(createFormDataMap()); + ((Map<String, Object>) map.get(AfmHeaderMapper.HEADER_FIELD)).putAll(createCustomHeaderMap()); + return map; + } + + public static Map<String, Object> createHeaderMap() { + var map = new HashMap<String, Object>(); + map.put(AfmHeaderMapper.ID, ID); + map.put(AfmHeaderMapper.TIMESTAMP, TIMESTAMP); + map.put(AfmHeaderMapper.FORM_ID, FORM_ID); + map.put(AfmHeaderMapper.FORM, FORM); + map.put(AfmHeaderMapper.SENDER, SENDER); + return map; + } + + public static Map<String, Object> createCustomHeaderMap() { + var map = new HashMap<String, Object>(); + map.put(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, CUSTOM_POSTFACH_ID); + map.put(AfmAntragstellerHeaderMapper.KEY_VORNAME, CUSTOM_VORNAME); + map.put(AfmAntragstellerHeaderMapper.KEY_NACHNAME, CUSTOM_NACHNAME); + map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSNAME, CUSTOM_GEBURTSNAME); + map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSORT, CUSTOM_GEBURTSORT); + map.put(AfmAntragstellerHeaderMapper.KEY_EMAIL, CUSTOM_EMAIL); + map.put(AfmAntragstellerHeaderMapper.KEY_TELEFON, CUSTOM_TELEFON); + map.put(AfmAntragstellerHeaderMapper.KEY_STRASSE, CUSTOM_STRASSE); + map.put(AfmAntragstellerHeaderMapper.KEY_PLZ, CUSTOM_PLZ); + map.put(AfmAntragstellerHeaderMapper.KEY_ORT, CUSTOM_ORT); + return map; + } + + public static Map<String, Object> createRestResponseNameMap() { + return Map.of(ServiceKontoBuildHelper.REST_RESPONSE_NAME_MEMBER_SCOPE, List.of(createRestResponseNameMemberScopeMap())); + } + + private static Map<String, Object> createRestResponseNameMemberScopeMap() { + return Map.of(ServiceKontoBuildHelper.REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE, REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java similarity index 72% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java index 79c5355..eed8d1f 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @@ -32,10 +32,11 @@ import java.util.Map; 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.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; class AfmZustaendigeStelleMapperTest { @@ -43,6 +44,9 @@ class AfmZustaendigeStelleMapperTest { @Spy private AfmZustaendigeStelleMapper mapper; + @Mock + private ZustaendigeStelleMetadataMapper zustaendigeStelleMetadataMapper; + @Nested class TestParseFormData { @@ -65,14 +69,14 @@ class AfmZustaendigeStelleMapperTest { void shouldReturnFormDataOnNonExistingZustaendigeStelleAndOrganisationseinheitenId() { var emptyFormData = FormData.builder().formData(new HashMap<String, Object>()).build(); - var parsedFormData = parseFormData(emptyFormData); + var parsedFormData = parseZustaendigeStelleData(emptyFormData); assertThat(parsedFormData).isEqualTo(emptyFormData); } @Test void shouldMapOrganisationseinheitenId() { - var parsedFormData = parseFormData(formData); + var parsedFormData = parseZustaendigeStelleData(formData); assertThat(parsedFormData.getZustaendigeStelle().getOrganisationseinheitenId()) .isEqualTo(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); @@ -80,17 +84,39 @@ class AfmZustaendigeStelleMapperTest { @Test void shouldMapBezeichnung() { - var parsedFormData = parseFormData(formData); + var parsedFormData = parseZustaendigeStelleData(formData); assertThat(parsedFormData.getZustaendigeStelle().getBezeichnung()).isEqualTo(BEZEICHNUNG); } @Test void shouldMapEmail() { - var parsedFormData = parseFormData(formData); + var parsedFormData = parseZustaendigeStelleData(formData); assertThat(parsedFormData.getZustaendigeStelle().getEmail()).isEqualTo(AfmZustaendigeStelleTestFactory.EMAIL); } + + @Test + void shouldCallparseZustaendigeStelleData() { + parseFormData(formData); + + verify(mapper).parseZustaendigeStelleData(formData); + } + + @Test + void shouldCallParseBayernMetadata() { + when(zustaendigeStelleMetadataMapper.isResponsible(any())).thenReturn(true); + var expectedFormData = FormDataTestFactory.create(); + when(zustaendigeStelleMetadataMapper.parseZustaendigeStelleData(any())).thenReturn(expectedFormData); + + var resultFormData = parseFormData(formData); + + assertThat(resultFormData).isEqualTo(expectedFormData); + } + + private FormData parseZustaendigeStelleData(FormData formData) { + return mapper.parseZustaendigeStelleData(formData); + } } @Nested @@ -98,7 +124,7 @@ class AfmZustaendigeStelleMapperTest { private FormData formData = FormDataTestFactory .withFormDataMaps( - Map.of(FormDataTestFactory.NESTED_LIST_WITH_OBJECTS_KEY, (Object) FormDataTestFactory.NESTED_LIST_OBJECTS_ELEMENT_1), + Map.of(FormDataTestFactory.NESTED_LIST_WITH_OBJECTS_KEY, FormDataTestFactory.NESTED_LIST_OBJECTS_ELEMENT_1), AfmZustaendigeStelleTestFactory.createFormDataMap()); @Test @@ -112,7 +138,7 @@ class AfmZustaendigeStelleMapperTest { void shouldHaveControlNode() { var edited = mapper.addMetaDataFlag(formData); - assertThat(getZustaendigeStelle(edited)).containsKey(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME); + assertThat(getZustaendigeStelle(edited)).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); } @SuppressWarnings("unchecked") @@ -120,12 +146,12 @@ class AfmZustaendigeStelleMapperTest { void shouldSetFlagToTrue() { var edited = mapper.addMetaDataFlag(formData); - assertThat((Map<String, Object>) getZustaendigeStelle(edited).get(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmZustaendigeStelleMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); + assertThat((Map<String, Object>) getZustaendigeStelle(edited).get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) + .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); } @Test - void shouldDoNothingIfNoZuständigeStelle() { + void shouldDoNothingIfNoZustaendigeStelle() { var formDataMap = AfmZustaendigeStelleTestFactory.createFormDataMap(); formDataMap.remove(AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE); var formData = FormDataTestFactory.createBuilder().formData(formDataMap).build(); @@ -144,7 +170,7 @@ class AfmZustaendigeStelleMapperTest { .filter(entry -> entry.getKey() != AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE) .filter(entry -> entry.getValue() instanceof Map) .forEach(entry -> assertThat((Map<String, ?>) entry.getValue()) - .doesNotContainKey(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)); + .doesNotContainKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)); } private Map<String, Object> getZustaendigeStelle(Map<String, Object> formDataMap) { diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java similarity index 90% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java index cfa11a3..c8ae7a3 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,12 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmZustaendigeStelleMapper; + public class AfmZustaendigeStelleTestFactory { public static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString(); diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java new file mode 100644 index 0000000..ca3d2ad --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java @@ -0,0 +1,85 @@ +/* + * 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.afm; + +import static de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleMetadataMapper.*; + +import java.util.List; +import java.util.Map; + +import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.ZustaendigeStelleDataBuilder; + +public class ZustaendigeStelleDataTestFactory { + public static final String BEHOERDE_ANZEIGE_NAME = "Landratsamt XYZ (Testbehörde für BDA)"; + public static final String BEHOERDE_CALLER_ID = "87331322433"; + public static final String GEMEINDE_SCHLUESSEL_BP = "09189155"; + public static final String BEHOERDE_EMAIL = "poststelle@testbehoerde.bayern"; + public static final String AMTLICHER_REGIONALSCHLUESSEL = "091890000000"; + public static final String BEHOERDE_HAUSANSCHRIFT_STRASSE = "Teststraße 1"; + public static final String BEHOERDE_HAUSANSCHRIFT_ORT = "Musterstadt"; + public static final String BEHOERDE_HAUSANSCHRIFT_PLZ = "12345"; + public static final String BEHOERDE_TELEFON = "+49 123 45-0"; + + public static final Map<String, String> BEHOERDE_METADATA = Map.of( + KEY_BEHOERDE_ANZEIGE_NAME, BEHOERDE_ANZEIGE_NAME, + KEY_BEHOERDE_CALLER_ID, BEHOERDE_CALLER_ID, + KEY_GEMEINDE_SCHLUESSEL_BP, GEMEINDE_SCHLUESSEL_BP, + KEY_BEHOERDE_EMAIL, BEHOERDE_EMAIL, + KEY_AMTLICHER_REGIONALSCHLUESSEL, AMTLICHER_REGIONALSCHLUESSEL, + KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE, BEHOERDE_HAUSANSCHRIFT_STRASSE, + KEY_BEHOERDE_HAUSANSCHRIFT_ORT, BEHOERDE_HAUSANSCHRIFT_ORT, + KEY_BEHOERDE_HAUSANSCHRIFT_PLZ, BEHOERDE_HAUSANSCHRIFT_PLZ, + KEY_BEHOERDE_TELEFON, BEHOERDE_TELEFON + ); + + public static final List<ZustaendigeStelleData.Field> ZUSTAENDIGE_STELLE_DATA_FIELDS = List.of( + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_ANZEIGE_NAME) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_ANZEIGE_NAME).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_CALLER_ID) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_CALLER_ID).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_GEMEINDE_SCHLUESSEL_BP) + .value(ZustaendigeStelleDataTestFactory.GEMEINDE_SCHLUESSEL_BP).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_EMAIL).value(ZustaendigeStelleDataTestFactory.BEHOERDE_EMAIL) + .build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_AMTLICHER_REGIONALSCHLUESSEL) + .value(ZustaendigeStelleDataTestFactory.AMTLICHER_REGIONALSCHLUESSEL).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_STRASSE).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_ORT) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_ORT).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_PLZ) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_PLZ).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_TELEFON).value(ZustaendigeStelleDataTestFactory.BEHOERDE_TELEFON) + .build() + ); + + public static ZustaendigeStelleData create() { + return createBuilder().build(); + } + + public static ZustaendigeStelleDataBuilder createBuilder() { + return ZustaendigeStelleData.builder() + .fields(ZUSTAENDIGE_STELLE_DATA_FIELDS); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java new file mode 100644 index 0000000..13c6c26 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java @@ -0,0 +1,43 @@ +/* + * 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.afm; + +import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.Field; +import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.Field.FieldBuilder; + +public class ZustaendigeStelleMetadataFieldTestFactory { + + public static final String FIELD_NAME = "name"; + public static final String FIELD_VALUE = "value"; + + public static Field create() { + return createBuilder().build(); + } + + public static FieldBuilder createBuilder() { + return Field.builder() + .name(FIELD_NAME) + .value(FIELD_VALUE); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java new file mode 100644 index 0000000..1c203e4 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java @@ -0,0 +1,73 @@ +/* + * 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.afm; + +import static de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleMetadataMapper.*; +import static org.assertj.core.api.Assertions.*; + +import java.io.File; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import de.ozgcloud.common.test.ITCase; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import lombok.SneakyThrows; + +@ITCase +class ZustaendigeStelleMetadataMapperITCase { + + @Autowired + private ZustaendigeStelleMetadataMapper mapper; + + private IncomingFile behoerdeMetadataXml; + + @SneakyThrows + @BeforeEach + void setUp() { + behoerdeMetadataXml = IncomingFileTestFactory.createBuilder() + .name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) + .file(new File(TestUtils.class.getClassLoader().getResource(BEHOERDE_METADATA_FILE_NAME).toURI())).build(); + + } + + @Test + void shouldReadXmlNodes() { + var metadata = mapper.readXmlContent(behoerdeMetadataXml); + + assertThat(metadata).get().extracting("fields").asList().usingRecursiveFieldByFieldElementComparator() + .containsAll(ZustaendigeStelleDataTestFactory.ZUSTAENDIGE_STELLE_DATA_FIELDS); + } + + @SneakyThrows + @Test + void shouldCatchException() { + var zustaendigeStelleData = mapper.readXmlContent(IncomingFileTestFactory.createBuilder().file(new File("broken-file")).build()); + + assertThat(zustaendigeStelleData).isEmpty(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java new file mode 100644 index 0000000..d186e66 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java @@ -0,0 +1,196 @@ +/* + * 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.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.io.File; +import java.util.Map; + +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.Spy; + +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +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.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import lombok.SneakyThrows; + +class ZustaendigeStelleMetadataMapperTest { + + @Spy + @InjectMocks + private ZustaendigeStelleMetadataMapper mapper; + + @Mock + private XmlMapper xmlMapper; + + @Nested + class TestParseBehoerdeMetadata { + + private IncomingFile behoerdeMetadataFile; + + private FormData formData; + + @BeforeEach + void setUp() { + behoerdeMetadataFile = IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) + .build(); + formData = FormDataTestFactory.createBuilder() + .zustaendigeStelle(null) + .representation(behoerdeMetadataFile).build(); + } + + @SneakyThrows + @Test + void shouldCallReadBehoerdeMetadata() { + doReturn(ZustaendigeStelleDataTestFactory.BEHOERDE_METADATA).when(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); + + mapper.parseZustaendigeStelleData(formData); + + verify(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); + } + + @Test + void shouldCallMapZustaendigeStelle() { + var behoerdeMetadata = Map.of("key", "value"); + doReturn(behoerdeMetadata).when(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); + + mapper.parseZustaendigeStelleData(formData); + + verify(mapper).mapZustaendigeStelle(behoerdeMetadata); + } + + @Test + void shouldSetParsedZustaendigeStelle() { + doReturn(Map.of("key", "value")).when(mapper).readZustaendigeStelleMetadata(any()); + var zustaendigeStelle = ZustaendigeStelleTestFactory.create(); + doReturn(zustaendigeStelle).when(mapper).mapZustaendigeStelle(any()); + + var result = mapper.parseZustaendigeStelleData(formData); + + assertThat(result.getZustaendigeStelle()).isEqualTo(zustaendigeStelle); + } + } + + @Nested + class TestReadBehoerdeMetadata { + + + private File brokenFile; + + + } + + @Nested + class TestMapZuestaendigeStelle { + + @Test + void shouldSetBezeichnung() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getBezeichnung()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_ANZEIGE_NAME); + } + + @Test + void shouldSetOrganisationEinheitId() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_CALLER_ID); + } + + @Test + void shouldSetGemeindeSchluessel() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getGemeindeSchluessel()).isEqualTo(ZustaendigeStelleDataTestFactory.GEMEINDE_SCHLUESSEL_BP); + } + + @Test + void shouldSetEmail() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_EMAIL); + } + + @Test + void shouldSetAmtlicherRegionalSchluessel() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getAmtlicherRegionalSchluessel()).isEqualTo(ZustaendigeStelleDataTestFactory.AMTLICHER_REGIONALSCHLUESSEL); + } + + @Test + void shouldSetHausanschriftStrasse() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getHausanschriftStrasse()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_STRASSE); + } + + @Test + void shouldSetHausanschriftOrt() { + var zusatendigeStelle = mapZustaendigeStelle(); + + assertThat(zusatendigeStelle.getHausanschriftOrt()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_ORT); + } + + @Test + void shouldSetHausanschriftPlz() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getHausanschriftPlz()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_PLZ); + } + + @Test + void shouldSetTelefon() { + var zusatendigeStelle = mapZustaendigeStelle(); + + assertThat(zusatendigeStelle.getTelefon()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_TELEFON); + } + + private ZustaendigeStelle mapZustaendigeStelle() { + return mapper.mapZustaendigeStelle(ZustaendigeStelleDataTestFactory.BEHOERDE_METADATA); + } + } + + @Test + void shouldApproveResponsibility() { + var formData = FormDataTestFactory.createBuilder() + .representation(IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) + .build()).build(); + + var isResponsible = mapper.isResponsible(formData); + + assertThat(isResponsible).isTrue(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java new file mode 100644 index 0000000..eac3362 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java @@ -0,0 +1,70 @@ +/* + * 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.formcycle; + +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.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.test.util.ReflectionTestUtils; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; + +class FormCycleEngineBasedAdapterTest { + + @InjectMocks + private FormCycleEngineBasedAdapter adapter; + + @Mock + private FormcycleEngineBasedMapper mapper; + @Mock + private FormData formData; + + @BeforeEach + void setup() { + ReflectionTestUtils.setField(adapter, "mappers", List.of(mapper)); + } + + @Test + void shouldParseFormData() { + adapter.parseFormData(formData); + + verify(mapper).parseFormData(formData); + } + + @Test + void shouldNotRemoveParsedFormData() { + when(mapper.parseFormData(any())).thenReturn(formData); + + var result = adapter.parseFormData(FormDataTestFactory.create()); + + assertThat(result).isSameAs(formData); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java new file mode 100644 index 0000000..b6b4468 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java @@ -0,0 +1,221 @@ +/* + * 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.formcycle; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +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.Antragsteller; +import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; + +class FormcycleAntragstellerMapperTest { + + @Spy + @InjectMocks + private FormcycleAntragstellerMapper mapper; + + private static final String VALUE_KEY = "value"; + private static final String LABEL_KEY = "label"; + private static final Map<String, Object> ANTRAGSTELLER_DATA = new HashMap<>(); + private static final Map<String, Object> ANTRAGSTELLER_MAP = Map.of("fsBKAllDaten", Map.of(VALUE_KEY, ANTRAGSTELLER_DATA)); + + @BeforeAll + static void fillAntragstellerData() { + ANTRAGSTELLER_DATA.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede")); + ANTRAGSTELLER_DATA.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME)); + ANTRAGSTELLER_DATA.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname")); + ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname")); + ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum")); + ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort")); + ANTRAGSTELLER_DATA.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail")); + ANTRAGSTELLER_DATA.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon")); + ANTRAGSTELLER_DATA.put("tfAntragstellerAdresse", Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER)); + ANTRAGSTELLER_DATA.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ)); + ANTRAGSTELLER_DATA.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT)); + } + + @Nested + class TestParseFormData { + + @Mock + private Antragsteller antragsteller; + + @Test + void shouldCallGetAntragsteller() { + mapper.parseFormData(buildFormData()); + + verify(mapper).getAntragstellerData(ANTRAGSTELLER_MAP); + } + + @Test + void shouldCallBuildAntragsteller() { + doReturn(Optional.of(ANTRAGSTELLER_DATA)).when(mapper).getAntragstellerData(anyMap()); + + mapper.parseFormData(buildFormData()); + + verify(mapper).buildAntragsteller(ANTRAGSTELLER_DATA); + } + + @Test + void shouldSetAntragsteller() { + doReturn(antragsteller).when(mapper).buildAntragsteller(anyMap()); + + var formData = mapper.parseFormData(buildFormData()); + + assertThat(formData.getAntragsteller()).isSameAs(antragsteller); + } + + @Test + void shouldReturnSameFormData() { + var formData = FormDataTestFactory.create(); + + var result = mapper.parseFormData(formData); + + assertThat(result).isSameAs(formData); + } + + FormData buildFormData() { + return FormData.builder().formData(ANTRAGSTELLER_MAP).build(); + } + } + + @Nested + class TestGetAntragstellerData { + + @Test + void shouldReturnEmpty() { + Map<String, Object> formDataMap = Map.of("key", "value"); + + var result = mapper.getAntragstellerData(formDataMap); + + assertThat(result).isEmpty(); + } + + @Test + void shouldReturnAntragstellerData() { + var result = mapper.getAntragstellerData(ANTRAGSTELLER_MAP); + + assertThat(result).contains(ANTRAGSTELLER_DATA); + } + } + + @Nested + class TestBuildAntragsteller { + + @Test + void shouldSetAnrede() { + var result = buildAntragsteller(); + + assertThat(result.getAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE); + } + + @Test + void shouldSetVorname() { + var result = buildAntragsteller(); + + assertThat(result.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); + } + + @Test + void shouldSetNachname() { + var result = buildAntragsteller(); + + assertThat(result.getNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME); + } + + @Test + void shouldSetGeburtsname() { + var result = buildAntragsteller(); + + assertThat(result.getGeburtsname()).isEqualTo(AntragstellerTestFactory.GEBURTSNAME); + } + + @Test + void shouldSetGeburtsdatum() { + var result = buildAntragsteller(); + + assertThat(result.getGeburtsdatum()).isEqualTo(AntragstellerTestFactory.GEBURTSDATUM); + } + + @Test + void shouldSetGeburtsort() { + var result = buildAntragsteller(); + + assertThat(result.getGeburtsort()).isEqualTo(AntragstellerTestFactory.GEBURTSORT); + } + + @Test + void shouldSetEmail() { + var result = buildAntragsteller(); + + assertThat(result.getEmail()).isEqualTo(AntragstellerTestFactory.EMAIL); + } + + @Test + void shouldSetTelefon() { + var result = buildAntragsteller(); + + assertThat(result.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); + } + + @Test + void shouldSetAdresse() { + var result = buildAntragsteller(); + + assertThat(result.getStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER); + } + + @Test + void shouldSetPlz() { + var result = buildAntragsteller(); + + assertThat(result.getPlz()).isEqualTo(AntragstellerTestFactory.PLZ); + } + + @Test + void shouldSetOrt() { + var result = buildAntragsteller(); + + assertThat(result.getOrt()).isEqualTo(AntragstellerTestFactory.ORT); + } + + Antragsteller buildAntragsteller() { + return mapper.buildAntragsteller(ANTRAGSTELLER_DATA); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java new file mode 100644 index 0000000..bc41d15 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java @@ -0,0 +1,132 @@ +/* + * 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.formsolutions; + +import static de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.IdentifierValueParser; + +class FormSolutionsAntragstellerMapperTest { + + @Spy + private final FormSolutionsAntragstellerMapper mapper = new FormSolutionsAntragstellerMapper(); + + @DisplayName("Parse formData") + @Nested + class TestParseFormData { + private static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; + private static final List<Map<String, Object>> ANTRAGSTELLER_PANEL_CONTENT_LIST = List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), + Map.of(COMPONENTS, List.of( + Map.of(IDENTIFIER_KEY, VORNAME_KEY, STRING_VALUE, VORNAME), + Map.of(IDENTIFIER_KEY, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); + + private static final Map<String, Object> ASSISTANT_MAP = Map.of(PANELS, List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_PANEL_IDENTIFIER), + Map.of(COMPONENTS, ANTRAGSTELLER_PANEL_CONTENT_LIST))); + + private final FormData formData = FormDataTestFactory.createBuilder().antragsteller(null) + .formData(Map.of( + SIMPLE_VALUE_KEY, SIMPLE_VALUE, + FormSolutionsAntragstellerMapper.POSTKORBHANDLE, POSTFACH_ID, + ASSISTANT, ASSISTANT_MAP)) + .build(); + + @Test + void shouldParseAntragsteller() { + var expectedAntragsteller = Antragsteller.builder().vorname(VORNAME).nachname(NACHNAME).postfachId(POSTFACH_ID).build(); + var identifierValueMap = Map.of(VORNAME_KEY, VORNAME, NACHNAME_KEY, NACHNAME); + try (var valuesParser = mockStatic(IdentifierValueParser.class)) { + valuesParser.when(() -> IdentifierValueParser.parsePanelsData(any())).thenReturn(identifierValueMap); + + var resultFormData = parseFormData(); + + assertThat(resultFormData.getAntragsteller()).usingRecursiveComparison().isEqualTo(expectedAntragsteller); + } + } + + @Test + @DisplayName("should process Antragsteller data only") + void shouldNotChangeAnother() { + var resultFormData = parseFormData(); + + assertThat(resultFormData).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData); + assertThat(resultFormData.getFormData()).containsAllEntriesOf( + Map.of(SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE, ASSISTANT, ASSISTANT_MAP)); + } + + private FormData parseFormData() { + return mapper.parseFormData(formData); + } + + @DisplayName("build antragsteller") + @Nested + class TestBuildAntragsteller { + + @Test + void shouldHaveVorname() { + var antragsteller = buildAntragsteller(); + + assertThat(antragsteller.getVorname()).isEqualTo(VORNAME); + } + + @Test + void shouldHaveNachname() { + var antragsteller = buildAntragsteller(); + + assertThat(antragsteller.getNachname()).isEqualTo(NACHNAME); + } + + @Test + void shouldHavePostfachId() { + var antragsteller = buildAntragsteller(); + + assertThat(antragsteller.getPostfachId()).isEqualTo(POSTFACH_ID); + } + + private Antragsteller buildAntragsteller() { + return mapper.buildAntragsteller(formData); + } + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java similarity index 74% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java index 6ef28c2..9dc89c3 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,14 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AttachmentsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; import static org.assertj.core.api.Assertions.*; -import java.util.List; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Map; import java.util.Optional; @@ -43,14 +43,25 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import de.itvsh.kop.common.test.TestUtils; -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import lombok.SneakyThrows; @SpringBootTest @ActiveProfiles({ "local", "itcase" }) public class FormSolutionsEngineBasedAdapterITCase { + + private static final String ZIP_CONTENT_TYPE = "application/zip"; + private static final String FILE_NAME_ZIP_ATTACHMENT = "attachment-2files.zip"; + public static final String FILE_NAME_PDF_REP = "eingang.pdf"; + public static final String FILE_NAME_JSON_REP = "form-data.json"; + @MockBean private SemantikAdapter semantikAdapter; @@ -87,13 +98,6 @@ public class FormSolutionsEngineBasedAdapterITCase { assertThat(data.getAntragsteller()).isNotNull(); } - @Test - void shouldMapPostfachId() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getAntragsteller().getPostfachId()).isEqualTo("51522620-03d2-4507-b1f0-08d86920efed"); - } - @Test void shouldMapVorname() { var data = engineAdapter.parseFormData(formData); @@ -111,11 +115,18 @@ public class FormSolutionsEngineBasedAdapterITCase { @Nested class TestAttachments { + @Test + void shouldBeEmptyForNoAttachments() { + var data = engineAdapter.parseFormData(FormDataTestFactory.createBuilder().clearAttachments().build()); + + assertThat(data.getAttachments()).isEmpty(); + } + @Test void shouldMap() { var data = engineAdapter.parseFormData(formData); - assertThat(data.getAttachments()).isNotNull(); + assertThat(data.getAttachments()).isNotEmpty(); } @Test @@ -221,24 +232,6 @@ public class FormSolutionsEngineBasedAdapterITCase { } } - @Nested - class TestRepresentations { - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getRepresentations()).isNotEmpty(); - } - - @Test - void shouldMapRepresentations() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getRepresentations().get(0)).isNotNull(); - assertThat(data.getNumberOfRepresentations()).isEqualTo(2); - } - } - @Nested class TestZutaendigeStelle { @Test @@ -258,24 +251,38 @@ public class FormSolutionsEngineBasedAdapterITCase { } private FormData prepareTestData() { - var formsolutionsAttachments = createAttachments(List.of( - createFile(FILE_NAME_ZIP_ATTACHMENT, ZIP_DECODED, ZIP_CONTENT_TYPE)), FILE_GROUP_ZIP_NAME); - - Map<String, Object> plainMap = getTestDataFromFile(); - plainMap.put(FIELD_NAME_MAPPED_FILES, Map.of( - ATTACHMENTS, formsolutionsAttachments, REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS)); + var fileGroup = IncomingFileGroupTestFactory.createBuilder() + .name(FormSolutionsFilesMapper.FILE_GROUP_ZIP_NAME) + .clearFiles() + .file(IncomingFileTestFactory.createBuilder() + .name(FILE_NAME_ZIP_ATTACHMENT) + .file(asFile(FILE_NAME_ZIP_ATTACHMENT)) + .size(getFileSize(FILE_NAME_ZIP_ATTACHMENT)) + .contentType(ZIP_CONTENT_TYPE) + .build()) + .build(); + + return FormData.builder().formData(getTestDataFromFile()).attachment(fileGroup).build(); + } - return FormData.builder().formData(plainMap).build(); + @SneakyThrows + private long getFileSize(String fileName) { + Path filePath = Path.of(FormSolutionsEngineBasedAdapterITCase.class.getClassLoader().getResource(fileName).toURI()); + return Files.size(filePath); } private Map<String, Object> getTestDataFromFile() { try { var testData = TestUtils.loadTextFile("formsolutions001.json"); - return objectMapper.readValue(testData, new TypeReference<Map<String, Object>>() { + return objectMapper.readValue(testData, new TypeReference<>() { }); } catch (JsonProcessingException e) { var msg = Optional.ofNullable(e.getCause()).map(Throwable::getMessage).orElseGet(e::getMessage); throw new TechnicalException("Error parsing test JSON " + msg, e); } } + + private File asFile(String path) { + return TempFileUtils.writeTmpFile(TestUtils.loadFile(path)); + } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java similarity index 69% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java index 57251ef..66dd531 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,14 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; import static org.assertj.core.api.Assertions.*; 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; @@ -39,7 +40,11 @@ import org.mockito.Mock; import org.mockito.Spy; import org.springframework.test.util.ReflectionTestUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedMapper; class FormSolutionsEngineBasedAdapterTest { @@ -53,7 +58,7 @@ class FormSolutionsEngineBasedAdapterTest { @Nested class TestParseFormData { - private final FormData formData = FormSolutionsEngineBasedAdapterTestFactory.create(); + private final FormData formData = FormDataTestFactory.create(); @BeforeEach void mockMappers() { @@ -78,19 +83,15 @@ class FormSolutionsEngineBasedAdapterTest { verify(adapter).removeProcessedData(formData); } - @Test - void shouldReturnValue() { - doReturn(formData).when(adapter).removeProcessedData(any()); - - var result = adapter.parseFormData(formData); - - assertThat(result).isEqualTo(formData); - } - @DisplayName("remove processed data") @Nested class TestRemoveProcessedData { + private final Map<String, Object> formDataMap = Map.of(ASSISTANT, "testValue", + ANLIEGEN_ID, "testValue2", KOMMUNALVERWALTUNG_ID, "testValue3", + FormSolutionsAntragstellerMapper.POSTKORBHANDLE, "testValue4"); + private final FormData formData = FormData.builder().formData(formDataMap).build(); + @Test void shouldRemoveAssistant() { var cleanedFormData = adapter.removeProcessedData(formData); @@ -111,6 +112,13 @@ class FormSolutionsEngineBasedAdapterTest { assertThat(cleanedFormData.getFormData()).doesNotContainKey(KOMMUNALVERWALTUNG_ID); } + + @Test + void shouldRemovePostkorbhandle() { + var cleanedFormData = adapter.removeProcessedData(formData); + + assertThat(cleanedFormData.getFormData()).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE); + } } } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java new file mode 100644 index 0000000..69fd45e --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java @@ -0,0 +1,204 @@ +/* + * 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.formsolutions; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +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.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +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; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsFilesMapper.ZippedAttachmentsProcessor; + +class FormSolutionsFilesMapperTest { + + private static final String ATTACHMENT_ZIP_FILE_NAME = "attachments.zip"; + private static final String ZIP_CONTENT_TYPE = "application/zip"; + + @Spy + @InjectMocks + private final FormSolutionsFilesMapper mapper = new FormSolutionsFilesMapper(); + + @Nested + class TestParseFormData { + @Test + void shouldCallReadAttachments() { + mapper.parseFormData(FormDataTestFactory.create()); + + verify(mapper).readAttachments(any()); + } + + @Test + void shouldAddGroup() { + var attachmentGroup = IncomingFileGroupTestFactory.create(); + doReturn(List.of(attachmentGroup)).when(mapper).readAttachments(any()); + + var result = mapper.parseFormData(FormDataTestFactory.create()); + + assertThat(result.getAttachments()).containsOnly(attachmentGroup); + } + + @Test + void shouldHaveNoAttachmentIfMissing() { + doReturn(Collections.emptyList()).when(mapper).readAttachments(any()); + + var result = mapper.parseFormData(FormDataTestFactory.create()); + + assertThat(result.getAttachments()).isEmpty(); + } + + } + + @Nested + class TestZippedAttachmentsProcessor { + + private final List<IncomingFileGroup> attachments = new ArrayList<>(); + + private final ZippedAttachmentsProcessor processor = spy(mapper.new ZippedAttachmentsProcessor(attachments)); + + @Nested + class Process { + + @BeforeEach + void fillAttachmentList() { + attachments.add(IncomingFileGroupTestFactory.create()); + when(processor.nonZipFileGroups()).thenReturn(Stream.empty()); + } + + @Test + void shouldCallExtractAttachments() { + processor.process(); + + verify(processor).extractAttachments(); + } + + @Test + void shouldReturnExtractedGroups() { + var expected = IncomingFileTestFactory.create(); + doReturn(Stream.of(expected)).when(processor).extractAttachments(); + + var result = processor.process(); + + assertThat(result).flatMap(IncomingFileGroup::getFiles).containsOnly(expected); + } + + @Test + void shouldReturnEmptyIfNoAttachments() { + attachments.clear(); + + var result = processor.process(); + + assertThat(result).isEmpty(); + } + } + + @Nested + class ExtractAttachments { + + @Captor + private ArgumentCaptor<IncomingFile> fileCaptor; + + @Test + void shouldCallUnzip() { + attachments.add(buildZipFileGroup()); + + processor.extractAttachments().toList(); + + verify(processor).unzip(fileCaptor.capture()); + } + + @Test + void shouldNotCallUnzipForOtherGroup() { + attachments.add(IncomingFileGroupTestFactory.create()); + + processor.extractAttachments().toList(); + + verify(processor, never()).unzip(any()); + } + + private IncomingFileGroup buildZipFileGroup() { + return IncomingFileGroupTestFactory.createBuilder().clearFiles() + .name(FormSolutionsFilesMapper.FILE_GROUP_ZIP_NAME) + .file(buildZipFile()) + .build(); + } + + } + + @Nested + class Unzip { + + @Test + void shouldCallReadFromZip() { + IncomingFile zipFile = buildZipFile(); + + processor.unzip(zipFile); + + verify(processor).readFromZip(zipFile); + } + + @Test + void resultShouldContainUnzippedContent() { + var resultFile = IncomingFileTestFactory.create(); + doReturn(Stream.of(resultFile)).when(processor).readFromZip(any()); + + var result = processor.unzip(buildZipFile()); + + assertThat(result).containsOnly(resultFile); + } + + @Test + void shouldReturnZipFileOnException() { + doThrow(new RuntimeException()).when(processor).readFromZip(any()); + IncomingFile zipFile = buildZipFile(); + + var result = processor.unzip(zipFile); + + assertThat(result).hasSize(1).contains(zipFile); + } + } + + private IncomingFile buildZipFile() { + return IncomingFileTestFactory.createBuilder() + .name(ATTACHMENT_ZIP_FILE_NAME).contentType(ZIP_CONTENT_TYPE) + .build(); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java similarity index 69% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java index dc4bcd9..93edc16 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,24 +21,32 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsHeaderTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderTestFactory.*; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; 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.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; class FormSolutionsHeaderMapperTest { @Spy + @InjectMocks private final FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper(); + @Mock + private ServiceKontoBuildHelper serviceKontoBuildHelper; @DisplayName("Parse formData") @Nested @@ -103,20 +111,30 @@ class FormSolutionsHeaderMapperTest { assertThat(formHeader.getFormEngineName()).isEqualTo(FormSolutionsHeaderMapper.FORM_ENGINE_NAME); } - private FormHeader buildFormHeader() { - return mapper.buildFormHeader(formData); - } - } + @DisplayName("service konto") + @Nested + class TestGetServiceKonto { - @DisplayName("remove processed data") - @Nested - class TestRemoveProcessedData { + @Test + void shouldCallServiceKontoBuildHelper() { + buildFormHeader(); - @Test - void shouldRemoveTransactionId() { - var cleanedFormData = mapper.removeProcessedData(formData); + verify(serviceKontoBuildHelper).buildOsiServiceKonto(any()); + } + + @Test + void shouldNotCallServiceKontoBuildHelper() { + var formDataWithoutPostkorbHandle = FormDataUtils.from(formData).remove(FormSolutionsHeaderMapper.POSTKORBHANDLE).build(); - assertThat(cleanedFormData).doesNotContainKey(FormSolutionsHeaderMapper.TRANSACTION_ID); + mapper.buildFormHeader(formDataWithoutPostkorbHandle); + + verify(serviceKontoBuildHelper, never()).buildOsiServiceKonto(any()); + } + + } + + private FormHeader buildFormHeader() { + return mapper.buildFormHeader(formData); } } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java similarity index 63% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java index b221775..580d247 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,19 +21,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsHeaderMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper.*; import java.util.Map; +import java.util.UUID; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper; public class FormSolutionsHeaderTestFactory { public static final String FORM_NAME = "form name"; public static final Object REQUEST_ID = "transaction id"; + public static final String POSTKORBHANDLE_VALUE = UUID.randomUUID().toString(); public static FormData create() { return createBuilder().build(); @@ -42,7 +45,8 @@ public class FormSolutionsHeaderTestFactory { public static FormData.FormDataBuilder createBuilder() { return FormData.builder() .formData(Map.of( - ASSISTANT, Map.of(IDENTIFIER, FORM_NAME), - TRANSACTION_ID, REQUEST_ID)); + ASSISTANT, Map.of(IDENTIFIER_KEY, FORM_NAME), + TRANSACTION_ID, REQUEST_ID, + FormSolutionsHeaderMapper.POSTKORBHANDLE, POSTKORBHANDLE_VALUE)); } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java similarity index 60% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java index 5d7e4d2..4d79910 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,21 +21,28 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelTestFactory.*; import static org.assertj.core.api.Assertions.*; import java.util.Map; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper; + class FormSolutionsPanelMapperTest { + private FormSolutionsPanelMapper mapper = new FormSolutionsPanelMapper(); @Nested class TestMapping { + @Test void shouldMap() { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.create()); @@ -59,6 +66,7 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.create()); var panelContent = (Map<String, Object>) formData.getFormData().get(PANEL_0); + assertThat(panelContent).containsEntry(DATE_FIELD, DATE_VALUE_CONTENT).containsEntry(TEXT_FIELD, STRING_VALUE_CONTENT); } @@ -81,6 +89,7 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(NESTED_PANEL_FORM).build()); var group = (Map<String, Object>) formData.getFormData().get(PANEL_0); + assertThat(group).containsKey(GROUP_IDENTIFIER); } @@ -90,6 +99,7 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(NESTED_PANEL_FORM).build()); var group = (Map<String, Object>) ((Map<String, Object>) formData.getFormData().get(PANEL_0)).get(GROUP_IDENTIFIER); + assertThat(group).containsEntry(DATE_FIELD, DATE_VALUE_CONTENT); } @@ -99,8 +109,79 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(PANEL_FORM_EMPTY).build()); var group = (Map<String, Object>) ((Map<String, Object>) formData.getFormData().get(PANEL_0)).get(TEXT_FIELD); + assertThat(group).isNull(); } } } + + @Nested + class TestGetPanels { + + @Test + void shoudReturnPanels() { + var panels = FormSolutionsPanelMapper.getPanels(FormSolutionsPanelTestFactory.create()); + + assertThat(panels).isEqualTo(PANEL_LIST); + } + + @Test + @DisplayName("should return empty list when ASSISTANT map is missing") + void shouldHandleMissingAssistant() { + var formData = FormSolutionsPanelTestFactory.createBuilder().formData(Map.of()).build(); + + var panels = FormSolutionsPanelMapper.getPanels(formData); + + assertThat(panels).isEmpty(); + } + + @Test + @DisplayName("should return empty list when PANELS map is missing") + void shouldHandleMissingPanels() { + var formData = FormSolutionsPanelTestFactory.createBuilder().formData(Map.of(ASSISTANT, Map.of())).build(); + + var panels = FormSolutionsPanelMapper.getPanels(formData); + + assertThat(panels).isEmpty(); + } + + @Test + void shouldHandleNullFormDataMap() { + var panels = FormSolutionsPanelMapper.getPanels(FormData.builder().build()); + + assertThat(panels).isEmpty(); + } + + @Test + void shouldHandleNullFormData() { + var panels = FormSolutionsPanelMapper.getPanels(null); + + assertThat(panels).isEmpty(); + } + } + + @Nested + class TestGetComponents{ + + @Test + void shouldReturnComponentList() { + var components = FormSolutionsPanelMapper.getComponentList(PANEL_LIST.get(0)); + + assertThat(components).isEqualTo(COMPONENT_LIST); + } + + @Test + void shouldHandleNull() { + var components = FormSolutionsPanelMapper.getComponentList(null); + + assertThat(components).isEmpty(); + } + + @Test + void shouldHandleEmptyMap() { + var components = FormSolutionsPanelMapper.getComponentList(Map.of()); + + assertThat(components).isEmpty(); + } + } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java similarity index 78% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java index b269a38..49f8820 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,15 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; import java.util.List; import java.util.Map; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; public class FormSolutionsPanelTestFactory { public static final String PANEL_0 = "Panel_0_1"; @@ -41,47 +41,47 @@ public class FormSolutionsPanelTestFactory { public static final String FORM = "AS_123"; public static final List<Map<String, Object>> COMPONENT_LIST = List.of( Map.of( - IDENTIFIER, TEXT_FIELD, + IDENTIFIER_KEY, TEXT_FIELD, STRING_VALUE, STRING_VALUE_CONTENT), Map.of( - IDENTIFIER, DATE_FIELD, + IDENTIFIER_KEY, DATE_FIELD, STRING_VALUE, DATE_VALUE_CONTENT)); public static final List<Map<String, Object>> EMPTY_COMPONENT_LIST = List.of( - Map.of(IDENTIFIER, TEXT_FIELD, "needed", false)); + Map.of(IDENTIFIER_KEY, TEXT_FIELD, "needed", false)); public static final List<Map<String, Object>> NESTED_COMPONENT_LIST = List.of( Map.of( - IDENTIFIER, GROUP_IDENTIFIER, + IDENTIFIER_KEY, GROUP_IDENTIFIER, COMPONENTS, List.of(Map.of( - IDENTIFIER, DATE_FIELD, + IDENTIFIER_KEY, DATE_FIELD, STRING_VALUE, DATE_VALUE_CONTENT)))); public static final List<Map<String, Object>> PANEL_LIST = List.of(Map.of( - IDENTIFIER, PANEL_0, + IDENTIFIER_KEY, PANEL_0, COMPONENTS, COMPONENT_LIST)); public static final List<Map<String, Object>> PANEL_LIST_EMPTY = List.of(Map.of( - IDENTIFIER, PANEL_0, + IDENTIFIER_KEY, PANEL_0, COMPONENTS, EMPTY_COMPONENT_LIST)); public static final List<Map<String, Object>> NESTED_PANEL_LIST = List.of(Map.of( - IDENTIFIER, PANEL_0, + IDENTIFIER_KEY, PANEL_0, COMPONENTS, NESTED_COMPONENT_LIST)); public static final Map<String, Object> PANEL_FORM = Map.of( ASSISTANT, Map.of( - IDENTIFIER, FORM, + IDENTIFIER_KEY, FORM, PANELS, PANEL_LIST)); public static final Map<String, Object> NESTED_PANEL_FORM = Map.of( ASSISTANT, Map.of( - IDENTIFIER, FORM, + IDENTIFIER_KEY, FORM, PANELS, NESTED_PANEL_LIST)); public static final Map<String, Object> PANEL_FORM_EMPTY = Map.of( ASSISTANT, Map.of( - IDENTIFIER, FORM, + IDENTIFIER_KEY, FORM, PANELS, PANEL_LIST_EMPTY)); public static FormData create() { diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java similarity index 54% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java index e50be8e..4315e2c 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,19 +21,23 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsZustaendigeStelleMapper.*; +import static de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsZustaendigeStelleMapper.*; import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; +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.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsZustaendigeStelleMapper; class FormSolutionsZustaendigeStelleMapperTest { @@ -44,31 +48,34 @@ class FormSolutionsZustaendigeStelleMapperTest { @Nested class TestParseFormData { - private final FormData formData = FormSolutionsZustaendigeStelleTestFactory.create(); - - @Test - void shouldCallBuildZustaendigeStelle() { - parseFormData(); + private FormData formData; - verify(mapper).buildZustaendigeStelle(formData); + @BeforeEach + void setup() { + formData = FormDataTestFactory.createBuilder() + .zustaendigeStelle(null) + .formData(Map.of( + FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE, + FormSolutionsZustaendigeStelleMapper.ZUSTAENDIGE_STELLE, ORGANISATIONSEINHEIT_ID)) + .build(); } @Test - void shouldCallRemoveProcessedData() { - parseFormData(); + void shouldParseFormData() { + var resultFormData = mapper.parseFormData(formData); - verify(mapper).removeProcessedData(formData); + assertThat(resultFormData.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEIT_ID); + assertThat(resultFormData.getFormData()).doesNotContainKey(ZUSTAENDIGE_STELLE); } @Test - void shouldReturnValue() { - var result = parseFormData(); - - assertThat(result).usingRecursiveComparison().ignoringFields("zustaendigeStelle", "formData").isEqualTo(formData); - } + @DisplayName("should process ZustaendigeStelle data only") + void shouldNotChangeAnother() { + var resultFormData = mapper.parseFormData(formData); - private FormData parseFormData() { - return mapper.parseFormData(formData); + assertThat(resultFormData).usingRecursiveComparison().ignoringFields("zustaendigeStelle", "formData").isEqualTo(formData); + assertThat(resultFormData.getFormData()) + .containsAllEntriesOf(Map.of(FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE)); } @DisplayName("build zustaendigeStelle") diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java new file mode 100644 index 0000000..f0badfa --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java @@ -0,0 +1,78 @@ +/* + * 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.formsolutions; + +import static de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; +import static org.assertj.core.api.Assertions.*; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.IdentifierValueParser; + +class IdentifierValueParserTest { + + private static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; + private static final List<Map<String, Object>> ANTRAGSTELLER_PANEL_CONTENT_LIST = List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), + Map.of(COMPONENTS, List.of( + Map.of(IDENTIFIER_KEY, VORNAME_KEY, STRING_VALUE, VORNAME), + Map.of(IDENTIFIER_KEY, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); + + private static final Map<String, Object> ASSISTANT_MAP = Map.of(PANELS, List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_PANEL_IDENTIFIER), Map.of(COMPONENTS, ANTRAGSTELLER_PANEL_CONTENT_LIST))); + + private FormData formData = FormDataTestFactory.createBuilder() + .formData(Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE, + FormSolutionsHeaderMapper.POSTKORBHANDLE, POSTFACH_ID, ASSISTANT, ASSISTANT_MAP)) + .build(); + + @Test + void shoudParseData() { + var expectedMap = Map.of(VORNAME_KEY, VORNAME, NACHNAME_KEY, NACHNAME); + + var stringValueMap = IdentifierValueParser.parsePanelsData(formData); + + assertThat(stringValueMap).isEqualTo(expectedMap); + } + + @Test + void shouldHandleNullPanels() { + formData = FormDataTestFactory.createBuilder().formData(null).build(); + + var stringValueMap = IdentifierValueParser.parsePanelsData(formData); + + assertThat(stringValueMap).isEmpty(); + } + +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapperTest.java new file mode 100644 index 0000000..7838271 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapperTest.java @@ -0,0 +1,145 @@ +/* + * 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.xta; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.io.InputStream; +import java.util.List; +import java.util.stream.IntStream; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import lombok.SneakyThrows; + +class XtaZipRepresentationsMapperTest { + + private static final String ZIP_CONTENT_TYPE = "application/zip"; + + @Spy + private final XtaZipRepresentationsMapper mapper = new XtaZipRepresentationsMapper(); + + @Nested + class TestExtractZipFileEctract { + + @Test + void shouldExtractZipFiles() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + initZipRepresentationMocks(zipAttachment); + + var formData = mapper.parseFormData(createTestFormDataWithZipRepresentation()); + + assertThat(formData.getRepresentations()).hasSize(3); + } + } + + FormData createTestFormDataWithZipRepresentation() { + List<IncomingFile> representations = List.of( + IncomingFileTestFactory.createBuilder() + .name("attachments.zip") + .contentType(ZIP_CONTENT_TYPE) + .build()); + + return FormData.builder().representations(representations).numberOfRepresentations(representations.size()).build(); + } + + @Test + void shouldSetRepresentationsNumber() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + initZipRepresentationMocks(zipAttachment); + + var formData = mapper.parseFormData(createTestFormDataWithZipRepresentation()); + + assertThat(formData.getNumberOfRepresentations()).isEqualTo(3); + } + } + + @Test + void shouldIgnoreNonZipFiles() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + + var formData = mapper.parseFormData(createTestFormDataWithoutZipRepresentation()); + + assertThat(formData.getNumberOfRepresentations()).isEqualTo(1); + } + } + + FormData createTestFormDataWithoutZipRepresentation() { + List<IncomingFile> representations = List.of( + IncomingFileTestFactory.create()); + return FormData.builder().representations(representations).numberOfRepresentations(representations.size()).build(); + } + + @Test + void shouldNotDeleteOriginalZipFile() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + initZipRepresentationMocks(zipAttachment); + + var formData = mapper.parseFormData(createTestFormDataWithZipRepresentation()); + + assertThat(formData.getRepresentations()).map(IncomingFile::getContentType) + .filteredOn(e -> e.equals(XtaZipRepresentationsMapper.ZIP_CONTENT_TYPE)).hasSize(1); + } + } + + @Test + void shouldDoNothingOnEmptyRepresentations() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + + var formData = mapper.parseFormData(createTestFormDataWithoutRepresentation()); + + assertThat(formData.getRepresentations()).isEmpty(); + } + } + + FormData createTestFormDataWithoutRepresentation() { + return FormData.builder().numberOfRepresentations(0).build(); + } + } + + @Test + void testIsZipFilePredicate() { + + assertThat(XtaZipRepresentationsMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.create())).isFalse(); + assertThat(XtaZipRepresentationsMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.createBuilder().contentType(ZIP_CONTENT_TYPE).build())) + .isTrue(); + } + + @SneakyThrows + private static void initZipRepresentationMocks(MockedStatic<ZipAttachmentReader> zipAttachmentMock) { + var contentEntries = IntStream.range(0, 2).boxed().map(i -> IncomingFileTestFactory.createBuilder().name(i.toString()).build()).toList(); + ZipAttachmentReader mock = when(mock(ZipAttachmentReader.class).readContent()).thenReturn(contentEntries).getMock(); + zipAttachmentMock.when(() -> ZipAttachmentReader.from(any(InputStream.class), any())).thenReturn(mock); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapperTest.java new file mode 100644 index 0000000..32b2177 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapperTest.java @@ -0,0 +1,241 @@ +/* + * 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.formbased; + +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.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.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.semantik.enginebased.ServiceKontoBuildHelper; + +class DFoerdermittelFormBasedMapperTest { + + @Spy + @InjectMocks + private DFoerdermittelFormBasedMapper mapper; + + @Mock + private ServiceKontoBuildHelper serviceKontoHelper; + + @Nested + class TestIsResponsible { + + @Test + void shouldBeTrueWithFachnachricht() { + var responsible = mapper.isResponsible(createWithFachnachricht()); + + assertThat(responsible).isTrue(); + } + + @Test + void shouldBeFalseForOuther() { + var responsible = mapper.isResponsible(FormDataTestFactory.create()); + + assertThat(responsible).isFalse(); + } + } + + @Nested + class TestParseFachnachricht { + + @Nested + class ExtractData { + @Test + void shouldHaveFormData() { + var result = mapper.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); + + assertThat(result).isNotNull(); + } + + @Test + void shouldHavePages() { + var result = mapper.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); + + assertThat(result).containsKey("Pages"); + } + + @Test + void shouldHaveInboxRef() { + var result = mapper.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); + + assertThat(result).containsEntry("InboxReference", "sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a"); + } + } + + @Nested + class HandleFachnachrichtData { + + private Map<String, Object> extracted = Map.of("name", "Theo"); + + @Test + void shouldCallExtractData() { + doReturn(extracted).when(mapper).extractFormDataFormXML(any()); + + mapper.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); + + verify(mapper).extractFormDataFormXML(notNull()); + } + + @Test + void shouldAddMap() { + doReturn(extracted).when(mapper).extractFormDataFormXML(any()); + + var result = mapper.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); + + assertThat(result.getFormData()).containsEntry("Fachnachricht", extracted); + } + + @Test + void shouldIgnoreEmptyData() { + doReturn(Collections.emptyMap()).when(mapper).extractFormDataFormXML(any()); + + var result = mapper.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 { + + @Captor + private ArgumentCaptor<Map<String, Object>> fachnachrichtCaptor; + + @Test + void shouldCallAddServiceKonto() { + var formData = DFoerdermittelFormDataTestFactory.create(); + + mapper.processFachnachricht(formData); + + verify(mapper).addServiceKonto(same(formData), fachnachrichtCaptor.capture()); + assertThat(fachnachrichtCaptor.getValue()).containsAllEntriesOf(DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + } + + @Test + void shouldCallAddOrganisationsEinheitId() { + var extened = DFoerdermittelFormDataTestFactory.create(); + doReturn(extened).when(mapper).addServiceKonto(any(), any()); + + mapper.processFachnachricht(DFoerdermittelFormDataTestFactory.create()); + + verify(mapper).addOrganisationsEinheitId(same(extened), notNull()); + } + } + + @Nested + class TestAddServiceKonto { + + @BeforeEach + void init() { + when(serviceKontoHelper.buildOsiServiceKonto(any())).thenReturn(ServiceKontoTestFactory.create()); + } + + @Test + void shouldHaveServiceKonto() { + var formData = mapper.addServiceKonto(DFoerdermittelFormDataTestFactory.create(), + DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + + assertThat(formData.getHeader().getServiceKonto().getPostfachAddresses().get(0).getIdentifier()) + .asInstanceOf(type(StringBasedIdentifier.class)).extracting(StringBasedIdentifier::getPostfachId) + .isEqualTo(PostfachAddressTestFactory.POSTFACH_ID); + } + + @Test + void shouldRemovePrefix() { + mapper.addServiceKonto(DFoerdermittelFormDataTestFactory.create(), DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + + verify(serviceKontoHelper).buildOsiServiceKonto(DFoerdermittelFormDataTestFactory.POSTFACH_ID); + } + } + + @Nested + class TestExtractPrefix { + @Test + void shouldRemoveAllBeforeLastSlash() { + var result = mapper.extractPrefix("bla/bla/bla/12345"); + + assertThat(result).isEqualTo("12345"); + } + + @Test + void shouldBeFineWithoutSlash() { + var result = mapper.extractPrefix("12345"); + + assertThat(result).isEqualTo("12345"); + } + } + + @Nested + class TestAddOrganisationsEinheitId { + @Test + void shouldHaveOrganisationsEinheitId() { + var formData = mapper.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create(), + DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + + assertThat(formData.getZustaendigeStelle()).isNotNull().extracting(ZustaendigeStelle::getOrganisationseinheitenId) + .isEqualTo(DFoerdermittelFormDataTestFactory.ORGANISATIONS_EINHEIT_ID); + } + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormDataTestFactory.java new file mode 100644 index 0000000..35007f7 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormDataTestFactory.java @@ -0,0 +1,48 @@ +/* + * 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.formbased; + +import java.util.Map; + +import de.ozgcloud.eingang.common.formdata.FormData; + +class DFoerdermittelFormDataTestFactory { + + static final String POSTFACH_ID = "4dd01647-b9d9-4775-1b50-08da3d83800a"; + static final String ORGANISATIONS_EINHEIT_ID = "9795669"; + + static FormData create() { + return createBuilder().build(); + } + + static FormData.FormDataBuilder createBuilder() { + return FormData.builder() + .formData(Map.of("Fachnachricht", createFachnachrichtMap())); + } + + static Map<String, Object> createFachnachrichtMap() { + return Map.of("InboxReference", "sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a", + "MetaText1", ORGANISATIONS_EINHEIT_ID); + } +} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java similarity index 61% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapterTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java index 46a375a..7d0b1e4 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,14 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.Collections; +import java.util.ArrayList; import java.util.List; -import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -37,7 +37,10 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.formbased.FormBasedMapper; +import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; class FormBasedSemantikAdapterTest { @@ -45,40 +48,45 @@ class FormBasedSemantikAdapterTest { @InjectMocks private FormBasedSemantikAdapter adapter; @Spy - private List<FormBasedMapper> mappers; + private List<FormBasedMapper> mappers = new ArrayList<>(); @Mock private FormBasedMapper mapper; @Nested class TestParseFromData { - private FormData formData = FormData.builder().build(); - private AnliegenId anliegenId = AnliegenId.from(UUID.randomUUID().toString()); + private FormData formData = FormDataTestFactory.create(); @BeforeEach void mockEngineBasedMapper() { - when(mappers.size()).thenReturn(1); - when(mappers.get(anyInt())).thenReturn(mapper); - - doReturn(anliegenId).when(adapter).getAnliegenId(any(FormData.class)); + when(mapper.isResponsible(any())).thenReturn(true); + mappers.add(mapper); } @Test - void shouldCallMappersOnMatchingAnliegenId() { - when(mapper.getResponsibleAnliegenIds()).thenReturn(List.of(anliegenId)); - + void shouldCallMapperIfResponsible() { adapter.parseFormData(formData); verify(mapper).parseFormData(formData); } @Test - void shouldNotCallMappersOnNonMatchingAnliegenId() { - when(mapper.getResponsibleAnliegenIds()).thenReturn(Collections.emptyList()); + void shouldNotCallMappersIfNOTREsponsible() { + when(mapper.isResponsible(any())).thenReturn(false); adapter.parseFormData(formData); verifyNoMoreInteractions(mapper); } + + @Test + void shouldReturnMappingResult() { + var expected = FormDataTestFactory.create(); + when(mapper.parseFormData(any())).thenReturn(expected); + + var result = adapter.parseFormData(formData); + + assertThat(result).isSameAs(expected); + } } } \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/attachment-1file.zip b/semantik-adapter/src/test/resources/attachment-1file.zip new file mode 100644 index 0000000000000000000000000000000000000000..1bde2108dcd8ce6edf4d1afe2c221ededc9915a1 GIT binary patch literal 291 zcmWIWW@Zs#U|`^2h>org+4m&9yO4o_VJ-s$10RD7Lse#hZdztes;+@vNkvI$2qy#c z-D1}ymC}RBr4`%^j4WRn85qF&ea{}`JnX>Za&h<S8B9J}p2A(KJqfC7%T=3qpLf#R z$#?kodx@kAcBc<qOiIXV@+mqlXs4>0-FxJ9@rwBqmRXkhByN~=@bGE54nA(TuCJ{t z?w@+v>1Fb34TnlSW8=k_ELl}oH#101slO+?wn}X8wzu2?-i%Cg%($E`!2kk`3=9lQ h8bK^{kFY{Kg64?;Z&o&tYDNY|h7bk@hMgb|0{{)1T5<pY literal 0 HcmV?d00001 diff --git a/semantik-adapter/src/test/resources/attachment-2files.zip b/semantik-adapter/src/test/resources/attachment-2files.zip new file mode 100644 index 0000000000000000000000000000000000000000..1cd6370639e85040002e6b17df7dc2c36b877673 GIT binary patch literal 3260 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 ZYN%tF$;t+D0TTlg!wLolhJV~39soeH{H_21 literal 0 HcmV?d00001 diff --git a/semantik-adapter/src/test/resources/attachment-empty.zip b/semantik-adapter/src/test/resources/attachment-empty.zip new file mode 100644 index 0000000000000000000000000000000000000000..c429aa655987d9210d6fb3c7aa5bfd36e60552ba GIT binary patch literal 174 zcmWIWW@Zs#0D&p9jlw`Q46`vPFr?-dlvL`6hVU}5M_Qdo2H|L{6Un6&+zgB?Ul|z~ nz<L9`8JR?wahn1&@vS3>MXZ^uY#`N)42%pR3=9k|APxfn8`~Ug literal 0 HcmV?d00001 diff --git a/semantik-adapter/src/test/resources/attachment-encrypted.zip b/semantik-adapter/src/test/resources/attachment-encrypted.zip new file mode 100644 index 0000000000000000000000000000000000000000..b144825f7836af85657e3abd26fa87da9ec92747 GIT binary patch literal 308 zcmWIWW@Zs#;AG%n$cb(YDN`}KR>Q!+Fo%JGfs;Xop*S}&Cr7WOq9inglYzPBs9O>U zmsW5yFtQ}&Byh7ZG9_?7Wm}>CcW&o3TOl#o+Jg!!rX;##r!Y(j*vjGk|K;b88}qmp z&bSow?e_=cwI{eVs?NmyY`nL4kE_1S(%1V8cGlZ%e=WIAtYMj%xof`Hn#+klriG;# zZ`i32pPl)dvuFK;SMSfgJD{$3c0%^L-^-o^OC7v_Y~9hM?xW&*8zWT%yxBRB9Ub7! w$Rx*%%R>?jAi&7Lz_6qd#6t2OE5v(fUJLMMWdkW>WME|QXJBAB58^NY0GLZ<$N&HU literal 0 HcmV?d00001 diff --git a/semantik-adapter/src/test/resources/behoerde_metadata.xml b/semantik-adapter/src/test/resources/behoerde_metadata.xml new file mode 100644 index 0000000..66b1f00 --- /dev/null +++ b/semantik-adapter/src/test/resources/behoerde_metadata.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<data xmlns="http://xmlns.cit.de/assistants/store" name="myForm" class="de.cit.assistants.DataBean"> + <field type="string" readonly="true" name="behoerde_anzeige_name">Landratsamt XYZ (Testbehörde für BDA)</field> + <field type="string" readonly="true" name="behoerde_caller_id">87331322433</field> + <field type="string" readonly="true" name="behoerde_pki_email"></field> + <field type="string" readonly="true" name="behoerde_link"> + https://redesign.bayernportal.bayern.de/dokumente/behoerde/87331322433</field> + <field type="string" readonly="true" name="behoerde_sicherer_kontakt_link"></field> + <field type="string" readonly="true" name="behoerde_postkorb_eakte"></field> + <field type="string" readonly="true" name="behoerde_organisationseinheit_eakte"></field> + <field type="string" readonly="true" name="gemeinde_schluessel_bp">09189155</field> + <field type="string" readonly="true" name="amtlicher_regionalschluessel">091890000000</field> + <field type="string" readonly="true" name="behoerde_email">poststelle@testbehoerde.bayern</field> + <field type="string" readonly="true" name="behoerde_telefon">+49 123 45-0</field> + <field type="string" readonly="true" name="behoerde_telefax">+49 12 45-7</field> + <field type="string" readonly="true" name="behoerde_hausanschrift_strasse">Teststraße 1</field> + <field type="string" readonly="true" name="behoerde_hausanschrift_plz">12345</field> + <field type="string" readonly="true" name="behoerde_hausanschrift_ort">Musterstadt</field> + <field type="string" readonly="true" name="behoerde_safeId"></field> + <field type="string" readonly="true" name="dvdv_praefix">bab</field> + <field type="string" readonly="true" name="dvdv_kennung">09189</field> +</data> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/eingang.pdf b/semantik-adapter/src/test/resources/eingang.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f31f40e88a8afa2258d07a82bc55d44d86468b1f GIT binary patch literal 41620 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 Vi%P&Xq_L&BxjC1rs;j>n7XWZg&rARS literal 0 HcmV?d00001 diff --git a/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml b/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml new file mode 100644 index 0000000..618c481 --- /dev/null +++ b/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml @@ -0,0 +1,32 @@ +<?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/semantik-adapter/src/test/resources/zip-file-0.txt b/semantik-adapter/src/test/resources/zip-file-0.txt new file mode 100644 index 0000000..7073e65 --- /dev/null +++ b/semantik-adapter/src/test/resources/zip-file-0.txt @@ -0,0 +1,2 @@ +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. + diff --git a/semantik-adapter/src/test/resources/zip-file-1.txt b/semantik-adapter/src/test/resources/zip-file-1.txt new file mode 100644 index 0000000..cc0e761 --- /dev/null +++ b/semantik-adapter/src/test/resources/zip-file-1.txt @@ -0,0 +1,796 @@ +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. + +augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. + +augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait diff --git a/semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip b/semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip new file mode 100644 index 0000000000000000000000000000000000000000..028b50d4663558eb718abfe2b568d6ac1671521c GIT binary patch literal 17184 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 literal 0 HcmV?d00001 diff --git a/semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip b/semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip new file mode 100644 index 0000000000000000000000000000000000000000..2648814ae1d461b3812d16e8274af15041925c26 GIT binary patch literal 10374 zcmWIWW@Zs#U|`^2u=1ZBc1G*eymRUd3=9kl7z7z)7}7FxQp+<-GV)4ua*Fj*5=%lu zI2oA#Yk8%BaA^fM10%}|W(Ec@@#Y{SBLf3N!-Rk9-*Iq(3>n3vAut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UjN(1R8EPJ2Qbi;P^k@`Y@OU;*H|b5Eu=C(GVC7fzc2c4S_)%0v|X7 wycwC~m~kx)lz_W^Nh64fWuYJ|WT7D1BEbM}RyL3ZMg~TPa0UhjNevJW0K-Hy(EtDd literal 0 HcmV?d00001 diff --git a/sonar-project.properties b/sonar-project.properties index 8660b9e..b7f5250 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,5 +1,5 @@ # -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# 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 diff --git a/src/main/helm/Chart.yaml b/src/main/helm/Chart.yaml new file mode 100644 index 0000000..2a6f1ab --- /dev/null +++ b/src/main/helm/Chart.yaml @@ -0,0 +1,31 @@ +# +# 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. +# + +apiVersion: v1 +appVersion: "1.1" +description: A Helm chart for Intelliform Adapter +name: Intelliform-Adapter +version: 0.0.0-MANAGED-BY-JENKINS +icon: https://simpleicons.org/icons/helm.svg + diff --git a/src/main/helm/README.md b/src/main/helm/README.md new file mode 100644 index 0000000..0d0224d --- /dev/null +++ b/src/main/helm/README.md @@ -0,0 +1,93 @@ +# Intelliform Adapter + +Adapter zum empfangen von Formulardaten von einem IntellForm basierten Formularserver, zum Beispiel iAFM (integriertes Antrags- und Formularmanagement). + +## Routingkonfiguration + +### Vorgang-Manager Instanzen + +Für alle Vorgang-Manager-Instanzen, die von dem Adapter erreichbar sein sollen, muss in das _Environment_ ein Eintrag mit dem GRPC-Service ergänzt werden: + +```yaml +grpc.client.vorgang-manager-*vorgang-manager-name*.address:*url und port* +grpc.client.vorgang-manager-*vorgang-manager-name*.negotiationType: PLAINTEXT +``` + +### Fallback Strategy + +Die Fallback Stratey steuert wie mit Eingängen umgegangen werden soll, für die keine passende Vorgang-Manager-Instanze gefunden werden konnte. + +Folgende Optionen stehen zur Verfügung: + +- **DENY** der Antrag wird mit einer Fehlermeldung abgelehnt. Dies funktioniert nur, solange die Abarbeitung synchron erfolgt. + +- **FUNDSTELLE** der Antrag wird an eine zentrale Fundstelle weitergeleitet. Dafür muss der Name der Vorgang-Manager-Instanze, die als Fundstelle fungiert, eingetragen werden. + +### Routing Strategy + +Die Routing Strategy steuert wie das Routing konfiguriert wird und wieviele Vorgang-Manager-Instanzen berücksichtigt werden können. + +Folgende Optionen stehen zur Verfügung: + +- **MULTI** es kann an beliebig viele Vorgang-Manager-Instanzen geroutet werden. Dafür muss in der Environment ein Mapping der Organisationseinheit-Id auf den Namen einer Vorgang-Manager-Instanz konfiguriert werden. + +```yaml +ozgcloud.adapter.organisationseinheiten.*id*: *vorgang-manager-name* +``` + +- **SINGLE** es wird immer nur an eine Vorgang-Manager-Instanze geroutet, der Name der Instanz ist im Feld 'Vorgang-Manager Name' anzugeben. + +### Beispielkonfiguration + +```yaml +env: + springProfiles: "oc, dev" + grpc: + - name: grpc_client_vorgang-manager-test_address + value: "vorgang-manager.test:9090" + - name: grpc_client_vorgang-manager-test_negotiationType + value: PLAINTEXT + - name: ozgcloud.adapter.organisationseinheiten.1357913579 + value: test +image: + tag: snapshot-latest +imageCredentials: + email: webmaster@ozg-sh.de + password: + registry: docker.ozg-sh.de + username: ozgcloud +ingress: + host: kiel-afm.dev.by.ozg-cloud.de +replicaCount: 2 +resources: + limits: + cpu: 1 + memory: 1200Mi + requests: + cpu: 100m + memory: 250Mi +global: + cattle: + clusterId: c-8g78g + clusterName: ozg-dev + systemDefaultRegistry: "" + systemDefaultRegistry: "" +routing: + fallbackStrategy: FUNDSTELLE + fundstelleVorgangManagerName: kiel + routingStrategy: MULTI + targetVorgangManagerName: kiel +``` + +### Benutzung beliebiger environment Werte + +In jedem der Projekte kann man beliebige weitere environments setzen. Dazu muss man in der jeweiligen values.yaml unter env.customList ein name value Paar setzen: + +```yaml +env: + customList: + - name: Dinge + value: true + - name: ... + value: ... +``` diff --git a/src/main/helm/templates/NOTES.txt b/src/main/helm/templates/NOTES.txt new file mode 100644 index 0000000..27dc6d6 --- /dev/null +++ b/src/main/helm/templates/NOTES.txt @@ -0,0 +1,24 @@ +==== + 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. +==== + diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl new file mode 100644 index 0000000..0915f0f --- /dev/null +++ b/src/main/helm/templates/_helpers.tpl @@ -0,0 +1,96 @@ +{{/* 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: afm-adapter +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" . }} +ozg-component: eingangsadapter +{{- end -}} + +{{- define "app.matchLabels" }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/namespace: {{ include "app.namespace" . }} +{{- end -}} + +{{- define "app.imagePullSecret" }} +{{- with .Values.imageCredentials }} +{{- printf "{\"auths\":{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}}" .registry .username .password .email (printf "%s:%s" .username .password | b64enc) | b64enc }} +{{- end }} +{{- end }} + +{{- define "app.envSpringProfiles" }} +{{- if (.Values.env).overrideSpringProfiles -}} +{{ printf "%s" (.Values.env).overrideSpringProfiles }} +{{- else -}} +{{ printf "oc, %s" (include "app.ozgcloudEnvironment" . ) }} +{{- end -}} +{{- end -}} + +{{- define "app.ozgcloudEnvironment" -}} +{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}} +{{- end -}} + +{{- define "app.ozgcloudBezeichner" -}} +{{ $length := len (.Values.ozgcloud).bezeichner }} +{{- if ge 46 $length -}} +{{ (.Values.ozgcloud).bezeichner }} +{{- else -}} +{{ required (printf "Bezeichner %s ist zu lang (max. 46 Zeichen)" (.Values.ozgcloud).bezeichner) nil }} +{{- end -}} +{{- end -}} + +{{- define "app.ingress.host" }} +{{- if (.Values.ingress).adapterBezeichner }} +{{- printf "%s-%s.%s" (include "app.ozgcloudBezeichner" .) .Values.ingress.adapterBezeichner .Values.baseUrl }} +{{- else if eq (.Values.image).name "formsolutions-adapter" }} +{{- printf "%s-fs.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- else if eq (.Values.image).name "formcycle-adapter" }} +{{- printf "%s-formcycle.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- else }} +{{- printf "%s-afm.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- end }} +{{- end -}} + +{{- define "app.serviceAccountName" -}} +{{- if (.Values.serviceAccount).name }} +{{- printf "%s" .Values.serviceAccount.name }} +{{- else if eq (.Values.image).name "intelliform-adapter" }} +{{- printf "afm-adapter-service-account" }} +{{- else if eq (.Values.image).name "formsolutions-adapter" }} +{{- printf "fs-adapter-service-account" }} +{{- else if eq (.Values.image).name "formcycle-adapter" }} +{{- printf "formcycle-adapter-service-account" }} +{{- else if eq (.Values.image).name "enterprise-adapter" }} +{{- printf "enterprise-adapter-service-account" }} +{{- end }} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml new file mode 100644 index 0000000..1434a52 --- /dev/null +++ b/src/main/helm/templates/deployment.yaml @@ -0,0 +1,174 @@ +# +# 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. +# + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +spec: + progressDeadlineSeconds: 600 + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: 10 + selector: + matchLabels: + {{- include "app.matchLabels" . | indent 6 }} + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + type: RollingUpdate + template: + metadata: + labels: + {{- include "app.defaultLabels" . | indent 8 }} + component: afm-adapter + spec: + {{- if (.Values.serviceAccount).create }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + {{- end }} + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: DoNotSchedule + labelSelector: + matchLabels: + app.kubernetes.io/name: {{ .Release.Name }} + containers: + - env: + {{- range (.Values.env).grpc }} + - name: {{ .name }} + value: {{ .value }} + {{- end }} + - name: spring_profiles_active + value: {{ include "app.envSpringProfiles" . }} + - name: ozgcloud_adapter_fallbackStrategy + value: {{ (.Values.routing).fallbackStrategy | default "DENY"}} + {{- if (.Values.routing).fundstelleVorgangManagerName}} + - name: ozgcloud_adapter_fundstelleVorgangManagerName + value: {{ .Values.routing.fundstelleVorgangManagerName }} + {{- end }} + - 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: '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 }} + {{- with (.Values.env).customList }} +{{ toYaml . | indent 8 }} + {{- end }} + image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}" + imagePullPolicy: Always + name: intelliform-adapter + ports: + - containerPort: 8080 + name: 8080tcp1 + protocol: TCP + - containerPort: 8081 + name: metrics + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + startupProbe: + failureThreshold: 10 + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + initialDelaySeconds: 30 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 5 + {{- if .Values.enableLivenessProbe }} + livenessProbe: + failureThreshold: 3 + httpGet: + path: /actuator/health/liveness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + {{- end }} + resources: + {{- with .Values.resources }} +{{ toYaml . | indent 10 }} + {{- end }} + 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 12 }} + {{- end }} + stdin: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + tty: true + volumeMounts: + - name: temp-dir + mountPath: "/tmp" + volumes: + - name: temp-dir + emptyDir: {} + dnsConfig: {} + dnsPolicy: ClusterFirst + imagePullSecrets: + {{- if .Values.imagePullSecret }} + - name: {{ .Values.imagePullSecret }} + {{ else }} + - name: {{ .Release.Name }}-image-pull-secret + {{- end }} + restartPolicy: Always + {{- with .Values.hostAliases }} + hostAliases: +{{ toYaml . | indent 8 }} + {{- end }} + schedulerName: default-scheduler + {{- with .Values.podSecurityContext }} + securityContext: +{{ toYaml . | indent 8 }} + {{- end }} + terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/src/main/helm/templates/image-pull-secret.yaml b/src/main/helm/templates/image-pull-secret.yaml new file mode 100644 index 0000000..508f051 --- /dev/null +++ b/src/main/helm/templates/image-pull-secret.yaml @@ -0,0 +1,34 @@ +# +# 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 not (.Values.imagePullSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Release.Name }}-image-pull-secret + namespace: {{ include "app.namespace" . }} +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: {{ include "app.imagePullSecret" . }} +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml new file mode 100644 index 0000000..15adeab --- /dev/null +++ b/src/main/helm/templates/ingress.yaml @@ -0,0 +1,67 @@ +# +# 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.ingress).enabled }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + {{- with (.Values.ingress).annotations }} +{{ toYaml . | indent 4 }} + {{- end }} + {{- if not (.Values.ingress).disableDefaultCertManager }} + {{- if (.Values.ingress).use_staging_cert }} + cert-manager.io/cluster-issuer: letsencrypt-staging + {{- else }} + cert-manager.io/cluster-issuer: letsencrypt-prod + {{- end }} + {{- end }} + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} +spec: + {{- if and (.Values.ingress).className }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + rules: + - http: + paths: + - backend: + service: + port: + number: 8080 + name: {{ .Release.Name }} + path: '' + pathType: ImplementationSpecific + host: {{ include "app.ingress.host" . }} + tls: + - hosts: + - {{ include "app.ingress.host" . }} + {{- if not (.Values.ingress).skipTlsSecret -}} + {{- if (.Values.ingress).tlsSecretName }} + secretName: {{ (.Values.ingress).tlsSecretName }} + {{- else }} + secretName: {{ .Values.ozgcloud.bezeichner }}-{{ .Release.Name }}-tls + {{- end }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml new file mode 100644 index 0000000..63a2db6 --- /dev/null +++ b/src/main/helm/templates/network_policy.yaml @@ -0,0 +1,62 @@ +# +# 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 not (.Values.networkPolicy).disabled }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: network-policy-{{ .Release.Name}} + namespace: {{ .Release.Namespace }} +spec: + podSelector: + matchLabels: + ozg-component: eingangsadapter + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 8080 + 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 +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml new file mode 100644 index 0000000..3f688c3 --- /dev/null +++ b/src/main/helm/templates/service.yaml @@ -0,0 +1,45 @@ +# +# 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. +# + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} + component: afm-adapter-service +spec: + ports: + - name: http + port: 8080 + protocol: TCP + targetPort: 8080 + - name: metrics + port: 8081 + protocol: TCP + type: ClusterIP + selector: + {{- include "app.matchLabels" . | indent 4 }} + component: afm-adapter \ No newline at end of file diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml new file mode 100644 index 0000000..3bac8e2 --- /dev/null +++ b/src/main/helm/templates/service_account.yaml @@ -0,0 +1,31 @@ +# +# 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/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml new file mode 100644 index 0000000..d9e7fc6 --- /dev/null +++ b/src/main/helm/templates/service_monitor.yaml @@ -0,0 +1,43 @@ +# +# 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. +# + +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} + component: afm-adapter-service-monitor +spec: + endpoints: + - port: metrics + path: /actuator/prometheus + namespaceSelector: + matchNames: + - {{ include "app.namespace" . }} + selector: + matchLabels: + {{- include "app.matchLabels" . | indent 6 }} + component: afm-adapter-service \ No newline at end of file diff --git a/src/main/helm/templates/tests/test-ingress-connection.yaml b/src/main/helm/templates/tests/test-ingress-connection.yaml new file mode 100644 index 0000000..b966b4b --- /dev/null +++ b/src/main/helm/templates/tests/test-ingress-connection.yaml @@ -0,0 +1,39 @@ +# +# 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. +# + +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-test-ingress" + labels: + {{- include "app.matchLabels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['https://{{ .Values.ingress.host }}/ws/intelliform_formDatas.wsdl'] + restartPolicy: Never diff --git a/src/main/helm/templates/tests/test-service-connection.yaml b/src/main/helm/templates/tests/test-service-connection.yaml new file mode 100644 index 0000000..91bd4b3 --- /dev/null +++ b/src/main/helm/templates/tests/test-service-connection.yaml @@ -0,0 +1,39 @@ +# +# 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. +# + +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-test-connection" + labels: + {{- include "app.matchLabels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ .Release.Name }}:8080/ws/intelliform_formDatas.wsdl'] + restartPolicy: Never diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml new file mode 100644 index 0000000..148aec4 --- /dev/null +++ b/src/main/helm/values.yaml @@ -0,0 +1,52 @@ +# +# 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. +# + +baseUrl: test.sh.ozg-cloud.de + +image: + repo: docker.ozg-sh.de + name: intelliform-adapter # [default: intelliform-adapter] + tag: latest # [default: latest] + +# env: +# overrideSpringProfiles: "oc,prod" + # customList: # add name value pair for additional environments + # - name: Dinge + # value: true +#resources: +# limits: +# cpu: 1 # [default: 1] +# memory: 1200Mi # [default: 1200Mi] +# requests: +# cpu: 100m # [default: 100m] +# memory: 250Mi # [default: 250Mi] + +ingress: + enabled: true + # overrideHost: kiel-afm.dev.by.ozg-cloud.de + +routing: + targetVorgangManagerName: vorgang-manager +# fallbackStrategy: DENY +# routingStrategy: SINGLE diff --git a/src/test/helm-linter-values.yaml b/src/test/helm-linter-values.yaml new file mode 100644 index 0000000..45d5d4b --- /dev/null +++ b/src/test/helm-linter-values.yaml @@ -0,0 +1,31 @@ +# +# 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: sh + +networkPolicy: + dnsServerNamespace: test-dns-server-namespace \ No newline at end of file diff --git a/src/test/helm/deployment_63_chars_test.yaml b/src/test/helm/deployment_63_chars_test.yaml new file mode 100644 index 0000000..7277b5d --- /dev/null +++ b/src/test/helm/deployment_63_chars_test.yaml @@ -0,0 +1,55 @@ +# +# 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 deyploment less than 63 chars +release: + name: eingang-manager + namespace: sh-helm-test + +chart: + name: eingang-manager +set: + ozgcloud.environment: test +templates: + - templates/deployment.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 Intelliform-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/src/test/helm/deployment_bindings_test.yaml b/src/test/helm/deployment_bindings_test.yaml new file mode 100644 index 0000000..9b3f680 --- /dev/null +++ b/src/test/helm/deployment_bindings_test.yaml @@ -0,0 +1,46 @@ +# +# 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: deployment bindings +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: should have temp-dir volume + asserts: + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: temp-dir + mountPath: "/tmp" + + - it: should have temp-dir volume mount + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: temp-dir + emptyDir: {} + diff --git a/src/test/helm/deployment_container_security_context_test.yaml b/src/test/helm/deployment_container_security_context_test.yaml new file mode 100644 index 0000000..d72bb62 --- /dev/null +++ b/src/test/helm/deployment_container_security_context_test.yaml @@ -0,0 +1,90 @@ +# +# 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 +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: check default values + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.privileged + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.runAsNonRoot + value: true + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsUser + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsGroup + - isNull: + path: spec.template.spec.securityContext.fsGroup + - isNull: + path: spec.template.spec.containers[0].securityContext.capabilities + - it: check runAsUser + set: + securityContext.runAsUser: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsUser + value: 1000 + - it: check runAsGroup + set: + securityContext.runAsGroup: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsGroup + value: 1000 + - it: check fsGroup + set: + podSecurityContext.fsGroup: 1000 + asserts: + - equal: + path: spec.template.spec.securityContext.fsGroup + value: 1000 + - it: check capabilities + set: + securityContext: + capabilities: + drop: + - ALL + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.capabilities + value: + drop: + - ALL \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml new file mode 100644 index 0000000..0580007 --- /dev/null +++ b/src/test/helm/deployment_defaults_labels_test.yaml @@ -0,0 +1,49 @@ +# +# 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 +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - templates/deployment.yaml + - templates/service_monitor.yaml + - templates/service.yaml +set: + ozgcloud.environment: test +tests: + - it: check default labels + asserts: + - equal: + path: metadata.labels["app.kubernetes.io/instance"] + value: afm-adapter + - equal: + path: metadata.labels["app.kubernetes.io/name"] + value: intelliform-adapter + - equal: + path: metadata.labels["app.kubernetes.io/part-of"] + value: ozgcloud + - equal: + path: metadata.labels["app.kubernetes.io/namespace"] + value: sh-helm-test diff --git a/src/test/helm/deployment_env_test.yaml b/src/test/helm/deployment_env_test.yaml new file mode 100644 index 0000000..0b8b0d7 --- /dev/null +++ b/src/test/helm/deployment_env_test.yaml @@ -0,0 +1,50 @@ +# +# 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 environments +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: check customList + template: deployment.yaml + set: + env.customList: + - name: my_test_environment_name + value: "A test value" + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A test value" + - it: check customList test value is not set by default + template: deployment.yaml + asserts: + - notContains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A test value" diff --git a/src/test/helm/deployment_host_aliases_test.yaml b/src/test/helm/deployment_host_aliases_test.yaml new file mode 100644 index 0000000..f4ee222 --- /dev/null +++ b/src/test/helm/deployment_host_aliases_test.yaml @@ -0,0 +1,53 @@ +# +# 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: deployment host aliases +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +set: + ozgcloud.environment: test +tests: + - it: should not set hostAliases + asserts: + - isNull: + path: spec.template.spec.hostAliases + - it: should set hostAliases + set: + hostAliases: + - ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" + asserts: + - contains: + path: spec.template.spec.hostAliases + content: + ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml new file mode 100644 index 0000000..8fce16a --- /dev/null +++ b/src/test/helm/deployment_imagepull_secret_test.yaml @@ -0,0 +1,49 @@ +# +# 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 +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: should use default imagePull secret + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: afm-adapter-image-pull-secret + - it: should set the imagePull secret + set: + imagePullSecret: image-pull-secret + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: image-pull-secret \ No newline at end of file diff --git a/src/test/helm/deployment_liveness_probe_test.yaml b/src/test/helm/deployment_liveness_probe_test.yaml new file mode 100644 index 0000000..ba01bd8 --- /dev/null +++ b/src/test/helm/deployment_liveness_probe_test.yaml @@ -0,0 +1,52 @@ +# +# 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 +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: livenessProbe should be disabled by default + template: deployment.yaml + asserts: + - notExists: + path: spec.template.spec.containers[0].livenessProbe + + - it: enable livenessProbe + template: deployment.yaml + set: + enableLivenessProbe: true + asserts: + - isSubset: + path: spec.template.spec.containers[0].livenessProbe + content: + failureThreshold: 3 + httpGet: + path: /actuator/health/liveness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml new file mode 100644 index 0000000..1f21714 --- /dev/null +++ b/src/test/helm/deployment_resources_test.yaml @@ -0,0 +1,60 @@ +# +# 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 +release: + name: afm-adapter +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: test resources + set: + resources: + limits: + cpu: "11m" + memory: "22Mi" + requests: + cpu: "33m" + memory: "44Mi" + asserts: + - equal: + path: spec.template.spec.containers[0].resources.limits.cpu + value: 11m + - equal: + path: spec.template.spec.containers[0].resources.limits.memory + value: 22Mi + - equal: + path: spec.template.spec.containers[0].resources.requests.cpu + value: 33m + - equal: + path: spec.template.spec.containers[0].resources.requests.memory + value: 44Mi + + - it: test empty resources + asserts: + - isEmpty: + path: spec.template.spec.containers[0].resources + diff --git a/src/test/helm/deployment_routing-strategy.yaml b/src/test/helm/deployment_routing-strategy.yaml new file mode 100644 index 0000000..3ab7d5e --- /dev/null +++ b/src/test/helm/deployment_routing-strategy.yaml @@ -0,0 +1,73 @@ +# +# 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 +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - deployment.yaml +set: + image.tag: latest + ozgcloud.environment: test +tests: + - it: validate default routing values without questions.yaml + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: SINGLE + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: DENY + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: PLAINTEXT + - it: validate routing infos + set: + routing: + routingStrategy: MULTI + fallbackStrategy: FUNDSTELLE + negotiationType: TLS + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: MULTI + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: FUNDSTELLE + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: TLS \ No newline at end of file diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml new file mode 100644 index 0000000..f0d3882 --- /dev/null +++ b/src/test/helm/deployment_service_account_test.yaml @@ -0,0 +1,83 @@ +# +# 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: deployment service account +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +set: + ozgcloud.environment: test +tests: + - it: should use afm-adapter service account name + set: + image.name: intelliform-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: afm-adapter-service-account + - it: should use fs-adapter service account name + set: + image.name: formsolutions-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: fs-adapter-service-account + - it: should use formcycle-adapter service account name + set: + image.name: formcycle-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: formcycle-adapter-service-account + - it: should use enterprise-adapter service account name + set: + image.name: enterprise-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: enterprise-adapter-service-account + - it: should use service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: helm-service-account + - it: should use default service account + asserts: + - isNull: + path: spec.template.spec.serviceAccountName \ No newline at end of file diff --git a/src/test/helm/deployment_springProfile_test.yaml b/src/test/helm/deployment_springProfile_test.yaml new file mode 100644 index 0000000..57762f6 --- /dev/null +++ b/src/test/helm/deployment_springProfile_test.yaml @@ -0,0 +1,53 @@ +# +# 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 spring profiles +release: + name: if-adapter +templates: + - templates/deployment.yaml + +tests: + - it: should override spring profiles + set: + env.overrideSpringProfiles: oc,stage,ea + asserts: + - isKind: + of: Deployment + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: oc,stage,ea + - it: should generate spring profiles + set: + ozgcloud.environment: test + asserts: + - isKind: + of: Deployment + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: oc, test \ No newline at end of file diff --git a/src/test/helm/deployment_test.yaml b/src/test/helm/deployment_test.yaml new file mode 100644 index 0000000..4d70a94 --- /dev/null +++ b/src/test/helm/deployment_test.yaml @@ -0,0 +1,54 @@ +# +# 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 +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: validate image type and container image + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.containers[0].image + value: docker.ozg-sh.de/intelliform-adapter:latest + - it: validate image pull secret resource name + asserts: + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: intelliform-adapter-image-pull-secret + - equal: + path: spec.template.spec.containers[0].image + value: docker.ozg-sh.de/intelliform-adapter:latest + - it: should have label ozg-component + asserts: + - equal: + path: metadata.labels.ozg-component + value: eingangsadapter + diff --git a/src/test/helm/image-pull-secret-test.yaml b/src/test/helm/image-pull-secret-test.yaml new file mode 100644 index 0000000..3132d4d --- /dev/null +++ b/src/test/helm/image-pull-secret-test.yaml @@ -0,0 +1,57 @@ +# +# 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 image pull secret +templates: + - templates/image-pull-secret.yaml +release: + name: intelliform-adaptero + namespace: helm-test +tests: + - it: should match basic data + set: + imageCredentials: + registry: docker.ozg-sh.de + username: test + password: test1234 + email: webmaster@ozg-sh.de + asserts: + - containsDocument: + kind: Secret + apiVersion: v1 + - equal: + path: metadata.name + value: intelliform-adaptero-image-pull-secret + - equal: + path: metadata.namespace + value: helm-test + - isNotEmpty: + path: data[".dockerconfigjson"] + + - it: should not create image pull secret + set: + imagePullSecret: "image-pull-secret" + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/ingress-create-or-not.yaml b/src/test/helm/ingress-create-or-not.yaml new file mode 100644 index 0000000..9b302ef --- /dev/null +++ b/src/test/helm/ingress-create-or-not.yaml @@ -0,0 +1,49 @@ +# +# 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 ingress creation dependent from values +templates: + - templates/ingress.yaml + +set: + ozgcloud: + bezeichner: helm + +tests: + - it: create ingress by config + set: + ingress.enabled: true + asserts: + - isKind: + of: Ingress + - it: not create ingress by config + set: + ingress.enabled: false + asserts: + - hasDocuments: + count: 0 + - it: ingress should be created by default + asserts: + - isKind: + of: Ingress diff --git a/src/test/helm/ingress-nginx-tests.yaml b/src/test/helm/ingress-nginx-tests.yaml new file mode 100644 index 0000000..9543197 --- /dev/null +++ b/src/test/helm/ingress-nginx-tests.yaml @@ -0,0 +1,68 @@ +# +# 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 ingress options +templates: + - templates/ingress.yaml + +set: + ozgcloud: + bezeichner: helm + +tests: + - it: should create afm ingress tls + release: + name: afm-adapter + asserts: + - equal: + path: spec.tls[0].secretName + value: helm-afm-adapter-tls + - it: should create afm ingress tls + release: + name: fs-adapter + set: + image.name: formsolutions-adapter + asserts: + - equal: + path: spec.tls[0].secretName + value: helm-fs-adapter-tls + + - it: should not set secretName + set: + ingress.skipTlsSecret: true + asserts: + - isNull: + path: spec.tls[0].secretName + + - it: should not set ingressClassName + asserts: + - isNull: + path: spec.ingressClassName + - it: should set ingressClassName + set: + ingress.className: nginx + asserts: + - equal: + path: spec.ingressClassName + value: nginx \ No newline at end of file diff --git a/src/test/helm/ingress_host_test.yaml b/src/test/helm/ingress_host_test.yaml new file mode 100644 index 0000000..07dc46d --- /dev/null +++ b/src/test/helm/ingress_host_test.yaml @@ -0,0 +1,42 @@ +# +# 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 ozgcloud bezeichner length +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/ingress.yaml + +tests: + - it: should fail on bezeichner (in ingress host) length longer than 46 characters + template: ingress.yaml + set: + ozgcloud: + bezeichner: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + environment: test + bundesland: by + asserts: + - failedTemplate: + errorMessage: Bezeichner test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 46 Zeichen) \ No newline at end of file diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml new file mode 100644 index 0000000..02aa230 --- /dev/null +++ b/src/test/helm/ingress_test.yaml @@ -0,0 +1,147 @@ +# +# 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 ingress creation +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - templates/ingress.yaml +set: + ozgcloud: + bezeichner: helm +tests: + - it: should match basic data + asserts: + - containsDocument: + kind: Ingress + apiVersion: networking.k8s.io/v1 + - equal: + path: metadata.name + value: intelliform-adapter + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should match service port number + asserts: + - equal: + path: spec.rules[0].http.paths[0].backend.service.port.number + value: 8080 + - it: should match service name + asserts: + - equal: + path: spec.rules[0].http.paths[0].backend.service.name + value: intelliform-adapter + - it: should match service path + asserts: + - equal: + path: spec.rules[0].http.paths[0].path + value: '' + - it: should match service pathType + asserts: + - equal: + path: spec.rules[0].http.paths[0].pathType + value: ImplementationSpecific + - it: should create afm host + asserts: + - equal: + path: spec.rules[0].host + value: helm-afm.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-afm.test.sh.ozg-cloud.de + + + - it: should create fs host + set: + image.name: formsolutions-adapter + asserts: + - equal: + path: spec.rules[0].host + value: helm-fs.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-fs.test.sh.ozg-cloud.de + + - it: should create formcycle host + set: + image.name: formcycle-adapter + asserts: + - equal: + path: spec.rules[0].host + value: helm-formcycle.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-formcycle.test.sh.ozg-cloud.de + + + - it: should create custom adapter host + set: + ingress.adapterBezeichner: test + asserts: + - equal: + path: spec.rules[0].host + value: helm-test.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-test.test.sh.ozg-cloud.de + + - it: should use letsencrypt-prod cluster-issuer as default + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-prod + + - it: should use letsencrypt-staging cluster-issuer if use_staging_cert is true + set: + ingress.use_staging_cert: true + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-staging + + - it: should use letsencrypt-prod cluster-issuer if use_staging_cert is false + set: + ingress.use_staging_cert: false + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-prod + + - it: should disable default cert-manager + set: + ingress.disableDefaultCertManager: true + asserts: + - notExists: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + + - it: should set ingress annotation proxy body size to 42m + set: + ingress: + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 42m + asserts: + - equal: + path: metadata.annotations["nginx.ingress.kubernetes.io/proxy-body-size"] + value: 42m \ No newline at end of file diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml new file mode 100644 index 0000000..55b3b51 --- /dev/null +++ b/src/test/helm/network_policy_test.yaml @@ -0,0 +1,111 @@ +# +# 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: network policy test +release: + name: afm-adapter + 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-afm-adapter + namespace: by-helm-test + - it: validate spec + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - equal: + path: spec + value: + podSelector: + matchLabels: + ozg-component: eingangsadapter + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 8080 + 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 + + - it: test network policy disabled + set: + networkPolicy: + disabled: true + dnsServerNamespace: test-dns-namespace + asserts: + - hasDocuments: + count: 0 + + - it: test network policy unset should be disabled + set: + networkPolicy: + disabled: false + dnsServerNamespace: test-dns-namespace + asserts: + - hasDocuments: + count: 1 \ No newline at end of file diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml new file mode 100644 index 0000000..b84bdfe --- /dev/null +++ b/src/test/helm/service_account_test.yaml @@ -0,0 +1,105 @@ +# +# 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: eingang-manager + namespace: sh-helm-test +templates: + - templates/service_account.yaml +tests: + - it: should create default afm adapter service account name + set: + image.name: intelliform-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: afm-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default fs adapter service account name + set: + image.name: formsolutions-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: fs-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default formcycle adapter service account name + set: + image.name: formcycle-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: formcycle-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default enterprise adapter service account name + set: + image.name: enterprise-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: enterprise-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 + - 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/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml new file mode 100644 index 0000000..e9eea43 --- /dev/null +++ b/src/test/helm/service_monitor_test.yaml @@ -0,0 +1,76 @@ +# +# 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 +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/service_monitor.yaml +tests: + - it: should have the label component with value afm-adapter-service-monitor attached + asserts: + - isKind: + of: ServiceMonitor + - equal: + path: metadata.labels["component"] + value: afm-adapter-service-monitor + - it: should have the metrics endpoint configured by default + set: + env.springProfiles: oc,stage + asserts: + - isKind: + of: ServiceMonitor + - contains: + path: spec.endpoints + content: + port: metrics + path: /actuator/prometheus + - it: should be able to enable the endpoint + asserts: + - isKind: + of: ServiceMonitor + - contains: + path: spec.endpoints + content: + port: metrics + path: /actuator/prometheus + - it: namespace selector should contain the namespace + asserts: + - contains: + path: spec.namespaceSelector.matchNames + content: sh-helm-test + - it: selector should contain the component label with the value afm-adapter-service + asserts: + - equal: + path: spec.selector.matchLabels["component"] + value: afm-adapter-service + - it: selector should contain helm recommended labels name and namespace + asserts: + - equal: + path: spec.selector.matchLabels["app.kubernetes.io/name"] + value: afm-adapter + - equal: + path: spec.selector.matchLabels["app.kubernetes.io/namespace"] + value: sh-helm-test diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml new file mode 100644 index 0000000..e362448 --- /dev/null +++ b/src/test/helm/service_test.yaml @@ -0,0 +1,78 @@ +# +# 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 +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/service.yaml +tests: + - it: should have the label component with value afm-adapter-service attached + asserts: + - isKind: + of: Service + - equal: + path: metadata.labels["component"] + value: afm-adapter-service + - it: should be of type ClusterIP + asserts: + - equal: + path: spec.type + value: ClusterIP + - it: ports should contain the 8080 default http port + asserts: + - contains: + path: spec.ports + content: + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + count: 1 + any: true + - it: ports should contain the metrics port + asserts: + - contains: + path: spec.ports + content: + name: metrics + port: 8081 + protocol: TCP + count: 1 + any: true + - it: selector should contain the component label with the value afm-adapter + asserts: + - equal: + path: spec.selector["component"] + value: afm-adapter + - it: selector should contain helm recommended labels name and namespace + asserts: + - equal: + path: spec.selector["app.kubernetes.io/name"] + value: afm-adapter + - equal: + path: spec.selector["app.kubernetes.io/namespace"] + value: sh-helm-test + \ 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 new file mode 100644 index 0000000..8508a42 --- /dev/null +++ b/xta-adapter/doc/example-response-getmessages-items-pending.xml @@ -0,0 +1,76 @@ +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..4c81d65 --- /dev/null +++ b/xta-adapter/doc/example-response-getmessages-no-messages-available.xml @@ -0,0 +1,36 @@ +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..3240653 --- /dev/null +++ b/xta-adapter/pom.xml @@ -0,0 +1,185 @@ +<?xml version="1.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. + +--> +<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.4.0</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> + <!--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> + </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-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</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/xta-adapter/readme.md b/xta-adapter/readme.md new file mode 100644 index 0000000..e285cd9 --- /dev/null +++ b/xta-adapter/readme.md @@ -0,0 +1,39 @@ +# 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) + +## deprecated + +DEPRECATED, da wir den HostNameVerifier deaktiviert haben: Hosts Datei erzeugen, damit der Hostname passt: + + 127.0.0.1 LI33-0005 + diff --git a/xta-adapter/run_helm_test.sh b/xta-adapter/run_helm_test.sh new file mode 100755 index 0000000..f793353 --- /dev/null +++ b/xta-adapter/run_helm_test.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# 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. +# + + +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 new file mode 100644 index 0000000..4a8b3ff --- /dev/null +++ b/xta-adapter/src/main/helm/Chart.yaml @@ -0,0 +1,31 @@ +# +# 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. +# + +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 new file mode 100644 index 0000000..e0a7cda --- /dev/null +++ b/xta-adapter/src/main/helm/README.md @@ -0,0 +1,35 @@ +# 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 new file mode 100644 index 0000000..8d33e80 --- /dev/null +++ b/xta-adapter/src/main/helm/app-readme.md @@ -0,0 +1 @@ +# 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 new file mode 100644 index 0000000..afcc6d6 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/_helpers.tpl @@ -0,0 +1,67 @@ +{{/* 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.imagePullSecret" }} +{{- with .Values.imageCredentials }} +{{- printf "{\"auths\":{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}}" .registry .username .password .email (printf "%s:%s" .username .password | b64enc) | b64enc }} +{{- end }} +{{- 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 -}} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/image-pull-secret.yaml b/xta-adapter/src/main/helm/templates/image-pull-secret.yaml new file mode 100644 index 0000000..508f051 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/image-pull-secret.yaml @@ -0,0 +1,34 @@ +# +# 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 not (.Values.imagePullSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Release.Name }}-image-pull-secret + namespace: {{ include "app.namespace" . }} +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: {{ include "app.imagePullSecret" . }} +{{- 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 new file mode 100644 index 0000000..7b33ebe --- /dev/null +++ b/xta-adapter/src/main/helm/templates/network_policy.yaml @@ -0,0 +1,73 @@ +# +# 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 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 +{{- with (.Values.networkPolicy).additionalEgressConfig }} +{{ 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 new file mode 100644 index 0000000..3bac8e2 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/service_account.yaml @@ -0,0 +1,31 @@ +# +# 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 new file mode 100644 index 0000000..f0f7984 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml @@ -0,0 +1,174 @@ +# +# 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. +# + +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_identifier + value: {{ quote (.Values.xta).identifier }} + - 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: '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 }} + 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: + {{- if .Values.imagePullSecret }} + - name: {{ .Values.imagePullSecret }} + {{ else }} + - name: {{ .Release.Name }}-image-pull-secret + {{- end }} + {{- with .Values.podSecurityContext }} + securityContext: +{{ toYaml . | indent 12 }} + {{- end }} \ No newline at end of file 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 new file mode 100644 index 0000000..2f35e2b --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml @@ -0,0 +1,34 @@ +# +# 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.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 new file mode 100644 index 0000000..9bf1b74 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml @@ -0,0 +1,36 @@ +# +# 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.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 new file mode 100644 index 0000000..3878620 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml @@ -0,0 +1,34 @@ +# +# 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.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 new file mode 100644 index 0000000..dd07230 --- /dev/null +++ b/xta-adapter/src/main/helm/values.yaml @@ -0,0 +1,36 @@ +# +# 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. +# + +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/xta/MsgStatusListTypeAndHeaderResponse.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java new file mode 100644 index 0000000..34ff1eb --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java @@ -0,0 +1,42 @@ +/* + * 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.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/WsHeaderAddingInterceptor.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java new file mode 100644 index 0000000..102e15c --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java @@ -0,0 +1,94 @@ +/* + * 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 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; +import jakarta.validation.Valid; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBElement; +import jakarta.xml.bind.JAXBException; + +@Component +class WsHeaderAddingInterceptor implements ClientInterceptor { + + @Autowired + @Valid + private XtaProperties properties; + + @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(properties.getIdentifier()); + 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/XtaApplicationConfiguration.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaApplicationConfiguration.java new file mode 100644 index 0000000..f766963 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaApplicationConfiguration.java @@ -0,0 +1,38 @@ +/* + * 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 org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import de.ozgcloud.eingang.semantik.enginebased.xta.XtaEngineBasedAdapter; + +@Configuration +class XtaApplicationConfiguration { + + @Bean + XtaEngineBasedAdapter engineBasedAdapter() { + return new XtaEngineBasedAdapter(); + } +} 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 new file mode 100644 index 0000000..f0ce8da --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java @@ -0,0 +1,37 @@ +/* + * 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.io.File; +import java.math.BigInteger; + +import lombok.Builder; + +@Builder +public record XtaFile(File file, + String contentType, + String name, + BigInteger size) { + +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFile.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java similarity index 73% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFile.java rename to xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java index 356db27..d20422b 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFile.java +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,23 +21,18 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.xta; + +import java.util.Collection; import lombok.Builder; import lombok.Getter; -import lombok.Setter; -import lombok.ToString; +import lombok.Singular; @Builder(toBuilder = true) @Getter -@ToString -public class IncomingFile { - - private String id; - private String vendorId; - private String name; - private String contentType; - @Setter - private byte[] content; - private long size; +public class XtaMessage { + private XtaMessageMetaData metaData; + @Singular + private Collection<XtaFile> messageFiles; } 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 new file mode 100644 index 0000000..4a9db10 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java @@ -0,0 +1,37 @@ +/* + * 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 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 new file mode 100644 index 0000000..d8736e0 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java @@ -0,0 +1,75 @@ +/* + * 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.Objects; + +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.IncomingFile; + +@Mapper +interface XtaMessageMapper { + + @Mapping(target = "antragsteller", ignore = true) + @Mapping(target = "attachment", ignore = true) + @Mapping(target = "attachments", ignore = true) + @Mapping(target = "formData", ignore = true) + @Mapping(target = "id", ignore = true) + @Mapping(target = "numberOfAttachments", ignore = true) + @Mapping(target = "numberOfRepresentations", constant = "1") + @Mapping(target = "representation", ignore = true) + @Mapping(target = "representations", source = "messageFiles") + @Mapping(target = "zustaendigeStelle", ignore = true) + @Mapping(target = "header", source = "metaData") + FormData toFormData(XtaMessage message); + + @Mapping(target = "formEngineName", ignore = true) + @Mapping(target = "formId", source = "messageType") + @Mapping(target = "requestId", source = "messageId") + @Mapping(target = "serviceKonto", ignore = true) + @Mapping(target = "createdAt", source = "origin") + @Mapping(target = "sender", constant = "XTA") + @Mapping(target = "formName", constant = "dFördermittelantrag") + FormHeader formHeaderFromMetaData(XtaMessageMetaData metaData); + + default IncomingFile toIncomingFile(XtaFile messageFile) { + if (Objects.nonNull(messageFile)) { + return IncomingFile.builder() + .name(messageFile.name()) + .contentType("application/zip") + .file(messageFile.file()) + .size(messageFile.file().length()) + .build(); + } + return null; + } + + default String fromId(XtaMessageId id) { + return id.toString(); + } +} 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 new file mode 100644 index 0000000..e9db01e --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java @@ -0,0 +1,43 @@ +/* + * 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.time.ZonedDateTime; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +class XtaMessageMetaData { + // MsgIdentification.MessageId + private XtaMessageId messageId; + // DeliveryAttributes.origin + private ZonedDateTime origin; + // DeliveryAttributes.delivery + private ZonedDateTime delivery; + // Qualifier.MessageType.code + private String messageType; + +} 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 new file mode 100644 index 0000000..1d662a7 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java @@ -0,0 +1,68 @@ +/* + * 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.math.BigInteger; +import java.util.Optional; +import java.util.stream.Stream; + +import jakarta.xml.bind.JAXBElement; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; + +import eu.osci.ws._2008._05.transport.MsgStatusListType; +import eu.osci.ws._2014._10.transport.MessageMetaData; + +@Mapper +interface XtaMessageMetaDataMapper { + + @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") + XtaMessageMetaData fromSoap(MessageMetaData metaData); + + default XtaMessageId fromString(String id) { + return XtaMessageId.from(id); + } + + @Mapping(target = "moreMessagesAvailable", source = ".", qualifiedByName = "moreMessagesAvailable") + XtaMessageMetaDatasAndHeader msgStatusListFromSoap(MsgStatusListTypeAndHeaderResponse statusList); + + @Named("moreMessagesAvailable") + default boolean moreMessagesAvailable(MsgStatusListTypeAndHeaderResponse statusList) { + if (statusList.isNoMessageAvailable()) { + return false; + } + return Optional.ofNullable(statusList.getMessageItemsPending()) + .filter(messagesPending -> !BigInteger.ZERO.equals(messagesPending)) + .isPresent(); + } + + 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 new file mode 100644 index 0000000..9b1ed87 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java @@ -0,0 +1,38 @@ +/* + * 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.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 new file mode 100644 index 0000000..6a14b43 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java @@ -0,0 +1,65 @@ +/* + * 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.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 new file mode 100644 index 0000000..6e6faf6 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java @@ -0,0 +1,107 @@ +/* + * 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.math.BigInteger; +import java.net.URI; + +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 String identifier; +} + +@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 new file mode 100644 index 0000000..61f6fc9 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java @@ -0,0 +1,307 @@ +/* + * 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.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 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 jakarta.validation.Valid; +import jakarta.xml.bind.JAXBElement; +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) { + return XtaMessage.builder() + .metaData(null) + .messageFiles(Collections.singleton(getMessage(messageId.toString()))) + .build(); + } + + XtaFile getMessage(String messageId) { + var callback = new ActionCallback(properties.getActions().getFetchRequest(), new Addressing10(), getTargetUri()); + var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(xoevMarshaller).build(); + + var result = (GenericContentContainer) template.marshalSendAndReceive(buildFetchRequest(messageId), callback); + return toXtaFile(result.getContentContainer().getMessage()); + } + + 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 new file mode 100644 index 0000000..3f7036f --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java @@ -0,0 +1,149 @@ +/* + * 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.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 new file mode 100644 index 0000000..5ecae38 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java @@ -0,0 +1,71 @@ +/* + * 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 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 new file mode 100644 index 0000000..c928e28 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java @@ -0,0 +1,91 @@ +/* + * 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.Spliterators; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import lombok.NonNull; +import lombok.extern.log4j.Log4j2; + +@Service +@Log4j2 +class XtaService { + + static final String DFOERDERMITTELANTRAG_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; + static final int VORGANG_NUMMER_SUFFIX_LENGTH = 4; + + @Autowired + private XtaRemoteService remoteService; + @Autowired + private XtaMessageMapper mapper; + @Autowired + private VorgangNummerSupplier vorgangNummerSupplier; + + public Stream<FormData> getMessages() { + return createXtaMessageStream().filter(this::filterByMessageType).map(this::getFormData); + } + + Stream<XtaMessageMetaData> createXtaMessageStream() { + var iterator = new XtaMessageMetadataRemoteIterator(remoteService); + return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false); + } + + // filter criteria for dFoerdermittelantrag + // https://jira.mgm-tp.com/jira/browse/OZG-3659 + boolean filterByMessageType(XtaMessageMetaData metaData) { + if (StringUtils.equals(metaData.getMessageType(), DFOERDERMITTELANTRAG_MESSAGE_TYPE)) { + return true; + } + + LOG.warn("Ignoring XTA-Message of type '{}'.", metaData.getMessageType()); + return false; + } + + public FormData getFormData(@NonNull XtaMessageMetaData metaData) { + var msg = remoteService.getMessage(metaData.getMessageId()); + var formData = mapper.toFormData(msg.toBuilder().metaData(metaData).build()); + return updateHeader(formData); + } + + FormData updateHeader(FormData formData) { + return formData.toBuilder().header(setVorgangNummer(formData.getHeader())).build(); + } + + FormHeader setVorgangNummer(FormHeader formHeader) { + return formHeader.toBuilder().vorgangNummer(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).build(); + } + + public void acknowledgeReceive(@NonNull XtaMessageId messageId) { + remoteService.close(messageId); + } +} diff --git a/xta-adapter/src/main/resources/XTA.wsdl b/xta-adapter/src/main/resources/XTA.wsdl new file mode 100644 index 0000000..d7ca5a3 --- /dev/null +++ b/xta-adapter/src/main/resources/XTA.wsdl @@ -0,0 +1,620 @@ +<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 new file mode 100644 index 0000000..83e7b8c --- /dev/null +++ b/xta-adapter/src/main/resources/application-local.yml @@ -0,0 +1,17 @@ +ozgcloud: + xta: + identifier: 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 new file mode 100644 index 0000000..53387ac --- /dev/null +++ b/xta-adapter/src/main/resources/application.yml @@ -0,0 +1,15 @@ +logging: + level: + ROOT: WARN + '[de.ozgcloud]': INFO + '[org.springframework.ws]': WARN + +ozgcloud: + xta: + max-list-elements: 10 + 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" diff --git a/xta-adapter/src/main/wsdl/XTA-synchron.wsdl b/xta-adapter/src/main/wsdl/XTA-synchron.wsdl new file mode 100644 index 0000000..9ee3b16 --- /dev/null +++ b/xta-adapter/src/main/wsdl/XTA-synchron.wsdl @@ -0,0 +1,201 @@ +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..5ac3433 --- /dev/null +++ b/xta-adapter/src/main/xsd/OSCI2_02.xsd @@ -0,0 +1,353 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..560efe3 --- /dev/null +++ b/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd @@ -0,0 +1,404 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<!--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 new file mode 100644 index 0000000..666bf8e --- /dev/null +++ b/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd @@ -0,0 +1,569 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..107e279 --- /dev/null +++ b/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..91bc0b9 --- /dev/null +++ b/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..8b83f76 --- /dev/null +++ b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd @@ -0,0 +1,220 @@ +<!-- + + 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. + +--> +<?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 new file mode 100644 index 0000000..c8890f1 --- /dev/null +++ b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd @@ -0,0 +1,133 @@ +<!-- + + 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. + +--> +<?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 new file mode 100644 index 0000000..771a11e --- /dev/null +++ b/xta-adapter/src/main/xsd/soap-envelope.xsd @@ -0,0 +1,136 @@ +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..1087514 --- /dev/null +++ b/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..c94ac0e --- /dev/null +++ b/xta-adapter/src/main/xsd/ws-addr.xsd @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..53bb773 --- /dev/null +++ b/xta-adapter/src/main/xsd/ws-policy.xsd @@ -0,0 +1,166 @@ +<!-- + + 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. + +--> +<?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 new file mode 100644 index 0000000..b83d102 --- /dev/null +++ b/xta-adapter/src/main/xsd/xenc-schema.xsd @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..1004488 --- /dev/null +++ b/xta-adapter/src/main/xsd/xml.xsd @@ -0,0 +1,170 @@ +<?xml version='1.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. + +--> +<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 new file mode 100644 index 0000000..686c32b --- /dev/null +++ b/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..d436de3 --- /dev/null +++ b/xta-adapter/src/main/xsd/xmlmime.xsd @@ -0,0 +1,57 @@ +<?xml version="1.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. + +--> +<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 new file mode 100644 index 0000000..28104e0 --- /dev/null +++ b/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..f6344c1 --- /dev/null +++ b/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<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 new file mode 100644 index 0000000..2bb8fea --- /dev/null +++ b/xta-adapter/src/test/helm-linter-values.yaml @@ -0,0 +1,32 @@ +# +# 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 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/cronjob_service_account_test.yaml b/xta-adapter/src/test/helm/cronjob_service_account_test.yaml new file mode 100644 index 0000000..a18edb6 --- /dev/null +++ b/xta-adapter/src/test/helm/cronjob_service_account_test.yaml @@ -0,0 +1,54 @@ +# +# 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 +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/image_pull_secret_test.yaml b/xta-adapter/src/test/helm/image_pull_secret_test.yaml new file mode 100644 index 0000000..a8fc82f --- /dev/null +++ b/xta-adapter/src/test/helm/image_pull_secret_test.yaml @@ -0,0 +1,59 @@ +# +# 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 image pull secret +templates: + - templates/image-pull-secret.yaml +release: + name: xta-adapter + namespace: helm-test +tests: + - it: should match basic data + set: + imageCredentials: + registry: docker.ozg-sh.de + username: test + password: test1234 + email: webmaster@ozg-sh.de + asserts: + - hasDocuments: + count: 1 + - containsDocument: + kind: Secret + apiVersion: v1 + - equal: + path: metadata.name + value: xta-adapter-image-pull-secret + - equal: + path: metadata.namespace + value: helm-test + - isNotEmpty: + path: data[".dockerconfigjson"] + + - it: should not create image pull secret + set: + imagePullSecret: "image-pull-secret" + asserts: + - hasDocuments: + count: 0 \ 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 new file mode 100644 index 0000000..b5364ac --- /dev/null +++ b/xta-adapter/src/test/helm/network_policy_test.yaml @@ -0,0 +1,125 @@ +# +# 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: network policy test +release: + namespace: by-helm-test +templates: + - templates/network_policy.yaml +set: + networkPolicy: + dnsServerNamespace: test-dns-namespace +tests: + - it: should match apiVersion + asserts: + - isAPIVersion: + of: networking.k8s.io/v1 + - it: should match kind + asserts: + - isKind: + of: NetworkPolicy + - it: validate metadata + asserts: + - equal: + path: metadata + value: + name: network-policy-xta-adapter + namespace: by-helm-test + - it: validate spec + 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 + set: + networkPolicy: + ssoPublicIp: 51.89.117.53/32 + dnsServerNamespace: test-dns-namespace + additionalEgressConfig: + - 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 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/service_account_test.yaml b/xta-adapter/src/test/helm/service_account_test.yaml new file mode 100644 index 0000000..73d4fe9 --- /dev/null +++ b/xta-adapter/src/test/helm/service_account_test.yaml @@ -0,0 +1,62 @@ +# +# 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 + - 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 + - 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-bindings-type-test.yaml b/xta-adapter/src/test/helm/xta-bindings-type-test.yaml new file mode 100644 index 0000000..a6d9c33 --- /dev/null +++ b/xta-adapter/src/test/helm/xta-bindings-type-test.yaml @@ -0,0 +1,48 @@ +# +# 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 + - equal: + path: metadata.name + value: xta-adapter-bindings-type + - equal: + path: metadata.namespace + value: helm-test + - equal: + path: data.type + value: ca-certificates \ 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 new file mode 100644 index 0000000..5e15321 --- /dev/null +++ b/xta-adapter/src/test/helm/xta-keystore-secret-test.yaml @@ -0,0 +1,54 @@ +# +# 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 + - 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== + 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 new file mode 100644 index 0000000..8e13390 --- /dev/null +++ b/xta-adapter/src/test/helm/xta-root-ca-secret-test.yaml @@ -0,0 +1,49 @@ +# +# 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 + - equal: + path: metadata.name + value: xta-root-ca + - equal: + path: metadata.namespace + value: helm-test + - equal: + path: data["ca.crt"] + value: Z2VoZWltCg== + 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 new file mode 100644 index 0000000..71f86ef --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml @@ -0,0 +1,55 @@ +# +# 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 +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_bindings_test.yaml b/xta-adapter/src/test/helm/xta_adapter_bindings_test.yaml new file mode 100644 index 0000000..959b0b8 --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_bindings_test.yaml @@ -0,0 +1,46 @@ +# +# 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 +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_basic_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml new file mode 100644 index 0000000..f0c7464 --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml @@ -0,0 +1,152 @@ +# +# 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 adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: dev + +tests: + - it: validate basic data + template: xta_adapter_cronjob.yaml + 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 + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + schedule: "1 1 * * * *" + identifier: 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 + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + asserts: + - equal: + path: spec.schedule + value: "*/15 * * * *" + - it: check container image + template: xta_adapter_cronjob.yaml + 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 + template: xta_adapter_cronjob.yaml + 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 + template: xta_adapter_cronjob.yaml + 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 \ No newline at end of file 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 new file mode 100644 index 0000000..954f51f --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml @@ -0,0 +1,93 @@ +# +# 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 adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: test +tests: + - it: check dummy livenessProbe default disabled + template: xta_adapter_cronjob.yaml + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe + - it: check dummy startupProbe default disabled + template: xta_adapter_cronjob.yaml + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe + - it: check dummy readynessProbe default disabled + template: xta_adapter_cronjob.yaml + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe + + - it: check dummy livenessProbe disabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: false + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe + - it: check dummy startupProbe disabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: false + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe + - it: check dummy readynessProbe disabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: false + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe + + + - it: check dummy livenessProbe enabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: true + asserts: + - isNotEmpty: + path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe + - it: check dummy startupProbe enabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: true + asserts: + - isNotEmpty: + path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe + - it: check dummy readynessProbe enabled + template: xta_adapter_cronjob.yaml + 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 new file mode 100644 index 0000000..5fa4712 --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml @@ -0,0 +1,158 @@ +# +# 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 adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: test +tests: + - it: check default env + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + identifier: gae: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_identifier + value: "gae: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: '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 + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + env.overrideSpringProfiles: local + xta: + identifier: 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: '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" \ No newline at end of file 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 new file mode 100644 index 0000000..617af94 --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml @@ -0,0 +1,47 @@ +# +# 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 adapter imagePull secret +release: + name: xta-adapter + namespace: sh-helm-test +templates: + - templates/xta_adapter_cronjob.yaml +set: + ozgcloud.environment: dev + +tests: + - it: should use default imagePull secret + set: + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.imagePullSecrets[0].name + value: xta-adapter-image-pull-secret + - 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 new file mode 100644 index 0000000..ae7ce6c --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml @@ -0,0 +1,56 @@ +# +# 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 adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: dev +tests: + - it: check resources + template: xta_adapter_cronjob.yaml + 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_volumes_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml new file mode 100644 index 0000000..b067ac0 --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml @@ -0,0 +1,92 @@ +# +# 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 adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: dev +tests: + - it: check volume mounts + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + identifier: 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 + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + identifier: 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/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java new file mode 100644 index 0000000..663b553 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java @@ -0,0 +1,40 @@ +/* + * 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 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 new file mode 100644 index 0000000..49acc96 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java @@ -0,0 +1,45 @@ +/* + * 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 de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormHeader.FormHeaderBuilder;; + +public class FormHeaderTestFactory { + + private static final String FORM_NAME = "dFördermittelantrag"; + + static FormHeader create() { + return createBuilder().build(); + } + + static FormHeaderBuilder createBuilder() { + return FormHeader.builder() + .sender("XTA") + .requestId(XtaMessageTestFactory.MESSAGE_ID.toString()) + .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 new file mode 100644 index 0000000..d092d27 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java @@ -0,0 +1,45 @@ +/* + * 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.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 new file mode 100644 index 0000000..115e1f6 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java @@ -0,0 +1,43 @@ +/* + * 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.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 new file mode 100644 index 0000000..9090741 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java @@ -0,0 +1,36 @@ +/* + * 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 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/XtaApplicationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java new file mode 100644 index 0000000..f1fd0ce --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java @@ -0,0 +1,55 @@ +/* + * 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.assertThat; +import static org.junit.Assert.*; + +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; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.xta.XtaEngineBasedAdapter; + +@ActiveProfiles({ "local", "itcase" }) +@SpringBootTest(classes = Application.class) +class XtaApplicationTest { + + @Autowired + private EngineBasedSemantikAdapter engineBasedAdapter; + + @Test + void startup() { + // should start without exception; + assertTrue(true); + } + + @Test + void shouldHaveEngineBasedAdapter() { + assertThat(engineBasedAdapter).isInstanceOf(XtaEngineBasedAdapter.class); + } +} 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 new file mode 100644 index 0000000..149d149 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java @@ -0,0 +1,66 @@ +/* + * 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.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 XtaFile create() { + return createBuilder().build(); + } + + static XtaFile.XtaFileBuilder createBuilder() { + return XtaFile.builder().name(NAME).file(createFile()); + } + + @SneakyThrows + private static File createFile() { + File tFile = File.createTempFile("test", "txt"); + 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 new file mode 100644 index 0000000..2db29e8 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java @@ -0,0 +1,141 @@ +/* + * 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.assertj.core.api.InstanceOfAssertFactories.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +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.context.annotation.Bean; +import org.springframework.test.context.ActiveProfiles; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.Application; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.router.VorgangRemoteService; + +@SpringBootTest(classes = { Application.class, ActivateXTARunnerConfig.class }) +@ActiveProfiles({ "local", "itcase" }) +class XtaITCase { + + @MockBean + private XtaRemoteService remoteService; + @MockBean + private VorgangRemoteService vorgangRemoteService; + + @Autowired + private XtaRunner runner; + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + + @BeforeEach + void prepareXtaRemoteService() { + when(remoteService.getMessagesMetadata()).thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); + + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn( + XtaMessageTestFactory.createBuilder() + .clearMessageFiles() + .messageFile(XtaFileTestFactory.withFileContent(TestUtils.loadFile("test_content.zip"), "test_content.zip")) + .build()); + } + + @Test + void shouldGetMessage() { + runner.onApplicationEvent(null); + + verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); + } + + @Test + void shouldCloseMessage() { + runner.onApplicationEvent(null); + + verify(remoteService, timeout(2000)).close(XtaMessageTestFactory.MESSAGE_ID); + } + + @Test + void shouldSend4Representations() { + runner.onApplicationEvent(null); + + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), any(), any()); + assertThat(formDataCaptor.getValue().getNumberOfRepresentations()).isEqualTo(4); + assertThat(formDataCaptor.getValue().getRepresentations()).hasSize(4); + } + + @Test + void shouldHavePostfachId() { + runner.onApplicationEvent(null); + + var formData = captorFormData(); + + assertThat(formData.getHeader().getServiceKonto()).describedAs("ServiceKonto").isNotNull() + .extracting(ServiceKonto::getPostfachAddresses).asList().hasSize(1).first() + .asInstanceOf(type(PostfachAddress.class)) + .extracting(PostfachAddress::getIdentifier).isInstanceOf(StringBasedIdentifier.class).asInstanceOf(type(StringBasedIdentifier.class)) + .extracting(StringBasedIdentifier::getPostfachId).isEqualTo("4dd01647-b9d9-4775-1b50-08da3d83800a"); + } + + @Test + void shouldHaveOrganisationsEinheitId() { + runner.onApplicationEvent(null); + + var formData = captorFormData(); + + assertThat(formData.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("9795669"); + } + + @Test + void shouldHaveVorgangNummer() { + runner.onApplicationEvent(null); + + var formData = captorFormData(); + + assertThat(formData.getHeader().getVorgangNummer()).hasSize(9); + } + + private FormData captorFormData() { + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), any(), any()); + + return formDataCaptor.getValue(); + } + +} + +class ActivateXTARunnerConfig { + @Bean + XtaRunner xtaRunner() { + return new XtaRunner(); + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..b10d986 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java @@ -0,0 +1,118 @@ +/* + * 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.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +class XtaMessageMapperTest { + + @Spy + @InjectMocks + private XtaMessageMapper mapper = Mappers.getMapper(XtaMessageMapper.class); + + @Nested + class TestToFormData { + + @Test + void shouldMapAllToForm() { + var formData = mapper.toFormData(XtaMessageTestFactory.create()); + + assertThat(formData).usingRecursiveComparison().ignoringFields("id", "representations") + .isEqualTo(FormDataTestFactory.create()); + } + + @Test + void shouldHaveMessageFileAsRepresentation() { + var formData = mapper.toFormData(XtaMessageTestFactory.create()); + + assertThat(formData.getRepresentations()).hasSize(1); + } + + @Test + void shouldCallToIncomingFile() { + XtaMessage message = XtaMessageTestFactory.create(); + + mapper.toFormData(message); + + verify(mapper).toIncomingFile(notNull()); + } + + @Nested + class ToFormHeader { + @Test + void shouldMapToFormHeader() { + var mapped = mapper.formHeaderFromMetaData(XtaMessageMetaDataTestFactory.create()); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(FormHeaderTestFactory.create()); + } + } + + @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("application/zip"); + } + + @Test + void shouldHaveSize() { + var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); + + assertThat(inFile.getSize()).isEqualTo(XtaFileTestFactory.CONTENT.length()); + } + + @Test + void shouldHandleMissingMessageFile() { + var fileGroup = mapper.toIncomingFile(null); + + assertThat(fileGroup).isNull(); + } + } + + } +} 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 new file mode 100644 index 0000000..f66da9c --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java @@ -0,0 +1,91 @@ +/* + * 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 java.math.BigInteger; + +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); + + @Nested + class TestMoreMessagesAvailable { + + @Test + void shouldReturnFalseOnNoMessagesAvailable() { + + var response = mapper.moreMessagesAvailable(buildWithNoMessageAvailable()); + + assertThat(response).isFalse(); + } + + private MsgStatusListTypeAndHeaderResponse buildWithNoMessageAvailable() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().noMessageAvailable(true).build(); + } + + @Test + void shouldReturnFalseOnPendingMessagesNull() { + + var response = mapper.moreMessagesAvailable(buildPendingMessagesNull()); + + assertThat(response).isFalse(); + } + + private MsgStatusListTypeAndHeaderResponse buildPendingMessagesNull() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().messageItemsPending(null).build(); + } + + @Test + void shouldReturnFalseOnNoMessagesPending() { + + var response = mapper.moreMessagesAvailable(buildWithoutPendingMessages()); + + assertThat(response).isFalse(); + } + + private MsgStatusListTypeAndHeaderResponse buildWithoutPendingMessages() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().messageItemsPending(null).build(); + } + + @Test + void shouldReturnTrueOnMessagesPending() { + + var response = mapper.moreMessagesAvailable(buildWithPendingMessages()); + + assertThat(response).isTrue(); + } + + private MsgStatusListTypeAndHeaderResponse buildWithPendingMessages() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().messageItemsPending(BigInteger.ONE).build(); + } + } +} 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 new file mode 100644 index 0000000..fbafa41 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java @@ -0,0 +1,45 @@ +/* + * 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.XtaMessageTestFactory.*; + +import java.time.ZonedDateTime; + +class XtaMessageMetaDataTestFactory { + + static final String MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; + static final ZonedDateTime ORIGIN = ZonedDateTime.parse("2022-10-29T15:45:52.4942149+02:00"); + + static XtaMessageMetaData create() { + return createBuilder().build(); + } + + static XtaMessageMetaData.XtaMessageMetaDataBuilder createBuilder() { + return XtaMessageMetaData.builder() + .messageId(MESSAGE_ID) + .messageType(MESSAGE_TYPE) + .origin(ORIGIN); + } +} 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 new file mode 100644 index 0000000..68a479c --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java @@ -0,0 +1,44 @@ +/* + * 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.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 new file mode 100644 index 0000000..456518d --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java @@ -0,0 +1,143 @@ +/* + * 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.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 new file mode 100644 index 0000000..aff6fce --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java @@ -0,0 +1,40 @@ +/* + * 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; + +class XtaMessageTestFactory { + + static final XtaMessageId MESSAGE_ID = XtaMessageId.from("urn:de:xta:messageid:dataport_xta_210:81e40808-91c6-4765-aaf4-1aa62fec8be9"); + + static XtaMessage create() { + return createBuilder().build(); + } + + static XtaMessage.XtaMessageBuilder createBuilder() { + return XtaMessage.builder() + .metaData(XtaMessageMetaDataTestFactory.create()) + .messageFile(XtaFileTestFactory.create()); + + } +} 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 new file mode 100644 index 0000000..4d4a3b7 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java @@ -0,0 +1,52 @@ +/* + * 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.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 new file mode 100644 index 0000000..4a3da65 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java @@ -0,0 +1,43 @@ +/* + * 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 org.junit.jupiter.api.Test; +import org.mockito.Spy; + +class XtaRemoteServiceConfigurationTest { + + @Spy + 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/XtaRemoteServiceITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java new file mode 100644 index 0000000..d4dbdb5 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java @@ -0,0 +1,93 @@ +/* + * 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 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; +import jakarta.validation.Valid; + +@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.getMessage("urn:de:xta:messageid:dataport_xta_210:81e40808-91c6-4765-aaf4-1aa62fec8be9"); + + 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 new file mode 100644 index 0000000..cb5df11 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java @@ -0,0 +1,146 @@ +/* + * 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.ArgumentMatchers.*; +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.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.boot.webservices.client.WebServiceTemplateBuilder; + +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(); + + @BeforeEach + void init() { + doReturn(file).when(service).getMessage(anyString()); + } + + @Test + void shouldCallGetMessage() { + service.getMessage(XtaMessageTestFactory.MESSAGE_ID); + + verify(service).getMessage(XtaMessageTestFactory.MESSAGE_ID.toString()); + } + + @Test + void shouldReturnMessageWithoutMetaData() { + var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); + + assertThat(message.getMetaData()).isNull(); + } + + @Test + void hosuldReturnMessageWithFile() { + var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); + + assertThat(message.getMessageFiles()).hasSize(1).contains(file); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapterTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java similarity index 54% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapterTest.java rename to xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java index e245ed3..f5c6500 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapterTest.java +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * 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 @@ -21,47 +21,60 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.xta; -import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.List; +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.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.SemantikAdapter; -class AfmEngineBasedAdapterTest { +class XtaRunnerTest { @InjectMocks - private AfmEngineBasedAdapter adapter; - @Spy - private List<EngineBasedMapper> mappers; + private XtaRunner scheduler; + + @Mock + private XtaService service; @Mock - private AfmEngineBasedMapper mapper; + private SemantikAdapter semantikAdapter; @Nested - class TestParseFromData { + class TestRunGetXtaMessages { - private FormData formData = FormData.builder().build(); + public static final FormData MESSAGE = FormDataTestFactory.create(); @BeforeEach - void mockEngineBasedMapper() { - when(mappers.size()).thenReturn(1); - when(mappers.get(anyInt())).thenReturn(mapper); + 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 shouldCallMappers() { - adapter.parseFormData(formData); + void shouldAcknowledgeReceive() { + scheduler.runGetXtaMessages(); - verify(mapper).parseFormData(formData); + verify(service).acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); } } -} \ No newline at end of file +} 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 new file mode 100644 index 0000000..6d0d104 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java @@ -0,0 +1,239 @@ +/* + * 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.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.stream.Stream; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +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.formdata.FormData; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; + +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; + + @Nested + class TestGetMessagesAsFormData { + + private XtaMessageMetaDatasAndHeader metaData = XtaMessageMetaDatasAndHeaderTestFactory.create(); + private XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create(); + private XtaMessage message = XtaMessageTestFactory.create(); + + @BeforeEach + void setup() { + doReturn(Stream.of(messageMetaData)).when(service).createXtaMessageStream(); + } + + @Test + void shouldCallCreateStream() { + service.getMessages(); + + verify(service).createXtaMessageStream(); + } + + @Test + void shouldCallFilterByMessageType() { + when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create()); + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); + + service.getMessages().toList(); + + verify(service).filterByMessageType(messageMetaData); + } + + @Test + void shouldCallGetFormData() { + when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create()); + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); + doReturn(true).when(service).filterByMessageType(messageMetaData); + + service.getMessages().toList(); + + verify(service).getFormData(messageMetaData); + } + + @Test + void shouldNotCallGetFormData() { + doReturn(false).when(service).filterByMessageType(messageMetaData); + + service.getMessages().toList(); + + verify(service, never()).getFormData(any()); + } + } + + @Nested + class TestFilterByMessageType { + + @Test + void shouldAcceptDFoerdermittel() { + var metaDataDFoerder = XtaMessageMetaDataTestFactory.create(); + + assertThat(service.filterByMessageType(metaDataDFoerder)).isTrue(); + } + + @Test + void shouldNotAcceptOtherMessageType() { + var metaDataDFoerder = XtaMessageMetaDataTestFactory.createBuilder().messageType(MESSAGE_TYPE_OTHER).build(); + + assertThat(service.filterByMessageType(metaDataDFoerder)).isFalse(); + } + } + + @Nested + class TestGetFormData { + + private XtaMessage message = XtaMessageTestFactory.create(); + + @Captor + private ArgumentCaptor<XtaMessage> messageCaptor; + @Mock + private FormData formData; + + @BeforeEach + void init() { + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); + } + + @Test + void shouldCallRemoteService() { + doReturn(formData).when(service).updateHeader(any()); + + service.getFormData(XtaMessageMetaDataTestFactory.create()); + + verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); + } + + @Test + void shouldCallMapper() { + doReturn(formData).when(service).updateHeader(any()); + + service.getFormData(XtaMessageMetaDataTestFactory.create()); + + verify(mapper).toFormData(any()); + } + + @Test + void shouldHaveMetaData() { + doReturn(formData).when(service).updateHeader(any()); + XtaMessageMetaData metaData = XtaMessageMetaDataTestFactory.create(); + + service.getFormData(metaData); + + verify(mapper).toFormData(messageCaptor.capture()); + assertThat(messageCaptor.getValue().getMetaData()).isNotNull().isEqualTo(metaData); + } + + @Test + void shouldReturnMappedResult() { + var mapped = FormDataTestFactory.create(); + when(mapper.toFormData(any())).thenReturn(mapped); + doReturn(mapped).when(service).updateHeader(any()); + + var result = service.getFormData(XtaMessageMetaDataTestFactory.create()); + + assertThat(result).isSameAs(mapped); + } + } + + @Nested + class TestUpdateHeader { + + @Test + void shouldCallSetVorgangNummer() { + var formData = FormDataTestFactory.create(); + + service.updateHeader(formData); + + verify(service).setVorgangNummer(formData.getHeader()); + } + + @Test + void shouldSetUpdatedHeader() { + var updatedHeader = FormHeaderTestFactory.create(); + doReturn(updatedHeader).when(service).setVorgangNummer(any()); + + var result = service.updateHeader(FormDataTestFactory.create()); + + Assertions.assertThat(result.getHeader()).isSameAs(updatedHeader); + } + } + + @Nested + class TestSetVorgangNummer { + + @Test + void shouldCallVorgangNummerSupplier() { + service.setVorgangNummer(FormHeaderTestFactory.create()); + + verify(vorgangNummerSupplier).get(XtaService.VORGANG_NUMMER_SUFFIX_LENGTH); + } + + @Test + void shouldSetVorgangNummer() { + var vorgangNummer = "vorgang-1"; + when(vorgangNummerSupplier.get(anyInt())).thenReturn(vorgangNummer); + + var result = service.setVorgangNummer(FormHeaderTestFactory.create()); + + assertThat(result.getVorgangNummer()).isEqualTo(vorgangNummer); + } + } + + @Nested + class TestAcknowledgeReceive { + + @Test + void shouldCallRemoteService() { + service.acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); + + verify(remoteService).close(XtaMessageTestFactory.MESSAGE_ID); + } + } + +} 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 new file mode 100644 index 0000000..79b126e --- /dev/null +++ b/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..10c37fc --- /dev/null +++ b/xta-adapter/src/test/resources/application-itcase.yml @@ -0,0 +1,6 @@ +ozgcloud: + xta: + keystore: + file: classpath:xtaTestStore.p12 + password: changeit + identifier: gae:jens.reese@mgm-tp.com \ No newline at end of file diff --git a/xta-adapter/src/test/resources/junit-platform.properties b/xta-adapter/src/test/resources/junit-platform.properties new file mode 100644 index 0000000..1cebb76 --- /dev/null +++ b/xta-adapter/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/xta-adapter/src/test/resources/test_content.zip b/xta-adapter/src/test/resources/test_content.zip new file mode 100644 index 0000000000000000000000000000000000000000..e2c9e434c49cf52a8d0840b1a25dcc52615df04c GIT binary patch literal 51381 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 X26(fwfedG6U}i92WMIfY4&ng-J*LGb literal 0 HcmV?d00001 diff --git a/xta-adapter/src/test/resources/xtaTestStore.p12 b/xta-adapter/src/test/resources/xtaTestStore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a0cc212c49745a428186d0d4f2f73dd6ac7f24ff GIT binary patch literal 2768 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 P6^{eYHd-+;sS5xAda~bQ literal 0 HcmV?d00001 -- GitLab