Simon,

Choice is supported now in generated code, but unfortunately extension
is not there yet.  I would agree that extension is the better method to
use for services that use types in a natural hierarchy.  I added choice
recently for a different use case.  I'm not sure if or where extension
is in the plans, but suspect you could contribute it if you have time.

Chuck

Simon Fell wrote on 04/28/2006 09:06 PM:
> 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.
>>>       

Reply via email to