Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Won't Fix
-
Transports 1.0.0
-
None
-
None
Description
I have attached herewith a patch to support Object Messages. What I did is as follows
1) Add a content type rule as follows
<parameter name="transport.jms.ContentType">
<rules>
<objectMessage>application/java-serialized-object</objectMessage>
</rules>
</parameter>
Even there is no content type for Java object messages, I have to specify one due to fact the JMS message receiver validates the content type. Furthermore, if there is content type, we can specify message builder / formatters.
2) When an Object message is received, it is wrapped with an ObjectDataSource and processed by the ObjectMessageBuilder. Within the ObjectMessageBuilder , if the content type is ''application/java-serialized-object" , It just wraps the ObjectDataSource using a DataHandler. The actual object can be accessed directly through the ObjectDataSource. This is useful for Apache Synapse as a mediator can access the object directly and do whatever it needs. If the content type is something other than ''application/java-serialized-object", selects the correct builder for the content type and build the java object with it by giving object as an XML stream. I here used XML Encoder... I will change it later.
3) When sending Object Messages, within the JMS transport, the object can be directly accessed from the ObjectDataSource. For other transport, if it is useful, ObjectMessageFormatter can be used.At later, I can improve ObjectDataSource to rerun the representation of Object based on the content type. E.g. XML, byte, etc... representations
Any feedback is welcome. I will improve as per any suggestions and update the patch
Thanks Indika