axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ajith Harshana Ranabahu (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-632) get errors trying to parse valid response
Date Sat, 29 Apr 2006 13:55:39 GMT
    [ http://issues.apache.org/jira/browse/AXIS2-632?page=comments#action_12377083 ] 

Ajith Harshana Ranabahu commented on AXIS2-632:
-----------------------------------------------

I'm sorry that the codegenerator options are not well documented but the code generator can
pass certain extra parameters that will be picked up by the ADB schema compiler to expand
the classes. you can pass "-Ew false -Er true" which will not pack the classes and write them
directly.
As for the issue we also decovered the problem and Chuck has written an excellent account
of it. The solution I see is to keep a table of Qname-class mappings inside ADB and switch
to that when the xsi:type attribute is present. Anyway it means a complete twist to the deserialization
code of ADB which seems not appropriate at all at this moment.
The other fact is this has to do with ADB and not Axis2 as a whole. We came to a decision
that databinding will be kept out. Although ADB fails to do the correct mapping, XMLBeans
is perfectly capable of doing this and it is not justifiable to say Axis2 is incapable of
handling it.
I would say we should downgrade the criticality of this and attach an improvement (support
xsi:type based deserialization for ADB or something). 

What would the others think about this ?

> 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.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message