This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch SP-1065
in repository https://gitbox.apache.org/repos/asf/streampipes.git


The following commit(s) were added to refs/heads/SP-1065 by this push:
     new c36c21fce  [#1065] Replace library underscore with 
jackson-dataformat-xml
c36c21fce is described below

commit c36c21fceeae298af9e26904b29ded73be6cd4a4
Author: Philipp Zehnder <[email protected]>
AuthorDate: Tue Jan 10 10:06:58 2023 +0100

     [#1065] Replace library underscore with jackson-dataformat-xml
---
 pom.xml                                            |  6 ----
 streampipes-extensions-management/pom.xml          |  8 ++---
 .../connect/adapter/format/xml/XmlParser.java      | 37 +++++++++++++++++-----
 3 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/pom.xml b/pom.xml
index 9a76c9204..41a94c326 100644
--- a/pom.xml
+++ b/pom.xml
@@ -127,7 +127,6 @@
        <spring-security.version>6.0.1</spring-security.version>
        <swagger.version>2.2.7</swagger.version>
        <type-parser.version>0.7.0</type-parser.version>
-       <underscore.version>1.47</underscore.version>
        <wildfly-common.version>1.6.0.Final</wildfly-common.version>
        <hawtbuf.version>1.11</hawtbuf.version>
        <netty-tc-native.version>2.0.52.Final</netty-tc-native.version>
@@ -373,11 +372,6 @@
                                        <artifactId>commons-logging</artifactId>
                                        
<version>${commons-logging.version}</version>
                                </dependency>
-                               <dependency>
-                                       <groupId>com.github.javadev</groupId>
-                                       <artifactId>underscore</artifactId>
-                                       <version>${underscore.version}</version>
-                               </dependency>
                                <dependency>
                                        <groupId>com.squareup</groupId>
                                        <artifactId>javapoet</artifactId>
diff --git a/streampipes-extensions-management/pom.xml 
b/streampipes-extensions-management/pom.xml
index 473cde354..bc893851f 100644
--- a/streampipes-extensions-management/pom.xml
+++ b/streampipes-extensions-management/pom.xml
@@ -102,10 +102,6 @@
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.github.javadev</groupId>
-            <artifactId>underscore</artifactId>
-        </dependency>
         <dependency>
             <groupId>de.grundid.opendatalab</groupId>
             <artifactId>geojson-jackson</artifactId>
@@ -114,6 +110,10 @@
             <groupId>jakarta.json</groupId>
             <artifactId>jakarta.json-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-xml</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.eclipse.parsson</groupId>
             <artifactId>jakarta.json</artifactId>
diff --git 
a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/adapter/format/xml/XmlParser.java
 
b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/adapter/format/xml/XmlParser.java
index 5c8f372b7..6eefbd546 100644
--- 
a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/adapter/format/xml/XmlParser.java
+++ 
b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/adapter/format/xml/XmlParser.java
@@ -26,11 +26,12 @@ import 
org.apache.streampipes.extensions.management.connect.adapter.format.util.
 import 
org.apache.streampipes.extensions.management.connect.adapter.model.generic.Parser;
 import 
org.apache.streampipes.extensions.management.connect.adapter.sdk.ParameterExtractor;
 import org.apache.streampipes.model.connect.grounding.FormatDescription;
+import org.apache.streampipes.model.connect.guess.AdapterGuessInfo;
+import org.apache.streampipes.model.connect.guess.GuessTypeInfo;
 import org.apache.streampipes.model.schema.EventProperty;
 import org.apache.streampipes.model.schema.EventSchema;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.underscore.lodash.U;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import com.google.common.base.Charsets;
 import com.google.common.io.CharStreams;
 import com.google.gson.Gson;
@@ -42,6 +43,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 public class XmlParser extends Parser {
 
@@ -49,10 +51,11 @@ public class XmlParser extends Parser {
   private static final String ENCODING = "#encoding";
 
   private String tag;
-  private ObjectMapper objectMapper;
+
+  private XmlMapper xmlMapper;
 
   public XmlParser() {
-    this.objectMapper = new ObjectMapper();
+    this.xmlMapper = new XmlMapper();
   }
 
   public XmlParser(String tag) {
@@ -75,8 +78,8 @@ public class XmlParser extends Parser {
     try {
       String dataString = CharStreams.toString(new InputStreamReader(data, 
Charsets.UTF_8));
 
-      Map<String, Object> map =
-          (Map<String, Object>) U.fromXmlWithoutNamespaces(dataString);
+      Map<String, Object> map = xmlMapper.readValue(dataString, Map.class);
+
       map.remove(ENCODING);
       Map<String, Object> convertedMap = new XmlMapConverter(map).convert();
       searchAndEmitEvents(convertedMap, tag, emitBinaryEvent);
@@ -89,6 +92,17 @@ public class XmlParser extends Parser {
 
   @Override
   public EventSchema getEventSchema(List<byte[]> oneEvent) {
+    return this.getSchemaAndSample(oneEvent).getEventSchema();
+  }
+
+
+  @Override
+  public boolean supportsPreview() {
+    return true;
+  }
+
+
+  public AdapterGuessInfo getSchemaAndSample(List<byte[]> eventSample) throws 
ParseException {
     EventSchema resultSchema = new EventSchema();
 
     JsonDataFormatDefinition jsonDefinition = new JsonDataFormatDefinition();
@@ -96,7 +110,7 @@ public class XmlParser extends Parser {
     Map<String, Object> exampleEvent = null;
 
     try {
-      exampleEvent = jsonDefinition.toMap(oneEvent.get(0));
+      exampleEvent = jsonDefinition.toMap(eventSample.get(0));
     } catch (SpRuntimeException e) {
       logger.error(e.toString());
     }
@@ -106,9 +120,16 @@ public class XmlParser extends Parser {
       resultSchema.addEventProperty(p);
     }
 
-    return resultSchema;
+    var sample = exampleEvent
+        .entrySet()
+        .stream()
+        .collect(Collectors.toMap(Map.Entry::getKey, e ->
+            new GuessTypeInfo(e.getValue().getClass().getCanonicalName(), 
e.getValue())));
+
+    return new AdapterGuessInfo(resultSchema, sample);
   }
 
+
   private void searchAndEmitEvents(Map<String, Object> map, String key, 
EmitBinaryEvent emitBinaryEvent) {
     Gson gson = new Gson();
 

Reply via email to