[ 
http://issues.apache.org/jira/browse/AXIS2-632?page=comments#action_12377112 ] 

Chuck Williams commented on AXIS2-632:
--------------------------------------

Ajith,

It seems just about everybody agrees that xsi:type is a feature request, and 
certainly not a blocker, so I agree with your proposal.

Did you notice the whitespace issue buried in the discussion and patched in the 
attachment?  I think that is an important bug fix for 1.0.

Simon noted on the mail list:  "If ADB doesn't support extension, that it 
should flag this during the WSDL2Java stage, and not throw cryptic errors at 
runtime."  However, it appears ADB does support extension and compiles code for 
the extension types correctly.  The issue is that it does not support xsi:type 
at runtime.  We could add a check for xsi:type in the attribute parsing code 
and throw a more meaningful exception there rather than dying when the base 
type parser sees properties only on the subtype.  However, I would not deem 
this an essential fix for 1.0, as there are likely other constructions that are 
similarly not handled and not detected.

Chuck

> 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

Reply via email to