[ http://issues.apache.org/jira/browse/AXIS2-844?page=all ]
Deepal Jayasinghe reassigned AXIS2-844:
---------------------------------------
Assign To: Ajith Harshana Ranabahu
> 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)
> Type: Bug
> Components: wsdl, databinding, Tools
> Versions: 1.0
> Environment: JDK 5.0
> Reporter: Derek Foster
> Assignee: 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]