You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Shameera Rathnayaka <sh...@gmail.com> on 2012/04/24 15:42:11 UTC

[GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Hi devs,

As this project is accepted for GSoC 2012, I would like
to continue my work and looking forward to finish my project
as a success in this summer. According to my mentor (Amila Suriarachchi)
it is better to improve my knowledge further about Axis2 architecture
in this community bounding period. Therefore I'll start to read the
Documentation and Apache Axis2 book.

Andreas, as you mentioned in the previous mail thread[1] could you
please point out some of the code samples in synapse which do
a similar work as i do in my 2nd approach of the project?.

I will use this thread for future discussion about the project.
And I'll keep update my implementation patches to
AXIS2-5270<https://issues.apache.org/jira/browse/AXIS2-5270>too.


[1]
http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results

Thanks
Shameera.

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

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

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Shameera Rathnayaka <sh...@gmail.com>.
Hi devs,

On Sun, Jul 8, 2012 at 8:18 AM, Amila Suriarachchi <
amilasuriarachchi@gmail.com> wrote:

> hi,
>
> Great job looking into other similar approaches.
>
> What we can learn from these is that it is not possible to convert an json
> stream to an xml stream or wise versa directly. So what we missing here is
> the meta data of the xml stream. That means we need to have the xml schema
> of the xml stream to do this conversion properly.
>
> On the other words we can not directly do
>
> XMLStream <-------------> JSON stream
>
> But it may be possible to do using the xml schema.
>
>                           XMLSchema
> XMLStream <------------------------> JSON Stream
>
> If fact with this method we can support xml namespace as well as validate
> the received message.
> Can you please have look at with this approach? Initially you can assume a
> simple schema structure.
>

Ok sure, I'll try this approach and update my progress.

Thanks,
Shameera.


>
> This is a reasonable assumption for Axis2 as well. Irrespective of the
> service type we have schema for all axis2 services.
>
> thanks,
> Amila.
>
>
>
>
>
>
> On Fri, Jul 6, 2012 at 7:47 PM, Shameera Rathnayaka <
> shameerainfo@gmail.com> wrote:
>
>> Hi devs/Sagara,
>>
>> I have done some background research on how others (jettison, Apache
>> Camal, Apache wink etc....) convert XML to JSON format. Here is a summary
>> of that.
>>
>> *Apache camal* <http://camel.apache.org/>
>> Apache camal uses json-lib to convert xml to json and vise-verse[0]<http://camel.apache.org/xmljson.html>.
>> To use json-lib the xml should be in a special format which is supported by
>> json-lib, Therefore it identifies whether the xml element should be written
>> as json array or json object from class attribute of each xml start element
>> in xml stream[1] <http://json-lib.sourceforge.net/usage.html#xml>[2]<http://json-lib.sourceforge.net/apidocs/jdk15/index.html>.
>>
>>
>> eg:
>> <a class="array"<
>>        <e type="number">1</e>
>>        <e type="number">2</e>
>>        <e type="number">3</e>
>>     </a>
>>
>> *Jettison *
>> Jettison uses XMLEventWriter implementation to convert XML to JSON[3]<http://stackoverflow.com/a/8368752/942164>.
>> Inside this XMLEventWriter it maintains stack which gets dynamically
>> extended with next XMLEvent. Finally, when it receives EndDocument, it
>> writes that stack to XMLStreamWriter. In this scenario, it can't recognise
>> a JSON array which has only one value.
>>
>> *Apache wink *
>> Apache wink also uses Jettison to convert xml to json.
>>
>> In stackoverflow they suggest implementing our own implementation for this
>> [4] <http://stackoverflow.com/a/7218820/942164>
>>
>> [0]http://camel.apache.org/xmljson.html
>> [1]http://json-lib.sourceforge.net/usage.html#xml
>> [2]http://json-lib.sourceforge.net/apidocs/jdk15/index.html
>> [3]http://stackoverflow.com/a/8368752/942164
>> [4]http://stackoverflow.com/a/7218820/942164
>>
>> Thanks!
>> Shameera
>>
>>
>> On Fri, Jul 6, 2012 at 10:59 AM, Sagara Gunathunga <
>> sagara.gunathunga@gmail.com> wrote:
>>
>>> On Fri, Jul 6, 2012 at 10:38 AM, Sagara Gunathunga
>>> <sa...@gmail.com> wrote:
>>> > @Shmeera,
>>> >
>>> > Can you look into how Apache Camel [1] [2] handle XML <=> JSON in your
>>> > use cases I believe you can find some hints from there ?
>>> >
>>> >  [1] - http://camel.apache.o*Apache camal*rg/xmljson.html<http://camel.apache.org/xmljson.html>
>>> >  [2] - http://json-lib.sourceforge.net/
>>>
>>> Also you could use following convention [1] .
>>>
>>>
>>> [1] -
>>> http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
>>>
>>> Thanks !
>>>
>>> >
>>> >  Thanks !
>>> >
>>> > On Wed, Jul 4, 2012 at 3:37 PM, Amila Suriarachchi
>>> > <am...@gmail.com> wrote:
>>> >>
>>> >>
>>> >> On Mon, Jul 2, 2012 at 3:44 PM, Sagara Gunathunga
>>> >> <sa...@gmail.com> wrote:
>>> >>>
>>> >>> On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
>>> >>> <am...@gmail.com> wrote:
>>> >>> >
>>> >>> >
>>> >>> > On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
>>> >>> > <sh...@gmail.com> wrote:
>>> >>> >>
>>> >>> >> Hi devs,
>>> >>> >>
>>> >>> >> I have a problem with, writing OMElement to the wire
>>> >>> >> at the JsonFormatter, The problem is how do i identify
>>> >>> >> whether it is a JSON object or JSON array.
>>> >>> >>
>>> >>> >> As an example let's say i have this OMElement,
>>> >>> >>
>>> >>> >>     <student>
>>> >>> >>         <name>micky</name>
>>> >>> >>         <age>15</age>
>>> >>> >>         <subject>History</subject>
>>> >>> >>         <subject>Science</subject>
>>> >>> >>     </student>
>>> >>> >>
>>> >>> >> So the expected JSON Object is,
>>> >>> >> {"student":{"name":'micky" , "age":15 , "subject":["History",
>>> >>> >> "Science"]}}
>>> >>> >>
>>> >>> >> The thing is how should I know the student should be a JsonArray,
>>> when
>>> >>> >> i
>>> >>> >> receive a <subject> Start element?
>>> >>> >>
>>> >>> >> Another thing is if i get below OMElement, How do i know subject
>>> is a
>>> >>> >> JsonArray?
>>> >>> >>   <student>
>>> >>> >>         <name>micky</name>
>>> >>> >>         <age>15</age>
>>> >>> >>         <subject>History</subject>
>>> >>> >>     </student>
>>> >>> >>
>>> >>> >> The relevant JSON object should be,
>>> >>> >>
>>> >>> >> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
>>> >>> >>
>>> >>> >> It would be nice to hear your ideas to overcome these problems.
>>> >>> >
>>> >>> >
>>> >>> > It think we can not solve this issue unless the serialiser aware
>>> of some
>>> >>> > scheme. So this seems to be another limitation about converting
>>> xml to
>>> >>> > json
>>> >>> > and wise versa.
>>> >>> >
>>> >>> > Shall we follow this convention to over come this problem.
>>> >>> >
>>> >>> > if we take your example, shall we stick to a method where it
>>> always try
>>> >>> > to
>>> >>> > serialise fields as attributes unless we sure it is an array.
>>> >>> >
>>> >>> > For an example
>>> >>> >
>>> >>> > <student>
>>> >>> >         <name>micky</name>
>>> >>> >         <age>15</age>
>>> >>> >         <subject>History</subject>
>>> >>> >     </student>
>>> >>> >
>>> >>> > this will be
>>> >>> >
>>> >>> > {"student":{"name":'micky" , "age":15 , "subject":"History"}}
>>> >>> >
>>> >>> > and
>>> >>> >
>>> >>> > <student>
>>> >>> >         <name>micky</name>
>>> >>> >         <age>15</age>
>>> >>> >         <subject>History</subject>
>>> >>> >         <subject>Science</subject>
>>> >>> >     </student>
>>> >>> >
>>> >>> > {"student":{"name":'micky" , "age":15 , "subject":["History",
>>> >>> > "Science"]}}
>>> >>> >
>>> >>> > I think even implementation wise this will not be straight
>>> forward. The
>>> >>> > only
>>> >>> > thing we know for sure root element is not an array.
>>> >>> >
>>> >>> > Then after completing the first element, if the second element is
>>> also
>>> >>> > have
>>> >>> > the same element name then we can assume it is an array and other
>>> wise
>>> >>> > it is
>>> >>> > a normal attribute.
>>> >>>
>>> >>> Amila,
>>> >>>
>>> >>> Your suggestion introduce another problem, format of response JSON
>>> >>> message depends on return data quantities. As an example for a same
>>> >>> service it use two response formats when the response having size 1
>>> >>> array and having size > 1 arrays. I think this is a major issue for
>>> >>> caller side.
>>> >>
>>> >>
>>> >> yes. But as you can see this problem can not solve. so my suggestion
>>> works
>>> >> for single field elements. But for arrays it has the problem you
>>> mentioned.
>>> >> Receiving end should process the message accordingly.
>>> >>
>>> >>>
>>> >>>
>>> >>> What about to use hybrid approach where XMLStramReader based approach
>>> >>> ( 2nd approach)  use to handle incoming requests and use Gson stream
>>> >>> directly to write response message from Java ( Java => Gson)  without
>>> >>> using XMLStramWriter  (1st approach)    ?
>>> >>
>>> >>
>>> >> We already have java ==> Gson binding and it work fine.
>>> >>
>>> >> The idea of this is to implement an xml stream using json so that any
>>> >> service (eg POJO, ADB services) written top of those API can use
>>> that. But
>>> >> as Shammera pointed out this xml json conversion has problems.
>>> >>
>>> >> thanks,
>>> >> Amila.
>>> >>
>>> >>>
>>> >>>
>>> >>> Thanks !
>>> >>>
>>> >>> >
>>> >>> > thanks,
>>> >>> > Amila.
>>> >>> >
>>> >>> >
>>> >>> >>
>>> >>> >>
>>> >>> >> Thanks,
>>> >>> >> Shameera.
>>> >>> >>
>>> >>> >>
>>> >>> >>
>>> >>> >>
>>> >>> >> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka
>>> >>> >> <sh...@gmail.com> wrote:
>>> >>> >>>
>>> >>> >>> Hi devs,
>>> >>> >>>
>>> >>> >>>> Everything is fine, if i try to print OMElement using
>>> >>> >>>> omElement.toString();
>>> >>> >>>> it prints OMElement without any error. But after returning from
>>> >>> >>>> JsonBuilder,
>>> >>> >>>> and inside the TransportUtils class it throws a class cast
>>> exception
>>> >>> >>>> when it try
>>> >>> >>>> to add this returned OMelement to the SoapEnvelop by using
>>> >>> >>>> envelope.getBody().addChild(documentElement); here is the code
>>> >>> >>>> segment
>>> >>> >>>> in
>>> >>> >>>> TransportUtils class
>>> >>> >>>>
>>> >>> >>>> envelope = soapFactory.getDefaultEnvelope();
>>> >>> >>>> if (documentElement != null) {
>>> >>> >>>>      envelope.getBody().addChild(documentElement); // THIS LINE
>>> >>> >>>> THROWS
>>> >>> >>>> AN EXCEPTION
>>> >>> >>>> }
>>> >>> >>>>
>>> >>> >>>> The exception is  java.lang.ClassCastException:
>>> >>> >>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
>>> >>> >>>> org.apache.axiom.om.impl.OMNodeEx
>>> >>> >>>
>>> >>> >>>
>>> >>> >>> I could able to solve this , there was an error in my
>>> >>> >>> GsonXMLStreamReader
>>> >>> >>> , I had to dig AXIOM to identify this. AXIOM process the parser
>>> while
>>> >>> >>> it
>>> >>> >>> receive XMLStreamReader.END_ELEMENT but my implementation had an
>>> error
>>> >>> >>> returning the END_ELEMENT, I solved it now I an not getting above
>>> >>> >>> ClassCastException.
>>> >>> >>>
>>> >>> >>> Thanks,
>>> >>> >>> Shameera.
>>> >>> >>>
>>> >>> >>>>
>>> >>> >>>>
>>> >>> >>>> What should be the problem for this? , do i use wrong way to get
>>> >>> >>>> the OMElement or something else??  devs any comments on this ??
>>> >>> >>>>
>>> >>> >>>> Thanks,
>>> >>> >>>> Shameera.
>>> >>> >>>>
>>> >>> >>>>
>>> >>> >>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka
>>> >>> >>>> <sh...@gmail.com> wrote:
>>> >>> >>>>>
>>> >>> >>>>> Hi devs ,
>>> >>> >>>>>
>>> >>> >>>>> According to my second approach, I need to map json elements in
>>> >>> >>>>> request
>>> >>> >>>>> to relevant XML tags/text and vice versa. When i am working on
>>> this,
>>> >>> >>>>> there
>>> >>> >>>>> is a  problem arises that which convention should i expect for
>>> this.
>>> >>> >>>>> So i
>>> >>> >>>>> need to clarify whether the following convention is correct or
>>> are
>>> >>> >>>>> there any
>>> >>> >>>>> suggestions for it.
>>> >>> >>>>>
>>> >>> >>>>> json message
>>> >>> >>>>>
>>> >>> >>>>> {    "alise": {
>>> >>> >>>>>         "bob": {
>>> >>> >>>>>             "x": "valueX",
>>> >>> >>>>>             "y": "valueY",
>>> >>> >>>>>             "z": ["valueU","valueV","valueW"],
>>> >>> >>>>>             "l": { "name": "john",  "age": 23 },
>>> >>> >>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b":
>>> ["D","E","F" ]
>>> >>> >>>>> }
>>> >>> >>>>> ]
>>> >>> >>>>>         }
>>> >>> >>>>>     }
>>> >>> >>>>> }
>>> >>> >>>>>
>>> >>> >>>>> Relevant,expected xml message from this json request
>>> (actually, it
>>> >>> >>>>> is
>>> >>> >>>>> not converted to xml)
>>> >>> >>>>>
>>> >>> >>>>>     <json>
>>> >>> >>>>>         <alise>
>>> >>> >>>>>             <bob>
>>> >>> >>>>>                 <x>valueX</x>
>>> >>> >>>>>                 <y>valueY</y>
>>> >>> >>>>>                 <z>valueU</z>
>>> >>> >>>>>                 <z>valueV</z>
>>> >>> >>>>>                 <z>valueW</z>
>>> >>> >>>>>                 <l>
>>> >>> >>>>>                     <name>john</name>
>>> >>> >>>>>                     <age>23</age>
>>> >>> >>>>>                 </l>
>>> >>> >>>>>                 <m>
>>> >>> >>>>>                     <a>A</a>
>>> >>> >>>>>                     <a>B</a>
>>> >>> >>>>>                     <a>C</a>
>>> >>> >>>>>                 </m>
>>> >>> >>>>>                 <m>
>>> >>> >>>>>                     <b>D</b>
>>> >>> >>>>>                     <b>E</b>
>>> >>> >>>>>                     <b>F</b>
>>> >>> >>>>>                 </m>
>>> >>> >>>>>             </bob>
>>> >>> >>>>>         </alise>
>>> >>> >>>>>     </json>
>>> >>> >>>>>
>>> >>> >>>>>
>>> >>> >>>>> Thanks
>>> >>> >>>>> Shameera.
>>> >>> >>>>>
>>> >>> >>>>>
>>> >>> >>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka
>>> >>> >>>>> <sh...@gmail.com> wrote:
>>> >>> >>>>>>
>>> >>> >>>>>> Hi devs,
>>> >>> >>>>>>
>>> >>> >>>>>> As this project is accepted for GSoC 2012, I would like
>>> >>> >>>>>> to continue my work and looking forward to finish my project
>>> >>> >>>>>> as a success in this summer. According to my mentor (Amila
>>> >>> >>>>>> Suriarachchi)
>>> >>> >>>>>> it is better to improve my knowledge further about Axis2
>>> >>> >>>>>> architecture
>>> >>> >>>>>> in this community bounding period. Therefore I'll start to
>>> read the
>>> >>> >>>>>> Documentation and Apache Axis2 book.
>>> >>> >>>>>>
>>> >>> >>>>>> Andreas, as you mentioned in the previous mail thread[1]
>>> could you
>>> >>> >>>>>> please point out some of the code samples in synapse which do
>>> >>> >>>>>> a similar work as i do in my 2nd approach of the project?.
>>> >>> >>>>>>
>>> >>> >>>>>> I will use this thread for future discussion about the
>>> project.
>>> >>> >>>>>> And I'll keep update my implementation patches to  AXIS2-5270
>>> too.
>>> >>> >>>>>>
>>> >>> >>>>>>
>>> >>> >>>>>> [1]
>>> >>> >>>>>>
>>> >>> >>>>>>
>>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>>> >>> >>>>>>
>>> >>> >>>>>> Thanks
>>> >>> >>>>>> Shameera.
>>> >>> >>>>>>
>>> >>> >>>>>> --
>>> >>> >>>>>> Shameera Rathnayaka
>>> >>> >>>>>> Undergraduate
>>> >>> >>>>>> Department of Computer Science and Engineering
>>> >>> >>>>>> University of Moratuwa.
>>> >>> >>>>>> Sri Lanka.
>>> >>> >>>>>>
>>> >>> >>>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>> >>>>>>
>>> >>> >>>>>
>>> >>> >>>>>
>>> >>> >>>>>
>>> >>> >>>>> --
>>> >>> >>>>> Shameera Rathnayaka
>>> >>> >>>>> Undergraduate
>>> >>> >>>>> Department of Computer Science and Engineering
>>> >>> >>>>> University of Moratuwa.
>>> >>> >>>>> Sri Lanka.
>>> >>> >>>>>
>>> >>> >>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>> >>>>>
>>> >>> >>>>
>>> >>> >>>>
>>> >>> >>>>
>>> >>> >>>> --
>>> >>> >>>> Shameera Rathnayaka
>>> >>> >>>> Undergraduate
>>> >>> >>>> Department of Computer Science and Engineering
>>> >>> >>>> University of Moratuwa.
>>> >>> >>>> Sri Lanka.
>>> >>> >>>>
>>> >>> >>>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>> >>>>
>>> >>> >>>
>>> >>> >>>
>>> >>> >>>
>>> >>> >>>
>>> >>> >>> --
>>> >>> >>> Shameera Rathnayaka
>>> >>> >>> Undergraduate
>>> >>> >>> Department of Computer Science and Engineering
>>> >>> >>> University of Moratuwa.
>>> >>> >>> Sri Lanka.
>>> >>> >>>
>>> >>> >>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>> >>>
>>> >>> >>
>>> >>> >>
>>> >>> >>
>>> >>> >> --
>>> >>> >> 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/
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> Sagara Gunathunga
>>> >>>
>>> >>> Blog      - http://ssagara.blogspot.com
>>> >>> Web      - http://people.apache.org/~sagara/
>>> >>> LinkedIn - http://www.linkedin.com/in/ssagara
>>> >>>
>>> >>> ---------------------------------------------------------------------
>>> >>> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
>>> >>> For additional commands, e-mail: java-dev-help@axis.apache.org
>>> >>>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Amila Suriarachchi
>>> >> WSO2 Inc.
>>> >> blog: http://amilachinthaka.blogspot.com/
>>> >
>>> >
>>> >
>>> > --
>>> > Sagara Gunathunga
>>> >
>>> > Blog      - http://ssagara.blogspot.com
>>> > Web      - http://people.apache.org/~sagara/
>>> > LinkedIn - http://www.linkedin.com/in/ssagara
>>>
>>>
>>>
>>> --
>>> Sagara Gunathunga
>>>
>>> Blog      - http://ssagara.blogspot.com
>>> Web      - http://people.apache.org/~sagara/
>>> LinkedIn - http://www.linkedin.com/in/ssagara
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
>>> For additional commands, e-mail: java-dev-help@axis.apache.org
>>>
>>>
>>
>>
>> --
>> 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/
>



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

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

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Amila Suriarachchi <am...@gmail.com>.
hi,

