From 0dda7dca621872d80c67a9cfbabc7d90f3068a6d Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 18 Jul 2024 10:50:52 +0200
Subject: [PATCH] OZG-5156 Accept FIM messages in XTA adapter

support for empty namespace in xml
---
 .../java/de/ozgcloud/eingang/fim/FimService.java     |  8 +++++++-
 .../de/ozgcloud/eingang/fim/FimServiceITCase.java    | 12 ++++++++++++
 fim-adapter/src/test/resources/test2.xml             |  2 +-
 fim-adapter/src/test/resources/test3.xml             |  5 +++++
 .../ozgcloud/eingang/semantik/SemantikAdapter.java   |  3 ---
 5 files changed, 25 insertions(+), 5 deletions(-)
 create mode 100644 fim-adapter/src/test/resources/test3.xml

diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java
index b451d9521..d1bad439b 100644
--- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java
+++ b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java
@@ -1,6 +1,7 @@
 package de.ozgcloud.eingang.fim;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import io.micrometer.common.util.StringUtils;
 import jakarta.annotation.PostConstruct;
 import lombok.extern.log4j.Log4j2;
@@ -69,7 +70,9 @@ public class FimService {
     }
 
     public FormData transformDocument(final Document document, final FormData initialFormData) {
-        final String schemeName = document.getDocumentElement().getAttribute("xmlns:xfd");
+        final String[] tagParts = document.getDocumentElement().getTagName().split(":");
+        final String namespacePrefix = tagParts.length < 2 ? "" : (":" + tagParts[0]);
+        final String schemeName = document.getDocumentElement().getAttribute("xmlns" + namespacePrefix);
         if (StringUtils.isEmpty(schemeName)) {
             throw new FimException("XML Document does not provide a scheme");
         }
@@ -84,6 +87,9 @@ public class FimService {
 
         adapter.extractZustaendigeStelle(builder, initialFormData);
 
+        // FIXME remove me please
+        builder.zustaendigeStelle(ZustaendigeStelle.builder().organisationseinheitenId("vbe:010550120100").build());
+
         return builder.build();
     }
 
diff --git a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java b/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java
index d639d58fc..886bfbefd 100644
--- a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java
+++ b/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java
@@ -76,6 +76,18 @@ public class FimServiceITCase {
         assertThat(expected).isEqualTo(formData.getFormData());
     }
 
+    @Test
+    void shouldTransformSimpleDocumentWithoutNamespace() throws ParserConfigurationException, IOException, SAXException {
+        final Document document = loadDocument("src/test/resources/test3.xml");
+        final FormData formData = fimService.transformDocument(document, FormData.builder().build());
+
+        final Map<String, Object> expected = Map.of(
+                "fim.S1235", Map.of("label", "Testkey", "value", "Testvalue"),
+                "fim.S1236", Map.of("label", "fim.S1236", "value", "Testvalue 2")
+        );
+        assertThat(expected).isEqualTo(formData.getFormData());
+    }
+
     @Test
     void shouldTransformDocument() throws ParserConfigurationException, IOException, SAXException {
         final Document document = loadDocument("src/test/resources/S17000652V1.4_test01.xml");
diff --git a/fim-adapter/src/test/resources/test2.xml b/fim-adapter/src/test/resources/test2.xml
index 6d219fb5c..2f0cc4f8b 100644
--- a/fim-adapter/src/test/resources/test2.xml
+++ b/fim-adapter/src/test/resources/test2.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<xs:fim.S1234 xmlns:xfd="test2" xsi:schemaLocation="test2">
+<xs:fim.S1234 xmlns:xs="test2" xsi:schemaLocation="test2">
     <xs:fim.S1235>Testvalue</xs:fim.S1235>
     <xs:fim.S1236>Testvalue 2</xs:fim.S1236>
 </xs:fim.S1234>
diff --git a/fim-adapter/src/test/resources/test3.xml b/fim-adapter/src/test/resources/test3.xml
new file mode 100644
index 000000000..c00618791
--- /dev/null
+++ b/fim-adapter/src/test/resources/test3.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<fim.S1234 xmlns="test2" xsi:schemaLocation="test2">
+    <fim.S1235>Testvalue</fim.S1235>
+    <fim.S1236>Testvalue 2</fim.S1236>
+</fim.S1234>
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java
index 1bdf7660b..9168807d8 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java
@@ -24,7 +24,6 @@
 package de.ozgcloud.eingang.semantik;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -55,8 +54,6 @@ public class SemantikAdapter {
 	}
 
 	private FormData parseByEngineAdapter(FormData formData) {
-		// FIXME remove
-		LOG.debug("Parse bei responsible adapters " + engineBasedAdapters.stream().map(x -> x.getClass().getName()).collect(Collectors.joining(",")));
 		List<EngineBasedSemantikAdapter> responsibleEngineAdapters = getResponsibleEngineAdapters(formData);
 		for (var adapter : responsibleEngineAdapters) {
 			try {
-- 
GitLab