You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ze...@apache.org on 2023/01/10 09:07:08 UTC
[streampipes] branch SP-1065 updated: [#1065] Replace library underscore with jackson-dataformat-xml
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 <te...@users.noreply.github.com>
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();