cxf-common-xsd plugin generated files differ from xjc generated ones --------------------------------------------------------------------
Key: CXF-2614 URL: https://issues.apache.org/jira/browse/CXF-2614 Project: CXF Issue Type: Bug Components: Tooling Affects Versions: 2.2.5 Environment: $ mvn --version Apache Maven 2.2.1 (r801777; 2009-08-06 14:16:01-0500) Java version: 1.6.0 Java home: D:\Program Files\IBM\RAD75\jdk\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows xp" version: "5.1 build 2600 service pack 3" arch: "x86" Family: "windows" Reporter: Craig Tataryn Noticed a problem where *cxf-common-xsd* was spitting out {{.java}} files that didn't have a {{setContent(String)}} method when their corresponding {{<xsd:element>}} types had a {{mixed="true"}} attribute. I setup a test (which will be attached), ran both xjc from the command line (see {{xjc-output}} directory in the attached test project) as well as setting up a pom file to run cxf-common-xsd against the same set of schemas. There is a type in {{datatypes-base.xsd}} called {{BIN}} which extends a base type called {{ANY}}. {{BIN}} has been marked with {{mixed="true"}} and thus it's {{BIN.java}} class should have a {{setContent(String)}} method. When running the xsd through xjc from the command line, it does indeed generate a {{BIN.java}} file with a {{setContent(String)}} method. The definition of BIN is as follows: {code:title=datatypes-base.xsd} <xs:complexType name="BIN" abstract="true" mixed="true"> <xs:annotation> <xs:documentation> Binary data is a raw block of bits. Binary data is a protected type that MUST not be used outside the data type specification. </xs:documentation> </xs:annotation> <xs:complexContent mixed="true"> <xs:extension base="ANY"> <xs:attribute name="representation" type="BinaryDataEncoding" use="optional" default="TXT"> <xs:annotation> <xs:documentation> Specifies the representation of the binary data that is the content of the binary data value. </xs:documentation> </xs:annotation> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> {code} I ran this command after running {{mvn clean package}} from the base directory of the test project: {{diff xjc-output/org/hl7/v3/BIN.java target/generated/src/main/java/org/hl7/v3/BIN.java > xcj-vs-plugin.diff}} And the diff output is (note "<" are from the xjc file, ">" is from the cxf-common-xsd generated ones): {code} 2c2 < // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.3 in JDK 1.6 --- > // This file was generated by the JavaTM Architecture for XML Binding(JAXB) > Reference Implementation, vhudson-jaxb-ri-2.1-833 5c5 < // Generated on: 2010.01.11 at 08:29:22 PM CST --- > // Generated on: 2010.01.11 at 08:42:50 PM CST 16d15 < import javax.xml.bind.annotation.XmlValue; 43,45c42 < @XmlType(name = "BIN", namespace = "urn:hl7-org:v3", propOrder = { < "content" < }) --- > @XmlType(name = "BIN") 49c46,48 < public abstract class BIN { --- > public abstract class BIN > extends ANY > { 51,52d49 < @XmlValue < protected String content; 57,88d53 < * < * Binary data is a raw block of bits. Binary data is a < * protected type that MUST not be used outside the data < * type specification. < * < * < * @return < * possible object is < * {...@link String } < * < */ < public String getContent() { < return content; < } < < /** < * < * Binary data is a raw block of bits. Binary data is a < * protected type that MUST not be used outside the data < * type specification. < * < * < * @param value < * allowed object is < * {...@link String } < * < */ < public void setContent(String value) { < this.content = value; < } < < /** {code} First thing I noticed is that cxf-common-xsd is using {{vhudson-jaxb-ri-2.1-833}} as it's jaxb-ri, which is different than my JDK. Secondly, I noticed that cxf-common-xsd also correctly extends the ANY type, where my jdk's xjc didn't, but then forgets to respect the {{mixed="true"}} attribute. I'm almost assuming in this instance both implementations are right and wrong, one should be extending ANY, the other should be including setContent(String)! Is there any type of work around? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.