You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Rodrigo Asensio <ra...@gmail.com> on 2008/12/10 15:21:36 UTC

Problem with a simple Object[] in RPCServiceClient

Can't return a simple Object[]

axis2 141

client code:
----------------

		RPCServiceClient serviceClient = new RPCServiceClient();
		Options options = serviceClient.getOptions();
		EndpointReference targetEPR = new EndpointReference(URL);
		options.setTo(targetEPR);
		options.setTimeOutInMilliSeconds(TIMEOUT);

		QName actionQ = new QName(NAMESPACE, action);
		Class[] returnTypes = new Class[] { Struct_cards.class };   // also
tried  Struct_cards[].class
		Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);

It returns an array of 1 element Struct_cards with all its values
empty, below the XML response and the bean code.
I saw that might be a problem of axis2 converting simple object
arrays, but I didn't found any proof. Any help will be appreciated.


xml returns :
-----------------

<get_cardsResponse
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <get_cardsReturn
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://icu_test.dev"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
    <get_cardsReturn xsi:type="ns1:struct_cards">
     <card_delegate xsi:type="xsd:string">X</card_delegate>
     <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
     <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
     <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
     <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
     <card_type xsi:type="xsd:string">1</card_type>
     <usrfld1 xsi:type="xsd:string"></usrfld1>
    </get_cardsReturn>
    <get_cardsReturn xsi:type="ns1:struct_cards">
     <card_delegate xsi:type="xsd:string">x</card_delegate>
     <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
     <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
     <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
     <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
     <card_type xsi:type="xsd:string">1</card_type>
     <usrfld1 xsi:type="xsd:string"></usrfld1>
    </get_cardsReturn>
   </get_cardsReturn>
  </get_cardsResponse>

bean code: (very basic)
---------------

public class Struct_cards {
	protected java.lang.String card_delegate;
	protected java.lang.String card_expire_date;
	protected java.lang.String card_id;
	protected java.lang.String card_lfd;
	protected java.lang.String card_name;
	protected java.lang.String card_type;
	protected java.lang.String usrfld1;

	public Struct_cards() {}

	public Struct_cards(String card_delegate, String card_expire_date,
String card_id, String card_lfd, String card_name,
			String card_type, String usrfld1) {
		this.card_delegate = card_delegate;
		this.card_expire_date = card_expire_date;
		this.card_id = card_id;
		this.card_lfd = card_lfd;
		this.card_name = card_name;
		this.card_type = card_type;
		this.usrfld1 = usrfld1;
	}

	public String getCard_delegate() {
		return card_delegate;
	}

	public void setCard_delegate(String card_delegate) {
		this.card_delegate = card_delegate;
	}

	public String getCard_expire_date() {
		return card_expire_date;
	}

	public void setCard_expire_date(String card_expire_date) {
		this.card_expire_date = card_expire_date;
	}

	public String getCard_id() {
		return card_id;
	}

	public void setCard_id(String card_id) {
		this.card_id = card_id;
	}

	public String getCard_lfd() {
		return card_lfd;
	}

	public void setCard_lfd(String card_lfd) {
		this.card_lfd = card_lfd;
	}

	public String getCard_name() {
		return card_name;
	}

	public void setCard_name(String card_name) {
		this.card_name = card_name;
	}

	public String getCard_type() {
		return card_type;
	}

	public void setCard_type(String card_type) {
		this.card_type = card_type;
	}

	public String getUsrfld1() {
		return usrfld1;
	}

