I think I can answer my own question now.  The ADBBean generated,
RequestQuery in my example below, already had a nice addExtraAttributes()
method for me to add the attribute but not an addExtraElement(OMElement)
method to add the extra element--that's because my actual WSDL had an
<xsd:anyAttribute/> (causing the former method to appear) but no <xsd:any/>
sequence element.  I placed the latter in to the WSDL, and wsdl2java created
a setExtraElement(OMElement) method for me.


Glen Mazza wrote:
> 
> Hello, I'm writing a client of a web service WSDL that uses xsi:type[1],
> which is a method of dynamically changing the type of element being used. 
> (I'm using Axis2 with ADB).  The WSDL just asks for a RequestQuery, as
> defined below:
> 
> <element name="MyRequestParameters">
>       <complexType>
>               <sequence>
>                       <element name="RequestQuery" type="abc:RequestQuery"/>
>               </sequence>
>       </complexType>
> </element>
> 
> where RequestQuery is:
> <xs:complexType name="RequestQuery">
>       <xs:sequence>
>               <xs:element name="reqVal" type="xsd:string">
>       </xs:sequence>
> </xs:complexType>
> 
> But request query has a derived type that I need to use, say
> FinancialRequestQuery:
> 
> <xs:complexType name="FinancialRequestQuery">
>       <xs:complexContent>
>               <xs:extension base="abc:RequestQuery">
>                       <xs:sequence>
>                               <xs:element name="finanReqVal" 
> type="xs:string"/>
>                       </xs:sequence>
>               </xs:extension>
>       </xs:complexContent>
> </xs:complexType>
> 
> Over the wire, however, instead of sending a FinancialRequestQuery I have
> to use a RequestQuery with xsi:type as follows:
> 
> <RequestQuery xsi:type="abc:FinancialRequestQuery">
>        <reqVal>hello</reqVal>
>        <abc:finanReqVal>how are you</abc:finanReqVal>
> </RequestQuery>
> 
> ADB binding does not provide me the necessary setters for this though--I'm
> provided a method to set reqVal (because it's normally part of Request)
> but not finanReqVal (because it's only allowed here because of the
> xsi:type changing it to the derived FinancialRequestQuery type.)
> 
> What I guess I need to do is, (1) given an ADB generated object such as
> RequestQuery, to manually construct an xsi:type attribute and add it to
> that element; and (2) to manually construct an <abc:finanReqVal> child
> element and add it to the ADB RequestQuery object.  Does anyone have quick
> code snippets on how to do that?  (Other ideas or suggestions for working
> with xsi:type also welcome.)
> 
> Thanks,
> Glen
> 
> [1] http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_over_st1.html
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Need-help-working-with-xsi%3Atype-and-ADB-tp23853502p23888560.html
Sent from the Axis - User mailing list archive at Nabble.com.

Reply via email to