Great job looking into other similar approaches.

What we can learn from these is that it is not possible to convert an json
stream to an xml stream or wise versa directly. So what we missing here is
the meta data of the xml stream. That means we need to have the xml schema
of the xml stream to do this conversion properly.

On the other words we can not directly do

XMLStream <-------------> JSON stream

But it may be possible to do using the xml schema.

                          XMLSchema
XMLStream <------------------------> JSON Stream

If fact with this method we can support xml namespace as well as validate
the received message.
Can you please have look at with this approach? Initially you can assume a
simple schema structure.

This is a reasonable assumption for Axis2 as well. Irrespective of the
service type we have schema for all axis2 services.

thanks,
Amila.





On Fri, Jul 6, 2012 at 7:47 PM, Shameera Rathnayaka
<sh...@gmail.com>wrote:

> Hi devs/Sagara,
>
> I have done some background research on how others (jettison, Apache
> Camal, Apache wink etc....) convert XML to JSON format. Here is a summary
> of that.
>
> *Apache camal* <http://camel.apache.org/>
> Apache camal uses json-lib to convert xml to json and vise-verse[0]<http://camel.apache.org/xmljson.html>.
> To use json-lib the xml should be in a special format which is supported by
> json-lib, Therefore it identifies whether the xml element should be written
> as json array or json object from class attribute of each xml start element
> in xml stream[1] <http://json-lib.sourceforge.net/usage.html#xml>[2]<http://json-lib.sourceforge.net/apidocs/jdk15/index.html>.
>
>
> eg:
> <a class="array"<
>        <e type="number">1</e>
>        <e type="number">2</e>
>        <e type="number">3</e>
>     </a>
>
> *Jettison *
> Jettison uses XMLEventWriter implementation to convert XML to JSON[3]<http://stackoverflow.com/a/8368752/942164>.
> Inside this XMLEventWriter it maintains stack which gets dynamically
> extended with next XMLEvent. Finally, when it receives EndDocument, it
> writes that stack to XMLStreamWriter. In this scenario, it can't recognise
> a JSON array which has only one value.
>
> *Apache wink *
> Apache wink also uses Jettison to convert xml to json.
>
> In stackoverflow they suggest implementing our own implementation for this
> [4] <http://stackoverflow.com/a/7218820/942164>
>
> [0]http://camel.apache.org/xmljson.html
> [1]http://json-lib.sourceforge.net/usage.html#xml
> [2]http://json-lib.sourceforge.net/apidocs/jdk15/index.html
> [3]http://stackoverflow.com/a/8368752/942164
> [4]http://stackoverflow.com/a/7218820/942164
>
> Thanks!
> Shameera
>
>
> On Fri, Jul 6, 2012 at 10:59 AM, Sagara Gunathunga <
> sagara.gunathunga@gmail.com> wrote:
>
>> On Fri, Jul 6, 2012 at 10:38 AM, Sagara Gunathunga
>> <sa...@gmail.com> wrote:
>> > @Shmeera,
>> >
>> > Can you look into how Apache Camel [1] [2] handle XML <=> JSON in your
>> > use cases I believe you can find some hints from there ?
>> >
>> >  [1] - http://camel.apache.o*Apache camal*rg/xmljson.html<http://camel.apache.org/xmljson.html>
>> >  [2] - http://json-lib.sourceforge.net/
>>
>> Also you could use following convention [1] .
>>
>>
>> [1] -
>> http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
>>
>> Thanks !
>>
>> >
>> >  Thanks !
>> >
>> > On Wed, Jul 4, 2012 at 3:37 PM, Amila Suriarachchi
>> > <am...@gmail.com> wrote:
>> >>
>> >>
>> >> On Mon, Jul 2, 2012 at 3:44 PM, Sagara Gunathunga
>> >> <sa...@gmail.com> wrote:
>> >>>
>> >>> On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
>> >>> <am...@gmail.com> wrote:
>> >>> >
>> >>> >
>> >>> > On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
>> >>> > <sh...@gmail.com> wrote:
>> >>> >>
>> >>> >> Hi devs,
>> >>> >>
>> >>> >> I have a problem with, writing OMElement to the wire
>> >>> >> at the JsonFormatter, The problem is how do i identify
>> >>> >> whether it is a JSON object or JSON array.
>> >>> >>
>> >>> >> As an example let's say i have this OMElement,
>> >>> >>
>> >>> >>     <student>
>> >>> >>         <name>micky</name>
>> >>> >>         <age>15</age>
>> >>> >>         <subject>History</subject>
>> >>> >>         <subject>Science</subject>
>> >>> >>     </student>
>> >>> >>
>> >>> >> So the expected JSON Object is,
>> >>> >> {"student":{"name":'micky" , "age":15 , "subject":["History",
>> >>> >> "Science"]}}
>> >>> >>
>> >>> >> The thing is how should I know the student should be a JsonArray,
>> when
>> >>> >> i
>> >>> >> receive a <subject> Start element?
>> >>> >>
>> >>> >> Another thing is if i get below OMElement, How do i know subject
>> is a
>> >>> >> JsonArray?
>> >>> >>   <student>
>> >>> >>         <name>micky</name>
>> >>> >>         <age>15</age>
>> >>> >>         <subject>History</subject>
>> >>> >>     </student>
>> >>> >>
>> >>> >> The relevant JSON object should be,
>> >>> >>
>> >>> >> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
>> >>> >>
>> >>> >> It would be nice to hear your ideas to overcome these problems.
>> >>> >
>> >>> >
>> >>> > It think we can not solve this issue unless the serialiser aware of
>> some
>> >>> > scheme. So this seems to be another limitation about converting xml
>> to
>> >>> > json
>> >>> > and wise versa.
>> >>> >
>> >>> > Shall we follow this convention to over come this problem.
>> >>> >
>> >>> > if we take your example, shall we stick to a method where it always
>> try
>> >>> > to
>> >>> > serialise fields as attributes unless we sure it is an array.
>> >>> >
>> >>> > For an example
>> >>> >
>> >>> > <student>
>> >>> >         <name>micky</name>
>> >>> >         <age>15</age>
>> >>> >         <subject>History</subject>
>> >>> >     </student>
>> >>> >
>> >>> > this will be
>> >>> >
>> >>> > {"student":{"name":'micky" , "age":15 , "subject":"History"}}
>> >>> >
>> >>> > and
>> >>> >
>> >>> > <student>
>> >>> >         <name>micky</name>
>> >>> >         <age>15</age>
>> >>> >         <subject>History</subject>
>> >>> >         <subject>Science</subject>
>> >>> >     </student>
>> >>> >
>> >>> > {"student":{"name":'micky" , "age":15 , "subject":["History",
>> >>> > "Science"]}}
>> >>> >
>> >>> > I think even implementation wise this will not be straight forward.
>> The
>> >>> > only
>> >>> > thing we know for sure root element is not an array.
>> >>> >
>> >>> > Then after completing the first element, if the second element is
>> also
>> >>> > have
>> >>> > the same element name then we can assume it is an array and other
>> wise
>> >>> > it is
>> >>> > a normal attribute.
>> >>>
>> >>> Amila,
>> >>>
>> >>> Your suggestion introduce another problem, format of response JSON
>> >>> message depends on return data quantities. As an example for a same
>> >>> service it use two response formats when the response having size 1
>> >>> array and having size > 1 arrays. I think this is a major issue for
>> >>> caller side.
>> >>
>> >>
>> >> yes. But as you can see this problem can not solve. so my suggestion
>> works
>> >> for single field elements. But for arrays it has the problem you
>> mentioned.
>> >> Receiving end should process the message accordingly.
>> >>
>> >>>
>> >>>
>> >>> What about to use hybrid approach where XMLStramReader based approach
>> >>> ( 2nd approach)  use to handle incoming requests and use Gson stream
>> >>> directly to write response message from Java ( Java => Gson)  without
>> >>> using XMLStramWriter  (1st approach)    ?
>> >>
>> >>
>> >> We already have java ==> Gson binding and it work fine.
>> >>
>> >> The idea of this is to implement an xml stream using json so that any
>> >> service (eg POJO, ADB services) written top of those API can use that.
>> But
>> >> as Shammera pointed out this xml json conversion has problems.
>> >>
>> >> thanks,
>> >> Amila.
>> >>
>> >>>
>> >>>
>> >>> Thanks !
>> >>>
>> >>> >
>> >>> > thanks,
>> >>> > Amila.
>> >>> >
>> >>> >
>> >>> >>
>> >>> >>
>> >>> >> Thanks,
>> >>> >> Shameera.
>> >>> >>
>> >>> >>
>> >>> >>
>> >>> >>
>> >>> >> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka
>> >>> >> <sh...@gmail.com> wrote:
>> >>> >>>
>> >>> >>> Hi devs,
>> >>> >>>
>> >>> >>>> Everything is fine, if i try to print OMElement using
>> >>> >>>> omElement.toString();
>> >>> >>>> it prints OMElement without any error. But after returning from
>> >>> >>>> JsonBuilder,
>> >>> >>>> and inside the TransportUtils class it throws a class cast
>> exception
>> >>> >>>> when it try
>> >>> >>>> to add this returned OMelement to the SoapEnvelop by using
>> >>> >>>> envelope.getBody().addChild(documentElement); here is the code
>> >>> >>>> segment
>> >>> >>>> in
>> >>> >>>> TransportUtils class
>> >>> >>>>
>> >>> >>>> envelope = soapFactory.getDefaultEnvelope();
>> >>> >>>> if (documentElement != null) {
>> >>> >>>>      envelope.getBody().addChild(documentElement); // THIS LINE
>> >>> >>>> THROWS
>> >>> >>>> AN EXCEPTION
>> >>> >>>> }
>> >>> >>>>
>> >>> >>>> The exception is  java.lang.ClassCastException:
>> >>> >>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
>> >>> >>>> org.apache.axiom.om.impl.OMNodeEx
>> >>> >>>
>> >>> >>>
>> >>> >>> I could able to solve this , there was an error in my
>> >>> >>> GsonXMLStreamReader
>> >>> >>> , I had to dig AXIOM to identify this. AXIOM process the parser
>> while
>> >>> >>> it
>> >>> >>> receive XMLStreamReader.END_ELEMENT but my implementation had an
>> error
>> >>> >>> returning the END_ELEMENT, I solved it now I an not getting above
>> >>> >>> ClassCastException.
>> >>> >>>
>> >>> >>> Thanks,
>> >>> >>> Shameera.
>> >>> >>>
>> >>> >>>>
>> >>> >>>>
>> >>> >>>> What should be the problem for this? , do i use wrong way to get
>> >>> >>>> the OMElement or something else??  devs any comments on this ??
>> >>> >>>>
>> >>> >>>> Thanks,
>> >>> >>>> Shameera.
>> >>> >>>>
>> >>> >>>>
>> >>> >>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka
>> >>> >>>> <sh...@gmail.com> wrote:
>> >>> >>>>>
>> >>> >>>>> Hi devs ,
>> >>> >>>>>
>> >>> >>>>> According to my second approach, I need to map json elements in
>> >>> >>>>> request
>> >>> >>>>> to relevant XML tags/text and vice versa. When i am working on
>> this,
>> >>> >>>>> there
>> >>> >>>>> is a  problem arises that which convention should i expect for
>> this.
>> >>> >>>>> So i
>> >>> >>>>> need to clarify whether the following convention is correct or
>> are
>> >>> >>>>> there any
>> >>> >>>>> suggestions for it.
>> >>> >>>>>
>> >>> >>>>> json message
>> >>> >>>>>
>> >>> >>>>> {    "alise": {
>> >>> >>>>>         "bob": {
>> >>> >>>>>             "x": "valueX",
>> >>> >>>>>             "y": "valueY",
>> >>> >>>>>             "z": ["valueU","valueV","valueW"],
>> >>> >>>>>             "l": { "name": "john",  "age": 23 },
>> >>> >>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b":
>> ["D","E","F" ]
>> >>> >>>>> }
>> >>> >>>>> ]
>> >>> >>>>>         }
>> >>> >>>>>     }
>> >>> >>>>> }
>> >>> >>>>>
>> >>> >>>>> Relevant,expected xml message from this json request (actually,
>> it
>> >>> >>>>> is
>> >>> >>>>> not converted to xml)
>> >>> >>>>>
>> >>> >>>>>     <json>
>> >>> >>>>>         <alise>
>> >>> >>>>>             <bob>
>> >>> >>>>>                 <x>valueX</x>
>> >>> >>>>>                 <y>valueY</y>
>> >>> >>>>>                 <z>valueU</z>
>> >>> >>>>>                 <z>valueV</z>
>> >>> >>>>>                 <z>valueW</z>
>> >>> >>>>>                 <l>
>> >>> >>>>>                     <name>john</name>
>> >>> >>>>>                     <age>23</age>
>> >>> >>>>>                 </l>
>> >>> >>>>>                 <m>
>> >>> >>>>>                     <a>A</a>
>> >>> >>>>>                     <a>B</a>
>> >>> >>>>>                     <a>C</a>
>> >>> >>>>>                 </m>
>> >>> >>>>>                 <m>
>> >>> >>>>>                     <b>D</b>
>> >>> >>>>>                     <b>E</b>
>> >>> >>>>>                     <b>F</b>
>> >>> >>>>>                 </m>
>> >>> >>>>>             </bob>
>> >>> >>>>>         </alise>
>> >>> >>>>>     </json>
>> >>> >>>>>
>> >>> >>>>>
>> >>> >>>>> Thanks
>> >>> >>>>> Shameera.
>> >>> >>>>>
>> >>> >>>>>
>> >>> >>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka
>> >>> >>>>> <sh...@gmail.com> wrote:
>> >>> >>>>>>
>> >>> >>>>>> Hi devs,
>> >>> >>>>>>
>> >>> >>>>>> As this project is accepted for GSoC 2012, I would like
>> >>> >>>>>> to continue my work and looking forward to finish my project
>> >>> >>>>>> as a success in this summer. According to my mentor (Amila
>> >>> >>>>>> Suriarachchi)
>> >>> >>>>>> it is better to improve my knowledge further about Axis2
>> >>> >>>>>> architecture
>> >>> >>>>>> in this community bounding period. Therefore I'll start to
>> read the
>> >>> >>>>>> Documentation and Apache Axis2 book.
>> >>> >>>>>>
>> >>> >>>>>> Andreas, as you mentioned in the previous mail thread[1] could
>> you
>> >>> >>>>>> please point out some of the code samples in synapse which do
>> >>> >>>>>> a similar work as i do in my 2nd approach of the project?.
>> >>> >>>>>>
>> >>> >>>>>> I will use this thread for future discussion about the project.
>> >>> >>>>>> And I'll keep update my implementation patches to  AXIS2-5270
>> too.
>> >>> >>>>>>
>> >>> >>>>>>
>> >>> >>>>>> [1]
>> >>> >>>>>>
>> >>> >>>>>>
>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>> >>> >>>>>>
>> >>> >>>>>> Thanks
>> >>> >>>>>> Shameera.
>> >>> >>>>>>
>> >>> >>>>>> --
>> >>> >>>>>> Shameera Rathnayaka
>> >>> >>>>>> Undergraduate
>> >>> >>>>>> Department of Computer Science and Engineering
>> >>> >>>>>> University of Moratuwa.
>> >>> >>>>>> Sri Lanka.
>> >>> >>>>>>
>> >>> >>>>>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>> >>>>>>
>> >>> >>>>>
>> >>> >>>>>
>> >>> >>>>>
>> >>> >>>>> --
>> >>> >>>>> Shameera Rathnayaka
>> >>> >>>>> Undergraduate
>> >>> >>>>> Department of Computer Science and Engineering
>> >>> >>>>> University of Moratuwa.
>> >>> >>>>> Sri Lanka.
>> >>> >>>>>
>> >>> >>>>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>> >>>>>
>> >>> >>>>
>> >>> >>>>
>> >>> >>>>
>> >>> >>>> --
>> >>> >>>> Shameera Rathnayaka
>> >>> >>>> Undergraduate
>> >>> >>>> Department of Computer Science and Engineering
>> >>> >>>> University of Moratuwa.
>> >>> >>>> Sri Lanka.
>> >>> >>>>
>> >>> >>>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>> >>>>
>> >>> >>>
>> >>> >>>
>> >>> >>>
>> >>> >>>
>> >>> >>> --
>> >>> >>> Shameera Rathnayaka
>> >>> >>> Undergraduate
>> >>> >>> Department of Computer Science and Engineering
>> >>> >>> University of Moratuwa.
>> >>> >>> Sri Lanka.
>> >>> >>>
>> >>> >>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>> >>>
>> >>> >>
>> >>> >>
>> >>> >>
>> >>> >> --
>> >>> >> 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/
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Sagara Gunathunga
>> >>>
>> >>> Blog      - http://ssagara.blogspot.com
>> >>> Web      - http://people.apache.org/~sagara/
>> >>> LinkedIn - http://www.linkedin.com/in/ssagara
>> >>>
>> >>> ---------------------------------------------------------------------
>> >>> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
>> >>> For additional commands, e-mail: java-dev-help@axis.apache.org
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> Amila Suriarachchi
>> >> WSO2 Inc.
>> >> blog: http://amilachinthaka.blogspot.com/
>> >
>> >
>> >
>> > --
>> > Sagara Gunathunga
>> >
>> > Blog      - http://ssagara.blogspot.com
>> > Web      - http://people.apache.org/~sagara/
>> > LinkedIn - http://www.linkedin.com/in/ssagara
>>
>>
>>
>> --
>> Sagara Gunathunga
>>
>> Blog      - http://ssagara.blogspot.com
>> Web      - http://people.apache.org/~sagara/
>> LinkedIn - http://www.linkedin.com/in/ssagara
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
>> For additional commands, e-mail: java-dev-help@axis.apache.org
>>
>>
>
>
> --
> 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/

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Shameera Rathnayaka <sh...@gmail.com>.
Hi devs/Sagara,

