[ 
https://issues.apache.org/jira/browse/CXFXJC-50?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fedor Kolchenko updated CXFXJC-50:
----------------------------------
    Description: 
It is not possible to generate java classes from XSD if the _complexType_ 
contains two {_}element{_}s with a name that differ only by register. (even 
with -XautoNameResolution)

Example (xsd part):
{code:xml}
<xs:complexType>
    <xs:sequence>
        <xs:element name="TEST_test">
            <xs:simpleType>
                <xs:restriction base="xs:string"/>
            </xs:simpleType>
        </xs:element>
        <xs:element name="test_test" type="xs:string" minOccurs="1"/>
    </xs:sequence>
</xs:complexType> {code}
Without -X mvn flag its not posible to know why sources not generating - i got 
only _Failed to execute goal org.apache.cxf:cxf-xjc-plugin:4.0.2:xsdtojava 
(Exit code: 1)._

 

Enabling -X flag show logs:

 
{code:java}
Exception in thread "main" java.lang.IllegalArgumentException: trying to create 
the same field twice: testTest
    at com.sun.codemodel.JDefinedClass.field(JDefinedClass.java:414)
    at com.sun.codemodel.JDefinedClass.field(JDefinedClass.java:385)
    at 
com.sun.tools.xjc.generator.bean.field.AbstractFieldWithVar.createField(AbstractFieldWithVar.java:46)
    at 
com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:64)
    at 
com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:51)
    at 
java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
    at 
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
    at 
com.sun.tools.xjc.generator.bean.field.GenericFieldRenderer.generate(GenericFieldRenderer.java:39)
    at 
com.sun.tools.xjc.generator.bean.field.DefaultFieldRenderer.generate(DefaultFieldRenderer.java:52)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.generateFieldDecl(BeanGenerator.java:751)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.generateClassBody(BeanGenerator.java:532)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:233)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:141)
    at com.sun.tools.xjc.model.Model.generateCode(Model.java:258)
    at org.apache.cxf.maven_plugin.XSDToJavaRunner.run(XSDToJavaRunner.java:179)
    at 
org.apache.cxf.maven_plugin.XSDToJavaRunner.main(XSDToJavaRunner.java:360) 
{code}

  was:
It is not possible to generate java classes from XSD if the _complexType_ 
contains two {_}element{_}s with a name that differ only by register.

Example (xsd part):
{code:xml}
<xs:complexType>
    <xs:sequence>
        <xs:element name="TEST_test">
            <xs:simpleType>
                <xs:restriction base="xs:string"/>
            </xs:simpleType>
        </xs:element>
        <xs:element name="test_test" type="xs:string" minOccurs="1"/>
    </xs:sequence>
</xs:complexType> {code}
Without -X mvn flag its not posible to know why sources not generating - i got 
only _Failed to execute goal org.apache.cxf:cxf-xjc-plugin:4.0.2:xsdtojava 
(Exit code: 1)._

 

Enabling -X flag show logs:

 
{code:java}
Exception in thread "main" java.lang.IllegalArgumentException: trying to create 
the same field twice: testTest
    at com.sun.codemodel.JDefinedClass.field(JDefinedClass.java:414)
    at com.sun.codemodel.JDefinedClass.field(JDefinedClass.java:385)
    at 
com.sun.tools.xjc.generator.bean.field.AbstractFieldWithVar.createField(AbstractFieldWithVar.java:46)
    at 
com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:64)
    at 
com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:51)
    at 
java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
    at 
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
    at 
com.sun.tools.xjc.generator.bean.field.GenericFieldRenderer.generate(GenericFieldRenderer.java:39)
    at 
com.sun.tools.xjc.generator.bean.field.DefaultFieldRenderer.generate(DefaultFieldRenderer.java:52)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.generateFieldDecl(BeanGenerator.java:751)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.generateClassBody(BeanGenerator.java:532)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:233)
    at 
