You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by Paul Fremantle <pz...@gmail.com> on 2007/09/14 11:41:42 UTC

Adding support for Payload data types into MessageContext and actually deeper into Axiom

I recently added a PayloadHelper class to Synapse.
http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/PayloadHelper.java

 It can help get/set the following datatypes from a MessageContext:

XML (OMElement)
XML (StAX)
Binary (DataHandler)
Text (String)
Map (I created a class called SimpleMap which only allows certain
simple datatypes as parameters - e.g. Int, Double, etc). see
http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SimpleMap.java
The map needs to have SimpleMap as a further data type allowing some
recursion. This would also allow Beans and JSON to be handled.

You can also find out what payload type the message is. These messages
are all stored as XML in the Body element using various tags.

for example binary data is always stored as: <ax:binary
xmlns:ax="http://ws.apache.org/commons/ns/binary">MTOM
here</ax:binary>

I'd like to move this support directly into the MessageContext class,
which will make it much easier to write mediators.

Secondly, I'd like to convert the Map model to use an OMSourcedElement
which would allow us to be more efficient about handling this type. In
other words, if I put in a Map and get it as a Map, no XML processing
happens. If someone remotely sends in an XML Map then I can access it
as a Map object, etc.

Thirdly, I'd like to add a Rowset object (also based on
OMSourcedElement) which allows us to pass around tabular data (JBDC
tables, etc)

So in summary, I'd like to be able to store and retrieve "natively"
the following datatypes:
* XML (obviously) but with access via: OM, DOM, StaX and String
* Text access via String/StringBuffer
* Bean/JSON/Map
* Binary access via DataHandler and byte[]
* Rowset

NEXT!

I *really* think this support should be in the base Axiom library.

Here are three reasons:
1) It means everyone will use the same code, eg. Axis2 JMS transport
will put a Map in and Synapse mediator will get it in the same way
2) If I just put it in Synapse then I have a problem syncing with
Axis2 transports. If I put it in Axis2 then I add a new dependency to
the public API of Synapse (which currently doesn't expose Axis2 - only
Axiom), or I do a lot of work to hide it.
3) I think this would be a really cool addition to Axiom!

Thoughts? Also, who is willing to work with me on coding this?

Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org


Re: Adding support for Payload data types into MessageContext and actually deeper into Axiom

Posted by Paul Fremantle <pz...@gmail.com>.
Another reason to do this at the Axiom level - I think we can build
support into the Jaxen XPath helper so that it efficiently computes
XPaths on Beans/Rowsets/recursive Maps.

Paul

On 9/14/07, Paul Fremantle <pz...@gmail.com> wrote:
> I recently added a PayloadHelper class to Synapse.
> http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/PayloadHelper.java
>
>  It can help get/set the following datatypes from a MessageContext:
>
> XML (OMElement)
> XML (StAX)
> Binary (DataHandler)
> Text (String)
> Map (I created a class called SimpleMap which only allows certain
> simple datatypes as parameters - e.g. Int, Double, etc). see
> http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SimpleMap.java
> The map needs to have SimpleMap as a further data type allowing some
> recursion. This would also allow Beans and JSON to be handled.
>
> You can also find out what payload type the message is. These messages
> are all stored as XML in the Body element using various tags.
>
> for example binary data is always stored as: <ax:binary
> xmlns:ax="http://ws.apache.org/commons/ns/binary">MTOM
> here</ax:binary>
>
> I'd like to move this support directly into the MessageContext class,
> which will make it much easier to write mediators.
>
> Secondly, I'd like to convert the Map model to use an OMSourcedElement
> which would allow us to be more efficient about handling this type. In
> other words, if I put in a Map and get it as a Map, no XML processing
> happens. If someone remotely sends in an XML Map then I can access it
> as a Map object, etc.
>
> Thirdly, I'd like to add a Rowset object (also based on
> OMSourcedElement) which allows us to pass around tabular data (JBDC
> tables, etc)
>
> So in summary, I'd like to be able to store and retrieve "natively"
> the following datatypes:
> * XML (obviously) but with access via: OM, DOM, StaX and String
> * Text access via String/StringBuffer
> * Bean/JSON/Map
> * Binary access via DataHandler and byte[]
> * Rowset
>
> NEXT!
>
> I *really* think this support should be in the base Axiom library.
>
> Here are three reasons:
> 1) It means everyone will use the same code, eg. Axis2 JMS transport
> will put a Map in and Synapse mediator will get it in the same way
> 2) If I just put it in Synapse then I have a problem syncing with
> Axis2 transports. If I put it in Axis2 then I add a new dependency to
> the public API of Synapse (which currently doesn't expose Axis2 - only
> Axiom), or I do a lot of work to hide it.
> 3) I think this would be a really cool addition to Axiom!
>
> Thoughts? Also, who is willing to work with me on coding this?
>
> Paul
>


-- 
Paul Fremantle
Co-Founder and VP of Technical Sales, WSO2
OASIS WS-RX TC Co-chair

blog: http://pzf.fremantle.org
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Re: Adding support for Payload data types into MessageContext and actually deeper into Axiom

Posted by David Illsley <da...@gmail.com>.
Paul,
That's all interesting stuff.... I'll confess I'm a little confused as
to whether you're proposing making Axiom aware of the Axis2
MessageContext class?
Cheers,
David

-- 
David Illsley - IBM Web Services Development

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org


Re: Adding support for Payload data types into MessageContext and actually deeper into Axiom