I have done some background research on how others (jettison, Apache Camal,
Apache wink etc....) convert XML to JSON format. Here is a summary of that.

*Apache camal* <http://camel.apache.org/>
Apache camal uses json-lib to convert xml to json and
vise-verse[0]<http://camel.apache.org/xmljson.html>.
To use json-lib the xml should be in a special format which is supported by
json-lib, Therefore it identifies whether the xml element should be written
as json array or json object from class attribute of each xml start element
in xml stream[1]
<http://json-lib.sourceforge.net/usage.html#xml>[2]<http://json-lib.sourceforge.net/apidocs/jdk15/index.html>.


eg:
<a class="array"<
       <e type="number">1</e>
       <e type="number">2</e>
       <e type="number">3</e>
    </a>

*Jettison *
Jettison uses XMLEventWriter implementation to convert XML to
JSON[3]<http://stackoverflow.com/a/8368752/942164>.
Inside this XMLEventWriter it maintains stack which gets dynamically
extended with next XMLEvent. Finally, when it receives EndDocument, it
writes that stack to XMLStreamWriter. In this scenario, it can't recognise
a JSON array which has only one value.

*Apache wink *
Apache wink also uses Jettison to convert xml to json.

In stackoverflow they suggest implementing our own implementation for this
[4] <http://stackoverflow.com/a/7218820/942164>

[0]http://camel.apache.org/xmljson.html
[1]http://json-lib.sourceforge.net/usage.html#xml
[2]http://json-lib.sourceforge.net/apidocs/jdk15/index.html
[3]http://stackoverflow.com/a/8368752/942164
[4]http://stackoverflow.com/a/7218820/942164

Thanks!
Shameera


On Fri, Jul 6, 2012 at 10:59 AM, Sagara Gunathunga <
sagara.gunathunga@gmail.com> wrote:

