Hi devs,

On Sun, Jul 8, 2012 at 8:18 AM, Amila Suriarachchi <
[email protected]> 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 <
> [email protected]> 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 <
>> [email protected]> wrote:
>>
>>> On Fri, Jul 6, 2012 at 10:38 AM, Sagara Gunathunga
>>> <[email protected]> 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
>>> > <[email protected]> wrote:
>>> >>
>>> >>
>>> >> On Mon, Jul 2, 2012 at 3:44 PM, Sagara Gunathunga
>>> >> <[email protected]> wrote:
>>> >>>
>>> >>> On Sun, Jul 1, 2012 at 8:50 PM, Amila Suriarachchi
>>> >>> <[email protected]> wrote:
>>> >>> >
>>> >>> >
>>> >>> > On Fri, Jun 29, 2012 at 12:23 PM, Shameera Rathnayaka
>>> >>> > <[email protected]> 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
>>> >>> >> <[email protected]> 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
>>> >>> >>>> <[email protected]> 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
>>> >>> >>>>> <[email protected]> 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: [email protected]
>>> >>> For additional commands, e-mail: [email protected]
>>> >>>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> 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: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>
>>
>> --
>> 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/

Reply via email to