[ http://issues.apache.org/jira/browse/AXIS2-156?page=all ]
     
Deepal Jayasinghe resolved AXIS2-156:
-------------------------------------

    Fix Version: 0.95
     Resolution: Fixed

> Resolving Operation at dispatcher using local name of the first Element  in a 
> soapbody when the style is Doc/Lit
> ----------------------------------------------------------------------------------------------------------------
>
>          Key: AXIS2-156
>          URL: http://issues.apache.org/jira/browse/AXIS2-156
>      Project: Apache Axis 2.0 (Axis2)
>         Type: Improvement
>   Components: core
>     Versions: 0.92
>     Reporter: Gayan Asanka
>      Fix For: 0.95

>
> Dispatcher should be able to resolve the operation in folowing conditions
>  When 
>     1. The soap action is same for all the operations in service 
>     2. Local name of the first child is not equal to the operation name 
> (since style is Doc/Lit)
>     3. Local name of the first child is equal to the shema-element name
> Dispatcher can use element name that is the local name of first child and 
> also mentioned in the schema, to resolve the operation .
> A sample WSDL and a relevent Soap messages are as follows:
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; 
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"; 
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
> xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit"; 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
> xmlns:xsd1="http://soapinterop.org/xsd"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> name="WSDLInteropTestDocLitService" 
> targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit";>
>     <types>
>         <schema xmlns="http://www.w3.org/2001/XMLSchema"; 
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
> targetNamespace="http://soapinterop.org/xsd"; elementFormDefault="qualified">
>             <complexType name="ArrayOfstring_literal">
>                 <sequence>
>                     <element maxOccurs="unbounded" minOccurs="1" 
> name="string" type="xsd:string"/>
>                 </sequence>
>             </complexType>
>           <complexType name="SOAPStruct">
>                 <all>
>                     <element name="varFloat" type="xsd:float"/>
>                     <element name="varInt" type="xsd:int"/>
>                     <element name="varString" type="xsd:string"/>
>                 </all>
>             </complexType>  
>             <element name="echoStringParam" type="xsd:string"/>         
>             <element name="echoStringReturn" type="xsd:string"/>
>             <element name="echoStringArrayParam" 
> type="xsd1:ArrayOfstring_literal"/>                
>             <element name="echoStringArrayReturn" 
> type="xsd1:ArrayOfstring_literal"/>               
>             <element name="echoStructParam" type="xsd1:SOAPStruct"/>          
>          
>             <element name="echoStructReturn" type="xsd1:SOAPStruct"/>
>         </schema>
>     </types>
>     <message name="echoString">
>         <part element="xsd1:echoStringParam" name="a"/>
>     </message>
>     <message name="echoStringResponse">
>         <part element="xsd1:echoStringReturn" name="result"/>
>     </message>
>     <message name="echoStringArray">
>         <part element="xsd1:echoStringArrayParam" name="a"/>
>     </message>
>     <message name="echoStringArrayResponse">
>         <part element="xsd1:echoStringArrayReturn" name="result"/>
>     </message>
>     <message name="echoStruct">
>         <part element="xsd1:echoStructParam" name="a"/>
>     </message>
>     <message name="echoStructResponse">
>         <part element="xsd1:echoStructReturn" name="result"/>
>     </message>
>     <message name="echoVoid"/>
>     <message name="echoVoidResponse"/>
>     <portType name="WSDLInteropTestDocLitPortType">
>         <operation name="echoString">
>             <input message="tns:echoString" name="echoString"/>
>             <output message="tns:echoStringResponse" 
> name="echoStringResponse"/>
>         </operation>
>         <operation name="echoStringArray">
>             <input message="tns:echoStringArray" name="echoStringArray"/>
>             <output message="tns:echoStringArrayResponse" 
> name="echoStringArrayResponse"/>
>         </operation>
>         <operation name="echoStruct">
>             <input message="tns:echoStruct" name="echoStruct"/>
>             <output message="tns:echoStructResponse" 
> name="echoStructResponse"/>
>         </operation>
>         <operation name="echoVoid">
>             <input message="tns:echoVoid" name="echoVoid"/>
>             <output message="tns:echoVoidResponse" name="echoVoidResponse"/>
>         </operation>
>     </portType>
>     <binding name="WSDLInteropTestDocLitPortBinding" 
> type="tns:WSDLInteropTestDocLitPortType">
>         <soap:binding style="document" 
> transport="http://schemas.xmlsoap.org/soap/http"/>
>         <operation name="echoString">
>             <soap:operation soapAction="http://soapinterop.org/"; 
> style="document"/>
>             <input name="echoString">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </input>
>             <output name="echoStringResponse">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </output>
>         </operation>
>         <operation name="echoStringArray">
>             <soap:operation soapAction="http://soapinterop.org/"; 
> style="document"/>
>             <input name="echoStringArray">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </input>
>             <output name="echoStringArrayResponse">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </output>
>         </operation>
>         <operation name="echoStruct">
>             <soap:operation soapAction="http://soapinterop.org/"; 
> style="document"/>
>             <input name="echoStruct">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </input>
>             <output name="echoStructResponse">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </output>
>         </operation>
>         <operation name="echoVoid">
>             <soap:operation soapAction="http://soapinterop.org/"; 
> style="document"/>
>             <input name="echoVoid">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </input>
>             <output name="echoVoidResponse">
>                 <soap:body 
> namespace="http://soapinterop.org/WSDLInteropTestDocLit"; use="literal"/>
>             </output>
>         </operation>
>     </binding>
>     <service name="WSDLInteropTestDocLitService">
>         <port binding="tns:WSDLInteropTestDocLitPortBinding" 
> name="WSDLInteropTestDocLitPort">
>             <soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
> location=""/>
>         </port>
>     </service>
> </definitions>
> Request Soap for EchoString Oparation:
> POST /round3/groupd/doclit HTTP/1.1
> User-Agent: Axis/2.0
> SOAPAction: http://soapinterop.org/
> Connection: Keep-Alive
> Host: soapinterop.java.sun.com
> Content-Length: 411
> Content-Type: text/xml; charset=utf-8
> <?xml version='1.0' encoding='utf-8'?>
>    <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
>       <soapenv:Header>
>          <wsa:To 
> xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing";>http://localhost:8010/round3/groupd/doclit</wsa:To>
>       </soapenv:Header>
>       <soapenv:Body>
>          <echoStringParam xmlns="http://soapinterop.org/xsd";>this is a String 
> parameter</echoStringParam>
>       </soapenv:Body>
>    </soapenv:Envelope>
> Response soap:
> HTTP/1.1 200 OK
> SOAPAction: ""
> Content-Type: text/xml; charset="utf-8"
> Transfer-Encoding: chunked
> Date: Wed, 17 Aug 2005 12:20:37 GMT
> Server: Apache Coyote/1.0
> 196
> <?xml version="1.0" encoding="UTF-8"?>
>    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"; 
> xmlns:ns0="http://soapinterop.org/xsd";>
>       <env:Body>
>          <ns0:echoStringReturn>this is a String 
> parameter</ns0:echoStringReturn>
>       </env:Body>
>    </env:Envelope>
> 0
> Requst Soap for EchoStruct operation:
> POST /round3/groupd/doclit HTTP/1.1
> User-Agent: Axis/2.0
> SOAPAction: http://soapinterop.org/
> Connection: Keep-Alive
> Host: soapinterop.java.sun.com
> Content-Length: 485
> Content-Type: text/xml; charset=utf-8
> <?xml version='1.0' encoding='utf-8'?>
>    <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
>       <soapenv:Header>
>          <wsa:To 
> xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing";>http://localhost:8010/round3/groupd/doclit</wsa:To>
>       </soapenv:Header>
>       <soapenv:Body>
>          <echoStructParam xmlns="http://soapinterop.org/xsd";>
>             <varFloat>456.321</varFloat>
>             <varInt>456987</varInt>
>             <varString>this is a String parameter</varString>
>          </echoStructParam>
>       </soapenv:Body>
>    </soapenv:Envelope>
> response saop for echoStruct operation
> HTTP/1.1 200 OK
> SOAPAction: ""
> Content-Type: text/xml; charset="utf-8"
> Transfer-Encoding: chunked
> Date: Wed, 17 Aug 2005 12:54:39 GMT
> Server: Apache Coyote/1.0
> 1f8
> <?xml version="1.0" encoding="UTF-8"?>
>    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"; 
> xmlns:ns0="http://soapinterop.org/xsd";>
>       <env:Body>
>          <ns0:echoStructReturn>
>             <ns0:varFloat>456.321</ns0:varFloat>
>             <ns0:varInt>456987</ns0:varInt>
>             <ns0:varString>this is a String parameter</ns0:varString>
>          </ns0:echoStructReturn>
>       </env:Body>
>    </env:Envelope>
> 0

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

Reply via email to