> On Fri, Jul 6, 2012 at 10:38 AM, Sagara Gunathunga
> <sa...@gmail.com> wrote:
> > @Shmeera,
> >
> > Can you look into how Apache Camel [1] [2] handle XML <=> JSON in your
> > use cases I believe you can find some hints from there ?
> >
> >  [1] - http://camel.apache.o*Apache camal*rg/xmljson.html<http://camel.apache.org/xmljson.html>
> >  [2] - http://json-lib.sourceforge.net/
>
> Also you could use following convention [1] .
>
>
> [1] -
> http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
>
> Thanks !
>
> >
> >  Thanks !
> >
> > On Wed, Jul 4, 2012 at 3:37 PM, Amila Suriarachchi
> > <am...@gmail.com> wrote:
> >>
> >>
> >> On Mon, Jul 2, 2012 at 3:44 PM, Sagara Gunathunga
> >> <sa...@gmail.com> wrote:
> >>>
> >>> On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
> >>> <am...@gmail.com> wrote:
> >>> >
> >>> >
> >>> > On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
> >>> > <sh...@gmail.com> wrote:
> >>> >>
> >>> >> Hi devs,
> >>> >>
> >>> >> I have a problem with, writing OMElement to the wire
> >>> >> at the JsonFormatter, The problem is how do i identify
> >>> >> whether it is a JSON object or JSON array.
> >>> >>
> >>> >> As an example let's say i have this OMElement,
> >>> >>
> >>> >>     <student>
> >>> >>         <name>micky</name>
> >>> >>         <age>15</age>
> >>> >>         <subject>History</subject>
> >>> >>         <subject>Science</subject>
> >>> >>     </student>
> >>> >>
> >>> >> So the expected JSON Object is,
> >>> >> {"student":{"name":'micky" , "age":15 , "subject":["History",
> >>> >> "Science"]}}
> >>> >>
> >>> >> The thing is how should I know the student should be a JsonArray,
> when
> >>> >> i
> >>> >> receive a <subject> Start element?
> >>> >>
> >>> >> Another thing is if i get below OMElement, How do i know subject is
> a
> >>> >> JsonArray?
> >>> >>   <student>
> >>> >>         <name>micky</name>
> >>> >>         <age>15</age>
> >>> >>         <subject>History</subject>
> >>> >>     </student>
> >>> >>
> >>> >> The relevant JSON object should be,
> >>> >>
> >>> >> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
> >>> >>
> >>> >> It would be nice to hear your ideas to overcome these problems.
> >>> >
> >>> >
> >>> > It think we can not solve this issue unless the serialiser aware of
> some
> >>> > scheme. So this seems to be another limitation about converting xml
> to
> >>> > json
> >>> > and wise versa.
> >>> >
> >>> > Shall we follow this convention to over come this problem.
> >>> >
> >>> > if we take your example, shall we stick to a method where it always
> try
> >>> > to
> >>> > serialise fields as attributes unless we sure it is an array.
> >>> >
> >>> > For an example
> >>> >
> >>> > <student>
> >>> >         <name>micky</name>
> >>> >         <age>15</age>
> >>> >         <subject>History</subject>
> >>> >     </student>
> >>> >
> >>> > this will be
> >>> >
> >>> > {"student":{"name":'micky" , "age":15 , "subject":"History"}}
> >>> >
> >>> > and
> >>> >
> >>> > <student>
> >>> >         <name>micky</name>
> >>> >         <age>15</age>
> >>> >         <subject>History</subject>
> >>> >         <subject>Science</subject>
> >>> >     </student>
> >>> >
> >>> > {"student":{"name":'micky" , "age":15 , "subject":["History",
> >>> > "Science"]}}
> >>> >
> >>> > I think even implementation wise this will not be straight forward.
> The
> >>> > only
> >>> > thing we know for sure root element is not an array.
> >>> >
> >>> > Then after completing the first element, if the second element is
> also
> >>> > have
> >>> > the same element name then we can assume it is an array and other
> wise
> >>> > it is
> >>> > a normal attribute.
> >>>
> >>> Amila,
> >>>
> >>> Your suggestion introduce another problem, format of response JSON
> >>> message depends on return data quantities. As an example for a same
> >>> service it use two response formats when the response having size 1
> >>> array and having size > 1 arrays. I think this is a major issue for
> >>> caller side.
> >>
> >>
> >> yes. But as you can see this problem can not solve. so my suggestion
> works
> >> for single field elements. But for arrays it has the problem you
> mentioned.
> >> Receiving end should process the message accordingly.
> >>
> >>>
> >>>
> >>> What about to use hybrid approach where XMLStramReader based approach
> >>> ( 2nd approach)  use to handle incoming requests and use Gson stream
> >>> directly to write response message from Java ( Java => Gson)  without
> >>> using XMLStramWriter  (1st approach)    ?
> >>
> >>
> >> We already have java ==> Gson binding and it work fine.
> >>
> >> The idea of this is to implement an xml stream using json so that any
> >> service (eg POJO, ADB services) written top of those API can use that.
> But
> >> as Shammera pointed out this xml json conversion has problems.
> >>
> >> thanks,
> >> Amila.
> >>
> >>>
> >>>
> >>> Thanks !
> >>>
> >>> >
> >>> > thanks,
> >>> > Amila.
> >>> >
> >>> >
> >>> >>
> >>> >>
> >>> >> Thanks,
> >>> >> Shameera.
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka
> >>> >> <sh...@gmail.com> wrote:
> >>> >>>
> >>> >>> Hi devs,
> >>> >>>
> >>> >>>> Everything is fine, if i try to print OMElement using
> >>> >>>> omElement.toString();
> >>> >>>> it prints OMElement without any error. But after returning from
> >>> >>>> JsonBuilder,
> >>> >>>> and inside the TransportUtils class it throws a class cast
> exception
> >>> >>>> when it try
> >>> >>>> to add this returned OMelement to the SoapEnvelop by using
> >>> >>>> envelope.getBody().addChild(documentElement); here is the code
> >>> >>>> segment
> >>> >>>> in
> >>> >>>> TransportUtils class
> >>> >>>>
> >>> >>>> envelope = soapFactory.getDefaultEnvelope();
> >>> >>>> if (documentElement != null) {
> >>> >>>>      envelope.getBody().addChild(documentElement); // THIS LINE
> >>> >>>> THROWS
> >>> >>>> AN EXCEPTION
> >>> >>>> }
> >>> >>>>
> >>> >>>> The exception is  java.lang.ClassCastException:
> >>> >>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
> >>> >>>> org.apache.axiom.om.impl.OMNodeEx
> >>> >>>
> >>> >>>
> >>> >>> I could able to solve this , there was an error in my
> >>> >>> GsonXMLStreamReader
> >>> >>> , I had to dig AXIOM to identify this. AXIOM process the parser
> while
> >>> >>> it
> >>> >>> receive XMLStreamReader.END_ELEMENT but my implementation had an
> error
> >>> >>> returning the END_ELEMENT, I solved it now I an not getting above
> >>> >>> ClassCastException.
> >>> >>>
> >>> >>> Thanks,
> >>> >>> Shameera.
> >>> >>>
> >>> >>>>
> >>> >>>>
> >>> >>>> What should be the problem for this? , do i use wrong way to get
> >>> >>>> the OMElement or something else??  devs any comments on this ??
> >>> >>>>
> >>> >>>> Thanks,
> >>> >>>> Shameera.
> >>> >>>>
> >>> >>>>
> >>> >>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka
> >>> >>>> <sh...@gmail.com> wrote:
> >>> >>>>>
> >>> >>>>> Hi devs ,
> >>> >>>>>
> >>> >>>>> According to my second approach, I need to map json elements in
> >>> >>>>> request
> >>> >>>>> to relevant XML tags/text and vice versa. When i am working on
> this,
> >>> >>>>> there
> >>> >>>>> is a  problem arises that which convention should i expect for
> this.
> >>> >>>>> So i
> >>> >>>>> need to clarify whether the following convention is correct or
> are
> >>> >>>>> there any
> >>> >>>>> suggestions for it.
> >>> >>>>>
> >>> >>>>> json message
> >>> >>>>>
> >>> >>>>> {    "alise": {
> >>> >>>>>         "bob": {
> >>> >>>>>             "x": "valueX",
> >>> >>>>>             "y": "valueY",
> >>> >>>>>             "z": ["valueU","valueV","valueW"],
> >>> >>>>>             "l": { "name": "john",  "age": 23 },
> >>> >>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F"
> ]
> >>> >>>>> }
> >>> >>>>> ]
> >>> >>>>>         }
> >>> >>>>>     }
> >>> >>>>> }
> >>> >>>>>
> >>> >>>>> Relevant,expected xml message from this json request (actually,
> it
> >>> >>>>> is
> >>> >>>>> not converted to xml)
> >>> >>>>>
> >>> >>>>>     <json>
> >>> >>>>>         <alise>
> >>> >>>>>             <bob>
> >>> >>>>>                 <x>valueX</x>
> >>> >>>>>                 <y>valueY</y>
> >>> >>>>>                 <z>valueU</z>
> >>> >>>>>                 <z>valueV</z>
> >>> >>>>>                 <z>valueW</z>
> >>> >>>>>                 <l>
> >>> >>>>>                     <name>john</name>
> >>> >>>>>                     <age>23</age>
> >>> >>>>>                 </l>
> >>> >>>>>                 <m>
> >>> >>>>>                     <a>A</a>
> >>> >>>>>                     <a>B</a>
> >>> >>>>>                     <a>C</a>
> >>> >>>>>                 </m>
> >>> >>>>>                 <m>
> >>> >>>>>                     <b>D</b>
> >>> >>>>>                     <b>E</b>
> >>> >>>>>                     <b>F</b>
> >>> >>>>>                 </m>
> >>> >>>>>             </bob>
> >>> >>>>>         </alise>
> >>> >>>>>     </json>
> >>> >>>>>
> >>> >>>>>
> >>> >>>>> Thanks
> >>> >>>>> Shameera.
> >>> >>>>>
> >>> >>>>>
> >>> >>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka
> >>> >>>>> <sh...@gmail.com> wrote:
> >>> >>>>>>
> >>> >>>>>> Hi devs,
> >>> >>>>>>
> >>> >>>>>> As this project is accepted for GSoC 2012, I would like
> >>> >>>>>> to continue my work and looking forward to finish my project
> >>> >>>>>> as a success in this summer. According to my mentor (Amila
> >>> >>>>>> Suriarachchi)
> >>> >>>>>> it is better to improve my knowledge further about Axis2
> >>> >>>>>> architecture
> >>> >>>>>> in this community bounding period. Therefore I'll start to read
> the
> >>> >>>>>> Documentation and Apache Axis2 book.
> >>> >>>>>>
> >>> >>>>>> Andreas, as you mentioned in the previous mail thread[1] could
> you
> >>> >>>>>> please point out some of the code samples in synapse which do
> >>> >>>>>> a similar work as i do in my 2nd approach of the project?.
> >>> >>>>>>
> >>> >>>>>> I will use this thread for future discussion about the project.
> >>> >>>>>> And I'll keep update my implementation patches to  AXIS2-5270
> too.
> >>> >>>>>>
> >>> >>>>>>
> >>> >>>>>> [1]
> >>> >>>>>>
> >>> >>>>>>
> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
> >>> >>>>>>
> >>> >>>>>> Thanks
> >>> >>>>>> Shameera.
> >>> >>>>>>
> >>> >>>>>> --
> >>> >>>>>> Shameera Rathnayaka
> >>> >>>>>> Undergraduate
> >>> >>>>>> Department of Computer Science and Engineering
> >>> >>>>>> University of Moratuwa.
> >>> >>>>>> Sri Lanka.
> >>> >>>>>>
> >>> >>>>>> Blog : http://shameerarathnayaka.blogspot.com/
> >>> >>>>>>
> >>> >>>>>
> >>> >>>>>
> >>> >>>>>
> >>> >>>>> --
> >>> >>>>> Shameera Rathnayaka
> >>> >>>>> Undergraduate
> >>> >>>>> Department of Computer Science and Engineering
> >>> >>>>> University of Moratuwa.
> >>> >>>>> Sri Lanka.
> >>> >>>>>
> >>> >>>>> Blog : http://shameerarathnayaka.blogspot.com/
> >>> >>>>>
> >>> >>>>
> >>> >>>>
> >>> >>>>
> >>> >>>> --
> >>> >>>> Shameera Rathnayaka
> >>> >>>> Undergraduate
> >>> >>>> Department of Computer Science and Engineering
> >>> >>>> University of Moratuwa.
> >>> >>>> Sri Lanka.
> >>> >>>>
> >>> >>>> Blog : http://shameerarathnayaka.blogspot.com/
> >>> >>>>
> >>> >>>
> >>> >>>
> >>> >>>
> >>> >>>
> >>> >>> --
> >>> >>> Shameera Rathnayaka
> >>> >>> Undergraduate
> >>> >>> Department of Computer Science and Engineering
> >>> >>> University of Moratuwa.
> >>> >>> Sri Lanka.
> >>> >>>
> >>> >>> Blog : http://shameerarathnayaka.blogspot.com/
> >>> >>>
> >>> >>
> >>> >>
> >>> >>
> >>> >> --
> >>> >> 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/
> >>>
> >>>
> >>>
> >>> --
> >>> Sagara Gunathunga
> >>>
> >>> Blog      - http://ssagara.blogspot.com
> >>> Web      - http://people.apache.org/~sagara/
> >>> LinkedIn - http://www.linkedin.com/in/ssagara
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
> >>> For additional commands, e-mail: java-dev-help@axis.apache.org
> >>>
> >>
> >>
> >>
> >> --
> >> Amila Suriarachchi
> >> WSO2 Inc.
> >> blog: http://amilachinthaka.blogspot.com/
> >
> >
> >
> > --
> > Sagara Gunathunga
> >
> > Blog      - http://ssagara.blogspot.com
> > Web      - http://people.apache.org/~sagara/
> > LinkedIn - http://www.linkedin.com/in/ssagara
>
>
>
> --
> Sagara Gunathunga
>
> Blog      - http://ssagara.blogspot.com
> Web      - http://people.apache.org/~sagara/
> LinkedIn - http://www.linkedin.com/in/ssagara
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
> For additional commands, e-mail: java-dev-help@axis.apache.org
>
>


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

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

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Sagara Gunathunga <sa...@gmail.com>.
On Fri, Jul 6, 2012 at 10:38 AM, Sagara Gunathunga
<sa...@gmail.com> wrote:
> @Shmeera,
>
> Can you look into how Apache Camel [1] [2] handle XML <=> JSON in your
> use cases I believe you can find some hints from there ?
>
>  [1] - http://camel.apache.org/xmljson.html
>  [2] - http://json-lib.sourceforge.net/

Also you could use following convention [1] .


[1] - http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html

Thanks !

