@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 <[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 --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
