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/

Reply via email to