>
>  Thanks !
>
> On Wed, Jul 4, 2012 at 3:37 PM, Amila Suriarachchi
> <am...@gmail.com> wrote:
>>
>>
>> On Mon, Jul 2, 2012 at 3:44 PM, Sagara Gunathunga
>> <sa...@gmail.com> wrote:
>>>
>>> On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
>>> <am...@gmail.com> wrote:
>>> >
>>> >
>>> > On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
>>> > <sh...@gmail.com> wrote:
>>> >>
>>> >> Hi devs,
>>> >>
>>> >> I have a problem with, writing OMElement to the wire
>>> >> at the JsonFormatter, The problem is how do i identify
>>> >> whether it is a JSON object or JSON array.
>>> >>
>>> >> As an example let's say i have this OMElement,
>>> >>
>>> >>     <student>
>>> >>         <name>micky</name>
>>> >>         <age>15</age>
>>> >>         <subject>History</subject>
>>> >>         <subject>Science</subject>
>>> >>     </student>
>>> >>
>>> >> So the expected JSON Object is,
>>> >> {"student":{"name":'micky" , "age":15 , "subject":["History",
>>> >> "Science"]}}
>>> >>
>>> >> The thing is how should I know the student should be a JsonArray, when
>>> >> i
>>> >> receive a <subject> Start element?
>>> >>
>>> >> Another thing is if i get below OMElement, How do i know subject is a
>>> >> JsonArray?
>>> >>   <student>
>>> >>         <name>micky</name>
>>> >>         <age>15</age>
>>> >>         <subject>History</subject>
>>> >>     </student>
>>> >>
>>> >> The relevant JSON object should be,
>>> >>
>>> >> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
>>> >>
>>> >> It would be nice to hear your ideas to overcome these problems.
>>> >
>>> >
>>> > It think we can not solve this issue unless the serialiser aware of some
>>> > scheme. So this seems to be another limitation about converting xml to
>>> > json
>>> > and wise versa.
>>> >
>>> > Shall we follow this convention to over come this problem.
>>> >
>>> > if we take your example, shall we stick to a method where it always try
>>> > to
>>> > serialise fields as attributes unless we sure it is an array.
>>> >
>>> > For an example
>>> >
>>> > <student>
>>> >         <name>micky</name>
>>> >         <age>15</age>
>>> >         <subject>History</subject>
>>> >     </student>
>>> >
>>> > this will be
>>> >
>>> > {"student":{"name":'micky" , "age":15 , "subject":"History"}}
>>> >
>>> > and
>>> >
>>> > <student>
>>> >         <name>micky</name>
>>> >         <age>15</age>
>>> >         <subject>History</subject>
>>> >         <subject>Science</subject>
>>> >     </student>
>>> >
>>> > {"student":{"name":'micky" , "age":15 , "subject":["History",
>>> > "Science"]}}
>>> >
>>> > I think even implementation wise this will not be straight forward. The
>>> > only
>>> > thing we know for sure root element is not an array.
>>> >
>>> > Then after completing the first element, if the second element is also
>>> > have
>>> > the same element name then we can assume it is an array and other wise
>>> > it is
>>> > a normal attribute.
>>>
>>> Amila,
>>>
>>> Your suggestion introduce another problem, format of response JSON
>>> message depends on return data quantities. As an example for a same
>>> service it use two response formats when the response having size 1
>>> array and having size > 1 arrays. I think this is a major issue for
>>> caller side.
>>
>>
>> yes. But as you can see this problem can not solve. so my suggestion works
>> for single field elements. But for arrays it has the problem you mentioned.
>> Receiving end should process the message accordingly.
>>
>>>
>>>
>>> What about to use hybrid approach where XMLStramReader based approach
>>> ( 2nd approach)  use to handle incoming requests and use Gson stream
>>> directly to write response message from Java ( Java => Gson)  without
>>> using XMLStramWriter  (1st approach)    ?
>>
>>
>> We already have java ==> Gson binding and it work fine.
>>
>> The idea of this is to implement an xml stream using json so that any
>> service (eg POJO, ADB services) written top of those API can use that. But
>> as Shammera pointed out this xml json conversion has problems.
>>
>> thanks,
>> Amila.
>>
>>>
>>>
>>> Thanks !
>>>
>>> >
>>> > thanks,
>>> > Amila.
>>> >
>>> >
>>> >>
>>> >>
>>> >> Thanks,
>>> >> Shameera.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka
>>> >> <sh...@gmail.com> wrote:
>>> >>>
>>> >>> Hi devs,
>>> >>>
>>> >>>> Everything is fine, if i try to print OMElement using
>>> >>>> omElement.toString();
>>> >>>> it prints OMElement without any error. But after returning from
>>> >>>> JsonBuilder,
>>> >>>> and inside the TransportUtils class it throws a class cast exception
>>> >>>> when it try
>>> >>>> to add this returned OMelement to the SoapEnvelop by using
>>> >>>> envelope.getBody().addChild(documentElement); here is the code
>>> >>>> segment
>>> >>>> in
>>> >>>> TransportUtils class
>>> >>>>
>>> >>>> envelope = soapFactory.getDefaultEnvelope();
>>> >>>> if (documentElement != null) {
>>> >>>>      envelope.getBody().addChild(documentElement); // THIS LINE
>>> >>>> THROWS
>>> >>>> AN EXCEPTION
>>> >>>> }
>>> >>>>
>>> >>>> The exception is  java.lang.ClassCastException:
>>> >>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
>>> >>>> org.apache.axiom.om.impl.OMNodeEx
>>> >>>
>>> >>>
>>> >>> I could able to solve this , there was an error in my
>>> >>> GsonXMLStreamReader
>>> >>> , I had to dig AXIOM to identify this. AXIOM process the parser while
>>> >>> it
>>> >>> receive XMLStreamReader.END_ELEMENT but my implementation had an error
>>> >>> returning the END_ELEMENT, I solved it now I an not getting above
>>> >>> ClassCastException.
>>> >>>
>>> >>> Thanks,
>>> >>> Shameera.
>>> >>>
>>> >>>>
>>> >>>>
>>> >>>> What should be the problem for this? , do i use wrong way to get
>>> >>>> the OMElement or something else??  devs any comments on this ??
>>> >>>>
>>> >>>> Thanks,
>>> >>>> Shameera.
>>> >>>>
>>> >>>>
>>> >>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka
>>> >>>> <sh...@gmail.com> wrote:
>>> >>>>>
>>> >>>>> Hi devs ,
>>> >>>>>
>>> >>>>> According to my second approach, I need to map json elements in
>>> >>>>> request
>>> >>>>> to relevant XML tags/text and vice versa. When i am working on this,
>>> >>>>> there
>>> >>>>> is a  problem arises that which convention should i expect for this.
>>> >>>>> So i
>>> >>>>> need to clarify whether the following convention is correct or are
>>> >>>>> there any
>>> >>>>> suggestions for it.
>>> >>>>>
>>> >>>>> json message
>>> >>>>>
>>> >>>>> {    "alise": {
>>> >>>>>         "bob": {
>>> >>>>>             "x": "valueX",
>>> >>>>>             "y": "valueY",
>>> >>>>>             "z": ["valueU","valueV","valueW"],
>>> >>>>>             "l": { "name": "john",  "age": 23 },
>>> >>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]
>>> >>>>> }
>>> >>>>> ]
>>> >>>>>         }
>>> >>>>>     }
>>> >>>>> }
>>> >>>>>
>>> >>>>> Relevant,expected xml message from this json request (actually, it
>>> >>>>> is
>>> >>>>> not converted to xml)
>>> >>>>>
>>> >>>>>     <json>
>>> >>>>>         <alise>
>>> >>>>>             <bob>
>>> >>>>>                 <x>valueX</x>
>>> >>>>>                 <y>valueY</y>
>>> >>>>>                 <z>valueU</z>
>>> >>>>>                 <z>valueV</z>
>>> >>>>>                 <z>valueW</z>
>>> >>>>>                 <l>
>>> >>>>>                     <name>john</name>
>>> >>>>>                     <age>23</age>
>>> >>>>>                 </l>
>>> >>>>>                 <m>
>>> >>>>>                     <a>A</a>
>>> >>>>>                     <a>B</a>
>>> >>>>>                     <a>C</a>
>>> >>>>>                 </m>
>>> >>>>>                 <m>
>>> >>>>>                     <b>D</b>
>>> >>>>>                     <b>E</b>
>>> >>>>>                     <b>F</b>
>>> >>>>>                 </m>
>>> >>>>>             </bob>
>>> >>>>>         </alise>
>>> >>>>>     </json>
>>> >>>>>
>>> >>>>>
>>> >>>>> Thanks
>>> >>>>> Shameera.
>>> >>>>>
>>> >>>>>
>>> >>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka
>>> >>>>> <sh...@gmail.com> wrote:
>>> >>>>>>
>>> >>>>>> Hi devs,
>>> >>>>>>
>>> >>>>>> As this project is accepted for GSoC 2012, I would like
>>> >>>>>> to continue my work and looking forward to finish my project
>>> >>>>>> as a success in this summer. According to my mentor (Amila
>>> >>>>>> Suriarachchi)
>>> >>>>>> it is better to improve my knowledge further about Axis2
>>> >>>>>> architecture
>>> >>>>>> in this community bounding period. Therefore I'll start to read the
>>> >>>>>> Documentation and Apache Axis2 book.
>>> >>>>>>
>>> >>>>>> Andreas, as you mentioned in the previous mail thread[1] could you
>>> >>>>>> please point out some of the code samples in synapse which do
>>> >>>>>> a similar work as i do in my 2nd approach of the project?.
>>> >>>>>>
>>> >>>>>> I will use this thread for future discussion about the project.
>>> >>>>>> And I'll keep update my implementation patches to  AXIS2-5270 too.
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> [1]
>>> >>>>>>
>>> >>>>>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>>> >>>>>>
>>> >>>>>> Thanks
>>> >>>>>> Shameera.
>>> >>>>>>
>>> >>>>>> --
>>> >>>>>> Shameera Rathnayaka
>>> >>>>>> Undergraduate
>>> >>>>>> Department of Computer Science and Engineering
>>> >>>>>> University of Moratuwa.
>>> >>>>>> Sri Lanka.
>>> >>>>>>
>>> >>>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>> --
>>> >>>>> Shameera Rathnayaka
>>> >>>>> Undergraduate
>>> >>>>> Department of Computer Science and Engineering
>>> >>>>> University of Moratuwa.
>>> >>>>> Sri Lanka.
>>> >>>>>
>>> >>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>>>>
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> --
>>> >>>> Shameera Rathnayaka
>>> >>>> Undergraduate
>>> >>>> Department of Computer Science and Engineering
>>> >>>> University of Moratuwa.
>>> >>>> Sri Lanka.
>>> >>>>
>>> >>>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> Shameera Rathnayaka
>>> >>> Undergraduate
>>> >>> Department of Computer Science and Engineering
>>> >>> University of Moratuwa.
>>> >>> Sri Lanka.
>>> >>>
>>> >>> Blog : http://shameerarathnayaka.blogspot.com/
>>> >>>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> 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/
>>>
>>>
>>>
>>> --
>>> Sagara Gunathunga
>>>
>>> Blog      - http://ssagara.blogspot.com
>>> Web      - http://people.apache.org/~sagara/
>>> LinkedIn - http://www.linkedin.com/in/ssagara
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
>>> For additional commands, e-mail: java-dev-help@axis.apache.org
>>>
>>
>>
>>
>> --
>> Amila Suriarachchi
>> WSO2 Inc.
>> blog: http://amilachinthaka.blogspot.com/
>
>
>
> --
> Sagara Gunathunga
>
> Blog      - http://ssagara.blogspot.com
> Web      - http://people.apache.org/~sagara/
> LinkedIn - http://www.linkedin.com/in/ssagara



-- 
Sagara Gunathunga

Blog      - http://ssagara.blogspot.com
Web      - http://people.apache.org/~sagara/
LinkedIn - http://www.linkedin.com/in/ssagara

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Sagara Gunathunga <sa...@gmail.com>.
@Shmeera,

Can you look into how Apache Camel [1] [2] handle XML <=> JSON in your
use cases I believe you can find some hints from there ?

 [1] - http://camel.apache.org/xmljson.html
 [2] - http://json-lib.sourceforge.net/

 Thanks !

On Wed, Jul 4, 2012 at 3:37 PM, Amila Suriarachchi
<am...@gmail.com> wrote:
>
>
> On Mon, Jul 2, 2012 at 3:44 PM, Sagara Gunathunga
> <sa...@gmail.com> wrote:
>>
>> On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
>> <am...@gmail.com> wrote:
>> >
>> >
>> > On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
>> > <sh...@gmail.com> wrote:
>> >>
>> >> Hi devs,
>> >>
>> >> I have a problem with, writing OMElement to the wire
>> >> at the JsonFormatter, The problem is how do i identify
>> >> whether it is a JSON object or JSON array.
>> >>
>> >> As an example let's say i have this OMElement,
>> >>
>> >>     <student>
>> >>         <name>micky</name>
>> >>         <age>15</age>
>> >>         <subject>History</subject>
>> >>         <subject>Science</subject>
>> >>     </student>
>> >>
>> >> So the expected JSON Object is,
>> >> {"student":{"name":'micky" , "age":15 , "subject":["History",
>> >> "Science"]}}
>> >>
>> >> The thing is how should I know the student should be a JsonArray, when
>> >> i
>> >> receive a <subject> Start element?
>> >>
>> >> Another thing is if i get below OMElement, How do i know subject is a
>> >> JsonArray?
>> >>   <student>
>> >>         <name>micky</name>
>> >>         <age>15</age>
>> >>         <subject>History</subject>
>> >>     </student>
>> >>
>> >> The relevant JSON object should be,
>> >>
>> >> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
>> >>
>> >> It would be nice to hear your ideas to overcome these problems.
>> >
>> >
>> > It think we can not solve this issue unless the serialiser aware of some
>> > scheme. So this seems to be another limitation about converting xml to
>> > json
>> > and wise versa.
>> >
>> > Shall we follow this convention to over come this problem.
>> >
>> > if we take your example, shall we stick to a method where it always try
>> > to
>> > serialise fields as attributes unless we sure it is an array.
>> >
>> > For an example
>> >
>> > <student>
>> >         <name>micky</name>
>> >         <age>15</age>
>> >         <subject>History</subject>
>> >     </student>
>> >
>> > this will be
>> >
>> > {"student":{"name":'micky" , "age":15 , "subject":"History"}}
>> >
>> > and
>> >
>> > <student>
>> >         <name>micky</name>
>> >         <age>15</age>
>> >         <subject>History</subject>
>> >         <subject>Science</subject>
>> >     </student>
>> >
>> > {"student":{"name":'micky" , "age":15 , "subject":["History",
>> > "Science"]}}
>> >
>> > I think even implementation wise this will not be straight forward. The
>> > only
>> > thing we know for sure root element is not an array.
>> >
>> > Then after completing the first element, if the second element is also
>> > have
>> > the same element name then we can assume it is an array and other wise
>> > it is
>> > a normal attribute.
>>
>> Amila,
>>
>> Your suggestion introduce another problem, format of response JSON
>> message depends on return data quantities. As an example for a same
>> service it use two response formats when the response having size 1
>> array and having size > 1 arrays. I think this is a major issue for
>> caller side.
>
>
> yes. But as you can see this problem can not solve. so my suggestion works
> for single field elements. But for arrays it has the problem you mentioned.
> Receiving end should process the message accordingly.
>
>>
>>
>> What about to use hybrid approach where XMLStramReader based approach
>> ( 2nd approach)  use to handle incoming requests and use Gson stream
>> directly to write response message from Java ( Java => Gson)  without
>> using XMLStramWriter  (1st approach)    ?
>
>
> We already have java ==> Gson binding and it work fine.
>
> The idea of this is to implement an xml stream using json so that any
> service (eg POJO, ADB services) written top of those API can use that. But
> as Shammera pointed out this xml json conversion has problems.
>
> thanks,
> Amila.
>
>>
>>
>> Thanks !
>>
>> >
>> > thanks,
>> > Amila.
>> >
>> >
>> >>
>> >>
>> >> Thanks,
>> >> Shameera.
>> >>
>> >>
>> >>
>> >>
>> >> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka
>> >> <sh...@gmail.com> wrote:
>> >>>
>> >>> Hi devs,
>> >>>
>> >>>> Everything is fine, if i try to print OMElement using
>> >>>> omElement.toString();
>> >>>> it prints OMElement without any error. But after returning from
>> >>>> JsonBuilder,
>> >>>> and inside the TransportUtils class it throws a class cast exception
>> >>>> when it try
>> >>>> to add this returned OMelement to the SoapEnvelop by using
>> >>>> envelope.getBody().addChild(documentElement); here is the code
>> >>>> segment
>> >>>> in
>> >>>> TransportUtils class
>> >>>>
>> >>>> envelope = soapFactory.getDefaultEnvelope();
>> >>>> if (documentElement != null) {
>> >>>>      envelope.getBody().addChild(documentElement); // THIS LINE
>> >>>> THROWS
>> >>>> AN EXCEPTION
>> >>>> }
>> >>>>
>> >>>> The exception is  java.lang.ClassCastException:
>> >>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
>> >>>> org.apache.axiom.om.impl.OMNodeEx
>> >>>
>> >>>
>> >>> I could able to solve this , there was an error in my
>> >>> GsonXMLStreamReader
>> >>> , I had to dig AXIOM to identify this. AXIOM process the parser while
>> >>> it
>> >>> receive XMLStreamReader.END_ELEMENT but my implementation had an error
>> >>> returning the END_ELEMENT, I solved it now I an not getting above
>> >>> ClassCastException.
>> >>>
>> >>> Thanks,
>> >>> Shameera.
>> >>>
>> >>>>
>> >>>>
>> >>>> What should be the problem for this? , do i use wrong way to get
>> >>>> the OMElement or something else??  devs any comments on this ??
>> >>>>
>> >>>> Thanks,
>> >>>> Shameera.
>> >>>>
>> >>>>
>> >>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka
>> >>>> <sh...@gmail.com> wrote:
>> >>>>>
>> >>>>> Hi devs ,
>> >>>>>
>> >>>>> According to my second approach, I need to map json elements in
>> >>>>> request
>> >>>>> to relevant XML tags/text and vice versa. When i am working on this,
>> >>>>> there
>> >>>>> is a  problem arises that which convention should i expect for this.
>> >>>>> So i
>> >>>>> need to clarify whether the following convention is correct or are
>> >>>>> there any
>> >>>>> suggestions for it.
>> >>>>>
>> >>>>> json message
>> >>>>>
>> >>>>> {    "alise": {
>> >>>>>         "bob": {
>> >>>>>             "x": "valueX",
>> >>>>>             "y": "valueY",
>> >>>>>             "z": ["valueU","valueV","valueW"],
>> >>>>>             "l": { "name": "john",  "age": 23 },
>> >>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]
>> >>>>> }
>> >>>>> ]
>> >>>>>         }
>> >>>>>     }
>> >>>>> }
>> >>>>>
>> >>>>> Relevant,expected xml message from this json request (actually, it
>> >>>>> is
>> >>>>> not converted to xml)
>> >>>>>
>> >>>>>     <json>
>> >>>>>         <alise>
>> >>>>>             <bob>
>> >>>>>                 <x>valueX</x>
>> >>>>>                 <y>valueY</y>
>> >>>>>                 <z>valueU</z>
>> >>>>>                 <z>valueV</z>
>> >>>>>                 <z>valueW</z>
>> >>>>>                 <l>
>> >>>>>                     <name>john</name>
>> >>>>>                     <age>23</age>
>> >>>>>                 </l>
>> >>>>>                 <m>
>> >>>>>                     <a>A</a>
>> >>>>>                     <a>B</a>
>> >>>>>                     <a>C</a>
>> >>>>>                 </m>
>> >>>>>                 <m>
>> >>>>>                     <b>D</b>
>> >>>>>                     <b>E</b>
>> >>>>>                     <b>F</b>
>> >>>>>                 </m>
>> >>>>>             </bob>
>> >>>>>         </alise>
>> >>>>>     </json>
>> >>>>>
>> >>>>>
>> >>>>> Thanks
>> >>>>> Shameera.
>> >>>>>
>> >>>>>
>> >>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka
>> >>>>> <sh...@gmail.com> wrote:
>> >>>>>>
>> >>>>>> Hi devs,
>> >>>>>>
>> >>>>>> As this project is accepted for GSoC 2012, I would like
>> >>>>>> to continue my work and looking forward to finish my project
>> >>>>>> as a success in this summer. According to my mentor (Amila
>> >>>>>> Suriarachchi)
>> >>>>>> it is better to improve my knowledge further about Axis2
>> >>>>>> architecture
>> >>>>>> in this community bounding period. Therefore I'll start to read the
>> >>>>>> Documentation and Apache Axis2 book.
>> >>>>>>
>> >>>>>> Andreas, as you mentioned in the previous mail thread[1] could you
>> >>>>>> please point out some of the code samples in synapse which do
>> >>>>>> a similar work as i do in my 2nd approach of the project?.
>> >>>>>>
>> >>>>>> I will use this thread for future discussion about the project.
>> >>>>>> And I'll keep update my implementation patches to  AXIS2-5270 too.
>> >>>>>>
>> >>>>>>
>> >>>>>> [1]
>> >>>>>>
>> >>>>>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>> >>>>>>
>> >>>>>> Thanks
>> >>>>>> Shameera.
>> >>>>>>
>> >>>>>> --
>> >>>>>> Shameera Rathnayaka
>> >>>>>> Undergraduate
>> >>>>>> Department of Computer Science and Engineering
>> >>>>>> University of Moratuwa.
>> >>>>>> Sri Lanka.
>> >>>>>>
>> >>>>>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> --
>> >>>>> Shameera Rathnayaka
>> >>>>> Undergraduate
>> >>>>> Department of Computer Science and Engineering
>> >>>>> University of Moratuwa.
>> >>>>> Sri Lanka.
>> >>>>>
>> >>>>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Shameera Rathnayaka
>> >>>> Undergraduate
>> >>>> Department of Computer Science and Engineering
>> >>>> University of Moratuwa.
>> >>>> Sri Lanka.
>> >>>>
>> >>>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Shameera Rathnayaka
>> >>> Undergraduate
>> >>> Department of Computer Science and Engineering
>> >>> University of Moratuwa.
>> >>> Sri Lanka.
>> >>>
>> >>> Blog : http://shameerarathnayaka.blogspot.com/
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> 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/
>>
>>
>>
>> --
>> Sagara Gunathunga
>>
>> Blog      - http://ssagara.blogspot.com
>> Web      - http://people.apache.org/~sagara/
>> LinkedIn - http://www.linkedin.com/in/ssagara
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
>> For additional commands, e-mail: java-dev-help@axis.apache.org
>>
>
>
>
> --
> Amila Suriarachchi
> WSO2 Inc.
> blog: http://amilachinthaka.blogspot.com/