Posted by Paul Fremantle <pz...@gmail.com>.
Another reason to do this at the Axiom level - I think we can build
support into the Jaxen XPath helper so that it efficiently computes
XPaths on Beans/Rowsets/recursive Maps.

Paul

On 9/14/07, Paul Fremantle <pz...@gmail.com> wrote:
> I recently added a PayloadHelper class to Synapse.
> http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/PayloadHelper.java
>
>  It can help get/set the following datatypes from a MessageContext:
>
> XML (OMElement)
> XML (StAX)
> Binary (DataHandler)
> Text (String)
> Map (I created a class called SimpleMap which only allows certain
> simple datatypes as parameters - e.g. Int, Double, etc). see
> http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SimpleMap.java
> The map needs to have SimpleMap as a further data type allowing some
> recursion. This would also allow Beans and JSON to be handled.
>
> You can also find out what payload type the message is. These messages
> are all stored as XML in the Body element using various tags.
>
> for example binary data is always stored as: <ax:binary
> xmlns:ax="http://ws.apache.org/commons/ns/binary">MTOM
> here</ax:binary>
>
> I'd like to move this support directly into the MessageContext class,
> which will make it much easier to write mediators.
>
> Secondly, I'd like to convert the Map model to use an OMSourcedElement
> which would allow us to be more efficient about handling this type. In
> other words, if I put in a Map and get it as a Map, no XML processing
> happens. If someone remotely sends in an XML Map then I can access it
> as a Map object, etc.
>
> Thirdly, I'd like to add a Rowset object (also based on
> OMSourcedElement) which allows us to pass around tabular data (JBDC
> tables, etc)
>
> So in summary, I'd like to be able to store and retrieve "natively"
> the following datatypes:
> * XML (obviously) but with access via: OM, DOM, StaX and String
> * Text access via String/StringBuffer
> * Bean/JSON/Map
> * Binary access via DataHandler and byte[]
> * Rowset
>
> NEXT!
>
> I *really* think this support should be in the base Axiom library.
>
> Here are three reasons:
> 1) It means everyone will use the same code, eg. Axis2 JMS transport
> will put a Map in and Synapse mediator will get it in the same way
> 2) If I just put it in Synapse then I have a problem syncing with
> Axis2 transports. If I put it in Axis2 then I add a new dependency to
> the public API of Synapse (which currently doesn't expose Axis2 - only
> Axiom), or I do a lot of work to hide it.
> 3) I think this would be a really cool addition to Axiom!
>
> Thoughts? Also, who is willing to work with me on coding this?
>
> Paul
>


-- 
Paul Fremantle
Co-Founder and VP of Technical Sales, WSO2
OASIS WS-RX TC Co-chair

blog: http://pzf.fremantle.org
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org


Re: Adding support for Payload data types into MessageContext and actually deeper into Axiom

Posted by Paul Fremantle <pz...@gmail.com>.
Another reason to do this at the Axiom level - I think we can build
support into the Jaxen XPath helper so that it efficiently computes
XPaths on Beans/Rowsets/recursive Maps.

Paul

On 9/14/07, Paul Fremantle <pz...@gmail.com> wrote:
> I recently added a PayloadHelper class to Synapse.
> http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/PayloadHelper.java
>
>  It can help get/set the following datatypes from a MessageContext:
>
> XML (OMElement)
> XML (StAX)
> Binary (DataHandler)
> Text (String)
> Map (I created a class called SimpleMap which only allows certain
> simple datatypes as parameters - e.g. Int, Double, etc). see
> http://svn.apache.org/repos/asf/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SimpleMap.java
> The map needs to have SimpleMap as a further data type allowing some
> recursion. This would also allow Beans and JSON to be handled.
>
> You can also find out what payload type the message is. These messages
> are all stored as XML in the Body element using various tags.
>
> for example binary data is always stored as: <ax:binary
> xmlns:ax="http://ws.apache.org/commons/ns/binary">MTOM
> here</ax:binary>
>
> I'd like to move this support directly into the MessageContext class,
> which will make it much easier to write mediators.
>
> Secondly, I'd like to convert the Map model to use an OMSourcedElement
> which would allow us to be more efficient about handling this type. In
> other words, if I put in a Map and get it as a Map, no XML processing
> happens. If someone remotely sends in an XML Map then I can access it
> as a Map object, etc.
>
> Thirdly, I'd like to add a Rowset object (also based on
> OMSourcedElement) which allows us to pass around tabular data (JBDC
> tables, etc)
>
> So in summary, I'd like to be able to store and retrieve "natively"
> the following datatypes:
> * XML (obviously) but with access via: OM, DOM, StaX and String
> * Text access via String/StringBuffer
> * Bean/JSON/Map
> * Binary access via DataHandler and byte[]
> * Rowset
>
> NEXT!
>
> I *really* think this support should be in the base Axiom library.
>
> Here are three reasons:
> 1) It means everyone will use the same code, eg. Axis2 JMS transport
> will put a Map in and Synapse mediator will get it in the same way
> 2) If I just put it in Synapse then I have a problem syncing with
> Axis2 transports. If I put it in Axis2 then I add a new dependency to
> the public API of Synapse (which currently doesn't expose Axis2 - only
> Axiom), or I do a lot of work to hide it.
> 3) I think this would be a really cool addition to Axiom!
>
> Thoughts? Also, who is willing to work with me on coding this?
>
> Paul
>


-- 
Paul Fremantle
Co-Founder and VP of Technical Sales, WSO2
OASIS WS-RX TC Co-chair

blog: http://pzf.fremantle.org
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com

---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org