I scheduled a discussion for next week --Srinath

On Fri, Jun 1, 2012 at 5:33 PM, Nuwan Bandara <nu...@wso2.com> wrote:

> Hi
>
> On Fri, Jun 1, 2012 at 5:25 PM, Samisa Abeysinghe <sam...@wso2.com> wrote:
>
>> Are we shipping this for C4 release?
>>
>
> No. We were discussing about the subject as an intern project. But we do
> not see a perfect solution. We believe the current state of the JSStub is
> much more convenient for all cases. however it is not as easy as the old
> stub for simple cases like in MS.
>
> We would like to know if there are any possible/better ways to improve
> this.
>
> Regards,
> /Nuwan
>
>
>>
>> On Fri, Jun 1, 2012 at 3:40 PM, Ruchira Wageesha <ruch...@wso2.com>wrote:
>>
>>> Hi All,
>>>
>>> We are in the process of refactoring the SOAP web service JavaScript
>>> stub. Before going through that, I need to highlight few stuff and come up
>>> with a proper decision/architecture about the JS stub.
>>>
>>> Old Stub of MS
>>> =============
>>> Old stub was mainly writted thinking about services in MS and it
>>> generated methods for each operation in a service. This was absolutely
>>> simple to consume services in Mashup Server as MS didn't allow to write a
>>> service with complex schemas. i.e. In MS, we have only strings, numbers,
>>> dates etc. and anytype elements only.
>>>
>>> Following is a set of JS service method signatures that we can write in
>>> MS and relavent JS stub method signatures of them.
>>>
>>> *scenario1* - every parameter is a string
>>>
>>> Operation signature : function saveUser(username, birthday,
>>> addressLine1, addressLine2, city, country)
>>> Stub method signature : function saveUser(username, birthday,
>>> addressLine1, addressLine2, city, country)
>>>
>>> *scenario2* - address parameter is anytype and rest are strings
>>>
>>> Operation signature : function saveUser(username, birthday, address)
>>> Stub method signature : function saveUser(username, birthday, address)
>>>
>>> Here address is an anytype and we don't have any schema over that in the
>>> WSDL. i.e. We had to document about the address schema.
>>> <address>
>>> <addressLine1/>
>>>  <addressLine2/>
>>> <city/>
>>>  <country/>
>>> </address>
>>>
>>> *scenario3* - userInfo is an anytype
>>>
>>> Operation signature : function saveUser(userInfo)
>>> Stub method signature : function saveUser(userInfo)
>>>
>>> Here userInfo is an anytype and WSDL contain nothing about it. i.e. We
>>> had to document about userInfo schema.
>>> <userInfo>
>>>  <username/>
>>>  <birthday/>
>>> <address>
>>>  <addressLine1/>
>>> <addressLine2/>
>>>  <city/>
>>> <country/>
>>>  </address>
>>> </userInfo>
>>>
>>> But when it comes to non-MS services, *scenario3* would be the common
>>> case and with the old stub, it won't do much as we have to manually
>>> contruct the userInfo payload string and pass it to the method.
>>>
>>>
>>> The current stub
>>> =============
>>>
>>> op = operations["saveUser"];
>>> op(userInfo);
>>>
>>> A Modified version of the old stub, which allows you to pass either the
>>> payload XML(as in the case of old stub) or payload JSON in Badgerfish
>>> notation. This doesn't matter how complex the payload is.
>>>
>>> Only practical use of this stub is in it's Badgerfish mode. i.e. There
>>> is a method to get a sample BF JSON of the payload. Then, user only need to
>>> replace the relevant values of the BF JSON. After that, BF JSON will be
>>> converted back to an XML string using a util function and send to the
>>> endpoint.
>>>
>>> Further, instead of generating top level JS methods as in the old stub,
>>> those functions are accessed using operation name from the operations
>>> object. The reason behind that is, we can't have exact same WS operation
>>> name as the JS method name. i.e. "-" are valid in WS operation names, but
>>> invalid for JS variable names.
>>>
>>>
>>> When the we consider a Java stub, it makes easier to consume the WS.
>>> But, in JS case, we need to carefuly design the JS stub. i.e. As JavaScript
>>> is a dynamically typed langague, we don't have much choices.
>>>
>>> In Java stub, it might generate a UserInfo bean, Address bean etc. But
>>> in JS case, we won't need to have seperate objects as we can pass whole
>>> UserInfo element as a JSON. Again mapping a JSON to a highly styped schema
>>> is very difficult and we will have to find a way to preserve original
>>> details of the XML payload such as namespaces, sequences etc.
>>>
>>> So without addressing those issues, JS stubs will be useless. I am not
>>> sure whether there will be a perfect solution. But sometimes, we might have
>>> the old stub for simple services such as MS, and none for services with
>>> complex schemas.
>>>
>>> Anyway, we need to come up with a proper design/decision.
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> Dev@wso2.org
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>> Thanks,
>> Samisa...
>>
>> Samisa Abeysinghe
>> VP Engineering
>> WSO2 Inc.
>> http://wso2.com
>> http://wso2.org
>>
>>
>>
>> _______________________________________________
>> Dev mailing list
>> Dev@wso2.org
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> *Thanks & Regards,
>
> Nuwan Bandara
> Associate Technical Lead & Member, MC, Development Technologies
> WSO2 Inc. - lean . enterprise . middleware |  http://wso2.com
> blog : http://nuwanbando.com; email: nu...@wso2.com; phone: +94 11 763
> 9629
> *
> <http://www.nuwanbando.com/>
>
> _______________________________________________
> Dev mailing list
> Dev@wso2.org
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
============================
Srinath Perera, Ph.D.
   http://www.cs.indiana.edu/~hperera/
   http://srinathsview.blogspot.com/
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to