From cc837a33f2e171b5cd7722b3ca531ad1f61fad84 Mon Sep 17 00:00:00 2001 From: mengjiann Date: Thu, 27 Aug 2020 23:50:57 +0800 Subject: [PATCH] #32 Additional fix for xml namespace with prefix. --- .../modules/openapi/ObjectTypeRenderer.java | 9 +++++++++ .../confignamespacewithprefix/DataXmlDTO.java | 15 +++++++++------ .../DataXmlDTODataValue.java | 12 ++++++++++++ .../confignamespacewithprefix/enunciate.xml | 1 + .../confignamespacewithprefix/openapi.yml | 17 +++++++++++++++++ 5 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTODataValue.java diff --git a/src/main/java/dk/jyskebank/tools/enunciate/modules/openapi/ObjectTypeRenderer.java b/src/main/java/dk/jyskebank/tools/enunciate/modules/openapi/ObjectTypeRenderer.java index 7830bad..d3f8361 100644 --- a/src/main/java/dk/jyskebank/tools/enunciate/modules/openapi/ObjectTypeRenderer.java +++ b/src/main/java/dk/jyskebank/tools/enunciate/modules/openapi/ObjectTypeRenderer.java @@ -323,6 +323,11 @@ private void addNamespaceXml(IndentationPrinter ip, Property p) { boolean renderAttribute = AccessorProperty.isAttribute(p); boolean renderNamespace = namespace != null && !namespace.isEmpty(); + String namespacePrefix = null; + if (renderNamespace && this.namespacePrefixMap != null && !this.namespacePrefixMap.isEmpty()) { + namespacePrefix = getNonNullAndNonEmpty(this.namespacePrefixMap.get(namespace)); + } + if (!wrappedName.isPresent() && !renderAttribute && !renderNamespace) { return; } @@ -339,6 +344,10 @@ private void addNamespaceXml(IndentationPrinter ip, Property p) { if (renderNamespace) { ip.add("namespace: ", namespace); } + if (namespacePrefix != null && !namespacePrefix.isEmpty()) { + ip.add("prefix: ", namespacePrefix); + } + ip.prevLevel(); } diff --git a/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTO.java b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTO.java index 9197ecb..8f21102 100644 --- a/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTO.java +++ b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTO.java @@ -3,12 +3,15 @@ import javax.xml.bind.annotation.*; @XmlType(name = "dataXmlDTO", namespace = "http://www.jyskebank.dk/enunciate/openapi/version/1") -@XmlRootElement(name="dataXmlDTO", namespace = "http://www.jyskebank.dk/enunciate/openapi/version/1") +@XmlRootElement(name = "dataXmlDTO", namespace = "http://www.jyskebank.dk/enunciate/openapi/version/1") @XmlAccessorType(XmlAccessType.FIELD) public class DataXmlDTO { - @XmlElement(name="aString") - private String aString; - - @XmlElement - private DataXmlEnum anEnum; + @XmlElement(name = "aString") + private String aString; + + @XmlElement + private DataXmlEnum anEnum; + + @XmlElement(name = "dataValue", namespace = "http://www.jyskebank.dk/enunciate/openapi/version/2") + private DataXmlDTODataValue dataValue; } diff --git a/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTODataValue.java b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTODataValue.java new file mode 100644 index 0000000..557cffa --- /dev/null +++ b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/DataXmlDTODataValue.java @@ -0,0 +1,12 @@ +package dk.jyskebank.tools.enunciate.modules.openapi.confignamespacewithprefix; + +import javax.xml.bind.annotation.*; + +@XmlType(name = "dataXmlDTODataValue", namespace = "http://www.jyskebank.dk/enunciate/openapi/version/2") +@XmlAccessorType(XmlAccessType.FIELD) +public class DataXmlDTODataValue { + + @XmlElement(name = "customString") + private String customString; + +} diff --git a/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/enunciate.xml b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/enunciate.xml index b363657..8c8ca17 100644 --- a/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/enunciate.xml +++ b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/enunciate.xml @@ -3,6 +3,7 @@ + diff --git a/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/openapi.yml b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/openapi.yml index d83ae82..0f21df7 100644 --- a/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/openapi.yml +++ b/src/test/java/dk/jyskebank/tools/enunciate/modules/openapi/confignamespacewithprefix/openapi.yml @@ -40,7 +40,24 @@ components: type: string "anEnum": $ref: "#/components/schemas/xml_ns0_dataXmlEnum" + "dataValue": + xml: + namespace: http://www.jyskebank.dk/enunciate/openapi/version/2 + prefix: prefix-b + $ref: "#/components/schemas/xml_prefix-b_dataXmlDTODataValue" xml: name: dataXmlDTO namespace: http://www.jyskebank.dk/enunciate/openapi/version/1 prefix: prefix-a + "xml_prefix-b_dataXmlDTODataValue": + title: "dataXmlDTODataValue" + allOf: + - type: string + format: binary + - type: object + properties: + "customString": + type: string + xml: + namespace: http://www.jyskebank.dk/enunciate/openapi/version/2 + prefix: prefix-b