-- 
Sagara Gunathunga

Blog      - http://ssagara.blogspot.com
Web      - http://people.apache.org/~sagara/
LinkedIn - http://www.linkedin.com/in/ssagara

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Amila Suriarachchi <am...@gmail.com>.
On Mon, Jul 2, 2012 at 3:44 PM, Sagara Gunathunga <
sagara.gunathunga@gmail.com> wrote:

> On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
> <am...@gmail.com> wrote:
> >
> >
> > On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
> > <sh...@gmail.com> wrote:
> >>
> >> Hi devs,
> >>
> >> I have a problem with, writing OMElement to the wire
> >> at the JsonFormatter, The problem is how do i identify
> >> whether it is a JSON object or JSON array.
> >>
> >> As an example let's say i have this OMElement,
> >>
> >>     <student>
> >>         <name>micky</name>
> >>         <age>15</age>
> >>         <subject>History</subject>
> >>         <subject>Science</subject>
> >>     </student>
> >>
> >> So the expected JSON Object is,
> >> {"student":{"name":'micky" , "age":15 , "subject":["History",
> "Science"]}}
> >>
> >> The thing is how should I know the student should be a JsonArray, when i
> >> receive a <subject> Start element?
> >>
> >> Another thing is if i get below OMElement, How do i know subject is a
> >> JsonArray?
> >>   <student>
> >>         <name>micky</name>
> >>         <age>15</age>
> >>         <subject>History</subject>
> >>     </student>
> >>
> >> The relevant JSON object should be,
> >>
> >> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
> >>
> >> It would be nice to hear your ideas to overcome these problems.
> >
> >
> > It think we can not solve this issue unless the serialiser aware of some
> > scheme. So this seems to be another limitation about converting xml to
> json
> > and wise versa.
> >
> > Shall we follow this convention to over come this problem.
> >
> > if we take your example, shall we stick to a method where it always try
> to
> > serialise fields as attributes unless we sure it is an array.
> >
> > For an example
> >
> > <student>
> >         <name>micky</name>
> >         <age>15</age>
> >         <subject>History</subject>
> >     </student>
> >
> > this will be
> >
> > {"student":{"name":'micky" , "age":15 , "subject":"History"}}
> >
> > and
> >
> > <student>
> >         <name>micky</name>
> >         <age>15</age>
> >         <subject>History</subject>
> >         <subject>Science</subject>
> >     </student>
> >
> > {"student":{"name":'micky" , "age":15 , "subject":["History",
> "Science"]}}
> >
> > I think even implementation wise this will not be straight forward. The
> only
> > thing we know for sure root element is not an array.
> >
> > Then after completing the first element, if the second element is also
> have
> > the same element name then we can assume it is an array and other wise
> it is
> > a normal attribute.
>
> Amila,
>
> Your suggestion introduce another problem, format of response JSON
> message depends on return data quantities. As an example for a same
> service it use two response formats when the response having size 1
> array and having size > 1 arrays. I think this is a major issue for
> caller side.
>

yes. But as you can see this problem can not solve. so my suggestion works
for single field elements. But for arrays it has the problem you mentioned.
Receiving end should process the message accordingly.


>
> What about to use hybrid approach where XMLStramReader based approach
> ( 2nd approach)  use to handle incoming requests and use Gson stream
> directly to write response message from Java ( Java => Gson)  without
> using XMLStramWriter  (1st approach)    ?
>

We already have java ==> Gson binding and it work fine.

The idea of this is to implement an xml stream using json so that any
service (eg POJO, ADB services) written top of those API can use that. But
as Shammera pointed out this xml json conversion has problems.

thanks,
Amila.


>
> Thanks !
>
> >
> > thanks,
> > Amila.
> >
> >
> >>
> >>
> >> Thanks,
> >> Shameera.
> >>
> >>
> >>
> >>
> >> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka
> >> <sh...@gmail.com> wrote:
> >>>
> >>> Hi devs,
> >>>
> >>>> Everything is fine, if i try to print OMElement using
> >>>> omElement.toString();
> >>>> it prints OMElement without any error. But after returning from
> >>>> JsonBuilder,
> >>>> and inside the TransportUtils class it throws a class cast exception
> >>>> when it try
> >>>> to add this returned OMelement to the SoapEnvelop by using
> >>>> envelope.getBody().addChild(documentElement); here is the code segment
> >>>> in
> >>>> TransportUtils class
> >>>>
> >>>> envelope = soapFactory.getDefaultEnvelope();
> >>>> if (documentElement != null) {
> >>>>      envelope.getBody().addChild(documentElement); // THIS LINE THROWS
> >>>> AN EXCEPTION
> >>>> }
> >>>>
> >>>> The exception is  java.lang.ClassCastException:
> >>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
> >>>> org.apache.axiom.om.impl.OMNodeEx
> >>>
> >>>
> >>> I could able to solve this , there was an error in my
> GsonXMLStreamReader
> >>> , I had to dig AXIOM to identify this. AXIOM process the parser while
> it
> >>> receive XMLStreamReader.END_ELEMENT but my implementation had an error
> >>> returning the END_ELEMENT, I solved it now I an not getting above
> >>> ClassCastException.
> >>>
> >>> Thanks,
> >>> Shameera.
> >>>
> >>>>
> >>>>
> >>>> What should be the problem for this? , do i use wrong way to get
> >>>> the OMElement or something else??  devs any comments on this ??
> >>>>
> >>>> Thanks,
> >>>> Shameera.
> >>>>
> >>>>
> >>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka
> >>>> <sh...@gmail.com> wrote:
> >>>>>
> >>>>> Hi devs ,
> >>>>>
> >>>>> According to my second approach, I need to map json elements in
> request
> >>>>> to relevant XML tags/text and vice versa. When i am working on this,
> there
> >>>>> is a  problem arises that which convention should i expect for this.
> So i
> >>>>> need to clarify whether the following convention is correct or are
> there any
> >>>>> suggestions for it.
> >>>>>
> >>>>> json message
> >>>>>
> >>>>> {    "alise": {
> >>>>>         "bob": {
> >>>>>             "x": "valueX",
> >>>>>             "y": "valueY",
> >>>>>             "z": ["valueU","valueV","valueW"],
> >>>>>             "l": { "name": "john",  "age": 23 },
> >>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]  }
> >>>>> ]
> >>>>>         }
> >>>>>     }
> >>>>> }
> >>>>>
> >>>>> Relevant,expected xml message from this json request (actually, it is
> >>>>> not converted to xml)
> >>>>>
> >>>>>     <json>
> >>>>>         <alise>
> >>>>>             <bob>
> >>>>>                 <x>valueX</x>
> >>>>>                 <y>valueY</y>
> >>>>>                 <z>valueU</z>
> >>>>>                 <z>valueV</z>
> >>>>>                 <z>valueW</z>
> >>>>>                 <l>
> >>>>>                     <name>john</name>
> >>>>>                     <age>23</age>
> >>>>>                 </l>
> >>>>>                 <m>
> >>>>>                     <a>A</a>
> >>>>>                     <a>B</a>
> >>>>>                     <a>C</a>
> >>>>>                 </m>
> >>>>>                 <m>
> >>>>>                     <b>D</b>
> >>>>>                     <b>E</b>
> >>>>>                     <b>F</b>
> >>>>>                 </m>
> >>>>>             </bob>
> >>>>>         </alise>
> >>>>>     </json>
> >>>>>
> >>>>>
> >>>>> Thanks
> >>>>> Shameera.
> >>>>>
> >>>>>
> >>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka
> >>>>> <sh...@gmail.com> wrote:
> >>>>>>
> >>>>>> Hi devs,
> >>>>>>
> >>>>>> As this project is accepted for GSoC 2012, I would like
> >>>>>> to continue my work and looking forward to finish my project
> >>>>>> as a success in this summer. According to my mentor (Amila
> >>>>>> Suriarachchi)
> >>>>>> it is better to improve my knowledge further about Axis2
> architecture
> >>>>>> in this community bounding period. Therefore I'll start to read the
> >>>>>> Documentation and Apache Axis2 book.
> >>>>>>
> >>>>>> Andreas, as you mentioned in the previous mail thread[1] could you
> >>>>>> please point out some of the code samples in synapse which do
> >>>>>> a similar work as i do in my 2nd approach of the project?.
> >>>>>>
> >>>>>> I will use this thread for future discussion about the project.
> >>>>>> And I'll keep update my implementation patches to  AXIS2-5270 too.
> >>>>>>
> >>>>>>
> >>>>>> [1]
> >>>>>>
> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
> >>>>>>
> >>>>>> Thanks
> >>>>>> Shameera.
> >>>>>>
> >>>>>> --
> >>>>>> Shameera Rathnayaka
> >>>>>> Undergraduate
> >>>>>> Department of Computer Science and Engineering
> >>>>>> University of Moratuwa.
> >>>>>> Sri Lanka.
> >>>>>>
> >>>>>> Blog : http://shameerarathnayaka.blogspot.com/
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Shameera Rathnayaka
> >>>>> Undergraduate
> >>>>> Department of Computer Science and Engineering
> >>>>> University of Moratuwa.
> >>>>> Sri Lanka.
> >>>>>
> >>>>> Blog : http://shameerarathnayaka.blogspot.com/
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Shameera Rathnayaka
> >>>> Undergraduate
> >>>> Department of Computer Science and Engineering
> >>>> University of Moratuwa.
> >>>> Sri Lanka.
> >>>>
> >>>> Blog : http://shameerarathnayaka.blogspot.com/
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> Shameera Rathnayaka
> >>> Undergraduate
> >>> Department of Computer Science and Engineering
> >>> University of Moratuwa.
> >>> Sri Lanka.
> >>>
> >>> Blog : http://shameerarathnayaka.blogspot.com/
> >>>
> >>
> >>
> >>
> >> --
> >> 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/
>
>
>
> --
> Sagara Gunathunga
>
> Blog      - http://ssagara.blogspot.com
> Web      - http://people.apache.org/~sagara/
> LinkedIn - http://www.linkedin.com/in/ssagara
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
> For additional commands, e-mail: java-dev-help@axis.apache.org
>
>


