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 ma...@nordea.com on 2008/02/21 10:53:57 UTC

[AXIS2]ADB problem: Nested complex elements in request are not deserialized

Hi all, 

I don't know if it's a bug, but it seems that nested complex elements in
SOAP request are not deserialized by Axis2 ADB. Here is the schema which
defines a TradeFilterDTO contains other two filters:

<xs:complexType name="TradeFilterDTO">
                <xs:complexContent>
                    <xs:extension base="ax21:SoapDTO">
                        <xs:sequence>
                            <xs:element minOccurs="0"
name="auxiliariesAsSwaps" nillable="true" type="xs:boolean"/>
                            <xs:element minOccurs="0" name="batchID"
nillable="true" type="xs:long"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="businessUnits" nillable="true" type="xs:int"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="dealIDs" nillable="true" type="xs:string"/>
                            <xs:element minOccurs="0" name="fXFilter"
nillable="true" type="ax21:FXTradeFilterDTO"/>
                            <xs:element minOccurs="0"
name="fromModifyTime" nillable="true" type="xs:dateTime"/>
                            <xs:element minOccurs="0"
name="fromTradeTime" nillable="true" type="xs:dateTime"/>
                            <xs:element minOccurs="0"
name="includeModifications" nillable="true" type="xs:boolean"/>
                            <xs:element minOccurs="0" name="mMFilter"
nillable="true" type="ax21:MMTradeFilterDTO"/>
                            <xs:element minOccurs="0" name="maxTrades"
nillable="true" type="xs:int"/>
                            <xs:element minOccurs="0"
name="onlyBatchTrades" nillable="true" type="xs:boolean"/>
                            <xs:element minOccurs="0"
name="toModifyTime" nillable="true" type="xs:dateTime"/>
                            <xs:element minOccurs="0" name="toTradeTime"
nillable="true" type="xs:dateTime"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeChannels" nillable="true" type="xs:string"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeProducts" nillable="true" type="xs:string"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeStatus" nillable="true" type="xs:string"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="userIDs" nillable="true" type="xs:string"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="FXTradeFilterDTO">
                <xs:complexContent>
                    <xs:extension base="ax21:SoapDTO">
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="currencies" nillable="true" type="xs:string"/>
                            <xs:element minOccurs="0"
name="fromMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="fromValueDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="toMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0" name="toValueDate"
nillable="true" type="xs:date"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="MMTradeFilterDTO">
                <xs:complexContent>
                    <xs:extension base="ax21:SoapDTO">
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="currencies" nillable="true" type="xs:string"/>
                            <xs:element minOccurs="0"
name="fromMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="fromValueDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="toMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0" name="toValueDate"
nillable="true" type="xs:date"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>

The request looks as follows:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:ser="http://service.webservice.emarkets.nordea.com"
xmlns:xsd="http://dto.webservice.emarkets.nordea.com/xsd">
   <soap:Header/>
   <soap:Body>
      <ser:getTrades>
      <ser:filter>
	<xsd:fXFilter>
		<xsd:currencies>EUR</xsd:currencies>
	</xsd:fXFilter>
	<xsd:mMFilter>
		<xsd:currencies>USD</xsd:currencies>
	</xsd:mMFilter>
	<xsd:maxTrades>2</xsd:maxTrades>
	</ser:filter>
      </ser:getTrades>
   </soap:Body>
</soap:Envelope>

ADB serialized the above request to the corresponding TradeFilterDTO
object with nested attributes fxFilter and mMfilter null (maxTrades is
set on TradeFilterDTO). 
Please let me know if I did something wrong, thanks a lot!

Regards,
Mai Sun

RE: [AXIS2]ADB problem: Nested complex elements in request are not deserialized

Posted by ma...@nordea.com.
Hi Amila,
 
Thanks for your mail.
I've found out it was bacause I used attribute names which are not
Javabean compliant. The "fXFilter" and "mMFilter" should be named by
"fxFilter" and "mmFilter".
 
Best wishes,
Mai Sun

________________________________

From: Amila Suriarachchi [mailto:amilasuriarachchi@gmail.com] 
Sent: 21 February 2008 12:11
To: axis-dev@ws.apache.org
Subject: Re: [AXIS2]ADB problem: Nested complex elements in request are
not deserialized


What is the Axis2 version you use? can you send your client code and
whole wsdl?

thanks,
Amila.


On Thu, Feb 21, 2008 at 3:23 PM, <ma...@nordea.com> wrote:



	Hi all, 

	I don't know if it's a bug, but it seems that nested complex
elements in SOAP request are not deserialized by Axis2 ADB. Here is the
schema which defines a TradeFilterDTO contains other two filters:

	<xs:complexType name="TradeFilterDTO"> 
	                <xs:complexContent> 
	                    <xs:extension base="ax21:SoapDTO"> 
	                        <xs:sequence> 
	                            <xs:element minOccurs="0"
