axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shameera Rathnayaka <shameerai...@gmail.com>
Subject Re: Improve Json support with Axis2 using google-gson java library
Date Tue, 27 Dec 2011 12:13:37 GMT
Thanks Amila and Sanjiva.

On Tue, Dec 27, 2011 at 9:13 AM, Sanjiva Weerawarana
<sanjiva@opensource.lk>wrote:

> +1 very nicely thought thru! You may also want to review how ADB
> serializes Java onto the wire without going to an in-memory XML form first
> .. you should be able to do something similar for JSON.
>

sure i will go through axis2 source code and relevant articles to
understand current scenario of ADB serialization. As i have basic idea of
how to do this improvement this will really help me to make a starting
point to do this project.

Thanks
Shameera



>
>
Sanjiva.
>
>
> On Mon, Dec 26, 2011 at 11:19 AM, Amila Suriarachchi <
> amilasuriarachchi@gmail.com> wrote:
>
>> looks good.
>>
>> thanks,
>> Amila.
>>
>>
>> On Sun, Dec 25, 2011 at 7:39 PM, Shameera Rathnayaka <
>> shameerainfo@gmail.com> wrote:
>>
>>> Hi devs,
>>>
>>> I hope to select an axis2 related project to do in 2012 GSOC. Therefore
>>> i did some basic research about Axis2 and found that Current Json support
>>> in Axis2 can be improved using a rich library such as google-gson to use
>>> normal JSON object to communicate with java services without converting it
>>> to Badgerfish.
>>>
>>> Here is my proposal in brief.
>>>
>>> There are two ways that xml string can be converted into JSON string,
>>> Badgerfish and Mapped . Current Axis2 with JSON module completely supports
>>> Badgerfish convention[1] while partialy supports Mapped convention[1] as
>>> Mapped formatted JSON with namespaces are not supported in Axis2. Therefore
>>> if the client side java-script code needs to talk with java service which
>>> is deployed in Axis2, it should be sent as Badgerfish convention. It is
>>> cumbersome to generate Badgerfish convention of JSON string again and again
>>> to call services if there is no  xml representation string in client side.
>>>
>>> If java script client can send JSON object to relevant java service in
>>> Axis2, defining service and operation in request url, without doing any
>>> modifications to JSON objects, then it would be very helpful for
>>> Java-Script users at client side.
>>>
>>> Here i propose a solution to implement this with some limitations by
>>> using google-gson [2] <http://code.google.com/p/google-gson/> library
>>> which is a rich library to convert JSON string to Java object and
>>> vice-versa and also it is released under Apache license. Using this library
>>> we can improve JSON support in Axis2 to overcome above problem. Following
>>> are some advantages of using gson to convert JSON to Java object and
>>> vice-versa.
>>>
>>>    - Provide simple toJson() and fromJson() methods to convert Java
>>>    objects to JSON and vice-versa
>>>    - Allow pre-existing unmodifiable objects to be converted to and
>>>    from JSON
>>>    - Extensive support of Java Generics
>>>    - Allow custom representations for objects
>>>    - Support arbitrarily complex objects (with deep inheritance
>>>    hierarchies and extensive use of generic types)
>>>
>>> As i mentioned there are several limitations because we are not using
>>> namespace mapping. As an example if wsdl has two methods with same name but
>>> different namespace then this method will fail,But there are ways we can
>>> find a solution to fix this to some extent.
>>>
>>> Also i have some basic idea about how to implement this improvement, as
>>> follows. Here i have assumed that service name and operation name can be
>>> read from request URL. Then incoming message can be dispatched to correct
>>> operation.
>>>
>>>
>>> 1. write a jsonMessagebuilder to read incoming json string under
>>> specific content type.
>>>
>>> 2. store json string without doing any process untill it reaches
>>> JsonMessageReceiver. JsonMessageReceiver is a new Message Receiver which
>>> use gson to convert json to java objects, call relevant operation and get
>>> result.
>>>
>>>
>>> 3. write a jsonMessageFormatter to write output stream according to
>>> content type.
>>>
>>>
>>> I would like to know that whether this is a good idea and will it be
>>> allright to do this as GSOC project.
>>>
>>> [1]http://wso2.org/library/768 <http://wso2.org/library/768>
>>> [2]http://code.google.com/p/google-gson/<http://code.google.com/p/google-gson/>
>>>
>>> Thanks
>>> Shameera.
>>>
>>> --
>>> Shameera Rathnayaka
>>> Undergraduate
>>> Department of Computer Science and Engineering
>>> University of Moratuwa.
>>> Sri Lanka.
>>>
>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>
>>>
>>
>>
>> --
>> Amila Suriarachchi
>> WSO2 Inc.
>> blog: http://amilachinthaka.blogspot.com/
>>
>
>
>
> --
> Sanjiva Weerawarana, Ph.D.
> Founder, Director & Chief Scientist; Lanka Software Foundation;
> http://www.opensource.lk/
> Founder, Chairman & CEO; WSO2; http://wso2.com/
> Founder & Director; Thinkcube Systems; http://www.thinkcube.com/
> Member; Apache Software Foundation; http://www.apache.org/
> Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/
>
> Blog: http://sanjiva.weerawarana.org/
>
>


-- 
Shameera Rathnayaka
Undergraduate
Department of Computer Science and Engineering
University of Moratuwa.
Sri Lanka.

Blog : http://shameerarathnayaka.blogspot.com/

Mime
View raw message