I have serveral web service projects that I am converting from AXIS to CXF. 
When they were first written, the core types defined in the XSD files where 
copied into each other project; I have removed those duplications, as defined 
below.

The first project, ws-dls-cps, is just two fairly large XSD files which via the 
jaxb2-maven-plugin, generates the classes used by the other projects.

The second project, ws-dls-ics has three WSDLs that need to use the types 
defined in the XSDs of the ws-dls-cps project as the generate-sources and 
compile-time source of the aforementioned types/classes.

Each of the three WSDLs define local types that use or extend types from the 
CPS project. But I want to use the CPS project as the master/ancestor of the 
base types so I use maven-dependency-plugin / unpack execution to extract the 
two XSD files from the CPS project into a specific folder in the ICS project, 
separate from the local  XSDs. Then the three local XSDs just reference them:

    <xs:import namespace="urn:digimarc.com:SchemaTypes"
        schemaLocation="../cps-xsd/META-INF/xsd/DigimarcSchemaTypes.xsd" />

    <xs:import namespace="urn:digimarc.com:imaging" 
        schemaLocation="../cps-xsd/META-INF/xsd/ApplicantDataFolio.xsd" />

The WSDLs in ICS then reference the local XSD files:

    <wsdl:types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
            <xsd:import namespace="urn:digimarc.com:SchemaTypes" 
                
schemaLocation="../cps-xsd/META-INF/xsd/DigimarcSchemaTypes.xsd" />
            <xsd:import namespace="urn:digimarc.com:imaging"
                schemaLocation="../cps-xsd/META-INF/xsd/ApplicantDataFolio.xsd" 
/>
            <xsd:import namespace="http://www.digimarc.com/TXCaptureWebService/";
                schemaLocation="../xsd/ImageCaptureService.xsd" />
            <xsd:import 
namespace="http://www.digimarc.com/TXCaptureWebServiceResponse/";
                schemaLocation="../xsd/ImagingResponseTypes.xsd" />
        </xsd:schema>
    </wsdl:types>

Everything validates in Eclipse and the Maven clean|package works file too. 
With one problem:

The types imported from "../xsd/ImagingResponseTypes.xsd" (see above) - which 
in turn is importing the ancestor types via their now local XSD files:

    <s:import namespace="urn:digimarc.com:SchemaTypes" 
        schemaLocation="../cps-xsd/META-INF/xsd/DigimarcSchemaTypes.xsd" />

    <s:import namespace="urn:digimarc.com:imaging" 
        schemaLocation="../cps-xsd/META-INF/xsd/ApplicantDataFolio.xsd" />

Are getting generated again to a new package 
(com.digimarc.txcapturewebserviceresponse), which is a complete duplication of 
the classes from the CPS project.

If I add the -nexclude parameter to exclude that namespace/package, it is NOT 
generated, but the related ObjectFactory classes of two of the WSDL packages 
that use the ImagingResponseTypes.xsd file, still refer to the missing package 
and the related ObjectFactory class:

@XmlSeeAlso({com.digimarc.txcapturewebservice.ObjectFactory.class, 
com.digimarc.txcapturewebserviceresponse.ObjectFactory.class, 
com.digimarc.schematypes.ObjectFactory.class, 
com.digimarc.imaging.ObjectFactory.class})

So, the question is, how do I tell wsdl2java to ignore that namespace/package 
and to use the ones from the CPS package?

Or is that impossible?

Reply via email to