name="auxiliariesAsSwaps" nillable="true" type="xs:boolean"/> 
	                            <xs:element minOccurs="0"
name="batchID" nillable="true" type="xs:long"/> 
	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="businessUnits" nillable="true" type="xs:int"/>

	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="dealIDs" nillable="true" type="xs:string"/>

	                            <xs:element minOccurs="0"
name="fXFilter" nillable="true" type="ax21:FXTradeFilterDTO"/> 
	                            <xs:element minOccurs="0"
name="fromModifyTime" nillable="true" type="xs:dateTime"/> 
	                            <xs:element minOccurs="0"
name="fromTradeTime" nillable="true" type="xs:dateTime"/> 
	                            <xs:element minOccurs="0"
name="includeModifications" nillable="true" type="xs:boolean"/> 
	                            <xs:element minOccurs="0"
name="mMFilter" nillable="true" type="ax21:MMTradeFilterDTO"/> 
	                            <xs:element minOccurs="0"
name="maxTrades" nillable="true" type="xs:int"/> 
	                            <xs:element minOccurs="0"
name="onlyBatchTrades" nillable="true" type="xs:boolean"/> 
	                            <xs:element minOccurs="0"
name="toModifyTime" nillable="true" type="xs:dateTime"/> 
	                            <xs:element minOccurs="0"
name="toTradeTime" nillable="true" type="xs:dateTime"/> 
	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeChannels" nillable="true" type="xs:string"/>

	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeProducts" nillable="true" type="xs:string"/>

	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeStatus" nillable="true" type="xs:string"/>

	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="userIDs" nillable="true" type="xs:string"/>

	                        </xs:sequence> 
	                    </xs:extension> 
	                </xs:complexContent> 
	            </xs:complexType> 
	            <xs:complexType name="FXTradeFilterDTO"> 
	                <xs:complexContent> 
	                    <xs:extension base="ax21:SoapDTO"> 
	                        <xs:sequence> 
	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="currencies" nillable="true" type="xs:string"/>

	                            <xs:element minOccurs="0"
name="fromMaturityDate" nillable="true" type="xs:date"/> 
	                            <xs:element minOccurs="0"
name="fromValueDate" nillable="true" type="xs:date"/> 
	                            <xs:element minOccurs="0"
name="toMaturityDate" nillable="true" type="xs:date"/> 
	                            <xs:element minOccurs="0"
name="toValueDate" nillable="true" type="xs:date"/> 
	                        </xs:sequence> 
	                    </xs:extension> 
	                </xs:complexContent> 
	            </xs:complexType> 
	            <xs:complexType name="MMTradeFilterDTO"> 
	                <xs:complexContent> 
	                    <xs:extension base="ax21:SoapDTO"> 
	                        <xs:sequence> 
	                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="currencies" nillable="true" type="xs:string"/>

	                            <xs:element minOccurs="0"
name="fromMaturityDate" nillable="true" type="xs:date"/> 
	                            <xs:element minOccurs="0"
name="fromValueDate" nillable="true" type="xs:date"/> 
	                            <xs:element minOccurs="0"
name="toMaturityDate" nillable="true" type="xs:date"/> 
	                            <xs:element minOccurs="0"
name="toValueDate" nillable="true" type="xs:date"/> 
	                        </xs:sequence> 
	                    </xs:extension> 
	                </xs:complexContent> 
	            </xs:complexType> 

	The request looks as follows: 

	<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:ser="http://service.webservice.emarkets.nordea.com"
xmlns:xsd="http://dto.webservice.emarkets.nordea.com/xsd">

	   <soap:Header/> 
	   <soap:Body> 
	      <ser:getTrades> 
	      <ser:filter> 
	        <xsd:fXFilter> 
	                <xsd:currencies>EUR</xsd:currencies> 
	        </xsd:fXFilter> 
	        <xsd:mMFilter> 
	                <xsd:currencies>USD</xsd:currencies> 
	        </xsd:mMFilter> 
	        <xsd:maxTrades>2</xsd:maxTrades> 
	        </ser:filter> 
	      </ser:getTrades> 
	   </soap:Body> 
	</soap:Envelope> 

	ADB serialized the above request to the corresponding
TradeFilterDTO object with nested attributes fxFilter and mMfilter null
(maxTrades is set on TradeFilterDTO). 

	Please let me know if I did something wrong, thanks a lot! 

	Regards, 
	Mai Sun 




-- 
Amila Suriarachchi,
WSO2 Inc. 

Re: [AXIS2]ADB problem: Nested complex elements in request are not deserialized

Posted by Amila Suriarachchi <am...@gmail.com>.
What is the Axis2 version you use? can you send your client code and whole
wsdl?

thanks,
Amila.

On Thu, Feb 21, 2008 at 3:23 PM, <ma...@nordea.com> wrote:

