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 "Sagara Gunathunga (Commented) (JIRA)" <ji...@apache.org> on 2011/10/04 11:08:34 UTC
[jira] [Commented] (AXIS2-5158) Improve JSON support in Axis2
[ https://issues.apache.org/jira/browse/AXIS2-5158?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13119973#comment-13119973 ]
Sagara Gunathunga commented on AXIS2-5158:
-------------------------------------------
Other than above MessageReceiver limitation current JSON support perform number of extra XML/JSON conventions in both client and server sides in order to match with existing Axis2 architecture. The proper solution would be serialize/deserialize JSON to Java objects and back again directly but this required some refactoring , google-gson [1] can be a good framework for this propose with it's performance and streaming support.
BTW as a short term solution we can include your modification to work with RPCMessageReceivers. It's bit of difficult task to review raw source files instead can you please provide your modification as a svn patch file for Axis2 trunk. It Would be great if you can provide a unit test for this too .
[1] - http://code.google.com/p/google-gson/
> Improve JSON support in Axis2
> -----------------------------
>
> Key: AXIS2-5158
> URL: https://issues.apache.org/jira/browse/AXIS2-5158
> Project: Axis2
> Issue Type: Improvement
> Components: json
> Affects Versions: 1.6.1
> Reporter: Paul Hodchenkov
> Attachments: AbstractJSONBuilder.java, AbstractJSONMessageFormatter.java, ExtendedMappedXMLStreamWriter.java, JSONBadgerfishBuilder.java, JSONBadgerfishMessageFormatter.java, JSONMappedBuilder.java, JSONMessageFormatter.java
>
>
> RawXMLInOutMessageReceiver can be only used in JSON services now [1].
> However, JSON/badgerfish builder can be improved by handling RPCMessageReceiver correctly. I can't attach the patch because i have copy pasted and created my own formatters and builders(please find the source attached):
> 1) It is possible to solve the namespace problem described at [1] by explicitly converting JSON/badgerfish to SOAP in JSONbadgerfish builder :
> public OMElement processDocument(InputStream inputStream, String contentType,
> MessageContext messageContext) throws AxisFault {
> ....
> AbstractXMLInputFactory inputFactory = new BadgerFishXMLInputFactory();
> XMLStreamReader xmlReader = inputFactory.createXMLStreamReader(
> new JSONTokener(IOUtils.toString(reader)));
> OMNodeEx document = (OMNodeEx) new StAXOMBuilder(xmlReader).getDocumentElement();
> //removing parent
> document.setParent(null);
> //wrapping document with envelope
> SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
> SOAPEnvelope soapEnvelope = soapFactory.getDefaultEnvelope();
> SOAPBody body = soapEnvelope.getBody();
> body.addChild(document);
> soapEnvelope.build();
> //converting xml structure to soap xml structure,
> //this operation will construct SoapEnvelope,SoapBody,SoapFault instead of
> //regular OmElement
> StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(soapEnvelope.getXMLStreamReader(), null);
> return stAXSOAPModelBuilder.getSOAPEnvelope();
> ...
> }
> 2) jettison 1.2 has cool feature called setIgnoreNamespaces which allows to use json formatter with any xml.
> We use the these builders and formatters successfully with JSON/badgerfish request and JSON response.
> [1] http://isurues.wordpress.com/2009/10/06/how-to-use-axis2-json/
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org