Skip to content

Commit

Permalink
[#1065] Replace library underscore with jackson-dataformat-xml
Browse files Browse the repository at this point in the history
  • Loading branch information
tenthe committed Jan 10, 2023
1 parent 5a2a19d commit c36c21f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 18 deletions.
6 changes: 0 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down
8 changes: 4 additions & 4 deletions streampipes-extensions-management/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -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>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@
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;
Expand All @@ -42,17 +43,19 @@
import java.io.InputStreamReader;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class XmlParser extends Parser {

private static final Logger logger = LoggerFactory.getLogger(XmlParser.class);
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) {
Expand All @@ -75,8 +78,8 @@ public void parse(InputStream data, EmitBinaryEvent emitBinaryEvent) throws Pars
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);
Expand All @@ -89,14 +92,25 @@ public void parse(InputStream data, EmitBinaryEvent emitBinaryEvent) throws Pars

@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();

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());
}
Expand All @@ -106,9 +120,16 @@ public EventSchema getEventSchema(List<byte[]> oneEvent) {
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();

Expand Down

0 comments on commit c36c21f

Please sign in to comment.