>
> Hi all,
>
> I don't know if it's a bug, but it seems that nested complex elements in
> SOAP request are not deserialized by Axis2 ADB. Here is the schema which
> defines a TradeFilterDTO contains other two filters:
>
> <xs:complexType name="TradeFilterDTO">
>                 <xs:complexContent>
>                     <xs:extension base="ax21:SoapDTO">
>                         <xs:sequence>
>                             <xs:element minOccurs="0"
> name="auxiliariesAsSwaps" nillable="true" type="xs:boolean"/>
>                             <xs:element minOccurs="0" name="batchID"
> nillable="true" type="xs:long"/>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="businessUnits" nillable="true" type="xs:int"/>
>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="dealIDs" nillable="true" type="xs:string"/>
>
>                            * <xs:element minOccurs="0" name="fXFilter"
> nillable="true" type="ax21:FXTradeFilterDTO"/>*
> *                           * <xs:element minOccurs="0"
> name="fromModifyTime" nillable="true" type="xs:dateTime"/>
>                             <xs:element minOccurs="0" name="fromTradeTime"
> nillable="true" type="xs:dateTime"/>
>                             <xs:element minOccurs="0"
> name="includeModifications" nillable="true" type="xs:boolean"/>**
> *                            <xs:element minOccurs="0" name="mMFilter"
> nillable="true" type="ax21:MMTradeFilterDTO"/>*
> *                           * <xs:element minOccurs="0" name="maxTrades"
> nillable="true" type="xs:int"/>
>                             <xs:element minOccurs="0"
> name="onlyBatchTrades" nillable="true" type="xs:boolean"/>
>                             <xs:element minOccurs="0" name="toModifyTime"
> nillable="true" type="xs:dateTime"/>
>                             <xs:element minOccurs="0" name="toTradeTime"
> nillable="true" type="xs:dateTime"/>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="tradeChannels" nillable="true" type="xs:string"/>
>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="tradeProducts" nillable="true" type="xs:string"/>
>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="tradeStatus" nillable="true" type="xs:string"/>
>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="userIDs" nillable="true" type="xs:string"/>
>
>                         </xs:sequence>
>                     </xs:extension>
>                 </xs:complexContent>
>             </xs:complexType>
>             <xs:complexType name="FXTradeFilterDTO">
>                 <xs:complexContent>
>                     <xs:extension base="ax21:SoapDTO">
>                         <xs:sequence>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="currencies" nillable="true" type="xs:string"/>
>
>                             <xs:element minOccurs="0"
> name="fromMaturityDate" nillable="true" type="xs:date"/>
>                             <xs:element minOccurs="0" name="fromValueDate"
> nillable="true" type="xs:date"/>
>                             <xs:element minOccurs="0"
> name="toMaturityDate" nillable="true" type="xs:date"/>
>                             <xs:element minOccurs="0" name="toValueDate"
> nillable="true" type="xs:date"/>
>                         </xs:sequence>
>                     </xs:extension>
>                 </xs:complexContent>
>             </xs:complexType>
>             <xs:complexType name="MMTradeFilterDTO">
>                 <xs:complexContent>
>                     <xs:extension base="ax21:SoapDTO">
>                         <xs:sequence>
>                             <xs:element maxOccurs="unbounded"
> minOccurs="0" name="currencies" nillable="true" type="xs:string"/>
>
>                             <xs:element minOccurs="0"
> name="fromMaturityDate" nillable="true" type="xs:date"/>
>                             <xs:element minOccurs="0" name="fromValueDate"
> nillable="true" type="xs:date"/>
>                             <xs:element minOccurs="0"
> name="toMaturityDate" nillable="true" type="xs:date"/>
>                             <xs:element minOccurs="0" name="toValueDate"
> nillable="true" type="xs:date"/>
>                         </xs:sequence>
>                     </xs:extension>
>                 </xs:complexContent>
>             </xs:complexType>
>
> The request looks as follows:
>
> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
> xmlns:ser="http://service.webservice.emarkets.nordea.com" xmlns:xsd="
> http://dto.webservice.emarkets.nordea.com/xsd">
>
>    <soap:Header/>
>    <soap:Body>
>       <ser:getTrades>
>       <ser:filter>
>         <xsd:fXFilter>
>                 <xsd:currencies>EUR</xsd:currencies>
>         </xsd:fXFilter>
>         <xsd:mMFilter>
>                 <xsd:currencies>USD</xsd:currencies>
>         </xsd:mMFilter>
>         <xsd:maxTrades>2</xsd:maxTrades>
>         </ser:filter>
>       </ser:getTrades>
>    </soap:Body>
> </soap:Envelope>
>
> ADB serialized the above request to the corresponding TradeFilterDTO
> object with nested attributes fxFilter and mMfilter null (maxTrades is set
> on TradeFilterDTO).
>
> Please let me know if I did something wrong, thanks a lot!
>
> Regards,
> Mai Sun
>



-- 
Amila Suriarachchi,
WSO2 Inc.