[ 
https://issues.apache.org/jira/browse/AXIS2-5158?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Hodchenkov updated AXIS2-5158:
-----------------------------------

    Description: 
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/

  was:
RawXMLInOutMessageReceiver can be only used for JSON services for 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 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 pure JSON response.


[1] http://isurues.wordpress.com/2009/10/06/how-to-use-axis2-json/

    
> 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-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to