axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Derek Foster (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-844) WSDL2Java uses XmlObject for skeleton parameter when data in XML schema in same namespace as WSDL document
Date Tue, 18 Jul 2006 00:25:14 GMT
    [ 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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message