Jan Litvik created CXFXJC-44: -------------------------------- Summary: cxf-xjc-dv generates compilation failure when XJC simple binding mode is used Key: CXFXJC-44 URL: https://issues.apache.org/jira/browse/CXFXJC-44 Project: CXF XJC Utils Issue Type: Bug Components: DV Plugin Affects Versions: 4.0.0 Reporter: Jan Litvik
I am using cxf-xjc-plugin v 4.0.0 to generate java code from xsd. Java code is generated without issue until I use cxf-xjc-dv(v 4.0.0) plugin. In this case Compilation failure is thrown: java.util.List is abstract; cannot be instantiated The problematic piece of code: List<Serializable> andsAndOrsAndNots = new List<Serializable>(); Issue is similar to this https://issues.apache.org/jira/browse/CXFXJC-7 I investigated the behavior and found out that issue occurs when binding file is configured and it contains xjc:simple binding mode. When XJC simple binding mode or cxf-xjc-dv plugin is not used, java code is generated but it does not meet our requirements. *Schema definition snippet:* {code:java} <xs:element name="query"> <xs:complexType> <xs:choice> <xs:element ref="and"/> <xs:element ref="or"/> <xs:element ref="not"/> <xs:sequence> <xs:element name="table" type="StringRequired"/> <xs:element name="column" type="StringRequired"/> <xs:element name="operator" type="StringRequired"/> <xs:element name="value" type="xs:string"/> </xs:sequence> </xs:choice> </xs:complexType> </xs:element> <xs:element name="and"> <xs:complexType> <xs:choice minOccurs="2" maxOccurs="unbounded"> <xs:element ref="and"/> <xs:element ref="or"/> <xs:element ref="not"/> <xs:element ref="query"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="or"> <xs:complexType> <xs:choice minOccurs="2" maxOccurs="unbounded"> <xs:element ref="and"/> <xs:element ref="or"/> <xs:element ref="not"/> <xs:element ref="query"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="not"> <xs:complexType> <xs:choice> <xs:element ref="and"/> <xs:element ref="or"/> <xs:element ref="not"/> <xs:element ref="query"/> </xs:choice> </xs:complexType> </xs:element> <xs:simpleType name="StringRequired"> <xs:restriction base="xs:string"> <xs:minLength value="1" /> </xs:restriction> </xs:simpleType> {code} *Maven:* {code:java} <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-xjc-plugin</artifactId> <version>4.0.0</version> <executions> <execution> <id>xjc</id> <phase>generate-sources</phase> <goals> <goal>xsdtojava</goal> </goals> <configuration> <xsdOptions> <xsdOption> <xsd>${basedir}/src/main/resources/query.xsd</xsd> <bindingFile> ${basedir}/src/main/jaxbconfig/config_jaxb.xjb</bindingFile> <extension>true</extension> <extensionArgs> <arg>-Xdv</arg> </extensionArgs> </xsdOption> </xsdOptions> <extensions> <extension> org.apache.cxf.xjcplugins:cxf-xjc-dv:4.0.0</extension> </extensions> </configuration> </execution> </executions> </plugin> {code} *JAXB binding config:* {code:java} <jaxb:bindings xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" version="3.0"> <jaxb:globalBindings> <xjc:simple/> <jaxb:serializable uid="1" /> </jaxb:globalBindings> </jaxb:bindings> {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)