Dan, sorry it's been several weeks since you e-mailed this to me and I've not actioned it. Where do I find CXF's official JIRA app?
By the way, I have also hit a problem where the response parts are generated with incomplete result definitions. For example, if I have a method in my SEI like: @WebService(name = "UserModule", targetNamespace = "http://www.volantis.com/xmlns/2008/01/mss/user-module") @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) public interface UserModule { User getUser(@WebParam(name="name") final String name); ... } where User is, for example, like this: @XmlJavaTypeAdapter(UserAdapter.class) public interface User { String getName(); String getPassword(); } with an implementation like: @XmlType(name = "User") public class UserImpl implements User { private String name; private String password; public void setName(final String name) { this.name = name; } public String getName() { return name; } public void setPassword(final String password) { this.password = password; } public String getPassword() { return password; } } and the adapter looks like: public final class UserAdapter extends XmlAdapter<UserImpl, User> { @Override public UserImpl marshal(final User user) throws Exception { return (UserImpl) user; } @Override public User unmarshal(final UserImpl user) throws Exception { return user; } } I get some WSDL like this: <wsdl:definitions name="UserModuleService" targetNamespace="http://com.volantis.openapi.mss.usermodule" xmlns:ns1="http://www.volantis.com/xmlns/2008/01/mss/user-module" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.volantis.openapi.mss.usermodule" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.volantis.com/xmlns/2008/01/mss/user-module" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.volantis.com/xmlns/2008/01/mss/user-module"> <xs:element name="getUser" type="getUser"/> <xs:complexType name="getUser"> <xs:sequence> <xs:element minOccurs="0" name="name" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="getUserResponse" type="getUserResponse"/> <xs:complexType name="getUserResponse"> <xs:sequence> <xs:element minOccurs="0" name="return"/> </xs:sequence> </xs:complexType> ... </xs:schema> <wsdl:types> ... <wsdl:message name="getUser"> <wsdl:part name="parameters" element="ns1:getUser"> </wsdl:part> </wsdl:message> ... <wsdl:message name="getUserResponse"> <wsdl:part name="parameters" element="ns1:getUserResponse"> </wsdl:part> </wsdl:message> ... <wsdl:portType name="UserModule"> <wsdl:operation name="getUser"> <wsdl:input name="getUser" message="ns1:getUser"> </wsdl:input> <wsdl:output name="getUserResponse" message="ns1:getUserResponse"> </wsdl:output> </wsdl:operation> ... </wsdl:portType> <wsdl:binding name="UserModuleServiceSoapBinding" type="ns1:UserModule"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getUser"> <soap:operation soapAction="" style="document"/> <wsdl:input name="getUser"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="getUserResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> ... </wsdl:binding> <wsdl:service name="UserModuleService"> <wsdl:port name="UserModulePort" binding="ns1:UserModuleServiceSoapBinding"> <soap:address location="http://localhost:9090/mss"/> </wsdl:port> </wsdl:service> </wsdl:definitions> As you can see, the (bolded) "return" element has no type, and I get no XSD element or type definition for the User implementation for some reason. Any ideas? Phil :n. On Fri, 2008-02-01 at 22:26 -0500, Daniel Kulp wrote: > This is definitely a bug and I see where the improper code is found. > > Line 202 of WrapperClassGenerator specifically sets the namespace to "" > for the generated class. This needs to be updated to either not output > it or output the correct namespace. I'll need to experiment a bit to > figure out which. > > Can you log a JIRA (feel free to assign to me) so it gets tracked. (I'm > busy with other stuff for the next couple days). Better yet, check out > CXF from Svn, experiment a bit by editing those lines, then attach a > patch to that jira. :-) > > Dan > > > On Thursday 31 January 2008, Phil Weighill-Smith wrote: > > Regarding target namespace and the elementFormDefault issues... > > > > Interestingly the package-info.java approach doesn't seem to work. > > Whilst this sets the default element form to qualified, each element > > is then generated with the form="unqualified" attribute set. D'oh! I > > guess I'll have to use the XmlElement approach. Will let you know what > > happens. > > > > I've also set the XmlSchema namespace as you have suggested, and have > > explicitly set the @WebService(targetNamespace) to the same value but > > I still get a WSDL targetNamespace derived from the package name. How > > do I override this behaviour? > > > > The package-info.java has: > > > > @javax.xml.bind.annotation.XmlSchema( > > namespace = > > "http://com.volantis.xmlns/2008/01/mss/user-module", > > elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) > > package com.volantis.openapi.mss.usermodule; > > > > and the SEI interface has: > > > > @WebService(name = "UserModule", > > targetNamespace = > > "http://com.volantis.xmlns/2008/01/mss/user-module") > > @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, > > use = SOAPBinding.Use.LITERAL, > > parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) > > public interface UserModule { > > ... > > List<User> getSubscribers( > > @WebParam(name = "application") > > final String applicationID, > > @WebParam(name = "subscription") > > final String subscriptionID, > > @WebParam(name = "includeExtensionParameters") > > final boolean includeExtensionParameters, > > @WebParam(name = "includeSubscriptions") > > final boolean includeSubscriptions) throws > > PersistenceException; ... > > > > but the WSDL is generated with: > > > > <wsdl:definitions name="UserModuleService" > > > > targetNamespace="http://com.volantis.openapi.mss.usermodule" > > xmlns:ns1="http://com.volantis.xmlns/2008/01/mss/user-module" > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > xmlns:tns="http://com.volantis.openapi.mss.usermodule" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > > > > xmlns:tns="http://com.volantis.xmlns/2008/01/mss/user-module" > > attributeFormDefault="unqualified" > > elementFormDefault="qualified" > > > > targetNamespace="http://com.volantis.xmlns/2008/01/mss/user-module"> > > ... > > <xs:complexType name="getSubscribersResponse"> > > <xs:sequence> > > <xs:element form="unqualified" > > maxOccurs="unbounded" minOccurs="0" name="return" type="xs:anyType"/> > > </xs:sequence> > > </xs:complexType> > > ... > > </xs:schema> > > </wsdl:types> > > > > <wsdl:message name="getSubscribersResponse"> > > <wsdl:part name="parameters" > > element="ns1:getSubscribersResponse"> </wsdl:part> > > </wsdl:message> > > ... > > > > What I want to see is: > > > > * the WSDL targetNamespace matching the ns1 URI > > * the elements generated with form "qualified" > > * the sequence returned by getSubscribersResponse using the > > generated schema type for User. > > > > Any suggestions? > > > > Phil :n( > > > > On Mon, 2008-01-28 at 10:31 -0500, Daniel Kulp wrote: > > > 2) Create a package-info.java class in the package containing the > > > beans. > > > It would look like: > > > > > > @javax.xml.bind.annotation.XmlSchema( > > > namespace = "http://the.namespace.to.use", > > > elementFormDefault = > > > javax.xml.bind.annotation.XmlNsForm.QUALIFIED) > > > package the package; > > >