Ok, a bit more success now following the various exchanges.
I made two changes to Interface2WSDLGenerator.
1/ I flipped a flag to run the JAXB schema generated against the
wrappers instead of just against the wrapped types
2/ I wrote some code to merge the resulting DOMs if there is a no namespace.
I'm extending the itest/wsdlgen scenario with a helloworld service
that references types as follows
src/main/java
helloworld/
ABean.java - a plain POJO
HelloworldService.java - WSDL will be in namspace ""http://helloworld/"
pacakge-info.java - force ABean into namespace "http://test"
anotherpackage
BBean.java - a plain POJO
CBean.java - has @XmlType(name="")
This now gives rise to
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="HelloWorldServiceService"
targetNamespace="http://helloworld/" xmlns:tns="http://helloworld/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xs:schema targetNamespace="http://helloworld/" version="1.0"
xmlns:ns1="http://test" xmlns:tns="http://helloworld/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://test" />
<xs:import namespace="http://helloworld/" />
<xs:element name="getGreetings" type="tns:getGreetings"
/>
<xs:element name="getGreetingsBBean"
type="tns:getGreetingsBBean" />
<xs:element name="getGreetingsBBeanResponse"
type="tns:getGreetingsBBeanResponse" />
<xs:element name="getGreetingsBean"
type="tns:getGreetingsBean" />
<xs:element name="getGreetingsBeanArray"
type="tns:getGreetingsBeanArray" />
<xs:element name="getGreetingsBeanArrayResponse"
type="tns:getGreetingsBeanArrayResponse" />
<xs:element name="getGreetingsBeanResponse"
type="tns:getGreetingsBeanResponse" />
<xs:element name="getGreetingsCBean"
type="tns:getGreetingsCBean" />
<xs:element name="getGreetingsCBeanResponse"
type="tns:getGreetingsCBeanResponse" />
<xs:element name="getGreetingsResponse"
type="tns:getGreetingsResponse" />
<xs:complexType name="getGreetingsBeanArrayResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsBeanArray">
<xs:sequence>
<xs:element maxOccurs="unbounded"
minOccurs="0" name="arg0"
nillable="true"
type="ns1:aBean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsBean">
<xs:sequence>
<xs:element minOccurs="0" name="arg0"
type="ns1:aBean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsCBean">
<xs:sequence>
<xs:element minOccurs="0" name="arg0">
<xs:complexType>
<xs:sequence>
<xs:element
minOccurs="0" name="field1" type="xs:string" />
<xs:element
minOccurs="0" name="field2" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsBBeanResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsBeanResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetings">
<xs:sequence>
<xs:element minOccurs="0" name="arg0"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsCBeanResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="getGreetingsBBean">
<xs:sequence>
<xs:element minOccurs="0" name="arg0"
type="bBean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="bBean">
<xs:sequence>
<xs:element minOccurs="0" name="field1"
type="xs:string" />
<xs:element minOccurs="0" name="field2"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema targetNamespace="http://test" version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="aBean">
<xs:sequence>
<xs:element minOccurs="0" name="field1"
type="xs:string" />
<xs:element minOccurs="0" name="field2"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Still more work to do to update any reference from the merged schema
that occur from anything but the default schema but at least i can see
the light.
Regards
Simon