com.sun.tools.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:141)
    at com.sun.tools.xjc.model.Model.generateCode(Model.java:258)
    at org.apache.cxf.maven_plugin.XSDToJavaRunner.run(XSDToJavaRunner.java:179)
    at 
org.apache.cxf.maven_plugin.XSDToJavaRunner.main(XSDToJavaRunner.java:360) 
{code}


> Generating sources is not working if elements name diffs only in register
> -------------------------------------------------------------------------
>
>                 Key: CXFXJC-50
>                 URL: https://issues.apache.org/jira/browse/CXFXJC-50
>             Project: CXF XJC Utils
>          Issue Type: Bug
>          Components: Maven Plugin
>    Affects Versions: 4.0.2
>         Environment: OS - Windows 10
> Maven - apache-maven-3.6.3
> JDK - amazon corretto 21.0.5
>  
> extensions and args:
> {code:xml}
> <extensions>
>     <extension>org.jvnet.jaxb2_commons:jaxb2-fluent-api:3.0</extension>
>     <extension>org.jvnet.jaxb2_commons:jaxb2-namespace-prefix:2.0</extension>
> </extensions>
> ...
> <extensionArgs>
>     <extensionArg>-extension</extensionArg>
>     <extensionArg>-no-header</extensionArg>
>     <extensionArg>-XautoNameResolution</extensionArg>
>     <extensionArg>-npa</extensionArg>
> </extensionArgs>{code}
>  
>            Reporter: Fedor Kolchenko
>            Priority: Minor
>              Labels: cxf-xjc-plugin, maven, xsd2java
>
> It is not possible to generate java classes from XSD if the _complexType_ 
> contains two {_}element{_}s with a name that differ only by register. (even 
> with -XautoNameResolution)
> Example (xsd part):
> {code:xml}
> <xs:complexType>
>     <xs:sequence>
>         <xs:element name="TEST_test">
>             <xs:simpleType>
>                 <xs:restriction base="xs:string"/>
>             </xs:simpleType>
>         </xs:element>
>         <xs:element name="test_test" type="xs:string" minOccurs="1"/>
>     </xs:sequence>
> </xs:complexType> {code}
> Without -X mvn flag its not posible to know why sources not generating - i 
> got only _Failed to execute goal 
> org.apache.cxf:cxf-xjc-plugin:4.0.2:xsdtojava (Exit code: 1)._
>  
> Enabling -X flag show logs:
>  
> {code:java}
> Exception in thread "main" java.lang.IllegalArgumentException: trying to 
> create the same field twice: testTest
>     at com.sun.codemodel.JDefinedClass.field(JDefinedClass.java:414)
>     at com.sun.codemodel.JDefinedClass.field(JDefinedClass.java:385)
>     at 
> com.sun.tools.xjc.generator.bean.field.AbstractFieldWithVar.createField(AbstractFieldWithVar.java:46)
>     at 
> com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:64)
>     at 
> com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:51)
>     at 
> java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
>     at 
> java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
>     at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
>     at 
> com.sun.tools.xjc.generator.bean.field.GenericFieldRenderer.generate(GenericFieldRenderer.java:39)
>     at 
> com.sun.tools.xjc.generator.bean.field.DefaultFieldRenderer.generate(DefaultFieldRenderer.java:52)
>     at 
> com.sun.tools.xjc.generator.bean.BeanGenerator.generateFieldDecl(BeanGenerator.java:751)
>     at 
> com.sun.tools.xjc.generator.bean.BeanGenerator.generateClassBody(BeanGenerator.java:532)
>     at 
> com.sun.tools.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:233)
>     at 
> com.sun.tools.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:141)
>     at com.sun.tools.xjc.model.Model.generateCode(Model.java:258)
>     at 
> org.apache.cxf.maven_plugin.XSDToJavaRunner.run(XSDToJavaRunner.java:179)
>     at 
> org.apache.cxf.maven_plugin.XSDToJavaRunner.main(XSDToJavaRunner.java:360) 
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to