[ http://issues.apache.org/jira/browse/AXIS2-632?page=comments#action_12377291 ]
Sanjiva Weerawarana commented on AXIS2-632: ------------------------------------------- Something bothers me about this issue: Is it not the case that for a type to be extended it must have had in its declaration xs:any and/or xs:anyAttribute?? If so, shouldn't the sObject reader be able to read any subtype, including sAccount? One can't cast the type in Java obviously until we do xsi:type right, but it seems to me the extra elements should be read and stored as extra stuff in the oObject class that's generated. I must be missing something .. maybe the jetlag after 24 hours of flying? > 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 > 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
