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/