cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Tataryn (JIRA)" <j...@apache.org>
Subject [jira] Created: (CXF-2614) cxf-common-xsd plugin generated files differ from xjc generated ones
Date Tue, 12 Jan 2010 03:30:54 GMT
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.


Mime
View raw message