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:[EMAIL PROTECTED] Sent: 21 February 2008 12:11 To: [email protected] 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, <[EMAIL PROTECTED]> 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.
