axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Veithen (JIRA)" <>
Subject [jira] [Commented] (AXIS2-5158) Improve JSON support in Axis2
Date Wed, 02 May 2012 21:08:49 GMT


Andreas Veithen commented on AXIS2-5158:

The code in Axis2 trunk now fully supports both Badgerfish and mapped JSON. This works out
of the box with data bindings, including POJO services.

To use mapped JSON, add a xmlToJsonNamespaceMap parameter to the service configuration to
define the mappings between XML and JSON namespaces, as shown in the following sample:

<service name="POJOService" scope="application" targetNamespace="">
    <description>POJO Service</description>
    <schema schemaNamespace=""/>
        <messageReceiver mep="" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceiver mep="" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    <parameter name="ServiceClass">org.apache.axis2.json.POJOService</parameter>
    <parameter name="xmlToJsonNamespaceMap">
        <mapping xmlNamespace="" jsonNamespace=""/>

There are a couple more things to be done before the issue can be closed:
* Add/update documentation.
* The new JSON code relies on the feature introduced by AXIOM-399, but that feature doesn't
interact in an optimal way with the optimizations described in AXIOM-282.
* Check that the feature can be used with Synapse (and maybe add a new sample).
> Improve JSON support in Axis2
> -----------------------------
>                 Key: AXIS2-5158
>                 URL:
>             Project: Axis2
>          Issue Type: Improvement
>          Components: json
>    Affects Versions: 1.6.1
>            Reporter: Paul Hodchenkov
>            Assignee: Andreas Veithen
>         Attachments:,,,,,,
> 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);
>  //converting xml structure to soap xml structure,
> //this operation will construct SoapEnvelope,SoapBody,SoapFault instead of
> //regular OmElement
> StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(soapEnvelope.getXMLStreamReader(),
> 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]

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message