[
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)