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

Commit e29f0ff

Browse files
committed
Add default property order for xml dataformat
1 parent 4ebf440 commit e29f0ff

25 files changed

Lines changed: 16 additions & 300 deletions

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@
1616
package io.adminshell.aas.v3.dataformat.xml;
1717

1818
import com.fasterxml.jackson.databind.introspect.Annotated;
19+
import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
1920
import com.fasterxml.jackson.dataformat.xml.JacksonXmlAnnotationIntrospector;
2021

2122
/**
2223
* This class helps to dynamically decide how to de-/serialize classes and
2324
* properties defined in the AAS model library. It will automatically add a default namespace
24-
* to property names.
25+
* to property names and set a default property order for contained elements.
2526
*/
2627
public class XmlDataformatAnnotationIntrospector extends JacksonXmlAnnotationIntrospector {
2728
private static final long serialVersionUID = 1L;
@@ -42,4 +43,18 @@ public String findNamespace(Annotated ann) {
4243
return ns;
4344
}
4445
}
46+
47+
@Override
48+
public String[] findSerializationPropertyOrder(AnnotatedClass ac) {
49+
String[] order = super.findSerializationPropertyOrder(ac);
50+
if (order == null) {
51+
order = new String[] {
52+
"extensions", "idShort", "displayNames", "category", "descriptions", "administration", "identification", "kind", "semanticId",
53+
"qualifiers", "embeddedDataSpecification", "dataSpecifications", "isCaseOf", "security", "derivedFrom", "submodels", "assetInformation", "views", "externalSubjectId", "key", "allowDuplicates", "ordered", "valueId", "value",
54+
"max", "min", "type", "valueType", "mimeType", "first", "second", "annotations", "revision", "version", "defaultThumbnail", "globalAssetId", "externalAssetId", "entityType", "statements", "assetKind", "billOfMaterials",
55+
"specificAssetIds", "observed", "inoutputVariables", "inputVariables", "outputVariables", "submodelElements", "containedElements"
56+
};
57+
}
58+
return order;
59+
}
4560
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@
1818
import java.util.List;
1919

2020
import com.fasterxml.jackson.annotation.JsonIgnore;
21-
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
2221

2322
import io.adminshell.aas.v3.model.Reference;
2423

25-
@JsonPropertyOrder({"revision", "version"})
2624
public interface AdministrativeInformationMixin {
2725
@JsonIgnore
2826
public List<Reference> getDataSpecifications();

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,13 @@
1717

1818
import java.util.List;
1919

20-
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
2120
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
2221
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
2322

2423
import io.adminshell.aas.v3.dataformat.xml.deserialization.DataElementsDeserializer;
2524
import io.adminshell.aas.v3.dataformat.xml.serialization.DataElementsSerializer;
2625
import io.adminshell.aas.v3.model.DataElement;
2726

28-
@JsonPropertyOrder({"extensions", "idShort", "displayNames", "category", "descriptions", "kind", "semanticId",
29-
"qualifiers", "dataSpecifications", "first", "second", "annotations"})
3027
public interface AnnotatedRelationshipElementMixin {
3128
@JsonSerialize(using = DataElementsSerializer.class)
3229
@JsonDeserialize(using = DataElementsDeserializer.class)

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,13 @@
1717

1818
import java.util.List;
1919

20-
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
2120
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
2221
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
2322

2423
import io.adminshell.aas.v3.dataformat.xml.AasXmlNamespaceContext;
2524
import io.adminshell.aas.v3.model.Reference;
2625
import io.adminshell.aas.v3.model.View;
2726

28-
@JsonPropertyOrder({"extensions", "idShort", "displayNames", "category", "descriptions", "administration",
29-
"identification", "dataSpecifications", "security", "derivedFrom", "submodels", "assetInformation", "views"})
3027
public interface AssetAdministrationShellMixin {
3128
@JacksonXmlProperty(namespace = AasXmlNamespaceContext.AAS_URI, localName = "submodelRef")
3229
@JacksonXmlElementWrapper(namespace = AasXmlNamespaceContext.AAS_URI, localName = "submodelRefs")

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import java.util.List;
1919

20-
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
2120
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
2221
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
2322

@@ -26,9 +25,7 @@
2625
import io.adminshell.aas.v3.model.IdentifierKeyValuePair;
2726
import io.adminshell.aas.v3.model.Reference;
2827

29-
@JsonPropertyOrder({"defaultThumbnail", "globalAssetId", "assetKind", "billOfMaterials", "specificAssetIds"})
3028
public interface AssetInformationMixin {
31-
3229
@JacksonXmlProperty(namespace = AasXmlNamespaceContext.AAS_URI, localName = "specificAssetId")
3330
@JacksonXmlElementWrapper(namespace = AasXmlNamespaceContext.AAS_URI, localName = "specificAssetIds")
3431
public List<IdentifierKeyValuePair> getSpecificAssetIds();

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

Lines changed: 0 additions & 22 deletions
This file was deleted.

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

Lines changed: 0 additions & 23 deletions
This file was deleted.

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

Lines changed: 0 additions & 23 deletions
This file was deleted.

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

Lines changed: 0 additions & 23 deletions
This file was deleted.

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,13 @@
1717

1818
import java.util.List;
1919

20-
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
2120
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
2221
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
2322

2423
import io.adminshell.aas.v3.dataformat.xml.AasXmlNamespaceContext;
2524
import io.adminshell.aas.v3.dataformat.xml.deserialization.ReferencesDeserializer;
2625
import io.adminshell.aas.v3.model.Reference;
2726

28-
@JsonPropertyOrder({"extensions", "idShort", "displayNames", "category", "descriptions", "administration",
29-
"identification", "embeddedDataSpecifications", "isCaseOf"})
3027
public interface ConceptDescriptionMixin {
3128
@JacksonXmlProperty(namespace = AasXmlNamespaceContext.AAS_URI, localName = "isCaseOf")
3229
@JsonDeserialize(using = ReferencesDeserializer.class)

0 commit comments

Comments
 (0)