[
https://issues.apache.org/jira/browse/AMQ-3388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marcel Casado updated AMQ-3388:
-------------------------------
Attachment: AMQ-3388.patch
In this patch a Factory for stream is added and all the classes that need and
instance uses is static method to get a new instance. The method has a flag
whether to create to create it with a wrapper that ignores unknown fields. All
the classes needing a XStream instance ask for the ignoring fields instance
giving some flexibility on changes in the commands APT with respecto fields. In
the future xstream could provide this in a more configurable way
:http://jira.codehaus.org/browse/XSTR-30
> Http/https protocol uses Xstream for serializing commands in xml. Field
> additions to the commands bresks xtream serializacion between amq versions
> ---------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-3388
> URL: https://issues.apache.org/jira/browse/AMQ-3388
> Project: ActiveMQ
> Issue Type: Improvement
> Components: Transport
> Affects Versions: 5.4.1, 5.4.2, 5.5.0
> Reporter: Marcel Casado
> Attachments: AMQ-3388.patch
>
>
> Addition of fields in commands used between clients and brokers in newer amq
> versions breaks easily the http transport that uses xstream for xml
> serialization.
> To make xstream more tolerant to this changes between versions in
> org.apache.activemq.transport.xstream.XStreamWireFormat we could add the code
> below so xstream ignores unknown fields :
> // Implementation methods
> //
> -------------------------------------------------------------------------
> protected XStream createXStream() {
> // return new XStream();
> return new XStream() {
> protected MapperWrapper wrapMapper(MapperWrapper next) {
> return new MapperWrapper(next) {
> public boolean shouldSerializeMember(Class definedIn,
> String fieldName) {
> return definedIn != Object.class ?
> super.shouldSerializeMember(definedIn, fieldName) : false;
> }
> };
> }
> };
> }
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira