[ http://issues.apache.org/jira/browse/AXIS2-844?page=comments#action_12421750 ] Derek Foster commented on AXIS2-844: ------------------------------------
Thanks for your efforts, Ajith. Unfortunately, this bug does not appear to be fixed by the above changes. I am still seeing the same behavior in the latest nightly build, which I verified does indeed include your changes. I submitted AXIS-903 to track this issue further. > WSDL2Java uses XmlObject for skeleton parameter when data in XML schema in > same namespace as WSDL document > ---------------------------------------------------------------------------------------------------------- > > Key: AXIS2-844 > URL: http://issues.apache.org/jira/browse/AXIS2-844 > Project: Apache Axis 2.0 (Axis2) > Issue Type: Bug > Components: wsdl, databinding, Tools > Affects Versions: 1.0 > Environment: JDK 5.0 > Reporter: Derek Foster > Assigned To: Ajith Harshana Ranabahu > Priority: Critical > > I have discovered that the Axis WSDL2Java code generator produces incorrect > results under the following circumstances: > 1) The WSDL document declares a target namespace. > 2) The 'types' section of the document imports a schema with the same > namespace. > 3) A 'message' is declared to use an element of a type declared within the > schema. > 4) An operation is declared to use the message as an input or output > parameter. > When the above scenario occurs, the WSDL2Java code generator acts as if the > elements declared in the schema do not exist and apparently goes to its > fallback method of treating the data as if it were declared 'xs:any'. Note > that schemas that do not share the same namespace with the WSDL document seem > to work fine. > Using the WSDL and schema below, and the given WSDL2Java command line, I get > XMLBeans classes generated. However, the generated skeleton methods take > parameters of type OMElement and return a result of type OMElement (with the > Axis 1.0 release. With the current nightly build they use type XmlObject > instead), instead of using generated XMLBeans wrapper classes that are > specific to the WSDL file being parsed. > According to various documentation I have read, there should be no problem > with this. The same namespace should be perfectly legal to use both for the > WSDL document itself and for XML elements and types declared within it. > (Note, however, that the WSDL document messages, bindings, and so forth > should occupy a different symbol space from the XML elements and types in the > same namespace, so that one could have, for instance, both a message named > "foo" as well as an xs:element named "foo" without conflict.) > This is a big problem for me, since sharing the same namespace for both of > these elements is done both by several WSDL files within my own company, as > well as those that have been given to my company to use from external > sources. I MIGHT be able to change the WSDL produced by my company, but can't > do much about the ones that we have been given from outside. This essentially > makes WSDL2Java unusable for me until this issue is fixed. > A bit more information can be found in the developer list under the thread > "[Axis2] Why do I get service skeletons taking OMElement, and uncompilable > code?". > Here is an example of WSDL that reproduces the problem: > The WSDL: > <?xml version="1.0" encoding="UTF-8"?> > <definitions name="FDefinitions" > targetNamespace="http://www.example.com/wsdl/2004-10-01/feu" > xmlns:carshdr="http://www.example.com/wsdl/2004-10-01/cars" > xmlns:carsfault="http://www.example.com/wsdl/2006-06-13/carsfault" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:tns="http://www.example.com/wsdl/2004-10-01/feu" > xmlns:feu="http://www.dummy-temp-address" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" > xmlns="http://schemas.xmlsoap.org/wsdl/"> > <wsdl:types> > <xs:schema> > <xs:import namespace="http://www.dummy-temp-address" > schemaLocation="FEU.xsd"/> > </xs:schema> > <xs:schema targetNamespace="http://www.example.com/wsdl/2004-10-01/feu"> > <xs:element name="full-event-updates"> > <xs:complexType> > <xs:sequence> > <xs:element name="full-event-update" > type="feu:FullEventUpdate" minOccurs="0" maxOccurs="unbounded"/> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="full-event-update" type="feu:FullEventUpdate"/> > <xs:element name="return" type="xs:string"/> > </xs:schema> > <xs:schema > targetNamespace="http://www.example.com/wsdl/2004-10-01/cars"> > <xs:element name="CPassword" type="xs:string"/> > <xs:element name="CLogin" type="xs:string"/> > </xs:schema> > <xs:schema > targetNamespace="http://www.example.com/wsdl/2006-06-13/carsfault"> > <xs:element name="generalFault" type="xs:string"/> > </xs:schema> > </wsdl:types> > <message name="FEvent"> > <part name="contents" element="tns:full-event-update"/> > </message> > <message name="FRecap"> > <part name="contents" element="tns:full-event-updates"/> > </message> > <message name="FResponse"> > <part name="return" element="tns:return"/> > </message> > <message name="CPassword"> > <part name="CPassword" element="carshdr:CPassword"/> > </message> > <message name="CLogin"> > <part name="CLogin" element="carshdr:CLogin"/> > </message> > <message name="GeneralFault"> > <part name="faultDetail" element="carsfault:generalFault"/> > </message> > <portType name="FPortType"> > <documentation>F Port Type</documentation> > <operation name="acceptFEvent" parameterOrder="contents"> > <input name="acceptFEventRequest" message="tns:FEvent"/> > <output name="acceptFEventResponse" message="tns:FResponse"/> > <fault name="GeneralFault" message="tns:GeneralFault"/> > </operation> > <operation name="acceptFRecap" parameterOrder="contents"> > <input name="acceptFRecapRequest" message="tns:FRecap"/> > <output name="acceptFRecapResponse" message="tns:FResponse"/> > <fault name="GeneralFault" message="tns:GeneralFault"/> > </operation> > </portType> > <binding name="FSoapBinding" type="tns:FPortType"> > <documentation>F Soap Binding</documentation> > <soap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > <operation name="acceptFEvent"> > <soap:operation soapAction="acceptFEventAction"/> > <input> > <soap:header message="tns:CLogin" part="CLogin" use="literal"/> > <soap:header message="tns:CPassword" part="CPassword" > use="literal"/> > <soap:body use="literal"/> > </input> > <output> > <soap:body use="literal"/> > </output> > <fault name="GeneralFault"> > <soap:fault name="GeneralFault" use="literal"/> > </fault> > </operation> > <operation name="acceptFRecap"> > <soap:operation soapAction="acceptFRecapAction"/> > <input> > <soap:header message="tns:CLogin" part="CLogin" use="literal"/> > <soap:header message="tns:CPassword" part="CPassword" > use="literal"/> > <soap:body use="literal"/> > </input> > <output> > <soap:body use="literal"/> > </output> > <fault name="GeneralFault"> > <soap:fault name="GeneralFault" use="literal"/> > </fault> > </operation> > </binding> > <service name="FService"> > <documentation>F Web Service</documentation> > <port name="FPort" binding="tns:FSoapBinding"> > <soap:address > location="http://localhost:8080/axis/services/FService"/> > </port> > </service> > </definitions> > > The schema: > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema targetNamespace="http://www.dummy-temp-address" > xmlns="http://www.dummy-temp-address" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > > xmlns:cars="http://www.crc-corp.com/schemas/cars/schema_annotation" > elementFormDefault="unqualified" > attributeFormDefault="unqualified" > version="DRAFT"> > <xs:element name="full-event-update" type="FullEventUpdate"/> > <xs:complexType name="FullEventUpdate"> > <xs:sequence> > <xs:element name="message-header" type="MessageHeader"/> > <xs:element name="event-reference" type="EventReference"/> > <xs:any/> > </xs:sequence> > </xs:complexType> > <xs:complexType name="MessageHeader"> > <xs:sequence> > <xs:any/> > </xs:sequence> > </xs:complexType> > <xs:complexType name="EventReference"> > <xs:sequence> > <xs:element name="event-id" type="xs:string"/> > <xs:element name="update" type="xs:unsignedInt"/> > <xs:element name="response-plan-id" type="xs:string" minOccurs="0"/> > </xs:sequence> > </xs:complexType> > </xs:schema> > The WSDL command line: > WSDL2Java --databinding-method xmlbeans > --uri FEUImport.wsdl > --server-side > --generate-all > --service-description > --output generatedSrc > --package crc.feuimport.wsdl2java > The skeleton interface that is getting generated: > /** > * FEUServiceSkeletonInterface.java > * > * This file was auto-generated from WSDL > * by the Apache Axis2 version: 1.0 May 05, 2006 (12:31:13 IST) > */ > package crc.feuimport.wsdl2java; > /** > * FServiceSkeletonInterface java skeleton interface for the axisService > */ > public interface FServiceSkeletonInterface { > > > /** > * Auto generated method signature > > * @param param0 > > */ > public org.apache.axiom.om.OMElement acceptFEURecap > (org.apache.axiom.om.OMElement param0 ) > > throws > crc.feuimport.wsdl2java.FServiceSkeleton.GeneralFaultException; > > > /** > * Auto generated method signature > > * @param param4 > > */ > public org.apache.axiom.om.OMElement acceptFEUEvent > (org.apache.axiom.om.OMElement param4 ) > > throws > crc.feuimport.wsdl2java.FServiceSkeleton.GeneralFaultException; > > } > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]