highsource / jaxb2-basics

Useful plugins and tools for JAXB2.
BSD 2-Clause "Simplified" License
109 stars 54 forks source link

JAXB2 Simplify plugin for DTD files #89

Open sachinbedraman opened 7 years ago

sachinbedraman commented 7 years ago

Hello,

I have been using this plugin for generating Java classes from DTD's and its is very helpful in terms of configuration and generation.

I am generating the Java classes for cXML standard. I have the schema, binding file and the generated Java class for your reference. I am using the 'JAXB2 Simplify Plugin'.

I have configured the execution in pom.xml as given below.

<!-- Configuration for cXML.dtd -->
<execution>
    <id>generate-cXML</id>
    <goals>
        <goal>generate</goal>
    </goals>
    <configuration>
        <cleanPackageDirectories>true</cleanPackageDirectories>
        <schemaDirectory>src/main/dtd/cxml/</schemaDirectory>
        <schemaLanguage>DTD</schemaLanguage>
        <schemaIncludes>
            <include>*.dtd</include>
        </schemaIncludes>
        <schemaExcludes>
            <exclude>*.xs</exclude>
        </schemaExcludes>
        <generateDirectory>src/main/generated-cxml</generateDirectory>
        <generatePackage>org.cxml</generatePackage>
        <bindingDirectory>src/main/bindings/cxml</bindingDirectory>
        <bindingIncludes>
            <bindingInclude>*.xjb</bindingInclude>
        </bindingIncludes>
        <extension>true</extension>
        <args>
            <arg>-Xsimplify</arg>
        </args>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2_commons</groupId>
                <artifactId>jaxb2-basics</artifactId>
                <version>0.9.4</version>
            </plugin>
        </plugins>
    </configuration>
</execution>

In the generated CXML.java file, instead of generating separate attributes, a single collection attribute has been generated.

    @XmlElements({
        @XmlElement(name = "Header", required = true, type = Header.class),
        @XmlElement(name = "Message", required = true, type = Message.class),
        @XmlElement(name = "Request", required = true, type = Request.class),
        @XmlElement(name = "Response", required = true, type = Response.class)
    })
    protected List<Object> headerOrMessageOrRequestOrResponse;

I was not able to find the correct way to configure the binding for DTD files for using the 'JAXB2 Simplify Plugin'.

I am trying to understand if I have configured the plugin in a wrong way or if support is not yet available for the same.

Thank you, Sachin

cXML.zip