axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Fell <s...@zaks.demon.co.uk>
Subject Re: [jira] Commented: (AXIS2-632) get errors trying to parse valid response
Date Sat, 29 Apr 2006 07:06:06 GMT
the few verbs lots of nouns approach is a very successful design
model, to do it in web services with a static schema requires the
schema/runtime stack to support choice or extension, and IMO extension
is much better supported than choice, YMMV.

Cheers
Simon

On Sat, 29 Apr 2006 03:01:37 +0000 (GMT+00:00), in soap you wrote:

>    [ http://issues.apache.org/jira/browse/AXIS2-632?page=comments#action_12377061 ] 
>
>Sanjiva Weerawarana commented on AXIS2-632:
>-------------------------------------------
>
>Its not whether to wrap or unwrap .. there is no unwrap support in 1.0.
>
>We came up with a model for stubs as follows (and it was in fact driven by enterprise.wsdl
because it lead to the generation of some 2000 classes with XmlBeans):
>
>- default is to generate one class with inner classes for data types .. this is like what
WCF does
>- next step is to generate 1+n where n is the number of top level elements for which classes
have to be generated
>- final option is the n classes where we gen one class per whatever needs to be done-
no inner classes
>
>Enterprise.wsdl is a good test but its a weird test in that regard .. none of the patterns
gives an easily managable set of things. I'm going to annoy Simon but I'd venture to say its
not a very well designed Web service when it has an object oriented data model represented
in XML Schema. Hey but that's just me .. and they're Salesforce, so who am I to tell.
>
>> get errors trying to parse valid response
>> -----------------------------------------
>>
>>          Key: AXIS2-632
>>          URL: http://issues.apache.org/jira/browse/AXIS2-632
>>      Project: Apache Axis 2.0 (Axis2)
>>         Type: Bug
>
>>   Components: databinding
>>  Environment: Axis2.0 RC4, JDK 1.5.06, WinXP
>>     Reporter: Simon Fell
>>     Priority: Blocker
>>  Attachments: WhiteSpaceAndExtensionTypes.zip
>>
>> A valid response from the query call (wsdl is the enterprise wsdl that's now part
of the tests) fails to be de-serialized with an error.
>> Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException:
Unexpected subelement Name
>> 	at org.apache.axis2.SforceServiceStub.fromOM(SforceServiceStub.java:59718)
>> 	at org.apache.axis2.SforceServiceStub.query(SforceServiceStub.java:2545)
>> 	at client.main(client.java:19)
>> Caused by: java.lang.RuntimeException: Unexpected subelement Name
>> 	at org.apache.axis2.SforceServiceStub$QueryResult$Factory.parse(SforceServiceStub.java:57735)
>> 	at org.apache.axis2.SforceServiceStub$QueryResponse$Factory.parse(SforceServiceStub.java:20706)
>> 	at org.apache.axis2.SforceServiceStub.fromOM(SforceServiceStub.java:59594)
>> 	... 2 more
>> Here's the response msg it fails to deserialize
>> <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:enterprise.soap.sforce.com" xmlns:sf="urn:sobject.enterprise.soap.sforce.com"><soapenv:Body><queryResponse><result><done>true</done><queryLocator
xsi:nil="true"/><records xsi:type="sf:Account"><sf:Id>0013000000Bnr1qAAB</sf:Id><sf:AccountNumber>axis2Test</sf:AccountNumber><sf:Name>New
Account 2</sf:Name></records><records xsi:type="sf:Account"><sf:Id>0013000000BnspUAAR</sf:Id><sf:AccountNumber>axis2Test</sf:AccountNumber><sf:Name>New
Account 1</sf:Name></records><size>2</size></result></queryResponse></soapenv:Body></soapenv:Envelope>
>> the client stub was generated with WSDL2Java -s -u -uri enterprise.wsdl
>> The test code is
>> 		SforceServiceStub stub = new SforceServiceStub();
>> 		SforceServiceStub.Login l = new SforceServiceStub.Login();
>> 		l.setUsername("*username*");
>> 		l.setPassword("*password*");
>> 		SforceServiceStub.LoginResponse lr = stub.login(l);
>> 		
>> 		SforceServiceStub.SessionHeader sh = new SforceServiceStub.SessionHeader();
>> 		sh.setSessionId(lr.getResult().getSessionId());
>> 		stub = new SforceServiceStub(lr.getResult().getServerUrl());
>> 		
>> 		SforceServiceStub.Query q = new SforceServiceStub.Query();
>> 		q.setQueryString("select id, name, AccountNumber from Account where AccountNumber='axis2Test'");
>> 		SforceServiceStub.QueryResponse qr = stub.query(q, sh, null);
>> 		
>> 		System.out.println("query returned " + qr.getResult().getSize() + " rows");
>> 		
>> 		for(SforceServiceStub.SObject o : qr.getResult().getRecords()) {
>> 			SforceServiceStub.Account a = (SforceServiceStub.Account)o;
>> 			System.out.println(a.getId() + " " + a.getName() + " " + a.getAccountNumber());
>> 		}
>> Also the generated stub has getId() returning an OMElement, and not a string.

Mime
View raw message