[
https://issues.apache.org/jira/browse/CXF-2614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-2614.
------------------------------
Resolution: Not A Problem
Fix Version/s: Invalid
I'm going to mark this resolved as the generated files are the same as that
generated by XJC if you use a recent version of Java 6. This really is due to
them changing the version of JAXB in Java 6 from 2.1.3 to something newer and
the newer version generates different code. Whether the generated code is
correct or incorrect is definitely an issue for them, but this bug report is
mostly about it being different, which it's not. :-)
> 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
> Fix For: Invalid
>
> Attachments: xsdtest.zip
>
>
> 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.