You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Deepal Jayasinghe (JIRA)" <ji...@apache.org> on 2007/04/23 13:53:16 UTC

[jira] Commented: (AXIS2-1644) HTTP GET REST requests fail for valid ADB generated data bindings.

    [ https://issues.apache.org/jira/browse/AXIS2-1644?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12490913 ] 

Deepal Jayasinghe commented on AXIS2-1644:
------------------------------------------

Sanka,
We need to fix this for 1.2 .

Thanks
Deepal

> HTTP GET REST requests fail for valid ADB generated data bindings.
> ------------------------------------------------------------------
>
>                 Key: AXIS2-1644
>                 URL: https://issues.apache.org/jira/browse/AXIS2-1644
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.0
>         Environment: GNU/Linux  2.6.18-1.2200.fc5smp, SUN Java 1.5.0_09, Apache Tomcat 5.5.20, Axis2 1.0
>            Reporter: Damon Lanphear
>         Assigned To: Sanka Samaranayake
>
> I've been working on getting REST support working using HTTP GET for a service specified using the contract-first idiom, and code generated using WSDL2Java. The data binding is Axis Data Binding (adb).
>  It appears that there are mismatches between the expectations of the  generated adb code and the output of the URL to SOAPEnvelope transcoder: SchemaUtil.handleMediaTypeURLEncoded()
>  1) SchemaUtil.handleMediaTypeURLEncoded() appears to strip off the
>  namespace information when constructing an OMElement for the SOAP
>  message body.  The ADB data binding assumes that the namespace
>  information is present when unmarshalling SOAP message input.
>  2) SchemaUtil.handleMediaTypeURLEncoded() assumes that complex XML data
>  types are specified as <sequence> as opposed to <all>.  Attempts to use
>  complex types specified with <all> will silently fail. 
> Replacing the call to createOMElement in SchemaUtil.handleMediaTypeURLEncoded()  to:
> soapFactory.createOMElement(name, 
> 							    soapFactory.createOMNamespace(targetNamespace,
> 											  xmlSchemaElement.getQName().getPrefix()),
>                                                             bodyFirstChild).setText(parameterValuesArray[0]);
> Fixes this problem for me.
> The WSDL in case is provided here:
> <?xml version="1.0"?>
> <definitions name="exampleCatalogSearch"
>              targetNamespace="http://catalog.ws.example.com/exampleCatalog"
> 			 xmlns:tns="http://catalog.ws.example.com/exampleCatalog"
>              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> 	         xmlns:xsd1="http://catalog.ws.example.com/xsd"
>              xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>              xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>              xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>              xmlns="http://schemas.xmlsoap.org/wsdl/"
> 	         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>   <!-- API Data Types -->
>   <types>
>     <schema xmlns="http://www.w3.org/2001/XMLSchema"
> 		        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
>                 targetNamespace="http://catalog.ws.example.com/xsd"
> 		        elementFormDefault="qualified">
>       <complexType name="ResultElement">
>         <all>
>           <element name="requestId"            type="xsd:string"/>
>           <element name="keyword"              type="xsd:string"/>
>           <element name="artist"               type="xsd:string"/>
>           <element name="title"                type="xsd:string"/>
>           <element name="contentType"          type="xsd:string"/>
>         </all>
>       </complexType>
>       <complexType name="SOAPStruct">
> 		  <sequence>
>             <element name="requestId"              type="xsd:string"/>
>             <element name="requestLimit"           type="xsd:int"/>
>             <element name="artist"                 type="xsd:string"/>
>             <element name="title"                  type="xsd:string"/>
>             <element name="keyword"               type="xsd:string"/>
> 		 </sequence>
>       </complexType>
> 		
> 	  <complexType name="ArrayOfResultElement_literal">
>        <sequence>
>          <element maxOccurs="unbounded" minOccurs="1" name="ResultElement"
> 			 type="xsd1:ResultElement"/>
>        </sequence>
>       </complexType>
> 		
> 	  <element name="resultReturn" type="xsd1:ArrayOfResultElement_literal"/>
> 		
> 	  <element name="requestParam" type="xsd1:SOAPStruct"/>
> 		
>     </schema>
>   </types> 
>   <!-- Messages for the example Catalog Search API -->
>   <message name="exampleCatalogSearch">
>     <part name="a" element="xsd1:requestParam"/>
>   </message>
>   <message name="exampleCatalogSearchResponse">
>     <part name="result" element="xsd1:resultReturn"/>           
>   </message>
>   <!-- Port for API, "exampleCatalogSearch" -->
>   <portType name="exampleCatalogSearchPortType">
>     <operation name="exampleCatalogSearch">
>       <input message="tns:exampleCatalogSearch" name="exampleCatalogSearch"/>
>       <output message="tns:exampleCatalogSearchResponse"
> 		  name="exampleCatalogSearchResponse"/>
>     </operation>
>   </portType>
>   <!-- Binding for Catalog Search APIs - RPC, SOAP over HTTP -->
>   <binding name="exampleCatalogSearchBinding" type="tns:exampleCatalogSearchPortType">
>      <soap:binding style="document"
> 		 transport="http://schemas.xmlsoap.org/soap/http"/>
>      <operation name="exampleCatalogSearch">
>             <soap:operation soapAction="tns:exampleCatalogSearch" style="rpc"/>
>             <input name="exampleCatalogSearch">
>                 <soap:body use="literal"/>
>             </input>
>             <output name="exampleCatalogSearchResponse">
> 			  <soap:body use="literal"/>
>             </output>
>         </operation>
>   </binding>
>   <!-- Endpoint for example Catalog Search APIs -->
>   <service name="exampleCatalogSearchService">
>     <port binding="tns:exampleCatalogSearchBinding" name="exampleCatalogSearchPort">
>       <soap:address
> 		  location="http://catalog.ws.example.com/"/>
>     </port>
>   </service>
> </definitions>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org