[ https://issues.apache.org/jira/browse/CXF-6747?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dusan Slivka updated CXF-6747: ------------------------------ Description: Starting with version 3, roundtrip wsdl -> Java -> wsdl produces output wsdl different from wsdl on input, if there are enums used. For example, I have the folowing XSD type in source wsdl: {code:xml} <xs:simpleType name="checksumType"> <xs:restriction base="xs:string"> <xs:enumeration value="MD5"/> <xs:enumeration value="SHA256"/> </xs:restriction> </xs:simpleType> <xs:complexType name="DigestType"> <xs:sequence> <xs:element minOccurs="0" name="digestValue" type="xs:string"/> <xs:element minOccurs="0" name="digestType" type="tns:checksumType"/> </xs:sequence> </xs:complexType> {code} which produces (cxf-codegen-plugin:3.0.5:wsdl2java) the following Java code: {code:java} @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "DigestType", propOrder = { "digestValue", "digestType" })public class DigestType { protected String digestValue; @XmlSchemaType(name = "string") // WHY?? protected ChecksumType digestType; } {code} And resulting wsdl for published service looks like this: {code:xml} <xs:simpleType name="checksumType"> <xs:restriction base="xs:string"> <xs:enumeration value="MD5"/> <xs:enumeration value="SHA256"/> </xs:restriction> </xs:simpleType> <xs:complexType name="DigestType"> <xs:sequence> <xs:element minOccurs="0" name="digestValue" type="xs:string"/> <xs:element minOccurs="0" name="digestType" type="xs:string"/> <!-- xs:string instead of tns:checksumType --> </xs:sequence> </xs:complexType> {code} The problem is caused by @XmlSchemaType(name = "string") annotation. I think resulting wsdl should be equal to source wsdl. See also: [https://github.com/gf-metro/jaxb/issues/21] [http://stackoverflow.com/questions/33346803/how-to-tell-jaxb-not-to-generate-xmlschematype-annotation] was: Starting with version 3, roundtrip wsdl -> Java -> wsdl produces output wsdl different from wsdl on input, if there are enums used. For example, I have the folowing XSD type in source wsdl: {code:xml} <xs:simpleType name="checksumType"> <xs:restriction base="xs:string"> <xs:enumeration value="MD5"/> <xs:enumeration value="SHA256"/> </xs:restriction> </xs:simpleType> <xs:complexType name="DigestType"> <xs:sequence> <xs:element minOccurs="0" name="digestValue" type="xs:string"/> <xs:element minOccurs="0" name="digestType" type="tns:checksumType"/> </xs:sequence> </xs:complexType> {code} which produces (cxf-codegen-plugin:3.0.5:wsdl2java) the following Java code: {code:java} @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "DigestType", propOrder = { "digestValue", "digestType" })public class DigestType { protected String digestValue; @XmlSchemaType(name = "string") // WHY?? protected ChecksumType digestType; } {code} And resulting wsdl for published service looks like this: {code:xml} <xs:simpleType name="checksumType"> <xs:restriction base="xs:string"> <xs:enumeration value="MD5"/> <xs:enumeration value="SHA256"/> </xs:restriction> </xs:simpleType> <xs:complexType name="DigestType"> <xs:sequence> <xs:element minOccurs="0" name="digestValue" type="xs:string"/> <xs:element minOccurs="0" name="digestType" type="xs:string"/> <!-- xs:sring instead of tns:checksumType --> </xs:sequence> </xs:complexType> {code} The problem is caused by @XmlSchemaType(name = "string") annotation. I think resulting wsdl should be equal to source wsdl. See also: [https://github.com/gf-metro/jaxb/issues/21] [http://stackoverflow.com/questions/33346803/how-to-tell-jaxb-not-to-generate-xmlschematype-annotation] > XSD to Java problem with enums > ------------------------------ > > Key: CXF-6747 > URL: https://issues.apache.org/jira/browse/CXF-6747 > Project: CXF > Issue Type: Bug > Components: JAXB Databinding > Affects Versions: 3.0.1 > Reporter: Dusan Slivka > > Starting with version 3, roundtrip wsdl -> Java -> wsdl produces output wsdl > different from wsdl on input, if there are enums used. For example, I have > the folowing XSD type in source wsdl: > {code:xml} > <xs:simpleType name="checksumType"> > <xs:restriction base="xs:string"> > <xs:enumeration value="MD5"/> > <xs:enumeration value="SHA256"/> > </xs:restriction> > </xs:simpleType> > <xs:complexType name="DigestType"> > <xs:sequence> > <xs:element minOccurs="0" name="digestValue" type="xs:string"/> > <xs:element minOccurs="0" name="digestType" type="tns:checksumType"/> > </xs:sequence> > </xs:complexType> > {code} > which produces (cxf-codegen-plugin:3.0.5:wsdl2java) the following Java code: > {code:java} > @XmlAccessorType(XmlAccessType.FIELD) > @XmlType(name = "DigestType", propOrder = { > "digestValue", > "digestType" > })public class DigestType { > protected String digestValue; > @XmlSchemaType(name = "string") // WHY?? > protected ChecksumType digestType; > } > {code} > And resulting wsdl for published service looks like this: > {code:xml} > <xs:simpleType name="checksumType"> > <xs:restriction base="xs:string"> > <xs:enumeration value="MD5"/> > <xs:enumeration value="SHA256"/> > </xs:restriction> > </xs:simpleType> > <xs:complexType name="DigestType"> > <xs:sequence> > <xs:element minOccurs="0" name="digestValue" type="xs:string"/> > <xs:element minOccurs="0" name="digestType" type="xs:string"/> > <!-- xs:string instead of tns:checksumType --> > </xs:sequence> > </xs:complexType> > {code} > The problem is caused by @XmlSchemaType(name = "string") annotation. I think > resulting wsdl should be equal to source wsdl. > See also: > [https://github.com/gf-metro/jaxb/issues/21] > [http://stackoverflow.com/questions/33346803/how-to-tell-jaxb-not-to-generate-xmlschematype-annotation] -- This message was sent by Atlassian JIRA (v6.3.4#6332)