[ 
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]

Reply via email to