-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Sagara Gunathunga <sa...@gmail.com>.
On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
<am...@gmail.com> wrote:
>
>
> On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
> <sh...@gmail.com> wrote:
>>
>> Hi devs,
>>
>> I have a problem with, writing OMElement to the wire
>> at the JsonFormatter, The problem is how do i identify
>> whether it is a JSON object or JSON array.
>>
>> As an example let's say i have this OMElement,
>>
>>     <student>
>>         <name>micky</name>
>>         <age>15</age>
>>         <subject>History</subject>
>>         <subject>Science</subject>
>>     </student>
>>
>> So the expected JSON Object is,
>> {"student":{"name":'micky" , "age":15 , "subject":["History", "Science"]}}
>>
>> The thing is how should I know the student should be a JsonArray, when i
>> receive a <subject> Start element?
>>
>> Another thing is if i get below OMElement, How do i know subject is a
>> JsonArray?
>>   <student>
>>         <name>micky</name>
>>         <age>15</age>
>>         <subject>History</subject>
>>     </student>
>>
>> The relevant JSON object should be,
>>
>> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
>>
>> It would be nice to hear your ideas to overcome these problems.
>
>
> It think we can not solve this issue unless the serialiser aware of some
> scheme. So this seems to be another limitation about converting xml to json
> and wise versa.
>
> Shall we follow this convention to over come this problem.
>
> if we take your example, shall we stick to a method where it always try to
> serialise fields as attributes unless we sure it is an array.
>
> For an example
>
> <student>
>         <name>micky</name>
>         <age>15</age>
>         <subject>History</subject>
>     </student>
>
> this will be
>
> {"student":{"name":'micky" , "age":15 , "subject":"History"}}
>
> and
>
> <student>
>         <name>micky</name>
>         <age>15</age>
>         <subject>History</subject>
>         <subject>Science</subject>
>     </student>
>
> {"student":{"name":'micky" , "age":15 , "subject":["History", "Science"]}}
>
> I think even implementation wise this will not be straight forward. The only
> thing we know for sure root element is not an array.
>
> Then after completing the first element, if the second element is also have
> the same element name then we can assume it is an array and other wise it is
> a normal attribute.

Amila,

Your suggestion introduce another problem, format of response JSON
message depends on return data quantities. As an example for a same
service it use two response formats when the response having size 1
array and having size > 1 arrays. I think this is a major issue for
caller side.

What about to use hybrid approach where XMLStramReader based approach
( 2nd approach)  use to handle incoming requests and use Gson stream
directly to write response message from Java ( Java => Gson)  without
using XMLStramWriter  (1st approach)    ?

Thanks !

>
> thanks,
> Amila.
>
>
>>
>>
>> Thanks,
>> Shameera.
>>
>>
>>
>>
>> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka
>> <sh...@gmail.com> wrote:
>>>
>>> Hi devs,
>>>
>>>> Everything is fine, if i try to print OMElement using
>>>> omElement.toString();
>>>> it prints OMElement without any error. But after returning from
>>>> JsonBuilder,
>>>> and inside the TransportUtils class it throws a class cast exception
>>>> when it try
>>>> to add this returned OMelement to the SoapEnvelop by using
>>>> envelope.getBody().addChild(documentElement); here is the code segment
>>>> in
>>>> TransportUtils class
>>>>
>>>> envelope = soapFactory.getDefaultEnvelope();
>>>> if (documentElement != null) {
>>>>      envelope.getBody().addChild(documentElement); // THIS LINE THROWS
>>>> AN EXCEPTION
>>>> }
>>>>
>>>> The exception is  java.lang.ClassCastException:
>>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
>>>> org.apache.axiom.om.impl.OMNodeEx
>>>
>>>
>>> I could able to solve this , there was an error in my GsonXMLStreamReader
>>> , I had to dig AXIOM to identify this. AXIOM process the parser while it
>>> receive XMLStreamReader.END_ELEMENT but my implementation had an error
>>> returning the END_ELEMENT, I solved it now I an not getting above
>>> ClassCastException.
>>>
>>> Thanks,
>>> Shameera.
>>>
>>>>
>>>>
>>>> What should be the problem for this? , do i use wrong way to get
>>>> the OMElement or something else??  devs any comments on this ??
>>>>
>>>> Thanks,
>>>> Shameera.
>>>>
>>>>
>>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka
>>>> <sh...@gmail.com> wrote:
>>>>>
>>>>> Hi devs ,
>>>>>
>>>>> According to my second approach, I need to map json elements in request
>>>>> to relevant XML tags/text and vice versa. When i am working on this, there
>>>>> is a  problem arises that which convention should i expect for this. So i
>>>>> need to clarify whether the following convention is correct or are there any
>>>>> suggestions for it.
>>>>>
>>>>> json message
>>>>>
>>>>> {    "alise": {
>>>>>         "bob": {
>>>>>             "x": "valueX",
>>>>>             "y": "valueY",
>>>>>             "z": ["valueU","valueV","valueW"],
>>>>>             "l": { "name": "john",  "age": 23 },
>>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]  }
>>>>> ]
>>>>>         }
>>>>>     }
>>>>> }
>>>>>
>>>>> Relevant,expected xml message from this json request (actually, it is
>>>>> not converted to xml)
>>>>>
>>>>>     <json>
>>>>>         <alise>
>>>>>             <bob>
>>>>>                 <x>valueX</x>
>>>>>                 <y>valueY</y>
>>>>>                 <z>valueU</z>
>>>>>                 <z>valueV</z>
>>>>>                 <z>valueW</z>
>>>>>                 <l>
>>>>>                     <name>john</name>
>>>>>                     <age>23</age>
>>>>>                 </l>
>>>>>                 <m>
>>>>>                     <a>A</a>
>>>>>                     <a>B</a>
>>>>>                     <a>C</a>
>>>>>                 </m>
>>>>>                 <m>
>>>>>                     <b>D</b>
>>>>>                     <b>E</b>
>>>>>                     <b>F</b>
>>>>>                 </m>
>>>>>             </bob>
>>>>>         </alise>
>>>>>     </json>
>>>>>
>>>>>
>>>>> Thanks
>>>>> Shameera.
>>>>>
>>>>>
>>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka
>>>>> <sh...@gmail.com> wrote:
>>>>>>
>>>>>> Hi devs,
>>>>>>
>>>>>> As this project is accepted for GSoC 2012, I would like
>>>>>> to continue my work and looking forward to finish my project
>>>>>> as a success in this summer. According to my mentor (Amila
>>>>>> Suriarachchi)
>>>>>> it is better to improve my knowledge further about Axis2 architecture
>>>>>> in this community bounding period. Therefore I'll start to read the
>>>>>> Documentation and Apache Axis2 book.
>>>>>>
>>>>>> Andreas, as you mentioned in the previous mail thread[1] could you
>>>>>> please point out some of the code samples in synapse which do
>>>>>> a similar work as i do in my 2nd approach of the project?.
>>>>>>
>>>>>> I will use this thread for future discussion about the project.
>>>>>> And I'll keep update my implementation patches to  AXIS2-5270 too.
>>>>>>
>>>>>>
>>>>>> [1]
>>>>>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>>>>>>
>>>>>> Thanks
>>>>>> Shameera.
>>>>>>
>>>>>> --
>>>>>> Shameera Rathnayaka
>>>>>> Undergraduate
>>>>>> Department of Computer Science and Engineering
>>>>>> University of Moratuwa.
>>>>>> Sri Lanka.
>>>>>>
>>>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Shameera Rathnayaka
>>>>> Undergraduate
>>>>> Department of Computer Science and Engineering
>>>>> University of Moratuwa.
>>>>> Sri Lanka.
>>>>>
>>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Shameera Rathnayaka
>>>> Undergraduate
>>>> Department of Computer Science and Engineering
>>>> University of Moratuwa.
>>>> Sri Lanka.
>>>>
>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>>
>>>
>>>
>>>
>>>
>>> --
>>> Shameera Rathnayaka
>>> Undergraduate
>>> Department of Computer Science and Engineering
>>> University of Moratuwa.
>>> Sri Lanka.
>>>
>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>
>>
>>
>>
>> --
>> 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/



-- 
Sagara Gunathunga

Blog      - http://ssagara.blogspot.com
Web      - http://people.apache.org/~sagara/
LinkedIn - http://www.linkedin.com/in/ssagara

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Amila Suriarachchi <am...@gmail.com>.
On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka <
shameerainfo@gmail.com> wrote:

> Hi devs,
>
> I have a problem with, writing OMElement to the wire
> at the JsonFormatter, The problem is how do i identify
> whether it is a JSON object or JSON array.
>
> As an example let's say i have this OMElement,
>
>     <student>
>         <name>micky</name>
>         <age>15</age>
>         <subject>History</subject>
>         <subject>Science</subject>
>     </student>
>
> So the expected JSON Object is,
> {"student":{"name":'micky" , "age":15 , "subject":["History", "Science"]}}
>
> The thing is how should I know the student should be a JsonArray, when i
> receive a <subject> Start element?
>
> Another thing is if i get below OMElement, How do i know subject is a
> JsonArray?
>   <student>
>         <name>micky</name>
>         <age>15</age>
>         <subject>History</subject>
>     </student>
>
> The relevant JSON object should be,
>
> {"student":{"name":'micky" , "age":15 , "subject":["History"]}}
>
> It would be nice to hear your ideas to overcome these problems.
>

It think we can not solve this issue unless the serialiser aware of some
scheme. So this seems to be another limitation about converting xml to json
and wise versa.

Shall we follow this convention to over come this problem.

if we take your example, shall we stick to a method where it always try to
serialise fields as attributes unless we sure it is an array.

For an example

<student>
        <name>micky</name>
        <age>15</age>
        <subject>History</subject>
    </student>

this will be

{"student":{"name":'micky" , "age":15 , "subject":"History"}}

and

<student>
        <name>micky</name>
        <age>15</age>
        <subject>History</subject>
        <subject>Science</subject>
    </student>

{"student":{"name":'micky" , "age":15 , "subject":["History", "Science"]}}

I think even implementation wise this will not be straight forward. The
only thing we know for sure root element is not an array.

Then after completing the first element, if the second element is also have
the same element name then we can assume it is an array and other wise it
is a normal attribute.

thanks,
Amila.



>
> Thanks,
> Shameera.
>
>
>
>
> On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka <
> shameerainfo@gmail.com> wrote:
>
>> Hi devs,
>>
>> Everything is fine, if i try to print OMElement using
>>> omElement.toString();
>>> it prints OMElement without any error. But after returning from
>>> JsonBuilder,
>>> and inside the TransportUtils class it throws a class cast exception
>>> when it try
>>> to add this returned OMelement to the SoapEnvelop by using
>>> envelope.getBody().addChild(documentElement); here is the code segment
>>> in
>>> TransportUtils class
>>>
>>> envelope = soapFactory.getDefaultEnvelope();
>>> if (documentElement != null) {
>>>      envelope.getBody().addChild(documentElement); // THIS LINE THROWS
>>> AN EXCEPTION
>>> }
>>>
>>> The exception is  *java.lang.ClassCastException:
>>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
>>> org.apache.axiom.om.impl.OMNodeEx*
>>
>>
>> I could able to solve this , there was an error in my GsonXMLStreamReader
>> , I had to dig AXIOM to identify this. AXIOM process the parser while it
>> receive XMLStreamReader.END_ELEMENT but my implementation had an error
>> returning the END_ELEMENT, I solved it now I an not getting above
>> ClassCastException.
>>
>> Thanks,
>> Shameera.
>>
>> *
>>> *
>>> What should be the problem for this? , do i use wrong way to get
>>> the OMElement or something else??  devs any comments on this ??
>>>
>>> Thanks,
>>> Shameera.
>>>
>>>
>>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka <
>>> shameerainfo@gmail.com> wrote:
>>>
>>>> Hi devs ,
>>>>
>>>> According to my second approach, I need to map json elements in request
>>>> to relevant XML tags/text and vice versa. When i am working on this, there
>>>> is a  problem arises that which convention should i expect for this. So i
>>>> need to clarify whether the following convention is correct or are there
>>>> any suggestions for it.
>>>>
>>>> json message
>>>>
>>>> {    "alise": {
>>>>         "bob": {
>>>>             "x": "valueX",
>>>>             "y": "valueY",
>>>>             "z": ["valueU","valueV","valueW"],
>>>>             "l": { "name": "john",  "age": 23 },
>>>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]  }  ]
>>>>         }
>>>>     }
>>>> }
>>>>
>>>> Relevant,expected xml message from this json request (actually, it is
>>>> not converted to xml)
>>>>
>>>>     <json>
>>>>         <alise>
>>>>             <bob>
>>>>                 <x>valueX</x>
>>>>                 <y>valueY</y>
>>>>                 <z>valueU</z>
>>>>                 <z>valueV</z>
>>>>                 <z>valueW</z>
>>>>                 <l>
>>>>                     <name>john</name>
>>>>                     <age>23</age>
>>>>                 </l>
>>>>                 <m>
>>>>                     <a>A</a>
>>>>                     <a>B</a>
>>>>                     <a>C</a>
>>>>                 </m>
>>>>                 <m>
>>>>                     <b>D</b>
>>>>                     <b>E</b>
>>>>                     <b>F</b>
>>>>                 </m>
>>>>             </bob>
>>>>         </alise>
>>>>     </json>
>>>>
>>>>
>>>> Thanks
>>>> Shameera.
>>>>
>>>>
>>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka <
>>>> shameerainfo@gmail.com> wrote:
>>>>
>>>>> Hi devs,
>>>>>
>>>>> As this project is accepted for GSoC 2012, I would like
>>>>> to continue my work and looking forward to finish my project
>>>>> as a success in this summer. According to my mentor (Amila
>>>>> Suriarachchi)
>>>>> it is better to improve my knowledge further about Axis2 architecture
>>>>> in this community bounding period. Therefore I'll start to read the
>>>>> Documentation and Apache Axis2 book.
>>>>>
>>>>> Andreas, as you mentioned in the previous mail thread[1] could you
>>>>> please point out some of the code samples in synapse which do
>>>>> a similar work as i do in my 2nd approach of the project?.
>>>>>
>>>>> I will use this thread for future discussion about the project.
>>>>> And I'll keep update my implementation patches to  AXIS2-5270<https://issues.apache.org/jira/browse/AXIS2-5270>too.
>>>>>
>>>>>
>>>>> [1]
>>>>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>>>>>
>>>>> Thanks
>>>>> Shameera.
>>>>>
>>>>> --
>>>>> Shameera Rathnayaka
>>>>> Undergraduate
>>>>> Department of Computer Science and Engineering
>>>>> University of Moratuwa.
>>>>> Sri Lanka.
>>>>>
>>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Shameera Rathnayaka
>>>> Undergraduate
>>>> Department of Computer Science and Engineering
>>>> University of Moratuwa.
>>>> Sri Lanka.
>>>>
>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>>
>>>>
>>>
>>>
>>> --
>>> Shameera Rathnayaka
>>> Undergraduate
>>> Department of Computer Science and Engineering
>>> University of Moratuwa.
>>> Sri Lanka.
>>>
>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>
>>>
>>
>>
>>
>> --
>> Shameera Rathnayaka
>> Undergraduate
>> Department of Computer Science and Engineering
>> University of Moratuwa.
>> Sri Lanka.
>>
>> Blog : http://shameerarathnayaka.blogspot.com/
>>
>>
>
>
> --
> 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/

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Shameera Rathnayaka <sh...@gmail.com>.
Hi devs,

I have a problem with, writing OMElement to the wire
at the JsonFormatter, The problem is how do i identify
whether it is a JSON object or JSON array.

As an example let's say i have this OMElement,

    <student>
        <name>micky</name>
        <age>15</age>
        <subject>History</subject>
        <subject>Science</subject>
    </student>

So the expected JSON Object is,
{"student":{"name":'micky" , "age":15 , "subject":["History", "Science"]}}

The thing is how should I know the student should be a JsonArray, when i
receive a <subject> Start element?

Another thing is if i get below OMElement, How do i know subject is a
JsonArray?
  <student>
        <name>micky</name>
        <age>15</age>
        <subject>History</subject>
    </student>

The relevant JSON object should be,

{"student":{"name":'micky" , "age":15 , "subject":["History"]}}

It would be nice to hear your ideas to overcome these problems.

Thanks,
Shameera.



On Mon, Jun 25, 2012 at 11:10 AM, Shameera Rathnayaka <
shameerainfo@gmail.com> wrote:

> Hi devs,
>
> Everything is fine, if i try to print OMElement using
>> omElement.toString();
>> it prints OMElement without any error. But after returning from
>> JsonBuilder,
>> and inside the TransportUtils class it throws a class cast exception when
>> it try
>> to add this returned OMelement to the SoapEnvelop by using
>> envelope.getBody().addChild(documentElement); here is the code segment in
>> TransportUtils class
>>
>> envelope = soapFactory.getDefaultEnvelope();
>> if (documentElement != null) {
>>      envelope.getBody().addChild(documentElement); // THIS LINE THROWS AN
>> EXCEPTION
>> }
>>
>> The exception is  *java.lang.ClassCastException:
>> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
>> org.apache.axiom.om.impl.OMNodeEx*
>
>
> I could able to solve this , there was an error in my GsonXMLStreamReader
> , I had to dig AXIOM to identify this. AXIOM process the parser while it
> receive XMLStreamReader.END_ELEMENT but my implementation had an error
> returning the END_ELEMENT, I solved it now I an not getting above
> ClassCastException.
>
> Thanks,
> Shameera.
>
> *
>> *
>> What should be the problem for this? , do i use wrong way to get
>> the OMElement or something else??  devs any comments on this ??
>>
>> Thanks,
>> Shameera.
>>
>>
>> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka <
>> shameerainfo@gmail.com> wrote:
>>
>>> Hi devs ,
>>>
>>> According to my second approach, I need to map json elements in request
>>> to relevant XML tags/text and vice versa. When i am working on this, there
>>> is a  problem arises that which convention should i expect for this. So i
>>> need to clarify whether the following convention is correct or are there
>>> any suggestions for it.
>>>
>>> json message
>>>
>>> {    "alise": {
>>>         "bob": {
>>>             "x": "valueX",
>>>             "y": "valueY",
>>>             "z": ["valueU","valueV","valueW"],
>>>             "l": { "name": "john",  "age": 23 },
>>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]  }  ]
>>>         }
>>>     }
>>> }
>>>
>>> Relevant,expected xml message from this json request (actually, it is
>>> not converted to xml)
>>>
>>>     <json>
>>>         <alise>
>>>             <bob>
>>>                 <x>valueX</x>
>>>                 <y>valueY</y>
>>>                 <z>valueU</z>
>>>                 <z>valueV</z>
>>>                 <z>valueW</z>
>>>                 <l>
>>>                     <name>john</name>
>>>                     <age>23</age>
>>>                 </l>
>>>                 <m>
>>>                     <a>A</a>
>>>                     <a>B</a>
>>>                     <a>C</a>
>>>                 </m>
>>>                 <m>
>>>                     <b>D</b>
>>>                     <b>E</b>
>>>                     <b>F</b>
>>>                 </m>
>>>             </bob>
>>>         </alise>
>>>     </json>
>>>
>>>
>>> Thanks
>>> Shameera.
>>>
>>>
>>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka <
>>> shameerainfo@gmail.com> wrote:
>>>
>>>> Hi devs,
>>>>
>>>> As this project is accepted for GSoC 2012, I would like
>>>> to continue my work and looking forward to finish my project
>>>> as a success in this summer. According to my mentor (Amila
>>>> Suriarachchi)
>>>> it is better to improve my knowledge further about Axis2 architecture
>>>> in this community bounding period. Therefore I'll start to read the
>>>> Documentation and Apache Axis2 book.
>>>>
>>>> Andreas, as you mentioned in the previous mail thread[1] could you
>>>> please point out some of the code samples in synapse which do
>>>> a similar work as i do in my 2nd approach of the project?.
>>>>
>>>> I will use this thread for future discussion about the project.
>>>> And I'll keep update my implementation patches to  AXIS2-5270<https://issues.apache.org/jira/browse/AXIS2-5270>too.
>>>>
>>>>
>>>> [1]
>>>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>>>>
>>>> Thanks
>>>> Shameera.
>>>>
>>>> --
>>>> Shameera Rathnayaka
>>>> Undergraduate
>>>> Department of Computer Science and Engineering
>>>> University of Moratuwa.
>>>> Sri Lanka.
>>>>
>>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>>
>>>>
>>>
>>>
>>> --
>>> Shameera Rathnayaka
>>> Undergraduate
>>> Department of Computer Science and Engineering
>>> University of Moratuwa.
>>> Sri Lanka.
>>>
>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>
>>>
>>
>>
>> --
>> Shameera Rathnayaka
>> Undergraduate
>> Department of Computer Science and Engineering
>> University of Moratuwa.
>> Sri Lanka.
>>
>> Blog : http://shameerarathnayaka.blogspot.com/
>>
>>
>
>
>
> --
> Shameera Rathnayaka
> Undergraduate
> Department of Computer Science and Engineering
> University of Moratuwa.
> Sri Lanka.
>
> Blog : http://shameerarathnayaka.blogspot.com/
>
>


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

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

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Shameera Rathnayaka <sh...@gmail.com>.
Hi devs,

Everything is fine, if i try to print OMElement using omElement.toString();
> it prints OMElement without any error. But after returning from
> JsonBuilder,
> and inside the TransportUtils class it throws a class cast exception when
> it try
> to add this returned OMelement to the SoapEnvelop by using
> envelope.getBody().addChild(documentElement); here is the code segment in
> TransportUtils class
>
> envelope = soapFactory.getDefaultEnvelope();
> if (documentElement != null) {
>      envelope.getBody().addChild(documentElement); // THIS LINE THROWS AN
> EXCEPTION
> }
>
> The exception is  *java.lang.ClassCastException:
> org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
> org.apache.axiom.om.impl.OMNodeEx*


I could able to solve this , there was an error in my GsonXMLStreamReader ,
I had to dig AXIOM to identify this. AXIOM process the parser while it
receive XMLStreamReader.END_ELEMENT but my implementation had an error
returning the END_ELEMENT, I solved it now I an not getting above
ClassCastException.

Thanks,
Shameera.

*
> *
> What should be the problem for this? , do i use wrong way to get
> the OMElement or something else??  devs any comments on this ??
>
> Thanks,
> Shameera.
>
>
> On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka <
> shameerainfo@gmail.com> wrote:
>
>> Hi devs ,
>>
>> According to my second approach, I need to map json elements in request
>> to relevant XML tags/text and vice versa. When i am working on this, there
>> is a  problem arises that which convention should i expect for this. So i
>> need to clarify whether the following convention is correct or are there
>> any suggestions for it.
>>
>> json message
>>
>> {    "alise": {
>>         "bob": {
>>             "x": "valueX",
>>             "y": "valueY",
>>             "z": ["valueU","valueV","valueW"],
>>             "l": { "name": "john",  "age": 23 },
>>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]  }  ]
>>         }
>>     }
>> }
>>
>> Relevant,expected xml message from this json request (actually, it is not
>> converted to xml)
>>
>>     <json>
>>         <alise>
>>             <bob>
>>                 <x>valueX</x>
>>                 <y>valueY</y>
>>                 <z>valueU</z>
>>                 <z>valueV</z>
>>                 <z>valueW</z>
>>                 <l>
>>                     <name>john</name>
>>                     <age>23</age>
>>                 </l>
>>                 <m>
>>                     <a>A</a>
>>                     <a>B</a>
>>                     <a>C</a>
>>                 </m>
>>                 <m>
>>                     <b>D</b>
>>                     <b>E</b>
>>                     <b>F</b>
>>                 </m>
>>             </bob>
>>         </alise>
>>     </json>
>>
>>
>> Thanks
>> Shameera.
>>
>>
>> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka <
>> shameerainfo@gmail.com> wrote:
>>
>>> Hi devs,
>>>
>>> As this project is accepted for GSoC 2012, I would like
>>> to continue my work and looking forward to finish my project
>>> as a success in this summer. According to my mentor (Amila Suriarachchi)
>>> it is better to improve my knowledge further about Axis2 architecture
>>> in this community bounding period. Therefore I'll start to read the
>>> Documentation and Apache Axis2 book.
>>>
>>> Andreas, as you mentioned in the previous mail thread[1] could you
>>> please point out some of the code samples in synapse which do
>>> a similar work as i do in my 2nd approach of the project?.
>>>
>>> I will use this thread for future discussion about the project.
>>> And I'll keep update my implementation patches to  AXIS2-5270<https://issues.apache.org/jira/browse/AXIS2-5270>too.
>>>
>>>
>>> [1]
>>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>>>
>>> Thanks
>>> Shameera.
>>>
>>> --
>>> Shameera Rathnayaka
>>> Undergraduate
>>> Department of Computer Science and Engineering
>>> University of Moratuwa.
>>> Sri Lanka.
>>>
>>> Blog : http://shameerarathnayaka.blogspot.com/
>>>
>>>
>>
>>
>> --
>> Shameera Rathnayaka
>> Undergraduate
>> Department of Computer Science and Engineering
>> University of Moratuwa.
>> Sri Lanka.
>>
>> Blog : http://shameerarathnayaka.blogspot.com/
>>
>>
>
>
> --
> Shameera Rathnayaka
> Undergraduate
> Department of Computer Science and Engineering
> University of Moratuwa.
> Sri Lanka.
>
> Blog : http://shameerarathnayaka.blogspot.com/
>
>



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

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

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Shameera Rathnayaka <sh...@gmail.com>.
Hi devs ,

I could able to implement GsonXMLStreamReader successfully.
Now i can pass JSON object and get relevant XML infoset,
according to the given JSON object. And i could able to get
OMElement using this. I used StAXOMBuilder API to get
the OMElement. here is the code segment i uses.

*XMLStreamReader xmlStreamReader = new GsonXMLStreamReader(jsonReader);
messageContext.setEnvelope(soapEnvelope);
StAXOMBuilder stAXOMBuilder = new StAXOMBuilder(xmlStreamReader);
OMElement omElement = stAXOMBuilder.getDocumentElement();*

Everything is fine, if i try to print OMElement using omElement.toString();
it prints OMElement without any error. But after returning from
JsonBuilder,
and inside the TransportUtils class it throws a class cast exception when
it try
to add this returned OMelement to the SoapEnvelop by using
envelope.getBody().addChild(documentElement); here is the code segment in
TransportUtils class

envelope = soapFactory.getDefaultEnvelope();
if (documentElement != null) {
     envelope.getBody().addChild(documentElement); // THIS LINE THROWS AN
EXCEPTION
}

The exception is  *java.lang.ClassCastException:
org.apache.axiom.om.impl.llom.OMDocumentImpl cannot be cast to
org.apache.axiom.om.impl.OMNodeEx
*
What should be the problem for this? , do i use wrong way to get
the OMElement or something else??  devs any comments on this ??

Thanks,
Shameera.

On Sat, May 5, 2012 at 11:30 AM, Shameera Rathnayaka <shameerainfo@gmail.com
> wrote:

> Hi devs ,
>
> According to my second approach, I need to map json elements in request to
> relevant XML tags/text and vice versa. When i am working on this, there is
> a  problem arises that which convention should i expect for this. So i need
> to clarify whether the following convention is correct or are there any
> suggestions for it.
>
> json message
>
> {    "alise": {
>         "bob": {
>             "x": "valueX",
>             "y": "valueY",
>             "z": ["valueU","valueV","valueW"],
>             "l": { "name": "john",  "age": 23 },
>             "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]  }  ]
>         }
>     }
> }
>
> Relevant,expected xml message from this json request (actually, it is not
> converted to xml)
>
>     <json>
>         <alise>
>             <bob>
>                 <x>valueX</x>
>                 <y>valueY</y>
>                 <z>valueU</z>
>                 <z>valueV</z>
>                 <z>valueW</z>
>                 <l>
>                     <name>john</name>
>                     <age>23</age>
>                 </l>
>                 <m>
>                     <a>A</a>
>                     <a>B</a>
>                     <a>C</a>
>                 </m>
>                 <m>
>                     <b>D</b>
>                     <b>E</b>
>                     <b>F</b>
>                 </m>
>             </bob>
>         </alise>
>     </json>
>
>
> Thanks
> Shameera.
>
>
> On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka <
> shameerainfo@gmail.com> wrote:
>
>> Hi devs,
>>
>> As this project is accepted for GSoC 2012, I would like
>> to continue my work and looking forward to finish my project
>> as a success in this summer. According to my mentor (Amila Suriarachchi)
>> it is better to improve my knowledge further about Axis2 architecture
>> in this community bounding period. Therefore I'll start to read the
>> Documentation and Apache Axis2 book.
>>
>> Andreas, as you mentioned in the previous mail thread[1] could you
>> please point out some of the code samples in synapse which do
>> a similar work as i do in my 2nd approach of the project?.
>>
>> I will use this thread for future discussion about the project.
>> And I'll keep update my implementation patches to  AXIS2-5270<https://issues.apache.org/jira/browse/AXIS2-5270>too.
>>
>>
>> [1]
>> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>>
>> Thanks
>> Shameera.
>>
>> --
>> Shameera Rathnayaka
>> Undergraduate
>> Department of Computer Science and Engineering
>> University of Moratuwa.
>> Sri Lanka.
>>
>> Blog : http://shameerarathnayaka.blogspot.com/
>>
>>
>
>
> --
> Shameera Rathnayaka
> Undergraduate
> Department of Computer Science and Engineering
> University of Moratuwa.
> Sri Lanka.
>
> Blog : http://shameerarathnayaka.blogspot.com/
>
>


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

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

Re: [GSOC 2012] Improve Json support in Axis2 with google-gson, [Part-2]

Posted by Shameera Rathnayaka <sh...@gmail.com>.
Hi devs ,

According to my second approach, I need to map json elements in request to
relevant XML tags/text and vice versa. When i am working on this, there is
a  problem arises that which convention should i expect for this. So i need
to clarify whether the following convention is correct or are there any
suggestions for it.

json message

{    "alise": {
        "bob": {
            "x": "valueX",
            "y": "valueY",
            "z": ["valueU","valueV","valueW"],
            "l": { "name": "john",  "age": 23 },
            "m": [ { "a": ["A","B","C" ]  }, { "b": ["D","E","F" ]  }  ]
        }
    }
}

Relevant,expected xml message from this json request (actually, it is not
converted to xml)

    <json>
        <alise>
            <bob>
                <x>valueX</x>
                <y>valueY</y>
                <z>valueU</z>
                <z>valueV</z>
                <z>valueW</z>
                <l>
                    <name>john</name>
                    <age>23</age>
                </l>
                <m>
                    <a>A</a>
                    <a>B</a>
                    <a>C</a>
                </m>
                <m>
                    <b>D</b>
                    <b>E</b>
                    <b>F</b>
                </m>
            </bob>
        </alise>
    </json>


Thanks
Shameera.

On Tue, Apr 24, 2012 at 7:12 PM, Shameera Rathnayaka <shameerainfo@gmail.com
> wrote:

> Hi devs,
>
> As this project is accepted for GSoC 2012, I would like
> to continue my work and looking forward to finish my project
> as a success in this summer. According to my mentor (Amila Suriarachchi)
> it is better to improve my knowledge further about Axis2 architecture
> in this community bounding period. Therefore I'll start to read the
> Documentation and Apache Axis2 book.
>
> Andreas, as you mentioned in the previous mail thread[1] could you
> please point out some of the code samples in synapse which do
> a similar work as i do in my 2nd approach of the project?.
>
> I will use this thread for future discussion about the project.
> And I'll keep update my implementation patches to  AXIS2-5270<https://issues.apache.org/jira/browse/AXIS2-5270>too.
>
>
> [1]
> http://axis.markmail.org/thread/4lg7xefplv7o65z6#query:page:1+mid:u7zauh37nj4mje6n+state:results
>
> Thanks
> Shameera.
>
> --
> Shameera Rathnayaka
> Undergraduate
> Department of Computer Science and Engineering
> University of Moratuwa.
> Sri Lanka.
>
> Blog : http://shameerarathnayaka.blogspot.com/
>
>


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

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