axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anne Thomas Manes" <atma...@gmail.com>
Subject Re: Array Of ComplexTypes - Missing item tag
Date Wed, 28 May 2008 21:24:46 GMT
That's a bug in Axis 1.2. Please upgrade to Axis 1.4.

On Wed, May 28, 2008 at 4:52 AM, Karthik R <karthikr.thillai@gmail.com> wrote:
> Hello Friends,
>
>
> Hello Friends,
>
> While Accessing a webservice using axis 1.2, we are sending the input as
> arrayofComplex Data Type.
>
> ComplexData Type - a Class KeyValuePair.
> public class KeyValuePair  implements java.io.Serializable {
>     private java.lang.String key;
>     private java.lang.String value;
>     public KeyValuePair() {    }
>
>     public KeyValuePair(java.lang.String key, java.lang.String value) {
>            this.key = key;
>            this.value = value;
>     }
>  }
>
> Input to the webservice is array of the above mentioned data Type.
>
> We are expecting the following request.
>
> <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:ProcessEvent
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns1="http://www.epiphany.com/RP">
> <package xsi:type="xsd:string">THREE</package>
> <event xsi:type="xsd:string">OfferRequest</event>
> <fields soapenc:arrayType="ns1:ArrayOfKeyValuePair[10]"
> xsi:type="soapenc:Array"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <item href="#id0"/>
>   <item href="#id1"/>
>  </fields>
> </ns1:ProcessEvent>
>
>  <multiRef id="id0" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xsi:type="ns7:KeyValuePair"
> xmlns:ns7="http://www.epiphany.com/RP"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <key xsi:type="xsd:string">
>    SessionId
>   </key>
>   <value xsi:type="xsd:string">
>    1234567890
>   </value>
>  </multiRef>
>
>  <multiRef id="id1" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xsi:type="ns2:KeyValuePair"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns2="http://www.epiphany.com/RP">
>   <key xsi:type="xsd:string">
>    Customer_ID
>   </key>
>   <value xsi:type="xsd:string">
>   </value>
>  </multiRef>
>   </soapenv:Body>
>  </soapenv:Envelope>
>
> Instead we are getting the following
>
> <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:ProcessEvent
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns1="http://www.epiphany.com/RP">
> <package xsi:type="xsd:string">THREE</package>
> <event xsi:type="xsd:string">OfferRequest</event>
> <fields soapenc:arrayType="ns1:ArrayOfKeyValuePair[10]"
> xsi:type="soapenc:Array"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <fields href="#id0"/>
>   <fields href="#id1"/>
>  </fields>
> </ns1:ProcessEvent>
>
>  <multiRef id="id0" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xsi:type="ns7:KeyValuePair"
> xmlns:ns7="http://www.epiphany.com/RP"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <key xsi:type="xsd:string">
>    SessionId
>   </key>
>   <value xsi:type="xsd:string">
>    1234567890
>   </value>
>  </multiRef>
>
>  <multiRef id="id1" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xsi:type="ns2:KeyValuePair"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns2="http://www.epiphany.com/RP">
>   <key xsi:type="xsd:string">
>    Customer_ID
>   </key>
>   <value xsi:type="xsd:string">
>   </value>
>  </multiRef>
>   </soapenv:Body>
>  </soapenv:Envelope>
>
> Note the ArrayOfKeyValuePair should have tag named <item> as per soap
> standards, but we get the parent array tag name in its
> element name too. i.e fields tag is replaced for <item tag
>
> HOw to solve this issue and get expected response.
>
> Fyi
> We have given the Serializer and Deserializer as below
> QName arrayOfKeyValuePairQname = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP",
> "ArrayOfKeyValuePair");
>             QName arrayOfReturnedOffersQname = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP",
> "ArrayOfReturnedOffer");
>             QName keyValuePairQName = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP", "KeyValuePair");
>             QName returnedOfferQName = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP", "ReturnedOffer");
>
>
>             TypeMappingRegistry typeMappingRegistry =
> service.getTypeMappingRegistry();
>             TypeMapping map = typeMappingRegistry.getDefaultTypeMapping();
>
>             map.register(KeyValuePair[].class, arrayOfKeyValuePairQname,
>                   new ArraySerializerFactory(KeyValuePair[].class,
> arrayOfKeyValuePairQname),
>                   new ArrayDeserializerFactory());
>
>             map.register(KeyValuePair.class, keyValuePairQName,
>                   new BeanSerializerFactory(KeyValuePair.class,
>                         keyValuePairQName), new BeanDeserializerFactory(
>                               KeyValuePair.class, keyValuePairQName));
>
>             map.register(ReturnedOffer.class, returnedOfferQName,
>                   new BeanSerializerFactory(ReturnedOffer.class,
>                         returnedOfferQName), new BeanDeserializerFactory (
>                               ReturnedOffer.class, returnedOfferQName));
>
> Still we are not able to get the expected result. Kindly help us ASAP.
>
> WSDL Entry is as follows.
>   <xsd:complexType name="KeyValuePair">
>         <xsd:sequence>
>           <xsd:element name="key" type="xsd:string"/>
>           <xsd:element name="value" type="xsd:string"/>
>         </xsd:sequence>
>       </xsd:complexType>
>       <xsd:complexType name="ArrayOfKeyValuePair">
>         <xsd:complexContent>
>           <xsd:restriction base="SOAP-ENC:Array">
>              <xsd:sequence>
>               <xsd:element name="item" type="rp:KeyValuePair"
> maxOccurs="unbounded"/>
>             </xsd:sequence>
>             <xsd:attribute ref="SOAP-ENC:arrayType"
> wsdl:arrayType="rp:KeyValuePair[]"/>
>           </xsd:restriction>
>         </xsd:complexContent>
>       </xsd:complexType>
>
>  <message name="ProcessEventRequest">
>     <part name="package" type="xsd:string"/>
>     <part name="event" type="xsd:string"/>
>     <part name="fields" type="rp:ArrayOfKeyValuePair"/>
>   </message>
>
> Regards
> Karthik R

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


Mime
View raw message