Skip to content

xsd to pojo disable separate class creation for collections. #43

@studyamitjain

Description

@studyamitjain

Moving from Java11 to Java21 as part of this change we are also replacing 'plugin:com.ewerk.gradle.plugins.jaxb2' with 'com.github.bjornvester.xjc'.

Default configuration generate separate classes for collections when converting an XSD to POJO. We wants to escape this extra classes creations for collection. How to achieve xsd to pojo disable separate class creation for collections.

xjc {
    xsdDir.set(layout.projectDirectory.dir("src/main/resources/xsd"))
    bindingFiles.setFrom(layout.projectDirectory.dir("src/main/resources/xsd").asFileTree.matching { include("**/*.xjb") })
    xjcVersion.set("3.0.2")
    useJakarta.set(true)
    outputJavaDir.set(layout.projectDirectory.dir("$buildDir/generated-src/java"))
    defaultPackage = "jaxb.servicerequest"
}
<xs:complexType name="ABCOrderType">
        <xs:complexContent>
            <xs:extension base="baseOrder">
                <xs:sequence>
                    <xs:element type="VendorComponentsType" name="VendorComponents" maxOccurs="1" minOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="VendorComponentsType">
        <xs:sequence>
            <xs:element type="VendorComponentType" name="VendorComponent" maxOccurs="unbounded" minOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
<xs:complexType name="VendorComponentsType">
        <xs:sequence>
            <xs:element type="VendorComponentType" name="VendorComponent" maxOccurs="unbounded" minOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
public class VendorComponentsType {
...
..
    @XmlElement(name = "VendorComponent", required = true)
    protected List<VendorComponentType> vendorComponent;
..
...
}
public class VendorComponentType {
...
}

When we are using 'plugin:com.ewerk.gradle.plugins.jaxb2' no VendorComponentsType class was created.

public class ABCOrderType
    extends BaseOrder
{

    @XmlElementWrapper(name = "VendorComponents", required = true)
    @XmlElement(name = "VendorComponent")
    protected List<VendorComponentType> vendorComponents = new ArrayList<VendorComponentType>();
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions