Skip to content
This repository was archived by the owner on Feb 15, 2024. It is now read-only.

Commit 48f7ccd

Browse files
committed
Allow to correctly use custom instances of XMLInputFactory and XMLOutputFactory.
1 parent 4ef1837 commit 48f7ccd

File tree

4 files changed

+19
-3
lines changed

4 files changed

+19
-3
lines changed

dataformat-aasx/src/main/java/io/adminshell/aas/v3/dataformat/aasx/AASXDeserializer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class AASXDeserializer {
4747
private static final String XML_TYPE = "http://www.admin-shell.io/aasx/relationships/aas-spec";
4848
private static final String AASX_ORIGIN = "/aasx/aasx-origin";
4949

50-
private XmlDeserializer deserializer = new XmlDeserializer();
50+
private final XmlDeserializer deserializer;
5151

5252
private AssetAdministrationShellEnvironment environment;
5353
private final OPCPackage aasxRoot;
@@ -61,6 +61,7 @@ public class AASXDeserializer {
6161
*/
6262
public AASXDeserializer(InputStream inputStream) throws InvalidFormatException, IOException {
6363
aasxRoot = OPCPackage.open(inputStream);
64+
deserializer = new XmlDeserializer();
6465
}
6566

6667
/**

dataformat-aasx/src/main/java/io/adminshell/aas/v3/dataformat/aasx/AASXSerializer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,13 @@ public class AASXSerializer {
6161

6262
private static final String AASSUPPL_RELTYPE = "http://www.admin-shell.io/aasx/relationships/aas-suppl";
6363

64-
private Serializer xmlSerializer = new XmlSerializer();
64+
private final Serializer xmlSerializer;
6565

6666
/**
6767
* Default constructor
6868
*/
6969
public AASXSerializer() {
70+
xmlSerializer = new XmlSerializer();
7071
}
7172

7273
/**

dataformat-xml/src/main/java/io/adminshell/aas/v3/dataformat/xml/XmlDeserializer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.fasterxml.jackson.databind.DeserializationFeature;
2323
import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver;
2424
import com.fasterxml.jackson.databind.module.SimpleModule;
25+
import com.fasterxml.jackson.dataformat.xml.XmlFactory;
2526
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
2627

2728
import io.adminshell.aas.v3.dataformat.DeserializationException;
@@ -34,18 +35,24 @@
3435

3536
public class XmlDeserializer implements Deserializer {
3637

38+
protected final XmlFactory xmlFactory;
3739
protected XmlMapper mapper;
3840
protected SimpleAbstractTypeResolver typeResolver;
3941
protected static Map<Class<?>, com.fasterxml.jackson.databind.JsonDeserializer> customDeserializers = Map.of(
4042
SubmodelElement.class, new SubmodelElementDeserializer());
4143

4244
public XmlDeserializer() {
45+
this(new XmlFactory());
46+
}
47+
48+
public XmlDeserializer(XmlFactory xmlFactory) {
49+
this.xmlFactory = xmlFactory;
4350
initTypeResolver();
4451
buildMapper();
4552
}
4653

4754
protected void buildMapper() {
48-
mapper = XmlMapper.builder().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
55+
mapper = XmlMapper.builder(xmlFactory).enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
4956
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
5057
.serializationInclusion(JsonInclude.Include.NON_NULL)
5158
.annotationIntrospector(new XmlDataformatAnnotationIntrospector())

dataformat-xml/src/main/java/io/adminshell/aas/v3/dataformat/xml/XmlSerializer.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.fasterxml.jackson.databind.ObjectWriter;
2424
import com.fasterxml.jackson.databind.SerializationFeature;
2525
import com.fasterxml.jackson.databind.module.SimpleModule;
26+
import com.fasterxml.jackson.dataformat.xml.XmlFactory;
2627
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
2728
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
2829

@@ -42,6 +43,7 @@
4243
import io.adminshell.aas.v3.model.Reference;
4344

4445
public class XmlSerializer implements Serializer {
46+
protected final XmlFactory xmlFactory;
4547
protected XmlMapper mapper;
4648
protected Map<String, String> namespacePrefixes;
4749

@@ -50,6 +52,11 @@ public XmlSerializer() {
5052
}
5153

5254
public XmlSerializer(Map<String, String> namespacePrefixes) {
55+
this(new XmlFactory(), namespacePrefixes);
56+
}
57+
58+
public XmlSerializer(XmlFactory xmlFactory, Map<String, String> namespacePrefixes) {
59+
this.xmlFactory = xmlFactory;
5360
this.namespacePrefixes = namespacePrefixes;
5461
buildMapper();
5562
}

0 commit comments

Comments
 (0)