	public void setUsrfld1(String usrfld1) {
		this.usrfld1 = usrfld1;
	}






Rodrigo Asensio
rasensio@gmail.com
http://www.rodrigoasensio.com
"To err is human, but to really screw up requires the root password."

Re: Problem with a simple Object[] in RPCServiceClient

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Oh, good. I though you were using Axis2 at the server side too .
> Finally It was solved. how ?
>
> the ws was done in coldfusion 7 who uses axis1 and there are some
> problems with doc-literal and soap encoding. Server side changed the
> wsdl and now I can retrieve arrays[] with the same code. Thanks for
> helping.
> R
>
>
> Rodrigo Asensio
> rasensio@gmail.com
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>
>
> On Wed, Dec 10, 2008 at 2:55 PM, Rodrigo Asensio <ra...@gmail.com> wrote:
>   
>> Here is the code. Also I'm trying to generate the clients with adb or
>> xmlbeans and I'm getting
>> [ERROR] Part 'fault' of fault message
>> '{http://icu_test.dev}CFCInvocationException' must be defined with
>> 'element=QName' and not 'type=QName'
>>
>> this is a coldfusion axis1 ws. I found that "according to the
>> specification, fault and header message parts must be defined as
>> document/literal, even if the body is defined as RPC style."
>>
>>
>> Struct_cards
>> ------------------
>>
>> public class struct_cards {
>>        protected java.lang.String card_delegate;
>>        protected java.lang.String card_expire_date;
>>        protected java.lang.String card_id;
>>        protected java.lang.String card_lfd;
>>        protected java.lang.String card_name;
>>        protected java.lang.String card_type;
>>        protected java.lang.String usrfld1;
>>
>>        public struct_cards() {}
>>
>>        public struct_cards(String card_delegate, String card_expire_date,
>> String card_id, String card_lfd, String card_name,
>>                        String card_type, String usrfld1) {
>>                this.card_delegate = card_delegate;
>>                this.card_expire_date = card_expire_date;
>>                this.card_id = card_id;
>>                this.card_lfd = card_lfd;
>>                this.card_name = card_name;
>>                this.card_type = card_type;
>>                this.usrfld1 = usrfld1;
>>        }
>>
>>        public String getCard_delegate() {
>>                return card_delegate;
>>        }
>>
>>        public void setCard_delegate(String card_delegate) {
>>                this.card_delegate = card_delegate;
>>        }
>>
>>        public String getCard_expire_date() {
>>                return card_expire_date;
>>        }
>>
>>        public void setCard_expire_date(String card_expire_date) {
>>                this.card_expire_date = card_expire_date;
>>        }
>>
>>        public String getCard_id() {
>>                return card_id;
>>        }
>>
>>        public void setCard_id(String card_id) {
>>                this.card_id = card_id;
>>        }
>>
>>        public String getCard_lfd() {
>>                return card_lfd;
>>        }
>>
>>        public void setCard_lfd(String card_lfd) {
>>                this.card_lfd = card_lfd;
>>        }
>>
>>        public String getCard_name() {
>>                return card_name;
>>        }
>>
>>        public void setCard_name(String card_name) {
>>                this.card_name = card_name;
>>        }
>>
>>        public String getCard_type() {
>>                return card_type;
>>        }
>>
>>        public void setCard_type(String card_type) {
>>                this.card_type = card_type;
>>        }
>>
>>        public String getUsrfld1() {
>>                return usrfld1;
>>        }
>>
>>        public void setUsrfld1(String usrfld1) {
>>                this.usrfld1 = usrfld1;
>>        }
>> }
>>
>>
>> invoke method
>> ----------------------
>>
>>        public Object[] invoke() throws Exception {
>>                Object[] params = new Object() {"someid"};
>>
>>                RPCServiceClient serviceClient = new RPCServiceClient();
>>                Options options = serviceClient.getOptions();
>>                EndpointReference targetEPR = new EndpointReference(URL);
>>                options.setTo(targetEPR);
>>                options.setTimeOutInMilliSeconds(TIMEOUT);
>>
>>                QName actionQ = new QName(NAMESPACE, "get_cards");
>> //              Class[] returnTypes = new Class[] { returnTypeClass };
>>
>>                ArrayList resobj = new ArrayList();
>>                resobj.add(struct_cards[].class);
>>                Class[] ax = (Class[])resobj.toArray(new Class[resobj.size()]);
>>        //     Class[] returnTypes = new Class[]{struct_cards.class};
>>                Object[] results = serviceClient.invokeBlocking(actionQ, params, ax);
>>                return results;
>>        }
>>
>>
>>
>>
>>
>> Rodrigo Asensio
>> rasensio@gmail.com
>> http://www.rodrigoasensio.com
>> "To err is human, but to really screw up requires the root password."
>>
>>
>>
>> On Wed, Dec 10, 2008 at 2:47 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>>     
>>> Can you please send me your service code, then I will give you the exact
>>> solution.
>>>
>>> Deepal
>>>
>>> Rodrigo Asensio wrote:
>>>       
>>>> the most accurate test for my case should be the testCompanyArray()
>>>> where it converts doing something like this
>>>>
>>>> ArrayList resobj = new ArrayList();
>>>> resobj.add(Struct_cards[].class);
>>>> (Class[])resobj.toArray(new Class[resobj.size()])
>>>>
>>>> but the result is the same...  below I'm posting the wsdl and extra
>>>> info that might help (me  :))
>>>>
>>>> results       Object[1]  (id=83)
>>>>       [0]     Struct_cards  (id=84)
>>>>               card_delegate   null
>>>>               card_expire_date        null
>>>>               card_id null
>>>>               card_lfd        null
>>>>               card_name       null
>>>>               card_type       null
>>>>               usrfld1 null
>>>>
>>>> ws created by Macromedia ColdFusion MX version 7,0,2,142559
>>>> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>>>> <complexType name="Struct_cards">
>>>> −
>>>> <sequence>
>>>> <element name="card_delegate" nillable="true" type="xsd:string"/>
>>>> <element name="card_expire_date" nillable="true" type="xsd:string"/>
>>>> <element name="card_id" nillable="true" type="xsd:string"/>
>>>> <element name="card_lfd" nillable="true" type="xsd:string"/>
>>>> <element name="card_name" nillable="true" type="xsd:string"/>
>>>> <element name="card_type" nillable="true" type="xsd:string"/>
>>>> <element name="usrfld1" nillable="true" type="xsd:string"/>
>>>> </sequence>
>>>> </complexType>
>>>> −
>>>> <complexType name="ArrayOfStruct_cards">
>>>> −
>>>> <complexContent>
>>>> −
>>>> <restriction base="soapenc:Array">
>>>> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
>>>> </restriction>
>>>> </complexContent>
>>>> </complexType>
>>>>
>>>>
>>>>
>>>>
>>>> Rodrigo Asensio
>>>> rasensio@gmail.com
>>>> http://www.rodrigoasensio.com
>>>> "To err is human, but to really screw up requires the root password."
>>>>
>>>>
>>>>
>>>> On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>>>>
>>>>         
>>>>> Have a look at following class , it does what you want to do
>>>>>
>>>>> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>>>>>
>>>>>
>>>>>           
>>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>> this don't compile because the objects inside the array must be Class
>>>>>> type, and I already tried that one
>>>>>>
>>>>>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>>>>>
>>>>>>
>>>>>> Rodrigo Asensio
>>>>>> rasensio@gmail.com
>>>>>> http://www.rodrigoasensio.com
>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>>>>>> <de...@opensource.lk> wrote:
>>>>>>
>>>>>>
>>>>>>             
>>>>>>>> Can't return a simple Object[]
>>>>>>>>
>>>>>>>> axis2 141
>>>>>>>>
>>>>>>>> client code:
>>>>>>>> ----------------
>>>>>>>>
>>>>>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>>>>>               Options options = serviceClient.getOptions();
>>>>>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>>>>>               options.setTo(targetEPR);
>>>>>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>>>>>
>>>>>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>>>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>>>
>>>>>>> would work.
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>>> also
>>>>>>>> tried  Struct_cards[].class
>>>>>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>>>>>>
>>>>>>>> It returns an array of 1 element Struct_cards with all its values
>>>>>>>> empty, below the XML response and the bean code.
>>>>>>>> I saw that might be a problem of axis2 converting simple object
>>>>>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>>>>>
>>>>>>>>
>>>>>>>> xml returns :
>>>>>>>> -----------------
>>>>>>>>
>>>>>>>> <get_cardsResponse
>>>>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>>>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>>>>>>    <get_cardsReturn
>>>>>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>>>>>>> xmlns:ns1="http://icu_test.dev"
>>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>>     </get_cardsReturn>
>>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>>     </get_cardsReturn>
>>>>>>>>    </get_cardsReturn>
>>>>>>>>   </get_cardsResponse>
>>>>>>>>
>>>>>>>> bean code: (very basic)
>>>>>>>> ---------------
>>>>>>>>
>>>>>>>> public class Struct_cards {
>>>>>>>>       protected java.lang.String card_delegate;
>>>>>>>>       protected java.lang.String card_expire_date;
>>>>>>>>       protected java.lang.String card_id;
>>>>>>>>       protected java.lang.String card_lfd;
>>>>>>>>       protected java.lang.String card_name;
>>>>>>>>       protected java.lang.String card_type;
>>>>>>>>       protected java.lang.String usrfld1;
>>>>>>>>
>>>>>>>>       public Struct_cards() {}
>>>>>>>>
>>>>>>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>>>>>>> String card_id, String card_lfd, String card_name,
>>>>>>>>                       String card_type, String usrfld1) {
>>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>>               this.card_id = card_id;
>>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>>               this.card_name = card_name;
>>>>>>>>               this.card_type = card_type;
>>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_delegate() {
>>>>>>>>               return card_delegate;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_delegate(String card_delegate) {
>>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_expire_date() {
>>>>>>>>               return card_expire_date;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_id() {
>>>>>>>>               return card_id;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_id(String card_id) {
>>>>>>>>               this.card_id = card_id;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_lfd() {
>>>>>>>>               return card_lfd;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_lfd(String card_lfd) {
>>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_name() {
>>>>>>>>               return card_name;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_name(String card_name) {
>>>>>>>>               this.card_name = card_name;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_type() {
>>>>>>>>               return card_type;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_type(String card_type) {
>>>>>>>>               this.card_type = card_type;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getUsrfld1() {
>>>>>>>>               return usrfld1;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setUsrfld1(String usrfld1) {
>>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Rodrigo Asensio
>>>>>>>> rasensio@gmail.com
>>>>>>>> http://www.rodrigoasensio.com
>>>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>> --
>>>>>>> Thank you!
>>>>>>>
>>>>>>>
>>>>>>> http://blogs.deepal.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>> --
>>>>> Thank you!
>>>>>
>>>>>
>>>>> http://blogs.deepal.org
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>         
>>> --
>>> Thank you!
>>>
>>>
>>> http://blogs.deepal.org
>>>
>>>
>>>       
>
>   

-- 
Thank you!


http://blogs.deepal.org


Re: Problem with a simple Object[] in RPCServiceClient

Posted by Rodrigo Asensio <ra...@gmail.com>.
Finally It was solved. how ?

the ws was done in coldfusion 7 who uses axis1 and there are some
problems with doc-literal and soap encoding. Server side changed the
wsdl and now I can retrieve arrays[] with the same code. Thanks for
helping.
R


Rodrigo Asensio
rasensio@gmail.com
http://www.rodrigoasensio.com
"To err is human, but to really screw up requires the root password."



On Wed, Dec 10, 2008 at 2:55 PM, Rodrigo Asensio <ra...@gmail.com> wrote:
> Here is the code. Also I'm trying to generate the clients with adb or
> xmlbeans and I'm getting
> [ERROR] Part 'fault' of fault message
> '{http://icu_test.dev}CFCInvocationException' must be defined with
> 'element=QName' and not 'type=QName'
>
> this is a coldfusion axis1 ws. I found that "according to the
> specification, fault and header message parts must be defined as
> document/literal, even if the body is defined as RPC style."
>
>
> Struct_cards
> ------------------
>
> public class struct_cards {
>        protected java.lang.String card_delegate;
>        protected java.lang.String card_expire_date;
>        protected java.lang.String card_id;
>        protected java.lang.String card_lfd;
>        protected java.lang.String card_name;
>        protected java.lang.String card_type;
>        protected java.lang.String usrfld1;
>
>        public struct_cards() {}
>
>        public struct_cards(String card_delegate, String card_expire_date,
> String card_id, String card_lfd, String card_name,
>                        String card_type, String usrfld1) {
>                this.card_delegate = card_delegate;
>                this.card_expire_date = card_expire_date;
>                this.card_id = card_id;
>                this.card_lfd = card_lfd;
>                this.card_name = card_name;
>                this.card_type = card_type;
>                this.usrfld1 = usrfld1;
>        }
>
>        public String getCard_delegate() {
>                return card_delegate;
>        }
>
>        public void setCard_delegate(String card_delegate) {
>                this.card_delegate = card_delegate;
>        }
>
>        public String getCard_expire_date() {
>                return card_expire_date;
>        }
>
>        public void setCard_expire_date(String card_expire_date) {
>                this.card_expire_date = card_expire_date;
>        }
>
>        public String getCard_id() {
>                return card_id;
>        }
>
>        public void setCard_id(String card_id) {
>                this.card_id = card_id;
>        }
>
>        public String getCard_lfd() {
>                return card_lfd;
>        }
>
>        public void setCard_lfd(String card_lfd) {
>                this.card_lfd = card_lfd;
>        }
>
>        public String getCard_name() {
>                return card_name;
>        }
>
>        public void setCard_name(String card_name) {
>                this.card_name = card_name;
>        }
>
>        public String getCard_type() {
>                return card_type;
>        }
>
>        public void setCard_type(String card_type) {
>                this.card_type = card_type;
>        }
>
>        public String getUsrfld1() {
>                return usrfld1;
>        }
>
>        public void setUsrfld1(String usrfld1) {
>                this.usrfld1 = usrfld1;
>        }
> }
>
>
> invoke method
> ----------------------
>
>        public Object[] invoke() throws Exception {
>                Object[] params = new Object() {"someid"};
>
>                RPCServiceClient serviceClient = new RPCServiceClient();
>                Options options = serviceClient.getOptions();
>                EndpointReference targetEPR = new EndpointReference(URL);
>                options.setTo(targetEPR);
>                options.setTimeOutInMilliSeconds(TIMEOUT);
>
>                QName actionQ = new QName(NAMESPACE, "get_cards");
> //              Class[] returnTypes = new Class[] { returnTypeClass };
>
>                ArrayList resobj = new ArrayList();
>                resobj.add(struct_cards[].class);
>                Class[] ax = (Class[])resobj.toArray(new Class[resobj.size()]);
>        //     Class[] returnTypes = new Class[]{struct_cards.class};
>                Object[] results = serviceClient.invokeBlocking(actionQ, params, ax);
>                return results;
>        }
>
>
>
>
>
> Rodrigo Asensio
> rasensio@gmail.com
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>
>
> On Wed, Dec 10, 2008 at 2:47 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>> Can you please send me your service code, then I will give you the exact
>> solution.
>>
>> Deepal
>>
>> Rodrigo Asensio wrote:
>>> the most accurate test for my case should be the testCompanyArray()
>>> where it converts doing something like this
>>>
>>> ArrayList resobj = new ArrayList();
>>> resobj.add(Struct_cards[].class);
>>> (Class[])resobj.toArray(new Class[resobj.size()])
>>>
>>> but the result is the same...  below I'm posting the wsdl and extra
>>> info that might help (me  :))
>>>
>>> results       Object[1]  (id=83)
>>>       [0]     Struct_cards  (id=84)
>>>               card_delegate   null
>>>               card_expire_date        null
>>>               card_id null
>>>               card_lfd        null
>>>               card_name       null
>>>               card_type       null
>>>               usrfld1 null
>>>
>>> ws created by Macromedia ColdFusion MX version 7,0,2,142559
>>> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>>> <complexType name="Struct_cards">
>>> −
>>> <sequence>
>>> <element name="card_delegate" nillable="true" type="xsd:string"/>
>>> <element name="card_expire_date" nillable="true" type="xsd:string"/>
>>> <element name="card_id" nillable="true" type="xsd:string"/>
>>> <element name="card_lfd" nillable="true" type="xsd:string"/>
>>> <element name="card_name" nillable="true" type="xsd:string"/>
>>> <element name="card_type" nillable="true" type="xsd:string"/>
>>> <element name="usrfld1" nillable="true" type="xsd:string"/>
>>> </sequence>
>>> </complexType>
>>> −
>>> <complexType name="ArrayOfStruct_cards">
>>> −
>>> <complexContent>
>>> −
>>> <restriction base="soapenc:Array">
>>> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
>>> </restriction>
>>> </complexContent>
>>> </complexType>
>>>
>>>
>>>
>>>
>>> Rodrigo Asensio
>>> rasensio@gmail.com
>>> http://www.rodrigoasensio.com
>>> "To err is human, but to really screw up requires the root password."
>>>
>>>
>>>
>>> On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>>>
>>>> Have a look at following class , it does what you want to do
>>>>
>>>> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>>>>
>>>>
>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>> this don't compile because the objects inside the array must be Class
>>>>> type, and I already tried that one
>>>>>
>>>>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>>>>
>>>>>
>>>>> Rodrigo Asensio
>>>>> rasensio@gmail.com
>>>>> http://www.rodrigoasensio.com
>>>>> "To err is human, but to really screw up requires the root password."
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>>>>> <de...@opensource.lk> wrote:
>>>>>
>>>>>
>>>>>>> Can't return a simple Object[]
>>>>>>>
>>>>>>> axis2 141
>>>>>>>
>>>>>>> client code:
>>>>>>> ----------------
>>>>>>>
>>>>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>>>>               Options options = serviceClient.getOptions();
>>>>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>>>>               options.setTo(targetEPR);
>>>>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>>>>
>>>>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>>>>>
>>>>>>>
>>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>>
>>>>>> would work.
>>>>>>
>>>>>>
>>>>>>> also
>>>>>>> tried  Struct_cards[].class
>>>>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>>>>>
>>>>>>> It returns an array of 1 element Struct_cards with all its values
>>>>>>> empty, below the XML response and the bean code.
>>>>>>> I saw that might be a problem of axis2 converting simple object
>>>>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>>>>
>>>>>>>
>>>>>>> xml returns :
>>>>>>> -----------------
>>>>>>>
>>>>>>> <get_cardsResponse
>>>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>>>>>    <get_cardsReturn
>>>>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>>>>>> xmlns:ns1="http://icu_test.dev"
>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>     </get_cardsReturn>
>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>     </get_cardsReturn>
>>>>>>>    </get_cardsReturn>
>>>>>>>   </get_cardsResponse>
>>>>>>>
>>>>>>> bean code: (very basic)
>>>>>>> ---------------
>>>>>>>
>>>>>>> public class Struct_cards {
>>>>>>>       protected java.lang.String card_delegate;
>>>>>>>       protected java.lang.String card_expire_date;
>>>>>>>       protected java.lang.String card_id;
>>>>>>>       protected java.lang.String card_lfd;
>>>>>>>       protected java.lang.String card_name;
>>>>>>>       protected java.lang.String card_type;
>>>>>>>       protected java.lang.String usrfld1;
>>>>>>>
>>>>>>>       public Struct_cards() {}
>>>>>>>
>>>>>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>>>>>> String card_id, String card_lfd, String card_name,
>>>>>>>                       String card_type, String usrfld1) {
>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>               this.card_id = card_id;
>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>               this.card_name = card_name;
>>>>>>>               this.card_type = card_type;
>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_delegate() {
>>>>>>>               return card_delegate;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_delegate(String card_delegate) {
>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_expire_date() {
>>>>>>>               return card_expire_date;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_id() {
>>>>>>>               return card_id;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_id(String card_id) {
>>>>>>>               this.card_id = card_id;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_lfd() {
>>>>>>>               return card_lfd;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_lfd(String card_lfd) {
>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_name() {
>>>>>>>               return card_name;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_name(String card_name) {
>>>>>>>               this.card_name = card_name;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_type() {
>>>>>>>               return card_type;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_type(String card_type) {
>>>>>>>               this.card_type = card_type;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getUsrfld1() {
>>>>>>>               return usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setUsrfld1(String usrfld1) {
>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Rodrigo Asensio
>>>>>>> rasensio@gmail.com
>>>>>>> http://www.rodrigoasensio.com
>>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Thank you!
>>>>>>
>>>>>>
>>>>>> http://blogs.deepal.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> --
>>>> Thank you!
>>>>
>>>>
>>>> http://blogs.deepal.org
>>>>
>>>>
>>>>
>>>
>>>
>>
>> --
>> Thank you!
>>
>>
>> http://blogs.deepal.org
>>
>>
>

Infinite Loop

Posted by "Pathuri, Hanu" <hp...@qualcomm.com>.
Hi,

We have a web service (say A) deployed in Tomcat/Axis-2 environment. It nee= ds to access another web service (B) for which we have java api based jaxws=  framework.
The developers of B publishes a java jar file for clients to use the B web = service. This API makes use of JAXWS API.


When A is deployed on Tomcat using eclipse, A can access B with out any iss= ues.


However, When A calls B we seem to getting into infinte loop.

Can some one guide us how to troubleshoot or offer advice on what to look f= or?

Best Regards
Hanu
-----Original Message-----
From: Rodrigo Asensio [mailto:rasensio@gmail.com] 
Sent: Thursday, December 11, 2008 8:46 AM
To: axis-user@ws.apache.org
Subject: Re: Problem with a simple Object[] in RPCServiceClient

nop, I said....

this is a coldfusion axis1 ws. I found that "according to the
specification, fault and header message parts must be defined as
document/literal, even if the body is defined as RPC style."

regards and thanks


Rodrigo Asensio
rasensio@gmail.com
http://www.rodrigoasensio.com
"To err is human, but to really screw up requires the root password."



On Wed, Dec 10, 2008 at 2:55 PM, Rodrigo Asensio <ra...@gmail.com> wrote:
> Here is the code. Also I'm trying to generate the clients with adb or
> xmlbeans and I'm getting
> [ERROR] Part 'fault' of fault message
> '{http://icu_test.dev}CFCInvocationException' must be defined with
> 'element=QName' and not 'type=QName'
>
> this is a coldfusion axis1 ws. I found that "according to the
> specification, fault and header message parts must be defined as
> document/literal, even if the body is defined as RPC style."
>
>
> Struct_cards
> ------------------
>
> public class struct_cards {
>        protected java.lang.String card_delegate;
>        protected java.lang.String card_expire_date;
>        protected java.lang.String card_id;
>        protected java.lang.String card_lfd;
>        protected java.lang.String card_name;
>        protected java.lang.String card_type;
>        protected java.lang.String usrfld1;
>
>        public struct_cards() {}
>
>        public struct_cards(String card_delegate, String card_expire_date,
> String card_id, String card_lfd, String card_name,
>                        String card_type, String usrfld1) {
>                this.card_delegate = card_delegate;
>                this.card_expire_date = card_expire_date;
>                this.card_id = card_id;
>                this.card_lfd = card_lfd;
>                this.card_name = card_name;
>                this.card_type = card_type;
>                this.usrfld1 = usrfld1;
>        }
>
>        public String getCard_delegate() {
>                return card_delegate;
>        }
>
>        public void setCard_delegate(String card_delegate) {
>                this.card_delegate = card_delegate;
>        }
>
>        public String getCard_expire_date() {
>                return card_expire_date;
>        }
>
>        public void setCard_expire_date(String card_expire_date) {
>                this.card_expire_date = card_expire_date;
>        }
>
>        public String getCard_id() {
>                return card_id;
>        }
>
>        public void setCard_id(String card_id) {
>                this.card_id = card_id;
>        }
>
>        public String getCard_lfd() {
>                return card_lfd;
>        }
>
>        public void setCard_lfd(String card_lfd) {
>                this.card_lfd = card_lfd;
>        }
>
>        public String getCard_name() {
>                return card_name;
>        }
>
>        public void setCard_name(String card_name) {
>                this.card_name = card_name;
>        }
>
>        public String getCard_type() {
>                return card_type;
>        }
>
>        public void setCard_type(String card_type) {
>                this.card_type = card_type;
>        }
>
>        public String getUsrfld1() {
>                return usrfld1;
>        }
>
>        public void setUsrfld1(String usrfld1) {
>                this.usrfld1 = usrfld1;
>        }
> }
>
>
> invoke method
> ----------------------
>
>        public Object[] invoke() throws Exception {
>                Object[] params = new Object() {"someid"};
>
>                RPCServiceClient serviceClient = new RPCServiceClient();
>                Options options = serviceClient.getOptions();
>                EndpointReference targetEPR = new EndpointReference(URL);
>                options.setTo(targetEPR);
>                options.setTimeOutInMilliSeconds(TIMEOUT);
>
>                QName actionQ = new QName(NAMESPACE, "get_cards");
> //              Class[] returnTypes = new Class[] { returnTypeClass };
>
>                ArrayList resobj = new ArrayList();
>                resobj.add(struct_cards[].class);
>                Class[] ax = (Class[])resobj.toArray(new Class[resobj.size()]);
>        //     Class[] returnTypes = new Class[]{struct_cards.class};
>                Object[] results = serviceClient.invokeBlocking(actionQ, params, ax);
>                return results;
>        }
>
>
>
>
>
> Rodrigo Asensio
> rasensio@gmail.com
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>
>
> On Wed, Dec 10, 2008 at 2:47 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>> Can you please send me your service code, then I will give you the exact
>> solution.
>>
>> Deepal
>>
>> Rodrigo Asensio wrote:
>>> the most accurate test for my case should be the testCompanyArray()
>>> where it converts doing something like this
>>>
>>> ArrayList resobj = new ArrayList();
>>> resobj.add(Struct_cards[].class);
>>> (Class[])resobj.toArray(new Class[resobj.size()])
>>>
>>> but the result is the same...  below I'm posting the wsdl and extra
>>> info that might help (me  :))
>>>
>>> results       Object[1]  (id=83)
>>>       [0]     Struct_cards  (id=84)
>>>               card_delegate   null
>>>               card_expire_date        null
>>>               card_id null
>>>               card_lfd        null
>>>               card_name       null
>>>               card_type       null
>>>               usrfld1 null
>>>
>>> ws created by Macromedia ColdFusion MX version 7,0,2,142559
>>> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>>> <complexType name="Struct_cards">
>>> −
>>> <sequence>
>>> <element name="card_delegate" nillable="true" type="xsd:string"/>
>>> <element name="card_expire_date" nillable="true" type="xsd:string"/>
>>> <element name="card_id" nillable="true" type="xsd:string"/>
>>> <element name="card_lfd" nillable="true" type="xsd:string"/>
>>> <element name="card_name" nillable="true" type="xsd:string"/>
>>> <element name="card_type" nillable="true" type="xsd:string"/>
>>> <element name="usrfld1" nillable="true" type="xsd:string"/>
>>> </sequence>
>>> </complexType>
>>> −
>>> <complexType name="ArrayOfStruct_cards">
>>> −
>>> <complexContent>
>>> −
>>> <restriction base="soapenc:Array">
>>> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
>>> </restriction>
>>> </complexContent>
>>> </complexType>
>>>
>>>
>>>
>>>
>>> Rodrigo Asensio
>>> rasensio@gmail.com
>>> http://www.rodrigoasensio.com
>>> "To err is human, but to really screw up requires the root password."
>>>
>>>
>>>
>>> On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>>>
>>>> Have a look at following class , it does what you want to do
>>>>
>>>> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>>>>
>>>>
>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>> this don't compile because the objects inside the array must be Class
>>>>> type, and I already tried that one
>>>>>
>>>>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>>>>
>>>>>
>>>>> Rodrigo Asensio
>>>>> rasensio@gmail.com
>>>>> http://www.rodrigoasensio.com
>>>>> "To err is human, but to really screw up requires the root password."
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>>>>> <de...@opensource.lk> wrote:
>>>>>
>>>>>
>>>>>>> Can't return a simple Object[]
>>>>>>>
>>>>>>> axis2 141
>>>>>>>
>>>>>>> client code:
>>>>>>> ----------------
>>>>>>>
>>>>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>>>>               Options options = serviceClient.getOptions();
>>>>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>>>>               options.setTo(targetEPR);
>>>>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>>>>
>>>>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>>>>>
>>>>>>>
>>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>>
>>>>>> would work.
>>>>>>
>>>>>>
>>>>>>> also
>>>>>>> tried  Struct_cards[].class
>>>>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>>>>>
>>>>>>> It returns an array of 1 element Struct_cards with all its values
>>>>>>> empty, below the XML response and the bean code.
>>>>>>> I saw that might be a problem of axis2 converting simple object
>>>>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>>>>
>>>>>>>
>>>>>>> xml returns :
>>>>>>> -----------------
>>>>>>>
>>>>>>> <get_cardsResponse
>>>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>>>>>    <get_cardsReturn
>>>>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>>>>>> xmlns:ns1="http://icu_test.dev"
>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>     </get_cardsReturn>
>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>     </get_cardsReturn>
>>>>>>>    </get_cardsReturn>
>>>>>>>   </get_cardsResponse>
>>>>>>>
>>>>>>> bean code: (very basic)
>>>>>>> ---------------
>>>>>>>
>>>>>>> public class Struct_cards {
>>>>>>>       protected java.lang.String card_delegate;
>>>>>>>       protected java.lang.String card_expire_date;
>>>>>>>       protected java.lang.String card_id;
>>>>>>>       protected java.lang.String card_lfd;
>>>>>>>       protected java.lang.String card_name;
>>>>>>>       protected java.lang.String card_type;
>>>>>>>       protected java.lang.String usrfld1;
>>>>>>>
>>>>>>>       public Struct_cards() {}
>>>>>>>
>>>>>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>>>>>> String card_id, String card_lfd, String card_name,
>>>>>>>                       String card_type, String usrfld1) {
>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>               this.card_id = card_id;
>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>               this.card_name = card_name;
>>>>>>>               this.card_type = card_type;
>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_delegate() {
>>>>>>>               return card_delegate;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_delegate(String card_delegate) {
>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_expire_date() {
>>>>>>>               return card_expire_date;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_id() {
>>>>>>>               return card_id;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_id(String card_id) {
>>>>>>>               this.card_id = card_id;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_lfd() {
>>>>>>>               return card_lfd;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_lfd(String card_lfd) {
>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_name() {
>>>>>>>               return card_name;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_name(String card_name) {
>>>>>>>               this.card_name = card_name;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_type() {
>>>>>>>               return card_type;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_type(String card_type) {
>>>>>>>               this.card_type = card_type;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getUsrfld1() {
>>>>>>>               return usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setUsrfld1(String usrfld1) {
>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Rodrigo Asensio
>>>>>>> rasensio@gmail.com
>>>>>>> http://www.rodrigoasensio.com
>>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Thank you!
>>>>>>
>>>>>>
>>>>>> http://blogs.deepal.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> --
>>>> Thank you!
>>>>
>>>>
>>>> http://blogs.deepal.org
>>>>
>>>>
>>>>
>>>
>>>
>>
>> --
>> Thank you!
>>
>>
>> http://blogs.deepal.org
>>
>>
>

Re: Problem with a simple Object[] in RPCServiceClient

Posted by Rodrigo Asensio <ra...@gmail.com>.
nop, I said....

this is a coldfusion axis1 ws. I found that "according to the
specification, fault and header message parts must be defined as
document/literal, even if the body is defined as RPC style."

regards and thanks


Rodrigo Asensio
rasensio@gmail.com
http://www.rodrigoasensio.com
"To err is human, but to really screw up requires the root password."



On Wed, Dec 10, 2008 at 2:55 PM, Rodrigo Asensio <ra...@gmail.com> wrote:
> Here is the code. Also I'm trying to generate the clients with adb or
> xmlbeans and I'm getting
> [ERROR] Part 'fault' of fault message
> '{http://icu_test.dev}CFCInvocationException' must be defined with
> 'element=QName' and not 'type=QName'
>
> this is a coldfusion axis1 ws. I found that "according to the
> specification, fault and header message parts must be defined as
> document/literal, even if the body is defined as RPC style."
>
>
> Struct_cards
> ------------------
>
> public class struct_cards {
>        protected java.lang.String card_delegate;
>        protected java.lang.String card_expire_date;
>        protected java.lang.String card_id;
>        protected java.lang.String card_lfd;
>        protected java.lang.String card_name;
>        protected java.lang.String card_type;
>        protected java.lang.String usrfld1;
>
>        public struct_cards() {}
>
>        public struct_cards(String card_delegate, String card_expire_date,
> String card_id, String card_lfd, String card_name,
>                        String card_type, String usrfld1) {
>                this.card_delegate = card_delegate;
>                this.card_expire_date = card_expire_date;
>                this.card_id = card_id;
>                this.card_lfd = card_lfd;
>                this.card_name = card_name;
>                this.card_type = card_type;
>                this.usrfld1 = usrfld1;
>        }
>
>        public String getCard_delegate() {
>                return card_delegate;
>        }
>
>        public void setCard_delegate(String card_delegate) {
>                this.card_delegate = card_delegate;
>        }
>
>        public String getCard_expire_date() {
>                return card_expire_date;
>        }
>
>        public void setCard_expire_date(String card_expire_date) {
>                this.card_expire_date = card_expire_date;
>        }
>
>        public String getCard_id() {
>                return card_id;
>        }
>
>        public void setCard_id(String card_id) {
>                this.card_id = card_id;
>        }
>
>        public String getCard_lfd() {
>                return card_lfd;
>        }
>
>        public void setCard_lfd(String card_lfd) {
>                this.card_lfd = card_lfd;
>        }
>
>        public String getCard_name() {
>                return card_name;
>        }
>
>        public void setCard_name(String card_name) {
>                this.card_name = card_name;
>        }
>
>        public String getCard_type() {
>                return card_type;
>        }
>
>        public void setCard_type(String card_type) {
>                this.card_type = card_type;
>        }
>
>        public String getUsrfld1() {
>                return usrfld1;
>        }
>
>        public void setUsrfld1(String usrfld1) {
>                this.usrfld1 = usrfld1;
>        }
> }
>
>
> invoke method
> ----------------------
>
>        public Object[] invoke() throws Exception {
>                Object[] params = new Object() {"someid"};
>
>                RPCServiceClient serviceClient = new RPCServiceClient();
>                Options options = serviceClient.getOptions();
>                EndpointReference targetEPR = new EndpointReference(URL);
>                options.setTo(targetEPR);
>                options.setTimeOutInMilliSeconds(TIMEOUT);
>
>                QName actionQ = new QName(NAMESPACE, "get_cards");
> //              Class[] returnTypes = new Class[] { returnTypeClass };
>
>                ArrayList resobj = new ArrayList();
>                resobj.add(struct_cards[].class);
>                Class[] ax = (Class[])resobj.toArray(new Class[resobj.size()]);
>        //     Class[] returnTypes = new Class[]{struct_cards.class};
>                Object[] results = serviceClient.invokeBlocking(actionQ, params, ax);
>                return results;
>        }
>
>
>
>
>
> Rodrigo Asensio
> rasensio@gmail.com
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>
>
> On Wed, Dec 10, 2008 at 2:47 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>> Can you please send me your service code, then I will give you the exact
>> solution.
>>
>> Deepal
>>
>> Rodrigo Asensio wrote:
>>> the most accurate test for my case should be the testCompanyArray()
>>> where it converts doing something like this
>>>
>>> ArrayList resobj = new ArrayList();
>>> resobj.add(Struct_cards[].class);
>>> (Class[])resobj.toArray(new Class[resobj.size()])
>>>
>>> but the result is the same...  below I'm posting the wsdl and extra
>>> info that might help (me  :))
>>>
>>> results       Object[1]  (id=83)
>>>       [0]     Struct_cards  (id=84)
>>>               card_delegate   null
>>>               card_expire_date        null
>>>               card_id null
>>>               card_lfd        null
>>>               card_name       null
>>>               card_type       null
>>>               usrfld1 null
>>>
>>> ws created by Macromedia ColdFusion MX version 7,0,2,142559
>>> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>>> <complexType name="Struct_cards">
>>> −
>>> <sequence>
>>> <element name="card_delegate" nillable="true" type="xsd:string"/>
>>> <element name="card_expire_date" nillable="true" type="xsd:string"/>
>>> <element name="card_id" nillable="true" type="xsd:string"/>
>>> <element name="card_lfd" nillable="true" type="xsd:string"/>
>>> <element name="card_name" nillable="true" type="xsd:string"/>
>>> <element name="card_type" nillable="true" type="xsd:string"/>
>>> <element name="usrfld1" nillable="true" type="xsd:string"/>
>>> </sequence>
>>> </complexType>
>>> −
>>> <complexType name="ArrayOfStruct_cards">
>>> −
>>> <complexContent>
>>> −
>>> <restriction base="soapenc:Array">
>>> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
>>> </restriction>
>>> </complexContent>
>>> </complexType>
>>>
>>>
>>>
>>>
>>> Rodrigo Asensio
>>> rasensio@gmail.com
>>> http://www.rodrigoasensio.com
>>> "To err is human, but to really screw up requires the root password."
>>>
>>>
>>>
>>> On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>>>
>>>> Have a look at following class , it does what you want to do
>>>>
>>>> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>>>>
>>>>
>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>> this don't compile because the objects inside the array must be Class
>>>>> type, and I already tried that one
>>>>>
>>>>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>>>>
>>>>>
>>>>> Rodrigo Asensio
>>>>> rasensio@gmail.com
>>>>> http://www.rodrigoasensio.com
>>>>> "To err is human, but to really screw up requires the root password."
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>>>>> <de...@opensource.lk> wrote:
>>>>>
>>>>>
>>>>>>> Can't return a simple Object[]
>>>>>>>
>>>>>>> axis2 141
>>>>>>>
>>>>>>> client code:
>>>>>>> ----------------
>>>>>>>
>>>>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>>>>               Options options = serviceClient.getOptions();
>>>>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>>>>               options.setTo(targetEPR);
>>>>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>>>>
>>>>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>>>>>
>>>>>>>
>>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>>
>>>>>> would work.
>>>>>>
>>>>>>
>>>>>>> also
>>>>>>> tried  Struct_cards[].class
>>>>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>>>>>
>>>>>>> It returns an array of 1 element Struct_cards with all its values
>>>>>>> empty, below the XML response and the bean code.
>>>>>>> I saw that might be a problem of axis2 converting simple object
>>>>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>>>>
>>>>>>>
>>>>>>> xml returns :
>>>>>>> -----------------
>>>>>>>
>>>>>>> <get_cardsResponse
>>>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>>>>>    <get_cardsReturn
>>>>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>>>>>> xmlns:ns1="http://icu_test.dev"
>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>     </get_cardsReturn>
>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>     </get_cardsReturn>
>>>>>>>    </get_cardsReturn>
>>>>>>>   </get_cardsResponse>
>>>>>>>
>>>>>>> bean code: (very basic)
>>>>>>> ---------------
>>>>>>>
>>>>>>> public class Struct_cards {
>>>>>>>       protected java.lang.String card_delegate;
>>>>>>>       protected java.lang.String card_expire_date;
>>>>>>>       protected java.lang.String card_id;
>>>>>>>       protected java.lang.String card_lfd;
>>>>>>>       protected java.lang.String card_name;
>>>>>>>       protected java.lang.String card_type;
>>>>>>>       protected java.lang.String usrfld1;
>>>>>>>
>>>>>>>       public Struct_cards() {}
>>>>>>>
>>>>>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>>>>>> String card_id, String card_lfd, String card_name,
>>>>>>>                       String card_type, String usrfld1) {
>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>               this.card_id = card_id;
>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>               this.card_name = card_name;
>>>>>>>               this.card_type = card_type;
>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_delegate() {
>>>>>>>               return card_delegate;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_delegate(String card_delegate) {
>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_expire_date() {
>>>>>>>               return card_expire_date;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_id() {
>>>>>>>               return card_id;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_id(String card_id) {
>>>>>>>               this.card_id = card_id;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_lfd() {
>>>>>>>               return card_lfd;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_lfd(String card_lfd) {
>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_name() {
>>>>>>>               return card_name;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_name(String card_name) {
>>>>>>>               this.card_name = card_name;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getCard_type() {
>>>>>>>               return card_type;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setCard_type(String card_type) {
>>>>>>>               this.card_type = card_type;
>>>>>>>       }
>>>>>>>
>>>>>>>       public String getUsrfld1() {
>>>>>>>               return usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>       public void setUsrfld1(String usrfld1) {
>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>       }
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Rodrigo Asensio
>>>>>>> rasensio@gmail.com
>>>>>>> http://www.rodrigoasensio.com
>>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Thank you!
>>>>>>
>>>>>>
>>>>>> http://blogs.deepal.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> --
>>>> Thank you!
>>>>
>>>>
>>>> http://blogs.deepal.org
>>>>
>>>>
>>>>
>>>
>>>
>>
>> --
>> Thank you!
>>
>>
>> http://blogs.deepal.org
>>
>>
>

Re: Problem with a simple Object[] in RPCServiceClient

Posted by Rodrigo Asensio <ra...@gmail.com>.
Here is the code. Also I'm trying to generate the clients with adb or
xmlbeans and I'm getting
[ERROR] Part 'fault' of fault message
'{http://icu_test.dev}CFCInvocationException' must be defined with
'element=QName' and not 'type=QName'

this is a coldfusion axis1 ws. I found that "according to the
specification, fault and header message parts must be defined as
document/literal, even if the body is defined as RPC style."


Struct_cards
------------------

public class struct_cards {
	protected java.lang.String card_delegate;
	protected java.lang.String card_expire_date;
	protected java.lang.String card_id;
	protected java.lang.String card_lfd;
	protected java.lang.String card_name;
	protected java.lang.String card_type;
	protected java.lang.String usrfld1;

	public struct_cards() {}

	public struct_cards(String card_delegate, String card_expire_date,
String card_id, String card_lfd, String card_name,
			String card_type, String usrfld1) {
		this.card_delegate = card_delegate;
		this.card_expire_date = card_expire_date;
		this.card_id = card_id;
		this.card_lfd = card_lfd;
		this.card_name = card_name;
		this.card_type = card_type;
		this.usrfld1 = usrfld1;
	}

	public String getCard_delegate() {
		return card_delegate;
	}

	public void setCard_delegate(String card_delegate) {
		this.card_delegate = card_delegate;
	}

	public String getCard_expire_date() {
		return card_expire_date;
	}

	public void setCard_expire_date(String card_expire_date) {
		this.card_expire_date = card_expire_date;
	}

	public String getCard_id() {
		return card_id;
	}

	public void setCard_id(String card_id) {
		this.card_id = card_id;
	}

	public String getCard_lfd() {
		return card_lfd;
	}

	public void setCard_lfd(String card_lfd) {
		this.card_lfd = card_lfd;
	}

	public String getCard_name() {
		return card_name;
	}

	public void setCard_name(String card_name) {
		this.card_name = card_name;
	}

	public String getCard_type() {
		return card_type;
	}

	public void setCard_type(String card_type) {
		this.card_type = card_type;
	}

	public String getUsrfld1() {
		return usrfld1;
	}

	public void setUsrfld1(String usrfld1) {
		this.usrfld1 = usrfld1;
	}
}


invoke method
----------------------

	public Object[] invoke() throws Exception {
		Object[] params = new Object() {"someid"};

		RPCServiceClient serviceClient = new RPCServiceClient();
		Options options = serviceClient.getOptions();
		EndpointReference targetEPR = new EndpointReference(URL);
		options.setTo(targetEPR);
		options.setTimeOutInMilliSeconds(TIMEOUT);

		QName actionQ = new QName(NAMESPACE, "get_cards");
//		Class[] returnTypes = new Class[] { returnTypeClass };
		
		ArrayList resobj = new ArrayList();
		resobj.add(struct_cards[].class);
		Class[] ax = (Class[])resobj.toArray(new Class[resobj.size()]);
	//     Class[] returnTypes = new Class[]{struct_cards.class};
		Object[] results = serviceClient.invokeBlocking(actionQ, params, ax);
		return results;
	}





Rodrigo Asensio
rasensio@gmail.com
http://www.rodrigoasensio.com
"To err is human, but to really screw up requires the root password."



On Wed, Dec 10, 2008 at 2:47 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
> Can you please send me your service code, then I will give you the exact
> solution.
>
> Deepal
>
> Rodrigo Asensio wrote:
>> the most accurate test for my case should be the testCompanyArray()
>> where it converts doing something like this
>>
>> ArrayList resobj = new ArrayList();
>> resobj.add(Struct_cards[].class);
>> (Class[])resobj.toArray(new Class[resobj.size()])
>>
>> but the result is the same...  below I'm posting the wsdl and extra
>> info that might help (me  :))
>>
>> results       Object[1]  (id=83)
>>       [0]     Struct_cards  (id=84)
>>               card_delegate   null
>>               card_expire_date        null
>>               card_id null
>>               card_lfd        null
>>               card_name       null
>>               card_type       null
>>               usrfld1 null
>>
>> ws created by Macromedia ColdFusion MX version 7,0,2,142559
>> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>> <complexType name="Struct_cards">
>> −
>> <sequence>
>> <element name="card_delegate" nillable="true" type="xsd:string"/>
>> <element name="card_expire_date" nillable="true" type="xsd:string"/>
>> <element name="card_id" nillable="true" type="xsd:string"/>
>> <element name="card_lfd" nillable="true" type="xsd:string"/>
>> <element name="card_name" nillable="true" type="xsd:string"/>
>> <element name="card_type" nillable="true" type="xsd:string"/>
>> <element name="usrfld1" nillable="true" type="xsd:string"/>
>> </sequence>
>> </complexType>
>> −
>> <complexType name="ArrayOfStruct_cards">
>> −
>> <complexContent>
>> −
>> <restriction base="soapenc:Array">
>> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
>> </restriction>
>> </complexContent>
>> </complexType>
>>
>>
>>
>>
>> Rodrigo Asensio
>> rasensio@gmail.com
>> http://www.rodrigoasensio.com
>> "To err is human, but to really screw up requires the root password."
>>
>>
>>
>> On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>>
>>> Have a look at following class , it does what you want to do
>>>
>>> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>>>
>>>
>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>> this don't compile because the objects inside the array must be Class
>>>> type, and I already tried that one
>>>>
>>>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>>>
>>>>
>>>> Rodrigo Asensio
>>>> rasensio@gmail.com
>>>> http://www.rodrigoasensio.com
>>>> "To err is human, but to really screw up requires the root password."
>>>>
>>>>
>>>>
>>>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>>>> <de...@opensource.lk> wrote:
>>>>
>>>>
>>>>>> Can't return a simple Object[]
>>>>>>
>>>>>> axis2 141
>>>>>>
>>>>>> client code:
>>>>>> ----------------
>>>>>>
>>>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>>>               Options options = serviceClient.getOptions();
>>>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>>>               options.setTo(targetEPR);
>>>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>>>
>>>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>>>>
>>>>>>
>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>
>>>>> would work.
>>>>>
>>>>>
>>>>>> also
>>>>>> tried  Struct_cards[].class
>>>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>>>>
>>>>>> It returns an array of 1 element Struct_cards with all its values
>>>>>> empty, below the XML response and the bean code.
>>>>>> I saw that might be a problem of axis2 converting simple object
>>>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>>>
>>>>>>
>>>>>> xml returns :
>>>>>> -----------------
>>>>>>
>>>>>> <get_cardsResponse
>>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>>>>    <get_cardsReturn
>>>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>>>>> xmlns:ns1="http://icu_test.dev"
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>     </get_cardsReturn>
>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>     </get_cardsReturn>
>>>>>>    </get_cardsReturn>
>>>>>>   </get_cardsResponse>
>>>>>>
>>>>>> bean code: (very basic)
>>>>>> ---------------
>>>>>>
>>>>>> public class Struct_cards {
>>>>>>       protected java.lang.String card_delegate;
>>>>>>       protected java.lang.String card_expire_date;
>>>>>>       protected java.lang.String card_id;
>>>>>>       protected java.lang.String card_lfd;
>>>>>>       protected java.lang.String card_name;
>>>>>>       protected java.lang.String card_type;
>>>>>>       protected java.lang.String usrfld1;
>>>>>>
>>>>>>       public Struct_cards() {}
>>>>>>
>>>>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>>>>> String card_id, String card_lfd, String card_name,
>>>>>>                       String card_type, String usrfld1) {
>>>>>>               this.card_delegate = card_delegate;
>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>               this.card_id = card_id;
>>>>>>               this.card_lfd = card_lfd;
>>>>>>               this.card_name = card_name;
>>>>>>               this.card_type = card_type;
>>>>>>               this.usrfld1 = usrfld1;
>>>>>>       }
>>>>>>
>>>>>>       public String getCard_delegate() {
>>>>>>               return card_delegate;
>>>>>>       }
>>>>>>
>>>>>>       public void setCard_delegate(String card_delegate) {
>>>>>>               this.card_delegate = card_delegate;
>>>>>>       }
>>>>>>
>>>>>>       public String getCard_expire_date() {
>>>>>>               return card_expire_date;
>>>>>>       }
>>>>>>
>>>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>       }
>>>>>>
>>>>>>       public String getCard_id() {
>>>>>>               return card_id;
>>>>>>       }
>>>>>>
>>>>>>       public void setCard_id(String card_id) {
>>>>>>               this.card_id = card_id;
>>>>>>       }
>>>>>>
>>>>>>       public String getCard_lfd() {
>>>>>>               return card_lfd;
>>>>>>       }
>>>>>>
>>>>>>       public void setCard_lfd(String card_lfd) {
>>>>>>               this.card_lfd = card_lfd;
>>>>>>       }
>>>>>>
>>>>>>       public String getCard_name() {
>>>>>>               return card_name;
>>>>>>       }
>>>>>>
>>>>>>       public void setCard_name(String card_name) {
>>>>>>               this.card_name = card_name;
>>>>>>       }
>>>>>>
>>>>>>       public String getCard_type() {
>>>>>>               return card_type;
>>>>>>       }
>>>>>>
>>>>>>       public void setCard_type(String card_type) {
>>>>>>               this.card_type = card_type;
>>>>>>       }
>>>>>>
>>>>>>       public String getUsrfld1() {
>>>>>>               return usrfld1;
>>>>>>       }
>>>>>>
>>>>>>       public void setUsrfld1(String usrfld1) {
>>>>>>               this.usrfld1 = usrfld1;
>>>>>>       }
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Rodrigo Asensio
>>>>>> rasensio@gmail.com
>>>>>> http://www.rodrigoasensio.com
>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> Thank you!
>>>>>
>>>>>
>>>>> http://blogs.deepal.org
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>> --
>>> Thank you!
>>>
>>>
>>> http://blogs.deepal.org
>>>
>>>
>>>
>>
>>
>
> --
> Thank you!
>
>
> http://blogs.deepal.org
>
>

Re: Problem with a simple Object[] in RPCServiceClient

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Can you please send me your service code, then I will give you the exact
solution.

Deepal

Rodrigo Asensio wrote:
> the most accurate test for my case should be the testCompanyArray()
> where it converts doing something like this
>
> ArrayList resobj = new ArrayList();
> resobj.add(Struct_cards[].class);
> (Class[])resobj.toArray(new Class[resobj.size()])
>
> but the result is the same...  below I'm posting the wsdl and extra
> info that might help (me  :))
>
> results	Object[1]  (id=83)	
> 	[0]	Struct_cards  (id=84)	
> 		card_delegate	null	
> 		card_expire_date	null	
> 		card_id	null	
> 		card_lfd	null	
> 		card_name	null	
> 		card_type	null	
> 		usrfld1	null	
>
> ws created by Macromedia ColdFusion MX version 7,0,2,142559
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
> <complexType name="Struct_cards">
> −
> <sequence>
> <element name="card_delegate" nillable="true" type="xsd:string"/>
> <element name="card_expire_date" nillable="true" type="xsd:string"/>
> <element name="card_id" nillable="true" type="xsd:string"/>
> <element name="card_lfd" nillable="true" type="xsd:string"/>
> <element name="card_name" nillable="true" type="xsd:string"/>
> <element name="card_type" nillable="true" type="xsd:string"/>
> <element name="usrfld1" nillable="true" type="xsd:string"/>
> </sequence>
> </complexType>
> −
> <complexType name="ArrayOfStruct_cards">
> −
> <complexContent>
> −
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
> </restriction>
> </complexContent>
> </complexType>
>
>
>
>
> Rodrigo Asensio
> rasensio@gmail.com
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>
>
> On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
>   
>> Have a look at following class , it does what you want to do
>>
>> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>>
>>     
>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>> this don't compile because the objects inside the array must be Class
>>> type, and I already tried that one
>>>
>>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>>
>>>
>>> Rodrigo Asensio
>>> rasensio@gmail.com
>>> http://www.rodrigoasensio.com
>>> "To err is human, but to really screw up requires the root password."
>>>
>>>
>>>
>>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>>> <de...@opensource.lk> wrote:
>>>
>>>       
>>>>> Can't return a simple Object[]
>>>>>
>>>>> axis2 141
>>>>>
>>>>> client code:
>>>>> ----------------
>>>>>
>>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>>               Options options = serviceClient.getOptions();
>>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>>               options.setTo(targetEPR);
>>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>>
>>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>>>
>>>>>           
>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>
>>>> would work.
>>>>
>>>>         
>>>>> also
>>>>> tried  Struct_cards[].class
>>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>>>
>>>>> It returns an array of 1 element Struct_cards with all its values
>>>>> empty, below the XML response and the bean code.
>>>>> I saw that might be a problem of axis2 converting simple object
>>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>>
>>>>>
>>>>> xml returns :
>>>>> -----------------
>>>>>
>>>>> <get_cardsResponse
>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>>>    <get_cardsReturn
>>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>>>> xmlns:ns1="http://icu_test.dev"
>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>     </get_cardsReturn>
>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>     </get_cardsReturn>
>>>>>    </get_cardsReturn>
>>>>>   </get_cardsResponse>
>>>>>
>>>>> bean code: (very basic)
>>>>> ---------------
>>>>>
>>>>> public class Struct_cards {
>>>>>       protected java.lang.String card_delegate;
>>>>>       protected java.lang.String card_expire_date;
>>>>>       protected java.lang.String card_id;
>>>>>       protected java.lang.String card_lfd;
>>>>>       protected java.lang.String card_name;
>>>>>       protected java.lang.String card_type;
>>>>>       protected java.lang.String usrfld1;
>>>>>
>>>>>       public Struct_cards() {}
>>>>>
>>>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>>>> String card_id, String card_lfd, String card_name,
>>>>>                       String card_type, String usrfld1) {
>>>>>               this.card_delegate = card_delegate;
>>>>>               this.card_expire_date = card_expire_date;
>>>>>               this.card_id = card_id;
>>>>>               this.card_lfd = card_lfd;
>>>>>               this.card_name = card_name;
>>>>>               this.card_type = card_type;
>>>>>               this.usrfld1 = usrfld1;
>>>>>       }
>>>>>
>>>>>       public String getCard_delegate() {
>>>>>               return card_delegate;
>>>>>       }
>>>>>
>>>>>       public void setCard_delegate(String card_delegate) {
>>>>>               this.card_delegate = card_delegate;
>>>>>       }
>>>>>
>>>>>       public String getCard_expire_date() {
>>>>>               return card_expire_date;
>>>>>       }
>>>>>
>>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>>               this.card_expire_date = card_expire_date;
>>>>>       }
>>>>>
>>>>>       public String getCard_id() {
>>>>>               return card_id;
>>>>>       }
>>>>>
>>>>>       public void setCard_id(String card_id) {
>>>>>               this.card_id = card_id;
>>>>>       }
>>>>>
>>>>>       public String getCard_lfd() {
>>>>>               return card_lfd;
>>>>>       }
>>>>>
>>>>>       public void setCard_lfd(String card_lfd) {
>>>>>               this.card_lfd = card_lfd;
>>>>>       }
>>>>>
>>>>>       public String getCard_name() {
>>>>>               return card_name;
>>>>>       }
>>>>>
>>>>>       public void setCard_name(String card_name) {
>>>>>               this.card_name = card_name;
>>>>>       }
>>>>>
>>>>>       public String getCard_type() {
>>>>>               return card_type;
>>>>>       }
>>>>>
>>>>>       public void setCard_type(String card_type) {
>>>>>               this.card_type = card_type;
>>>>>       }
>>>>>
>>>>>       public String getUsrfld1() {
>>>>>               return usrfld1;
>>>>>       }
>>>>>
>>>>>       public void setUsrfld1(String usrfld1) {
>>>>>               this.usrfld1 = usrfld1;
>>>>>       }
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Rodrigo Asensio
>>>>> rasensio@gmail.com
>>>>> http://www.rodrigoasensio.com
>>>>> "To err is human, but to really screw up requires the root password."
>>>>>
>>>>>
>>>>>
>>>>>           
>>>> --
>>>> Thank you!
>>>>
>>>>
>>>> http://blogs.deepal.org
>>>>
>>>>
>>>>
>>>>         
>>>       
>> --
>> Thank you!
>>
>>
>> http://blogs.deepal.org
>>
>>
>>     
>
>   

-- 
Thank you!


http://blogs.deepal.org


Re: Problem with a simple Object[] in RPCServiceClient

Posted by Rodrigo Asensio <ra...@gmail.com>.
the most accurate test for my case should be the testCompanyArray()
where it converts doing something like this

ArrayList resobj = new ArrayList();
resobj.add(Struct_cards[].class);
(Class[])resobj.toArray(new Class[resobj.size()])

but the result is the same...  below I'm posting the wsdl and extra
info that might help (me  :))

results	Object[1]  (id=83)	
	[0]	Struct_cards  (id=84)	
		card_delegate	null	
		card_expire_date	null	
		card_id	null	
		card_lfd	null	
		card_name	null	
		card_type	null	
		usrfld1	null	

ws created by Macromedia ColdFusion MX version 7,0,2,142559
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="Struct_cards">
−
<sequence>
<element name="card_delegate" nillable="true" type="xsd:string"/>
<element name="card_expire_date" nillable="true" type="xsd:string"/>
<element name="card_id" nillable="true" type="xsd:string"/>
<element name="card_lfd" nillable="true" type="xsd:string"/>
<element name="card_name" nillable="true" type="xsd:string"/>
<element name="card_type" nillable="true" type="xsd:string"/>
<element name="usrfld1" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
−
<complexType name="ArrayOfStruct_cards">
−
<complexContent>
−
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
</restriction>
</complexContent>
</complexType>




Rodrigo Asensio
rasensio@gmail.com
http://www.rodrigoasensio.com
"To err is human, but to really screw up requires the root password."



On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <de...@opensource.lk> wrote:
> Have a look at following class , it does what you want to do
>
> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>
>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>> this don't compile because the objects inside the array must be Class
>> type, and I already tried that one
>>
>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>
>>
>> Rodrigo Asensio
>> rasensio@gmail.com
>> http://www.rodrigoasensio.com
>> "To err is human, but to really screw up requires the root password."
>>
>>
>>
>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>> <de...@opensource.lk> wrote:
>>
>>>> Can't return a simple Object[]
>>>>
>>>> axis2 141
>>>>
>>>> client code:
>>>> ----------------
>>>>
>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>               Options options = serviceClient.getOptions();
>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>               options.setTo(targetEPR);
>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>
>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>>
>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>
>>> would work.
>>>
>>>> also
>>>> tried  Struct_cards[].class
>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>>
>>>> It returns an array of 1 element Struct_cards with all its values
>>>> empty, below the XML response and the bean code.
>>>> I saw that might be a problem of axis2 converting simple object
>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>
>>>>
>>>> xml returns :
>>>> -----------------
>>>>
>>>> <get_cardsResponse
>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>>    <get_cardsReturn
>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>>> xmlns:ns1="http://icu_test.dev"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>     </get_cardsReturn>
>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>     </get_cardsReturn>
>>>>    </get_cardsReturn>
>>>>   </get_cardsResponse>
>>>>
>>>> bean code: (very basic)
>>>> ---------------
>>>>
>>>> public class Struct_cards {
>>>>       protected java.lang.String card_delegate;
>>>>       protected java.lang.String card_expire_date;
>>>>       protected java.lang.String card_id;
>>>>       protected java.lang.String card_lfd;
>>>>       protected java.lang.String card_name;
>>>>       protected java.lang.String card_type;
>>>>       protected java.lang.String usrfld1;
>>>>
>>>>       public Struct_cards() {}
>>>>
>>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>>> String card_id, String card_lfd, String card_name,
>>>>                       String card_type, String usrfld1) {
>>>>               this.card_delegate = card_delegate;
>>>>               this.card_expire_date = card_expire_date;
>>>>               this.card_id = card_id;
>>>>               this.card_lfd = card_lfd;
>>>>               this.card_name = card_name;
>>>>               this.card_type = card_type;
>>>>               this.usrfld1 = usrfld1;
>>>>       }
>>>>
>>>>       public String getCard_delegate() {
>>>>               return card_delegate;
>>>>       }
>>>>
>>>>       public void setCard_delegate(String card_delegate) {
>>>>               this.card_delegate = card_delegate;
>>>>       }
>>>>
>>>>       public String getCard_expire_date() {
>>>>               return card_expire_date;
>>>>       }
>>>>
>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>               this.card_expire_date = card_expire_date;
>>>>       }
>>>>
>>>>       public String getCard_id() {
>>>>               return card_id;
>>>>       }
>>>>
>>>>       public void setCard_id(String card_id) {
>>>>               this.card_id = card_id;
>>>>       }
>>>>
>>>>       public String getCard_lfd() {
>>>>               return card_lfd;
>>>>       }
>>>>
>>>>       public void setCard_lfd(String card_lfd) {
>>>>               this.card_lfd = card_lfd;
>>>>       }
>>>>
>>>>       public String getCard_name() {
>>>>               return card_name;
>>>>       }
>>>>
>>>>       public void setCard_name(String card_name) {
>>>>               this.card_name = card_name;
>>>>       }
>>>>
>>>>       public String getCard_type() {
>>>>               return card_type;
>>>>       }
>>>>
>>>>       public void setCard_type(String card_type) {
>>>>               this.card_type = card_type;
>>>>       }
>>>>
>>>>       public String getUsrfld1() {
>>>>               return usrfld1;
>>>>       }
>>>>
>>>>       public void setUsrfld1(String usrfld1) {
>>>>               this.usrfld1 = usrfld1;
>>>>       }
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Rodrigo Asensio
>>>> rasensio@gmail.com
>>>> http://www.rodrigoasensio.com
>>>> "To err is human, but to really screw up requires the root password."
>>>>
>>>>
>>>>
>>> --
>>> Thank you!
>>>
>>>
>>> http://blogs.deepal.org
>>>
>>>
>>>
>>
>>
>
> --
> Thank you!
>
>
> http://blogs.deepal.org
>
>

Re: Problem with a simple Object[] in RPCServiceClient

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Have a look at following class , it does what you want to do

https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java

> Class[] returnTypes = new Class[]{(Struct_cards[])}
> this don't compile because the objects inside the array must be Class
> type, and I already tried that one
>
> Class[] returnTypes = new Class[]{Struct_cards[].class}
>
>
> Rodrigo Asensio
> rasensio@gmail.com
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>
>
> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
> <de...@opensource.lk> wrote:
>   
>>> Can't return a simple Object[]
>>>
>>> axis2 141
>>>
>>> client code:
>>> ----------------
>>>
>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>               Options options = serviceClient.getOptions();
>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>               options.setTo(targetEPR);
>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>
>>>               QName actionQ = new QName(NAMESPACE, action);
>>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
>>>       
>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>
>> would work.
>>     
>>> also
>>> tried  Struct_cards[].class
>>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>>
>>> It returns an array of 1 element Struct_cards with all its values
>>> empty, below the XML response and the bean code.
>>> I saw that might be a problem of axis2 converting simple object
>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>
>>>
>>> xml returns :
>>> -----------------
>>>
>>> <get_cardsResponse
>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>    <get_cardsReturn
>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>> xmlns:ns1="http://icu_test.dev"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>     </get_cardsReturn>
>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>     </get_cardsReturn>
>>>    </get_cardsReturn>
>>>   </get_cardsResponse>
>>>
>>> bean code: (very basic)
>>> ---------------
>>>
>>> public class Struct_cards {
>>>       protected java.lang.String card_delegate;
>>>       protected java.lang.String card_expire_date;
>>>       protected java.lang.String card_id;
>>>       protected java.lang.String card_lfd;
>>>       protected java.lang.String card_name;
>>>       protected java.lang.String card_type;
>>>       protected java.lang.String usrfld1;
>>>
>>>       public Struct_cards() {}
>>>
>>>       public Struct_cards(String card_delegate, String card_expire_date,
>>> String card_id, String card_lfd, String card_name,
>>>                       String card_type, String usrfld1) {
>>>               this.card_delegate = card_delegate;
>>>               this.card_expire_date = card_expire_date;
>>>               this.card_id = card_id;
>>>               this.card_lfd = card_lfd;
>>>               this.card_name = card_name;
>>>               this.card_type = card_type;
>>>               this.usrfld1 = usrfld1;
>>>       }
>>>
>>>       public String getCard_delegate() {
>>>               return card_delegate;
>>>       }
>>>
>>>       public void setCard_delegate(String card_delegate) {
>>>               this.card_delegate = card_delegate;
>>>       }
>>>
>>>       public String getCard_expire_date() {
>>>               return card_expire_date;
>>>       }
>>>
>>>       public void setCard_expire_date(String card_expire_date) {
>>>               this.card_expire_date = card_expire_date;
>>>       }
>>>
>>>       public String getCard_id() {
>>>               return card_id;
>>>       }
>>>
>>>       public void setCard_id(String card_id) {
>>>               this.card_id = card_id;
>>>       }
>>>
>>>       public String getCard_lfd() {
>>>               return card_lfd;
>>>       }
>>>
>>>       public void setCard_lfd(String card_lfd) {
>>>               this.card_lfd = card_lfd;
>>>       }
>>>
>>>       public String getCard_name() {
>>>               return card_name;
>>>       }
>>>
>>>       public void setCard_name(String card_name) {
>>>               this.card_name = card_name;
>>>       }
>>>
>>>       public String getCard_type() {
>>>               return card_type;
>>>       }
>>>
>>>       public void setCard_type(String card_type) {
>>>               this.card_type = card_type;
>>>       }
>>>
>>>       public String getUsrfld1() {
>>>               return usrfld1;
>>>       }
>>>
>>>       public void setUsrfld1(String usrfld1) {
>>>               this.usrfld1 = usrfld1;
>>>       }
>>>
>>>
>>>
>>>
>>>
>>>
>>> Rodrigo Asensio
>>> rasensio@gmail.com
>>> http://www.rodrigoasensio.com
>>> "To err is human, but to really screw up requires the root password."
>>>
>>>
>>>       
>> --
>> Thank you!
>>
>>
>> http://blogs.deepal.org
>>
>>
>>     
>
>   

-- 
Thank you!


http://blogs.deepal.org


Re: Problem with a simple Object[] in RPCServiceClient

Posted by Rodrigo Asensio <ra...@gmail.com>.
Class[] returnTypes = new Class[]{(Struct_cards[])}
this don't compile because the objects inside the array must be Class
type, and I already tried that one

Class[] returnTypes = new Class[]{Struct_cards[].class}


Rodrigo Asensio
rasensio@gmail.com
http://www.rodrigoasensio.com
"To err is human, but to really screw up requires the root password."



On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
<de...@opensource.lk> wrote:
>
>> Can't return a simple Object[]
>>
>> axis2 141
>>
>> client code:
>> ----------------
>>
>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>               Options options = serviceClient.getOptions();
>>               EndpointReference targetEPR = new EndpointReference(URL);
>>               options.setTo(targetEPR);
>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>
>>               QName actionQ = new QName(NAMESPACE, action);
>>               Class[] returnTypes = new Class[] { Struct_cards.class };   //
> Class[] returnTypes = new Class[]{(Struct_cards[])}
>
> would work.
>> also
>> tried  Struct_cards[].class
>>               Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>>
>> It returns an array of 1 element Struct_cards with all its values
>> empty, below the XML response and the bean code.
>> I saw that might be a problem of axis2 converting simple object
>> arrays, but I didn't found any proof. Any help will be appreciated.
>>
>>
>> xml returns :
>> -----------------
>>
>> <get_cardsResponse
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>    <get_cardsReturn
>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>> xmlns:ns1="http://icu_test.dev"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>      <card_type xsi:type="xsd:string">1</card_type>
>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>     </get_cardsReturn>
>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>      <card_type xsi:type="xsd:string">1</card_type>
>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>     </get_cardsReturn>
>>    </get_cardsReturn>
>>   </get_cardsResponse>
>>
>> bean code: (very basic)
>> ---------------
>>
>> public class Struct_cards {
>>       protected java.lang.String card_delegate;
>>       protected java.lang.String card_expire_date;
>>       protected java.lang.String card_id;
>>       protected java.lang.String card_lfd;
>>       protected java.lang.String card_name;
>>       protected java.lang.String card_type;
>>       protected java.lang.String usrfld1;
>>
>>       public Struct_cards() {}
>>
>>       public Struct_cards(String card_delegate, String card_expire_date,
>> String card_id, String card_lfd, String card_name,
>>                       String card_type, String usrfld1) {
>>               this.card_delegate = card_delegate;
>>               this.card_expire_date = card_expire_date;
>>               this.card_id = card_id;
>>               this.card_lfd = card_lfd;
>>               this.card_name = card_name;
>>               this.card_type = card_type;
>>               this.usrfld1 = usrfld1;
>>       }
>>
>>       public String getCard_delegate() {
>>               return card_delegate;
>>       }
>>
>>       public void setCard_delegate(String card_delegate) {
>>               this.card_delegate = card_delegate;
>>       }
>>
>>       public String getCard_expire_date() {
>>               return card_expire_date;
>>       }
>>
>>       public void setCard_expire_date(String card_expire_date) {
>>               this.card_expire_date = card_expire_date;
>>       }
>>
>>       public String getCard_id() {
>>               return card_id;
>>       }
>>
>>       public void setCard_id(String card_id) {
>>               this.card_id = card_id;
>>       }
>>
>>       public String getCard_lfd() {
>>               return card_lfd;
>>       }
>>
>>       public void setCard_lfd(String card_lfd) {
>>               this.card_lfd = card_lfd;
>>       }
>>
>>       public String getCard_name() {
>>               return card_name;
>>       }
>>
>>       public void setCard_name(String card_name) {
>>               this.card_name = card_name;
>>       }
>>
>>       public String getCard_type() {
>>               return card_type;
>>       }
>>
>>       public void setCard_type(String card_type) {
>>               this.card_type = card_type;
>>       }
>>
>>       public String getUsrfld1() {
>>               return usrfld1;
>>       }
>>
>>       public void setUsrfld1(String usrfld1) {
>>               this.usrfld1 = usrfld1;
>>       }
>>
>>
>>
>>
>>
>>
>> Rodrigo Asensio
>> rasensio@gmail.com
>> http://www.rodrigoasensio.com
>> "To err is human, but to really screw up requires the root password."
>>
>>
>
> --
> Thank you!
>
>
> http://blogs.deepal.org
>
>

Re: Problem with a simple Object[] in RPCServiceClient

Posted by Deepal Jayasinghe <de...@opensource.lk>.
> Can't return a simple Object[]
>
> axis2 141
>
> client code:
> ----------------
>
> 		RPCServiceClient serviceClient = new RPCServiceClient();
> 		Options options = serviceClient.getOptions();
> 		EndpointReference targetEPR = new EndpointReference(URL);
> 		options.setTo(targetEPR);
> 		options.setTimeOutInMilliSeconds(TIMEOUT);
>
> 		QName actionQ = new QName(NAMESPACE, action);
> 		Class[] returnTypes = new Class[] { Struct_cards.class };   // 
Class[] returnTypes = new Class[]{(Struct_cards[])}

would work.
> also
> tried  Struct_cards[].class
> 		Object[] results = serviceClient.invokeBlocking(actionQ, params, returnTypes);
>
> It returns an array of 1 element Struct_cards with all its values
> empty, below the XML response and the bean code.
> I saw that might be a problem of axis2 converting simple object
> arrays, but I didn't found any proof. Any help will be appreciated.
>
>
> xml returns :
> -----------------
>
> <get_cardsResponse
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>    <get_cardsReturn
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns1="http://icu_test.dev"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>     <get_cardsReturn xsi:type="ns1:struct_cards">
>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>      <card_type xsi:type="xsd:string">1</card_type>
>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>     </get_cardsReturn>
>     <get_cardsReturn xsi:type="ns1:struct_cards">
>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>      <card_type xsi:type="xsd:string">1</card_type>
>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>     </get_cardsReturn>
>    </get_cardsReturn>
>   </get_cardsResponse>
>
> bean code: (very basic)
> ---------------
>
> public class Struct_cards {
> 	protected java.lang.String card_delegate;
> 	protected java.lang.String card_expire_date;
> 	protected java.lang.String card_id;
> 	protected java.lang.String card_lfd;
> 	protected java.lang.String card_name;
> 	protected java.lang.String card_type;
> 	protected java.lang.String usrfld1;
>
> 	public Struct_cards() {}
>
> 	public Struct_cards(String card_delegate, String card_expire_date,
> String card_id, String card_lfd, String card_name,
> 			String card_type, String usrfld1) {
> 		this.card_delegate = card_delegate;
> 		this.card_expire_date = card_expire_date;
> 		this.card_id = card_id;
> 		this.card_lfd = card_lfd;
> 		this.card_name = card_name;
> 		this.card_type = card_type;
> 		this.usrfld1 = usrfld1;
> 	}
>
> 	public String getCard_delegate() {
> 		return card_delegate;
> 	}
>
> 	public void setCard_delegate(String card_delegate) {
> 		this.card_delegate = card_delegate;
> 	}
>
> 	public String getCard_expire_date() {
> 		return card_expire_date;
> 	}
>
> 	public void setCard_expire_date(String card_expire_date) {
> 		this.card_expire_date = card_expire_date;
> 	}
>
> 	public String getCard_id() {
> 		return card_id;
> 	}
>
> 	public void setCard_id(String card_id) {
> 		this.card_id = card_id;
> 	}
>
> 	public String getCard_lfd() {
> 		return card_lfd;
> 	}
>
> 	public void setCard_lfd(String card_lfd) {
> 		this.card_lfd = card_lfd;
> 	}
>
> 	public String getCard_name() {
> 		return card_name;
> 	}
>
> 	public void setCard_name(String card_name) {
> 		this.card_name = card_name;
> 	}
>
> 	public String getCard_type() {
> 		return card_type;
> 	}
>
> 	public void setCard_type(String card_type) {
> 		this.card_type = card_type;
> 	}
>
> 	public String getUsrfld1() {
> 		return usrfld1;
> 	}
>
> 	public void setUsrfld1(String usrfld1) {
> 		this.usrfld1 = usrfld1;
> 	}
>
>
>
>
>
>
> Rodrigo Asensio
> rasensio@gmail.com
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>   

-- 
Thank you!


http://blogs.deepal.org