activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tab...@apache.org
Subject [41/41] activemq-openwire git commit: OPENWIRE-19
Date Tue, 01 Dec 2015 19:18:00 GMT
OPENWIRE-19

Create an annotation based codec generator and a set of openwire
annotations that can be used to decorate openwire commands to define the
openwire command set and any extensions.  

OPENWIRE-10 

Create a marsaller implementation that uses the openwire annotations to
generate a single codec capable of encoding and decoding all openwire
versions.  Move all single version codecs into the legacy module.

Project: http://git-wip-us.apache.org/repos/asf/activemq-openwire/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-openwire/commit/0c90d2e3
Tree: http://git-wip-us.apache.org/repos/asf/activemq-openwire/tree/0c90d2e3
Diff: http://git-wip-us.apache.org/repos/asf/activemq-openwire/diff/0c90d2e3

Branch: refs/heads/master
Commit: 0c90d2e3d410666cb4616436c9610813a4622b79
Parents: 1705e0e
Author: Timothy Bish <tabish121@gmail.com>
Authored: Tue Dec 1 14:16:32 2015 -0500
Committer: Timothy Bish <tabish121@gmail.com>
Committed: Tue Dec 1 14:16:32 2015 -0500

----------------------------------------------------------------------
 openwire-annotations/.gitignore                 |   1 +
 openwire-annotations/pom.xml                    |  31 +
 .../annotations/OpenWireDocumentation.java      |  38 +
 .../openwire/annotations/OpenWireExtension.java |  40 ++
 .../openwire/annotations/OpenWireProperty.java  |  43 ++
 .../openwire/annotations/OpenWireType.java      |  34 +
 openwire-core/pom.xml                           | 190 ++---
 .../activemq/openwire/codec/OpenWireFormat.java |  86 ++-
 .../codec/universal/BaseCommandMarshaller.java  | 119 ++++
 .../codec/universal/BrokerIdMarshaller.java     | 131 ++++
 .../codec/universal/BrokerInfoMarshaller.java   | 259 +++++++
 .../universal/ConnectionControlMarshaller.java  | 216 ++++++
 .../universal/ConnectionErrorMarshaller.java    | 136 ++++
 .../codec/universal/ConnectionIdMarshaller.java | 131 ++++
 .../universal/ConnectionInfoMarshaller.java     | 244 +++++++
 .../universal/ConsumerControlMarshaller.java    | 205 ++++++
 .../codec/universal/ConsumerIdMarshaller.java   | 141 ++++
 .../codec/universal/ConsumerInfoMarshaller.java | 279 ++++++++
 .../universal/ControlCommandMarshaller.java     | 131 ++++
 .../universal/DataArrayResponseMarshaller.java  | 149 ++++
 .../codec/universal/DataResponseMarshaller.java | 131 ++++
 .../universal/DestinationInfoMarshaller.java    | 168 +++++
 .../universal/DiscoveryEventMarshaller.java     | 136 ++++
 .../universal/ExceptionResponseMarshaller.java  | 131 ++++
 .../codec/universal/FlushCommandMarshaller.java | 114 +++
 .../universal/IntegerResponseMarshaller.java    | 130 ++++
 .../universal/JournalQueueAckMarshaller.java    | 136 ++++
 .../universal/JournalTopicAckMarshaller.java    | 156 ++++
 .../codec/universal/JournalTraceMarshaller.java | 131 ++++
 .../universal/JournalTransactionMarshaller.java | 140 ++++
 .../universal/KeepAliveInfoMarshaller.java      | 114 +++
 .../universal/LastPartialCommandMarshaller.java | 114 +++
 .../universal/LocalTransactionIdMarshaller.java | 136 ++++
 .../codec/universal/MarshallerFactory.java      | 101 +++
 .../codec/universal/MessageAckMarshaller.java   | 179 +++++
 .../universal/MessageDispatchMarshaller.java    | 145 ++++
 .../MessageDispatchNotificationMarshaller.java  | 146 ++++
 .../codec/universal/MessageIdMarshaller.java    | 161 +++++
 .../codec/universal/MessageMarshaller.java      | 362 ++++++++++
 .../codec/universal/MessagePullMarshaller.java  | 176 +++++
 .../NetworkBridgeFilterMarshaller.java          | 164 +++++
 .../OpenWireBlobMessageMarshaller.java          | 176 +++++
 .../OpenWireBytesMessageMarshaller.java         | 114 +++
 .../OpenWireDestinationMarshaller.java          | 115 +++
 .../universal/OpenWireMapMessageMarshaller.java | 114 +++
 .../universal/OpenWireMessageMarshaller.java    | 114 +++
 .../OpenWireObjectMessageMarshaller.java        | 114 +++
 .../universal/OpenWireQueueMarshaller.java      | 114 +++
 .../OpenWireStreamMessageMarshaller.java        | 114 +++
 .../OpenWireTempDestinationMarshaller.java      |  98 +++
 .../universal/OpenWireTempQueueMarshaller.java  | 114 +++
 .../universal/OpenWireTempTopicMarshaller.java  | 114 +++
 .../OpenWireTextMessageMarshaller.java          | 114 +++
 .../universal/OpenWireTopicMarshaller.java      | 114 +++
 .../universal/PartialCommandMarshaller.java     | 135 ++++
 .../codec/universal/ProducerAckMarshaller.java  | 160 +++++
 .../codec/universal/ProducerIdMarshaller.java   | 141 ++++
 .../codec/universal/ProducerInfoMarshaller.java | 193 +++++
 .../codec/universal/RemoveInfoMarshaller.java   | 151 ++++
 .../RemoveSubscriptionInfoMarshaller.java       | 141 ++++
 .../universal/ReplayCommandMarshaller.java      | 134 ++++
 .../codec/universal/ResponseMarshaller.java     | 130 ++++
 .../codec/universal/SessionIdMarshaller.java    | 136 ++++
 .../codec/universal/SessionInfoMarshaller.java  | 131 ++++
 .../codec/universal/ShutdownInfoMarshaller.java | 114 +++
 .../universal/SubscriptionInfoMarshaller.java   | 181 +++++
 .../universal/TransactionIdMarshaller.java      |  98 +++
 .../universal/TransactionInfoMarshaller.java    | 140 ++++
 .../universal/WireFormatInfoMarshaller.java     | 154 ++++
 .../universal/XATransactionIdMarshaller.java    | 140 ++++
 .../codec/v1/BaseCommandMarshaller.java         | 109 ---
 .../openwire/codec/v1/BrokerIdMarshaller.java   | 118 ---
 .../openwire/codec/v1/BrokerInfoMarshaller.java | 175 -----
 .../codec/v1/ConnectionControlMarshaller.java   | 144 ----
 .../codec/v1/ConnectionErrorMarshaller.java     | 129 ----
 .../codec/v1/ConnectionIdMarshaller.java        | 124 ----
 .../codec/v1/ConnectionInfoMarshaller.java      | 189 -----
 .../codec/v1/ConsumerControlMarshaller.java     | 148 ----
 .../openwire/codec/v1/ConsumerIdMarshaller.java | 134 ----
 .../codec/v1/ConsumerInfoMarshaller.java        | 222 ------
 .../codec/v1/ControlCommandMarshaller.java      | 123 ----
 .../codec/v1/DataArrayResponseMarshaller.java   | 143 ----
 .../codec/v1/DataResponseMarshaller.java        | 123 ----
 .../v1/DataStructureSupportMarshaller.java      |  88 ---
 .../codec/v1/DestinationInfoMarshaller.java     | 164 -----
 .../codec/v1/DiscoveryEventMarshaller.java      | 129 ----
 .../codec/v1/ExceptionResponseMarshaller.java   | 123 ----
 .../codec/v1/FlushCommandMarshaller.java        | 107 ---
 .../codec/v1/IntegerResponseMarshaller.java     | 119 ----
 .../codec/v1/JournalQueueAckMarshaller.java     | 130 ----
 .../codec/v1/JournalTopicAckMarshaller.java     | 150 ----
 .../codec/v1/JournalTraceMarshaller.java        | 124 ----
 .../codec/v1/JournalTransactionMarshaller.java  | 133 ----
 .../codec/v1/KeepAliveInfoMarshaller.java       | 107 ---
 .../codec/v1/LastPartialCommandMarshaller.java  | 107 ---
 .../codec/v1/LocalTransactionIdMarshaller.java  | 128 ----
 .../openwire/codec/v1/MarshallerFactory.java    |  95 ---
 .../openwire/codec/v1/MessageAckMarshaller.java | 152 ----
 .../codec/v1/MessageDispatchMarshaller.java     | 139 ----
 .../MessageDispatchNotificationMarshaller.java  | 140 ----
 .../openwire/codec/v1/MessageIdMarshaller.java  | 134 ----
 .../openwire/codec/v1/MessageMarshaller.java    | 258 -------
 .../codec/v1/NetworkBridgeFilterMarshaller.java | 129 ----
 .../v1/OpenWireBytesMessageMarshaller.java      | 107 ---
 .../codec/v1/OpenWireDestinationMarshaller.java | 107 ---
 .../codec/v1/OpenWireMapMessageMarshaller.java  | 107 ---
 .../codec/v1/OpenWireMessageMarshaller.java     | 107 ---
 .../v1/OpenWireObjectMessageMarshaller.java     | 107 ---
 .../codec/v1/OpenWireQueueMarshaller.java       | 107 ---
 .../v1/OpenWireStreamMessageMarshaller.java     | 107 ---
 .../v1/OpenWireTempDestinationMarshaller.java   |  87 ---
 .../codec/v1/OpenWireTempQueueMarshaller.java   | 107 ---
 .../codec/v1/OpenWireTempTopicMarshaller.java   | 107 ---
 .../codec/v1/OpenWireTextMessageMarshaller.java | 108 ---
 .../codec/v1/OpenWireTopicMarshaller.java       | 107 ---
 .../codec/v1/PartialCommandMarshaller.java      | 128 ----
 .../openwire/codec/v1/ProducerIdMarshaller.java | 134 ----
 .../codec/v1/ProducerInfoMarshaller.java        | 156 ----
 .../openwire/codec/v1/RemoveInfoMarshaller.java | 123 ----
 .../v1/RemoveSubscriptionInfoMarshaller.java    | 134 ----
 .../codec/v1/ReplayCommandMarshaller.java       | 124 ----
 .../openwire/codec/v1/ResponseMarshaller.java   | 119 ----
 .../openwire/codec/v1/SessionIdMarshaller.java  | 130 ----
 .../codec/v1/SessionInfoMarshaller.java         | 124 ----
 .../codec/v1/ShutdownInfoMarshaller.java        | 107 ---
 .../codec/v1/SubscriptionInfoMarshaller.java    | 140 ----
 .../codec/v1/TransactionIdMarshaller.java       |  88 ---
 .../codec/v1/TransactionInfoMarshaller.java     | 134 ----
 .../codec/v1/WireFormatInfoMarshaller.java      | 150 ----
 .../codec/v1/XATransactionIdMarshaller.java     | 138 ----
 .../codec/v10/BaseCommandMarshaller.java        | 109 ---
 .../openwire/codec/v10/BrokerIdMarshaller.java  | 124 ----
 .../codec/v10/BrokerInfoMarshaller.java         | 199 ------
 .../codec/v10/ConnectionControlMarshaller.java  | 163 -----
 .../codec/v10/ConnectionErrorMarshaller.java    | 129 ----
 .../codec/v10/ConnectionIdMarshaller.java       | 124 ----
 .../codec/v10/ConnectionInfoMarshaller.java     | 195 -----
 .../codec/v10/ConsumerControlMarshaller.java    | 154 ----
 .../codec/v10/ConsumerIdMarshaller.java         | 134 ----
 .../codec/v10/ConsumerInfoMarshaller.java       | 253 -------
 .../codec/v10/ControlCommandMarshaller.java     | 123 ----
 .../codec/v10/DataArrayResponseMarshaller.java  | 144 ----
 .../codec/v10/DataResponseMarshaller.java       | 123 ----
 .../codec/v10/DestinationInfoMarshaller.java    | 165 -----
 .../codec/v10/DiscoveryEventMarshaller.java     | 129 ----
 .../codec/v10/ExceptionResponseMarshaller.java  | 123 ----
 .../codec/v10/FlushCommandMarshaller.java       | 108 ---
 .../codec/v10/IntegerResponseMarshaller.java    | 119 ----
 .../codec/v10/JournalQueueAckMarshaller.java    | 131 ----
 .../codec/v10/JournalTopicAckMarshaller.java    | 152 ----
 .../codec/v10/JournalTraceMarshaller.java       | 124 ----
 .../codec/v10/JournalTransactionMarshaller.java | 134 ----
 .../codec/v10/KeepAliveInfoMarshaller.java      | 108 ---
 .../codec/v10/LastPartialCommandMarshaller.java | 108 ---
 .../codec/v10/LocalTransactionIdMarshaller.java | 129 ----
 .../openwire/codec/v10/MarshallerFactory.java   |  95 ---
 .../codec/v10/MessageAckMarshaller.java         | 160 -----
 .../codec/v10/MessageDispatchMarshaller.java    | 140 ----
 .../MessageDispatchNotificationMarshaller.java  | 141 ----
 .../openwire/codec/v10/MessageIdMarshaller.java | 140 ----
 .../openwire/codec/v10/MessageMarshaller.java   | 309 --------
 .../codec/v10/MessagePullMarshaller.java        | 146 ----
 .../v10/NetworkBridgeFilterMarshaller.java      | 133 ----
 .../v10/OpenWireBlobMessageMarshaller.java      | 133 ----
 .../v10/OpenWireBytesMessageMarshaller.java     | 107 ---
 .../v10/OpenWireDestinationMarshaller.java      | 105 ---
 .../codec/v10/OpenWireMapMessageMarshaller.java | 107 ---
 .../codec/v10/OpenWireMessageMarshaller.java    | 107 ---
 .../v10/OpenWireObjectMessageMarshaller.java    | 108 ---
 .../codec/v10/OpenWireQueueMarshaller.java      | 108 ---
 .../v10/OpenWireStreamMessageMarshaller.java    | 108 ---
 .../v10/OpenWireTempDestinationMarshaller.java  |  88 ---
 .../codec/v10/OpenWireTempQueueMarshaller.java  | 108 ---
 .../codec/v10/OpenWireTempTopicMarshaller.java  | 108 ---
 .../v10/OpenWireTextMessageMarshaller.java      | 108 ---
 .../codec/v10/OpenWireTopicMarshaller.java      | 108 ---
 .../codec/v10/PartialCommandMarshaller.java     | 128 ----
 .../codec/v10/ProducerAckMarshaller.java        | 128 ----
 .../codec/v10/ProducerIdMarshaller.java         | 134 ----
 .../codec/v10/ProducerInfoMarshaller.java       | 165 -----
 .../codec/v10/RemoveInfoMarshaller.java         | 128 ----
 .../v10/RemoveSubscriptionInfoMarshaller.java   | 135 ----
 .../codec/v10/ReplayCommandMarshaller.java      | 123 ----
 .../openwire/codec/v10/ResponseMarshaller.java  | 118 ---
 .../openwire/codec/v10/SessionIdMarshaller.java | 129 ----
 .../codec/v10/SessionInfoMarshaller.java        | 124 ----
 .../codec/v10/ShutdownInfoMarshaller.java       | 107 ---
 .../codec/v10/SubscriptionInfoMarshaller.java   | 145 ----
 .../codec/v10/TransactionIdMarshaller.java      |  88 ---
 .../codec/v10/TransactionInfoMarshaller.java    | 134 ----
 .../codec/v10/WireFormatInfoMarshaller.java     | 149 ----
 .../codec/v10/XATransactionIdMarshaller.java    | 132 ----
 .../codec/v11/BaseCommandMarshaller.java        | 109 ---
 .../openwire/codec/v11/BrokerIdMarshaller.java  | 124 ----
 .../codec/v11/BrokerInfoMarshaller.java         | 199 ------
 .../codec/v11/ConnectionControlMarshaller.java  | 163 -----
 .../codec/v11/ConnectionErrorMarshaller.java    | 129 ----
 .../codec/v11/ConnectionIdMarshaller.java       | 124 ----
 .../codec/v11/ConnectionInfoMarshaller.java     | 195 -----
 .../codec/v11/ConsumerControlMarshaller.java    | 154 ----
 .../codec/v11/ConsumerIdMarshaller.java         | 134 ----
 .../codec/v11/ConsumerInfoMarshaller.java       | 253 -------
 .../codec/v11/ControlCommandMarshaller.java     | 123 ----
 .../codec/v11/DataArrayResponseMarshaller.java  | 144 ----
 .../codec/v11/DataResponseMarshaller.java       | 123 ----
 .../codec/v11/DestinationInfoMarshaller.java    | 165 -----
 .../codec/v11/DiscoveryEventMarshaller.java     | 129 ----
 .../codec/v11/ExceptionResponseMarshaller.java  | 123 ----
 .../codec/v11/FlushCommandMarshaller.java       | 108 ---
 .../codec/v11/IntegerResponseMarshaller.java    | 119 ----
 .../codec/v11/JournalQueueAckMarshaller.java    | 131 ----
 .../codec/v11/JournalTopicAckMarshaller.java    | 152 ----
 .../codec/v11/JournalTraceMarshaller.java       | 124 ----
 .../codec/v11/JournalTransactionMarshaller.java | 134 ----
 .../codec/v11/KeepAliveInfoMarshaller.java      | 108 ---
 .../codec/v11/LastPartialCommandMarshaller.java | 108 ---
 .../codec/v11/LocalTransactionIdMarshaller.java | 129 ----
 .../openwire/codec/v11/MarshallerFactory.java   |  95 ---
 .../codec/v11/MessageAckMarshaller.java         | 160 -----
 .../codec/v11/MessageDispatchMarshaller.java    | 140 ----
 .../MessageDispatchNotificationMarshaller.java  | 141 ----
 .../openwire/codec/v11/MessageIdMarshaller.java | 140 ----
 .../openwire/codec/v11/MessageMarshaller.java   | 309 --------
 .../codec/v11/MessagePullMarshaller.java        | 146 ----
 .../v11/NetworkBridgeFilterMarshaller.java      | 133 ----
 .../v11/OpenWireBlobMessageMarshaller.java      | 133 ----
 .../v11/OpenWireBytesMessageMarshaller.java     | 107 ---
 .../v11/OpenWireDestinationMarshaller.java      | 105 ---
 .../codec/v11/OpenWireMapMessageMarshaller.java | 107 ---
 .../codec/v11/OpenWireMessageMarshaller.java    | 107 ---
 .../v11/OpenWireObjectMessageMarshaller.java    | 108 ---
 .../codec/v11/OpenWireQueueMarshaller.java      | 108 ---
 .../v11/OpenWireStreamMessageMarshaller.java    | 108 ---
 .../v11/OpenWireTempDestinationMarshaller.java  |  88 ---
 .../codec/v11/OpenWireTempQueueMarshaller.java  | 108 ---
 .../codec/v11/OpenWireTempTopicMarshaller.java  | 108 ---
 .../v11/OpenWireTextMessageMarshaller.java      | 108 ---
 .../codec/v11/OpenWireTopicMarshaller.java      | 108 ---
 .../codec/v11/PartialCommandMarshaller.java     | 128 ----
 .../codec/v11/ProducerAckMarshaller.java        | 128 ----
 .../codec/v11/ProducerIdMarshaller.java         | 134 ----
 .../codec/v11/ProducerInfoMarshaller.java       | 165 -----
 .../codec/v11/RemoveInfoMarshaller.java         | 128 ----
 .../v11/RemoveSubscriptionInfoMarshaller.java   | 135 ----
 .../codec/v11/ReplayCommandMarshaller.java      | 123 ----
 .../openwire/codec/v11/ResponseMarshaller.java  | 118 ---
 .../openwire/codec/v11/SessionIdMarshaller.java | 129 ----
 .../codec/v11/SessionInfoMarshaller.java        | 124 ----
 .../codec/v11/ShutdownInfoMarshaller.java       | 107 ---
 .../codec/v11/SubscriptionInfoMarshaller.java   | 150 ----
 .../codec/v11/TransactionIdMarshaller.java      |  88 ---
 .../codec/v11/TransactionInfoMarshaller.java    | 134 ----
 .../codec/v11/WireFormatInfoMarshaller.java     | 149 ----
 .../codec/v11/XATransactionIdMarshaller.java    | 132 ----
 .../codec/v9/BaseCommandMarshaller.java         | 109 ---
 .../openwire/codec/v9/BrokerIdMarshaller.java   | 124 ----
 .../openwire/codec/v9/BrokerInfoMarshaller.java | 199 ------
 .../codec/v9/ConnectionControlMarshaller.java   | 163 -----
 .../codec/v9/ConnectionErrorMarshaller.java     | 129 ----
 .../codec/v9/ConnectionIdMarshaller.java        | 124 ----
 .../codec/v9/ConnectionInfoMarshaller.java      | 195 -----
 .../codec/v9/ConsumerControlMarshaller.java     | 154 ----
 .../openwire/codec/v9/ConsumerIdMarshaller.java | 134 ----
 .../codec/v9/ConsumerInfoMarshaller.java        | 248 -------
 .../codec/v9/ControlCommandMarshaller.java      | 123 ----
 .../codec/v9/DataArrayResponseMarshaller.java   | 144 ----
 .../codec/v9/DataResponseMarshaller.java        | 123 ----
 .../codec/v9/DestinationInfoMarshaller.java     | 165 -----
 .../codec/v9/DiscoveryEventMarshaller.java      | 129 ----
 .../codec/v9/ExceptionResponseMarshaller.java   | 123 ----
 .../codec/v9/FlushCommandMarshaller.java        | 108 ---
 .../codec/v9/IntegerResponseMarshaller.java     | 119 ----
 .../codec/v9/JournalQueueAckMarshaller.java     | 131 ----
 .../codec/v9/JournalTopicAckMarshaller.java     | 152 ----
 .../codec/v9/JournalTraceMarshaller.java        | 124 ----
 .../codec/v9/JournalTransactionMarshaller.java  | 134 ----
 .../codec/v9/KeepAliveInfoMarshaller.java       | 108 ---
 .../codec/v9/LastPartialCommandMarshaller.java  | 108 ---
 .../codec/v9/LocalTransactionIdMarshaller.java  | 129 ----
 .../openwire/codec/v9/MarshallerFactory.java    |  95 ---
 .../openwire/codec/v9/MessageAckMarshaller.java | 160 -----
 .../codec/v9/MessageDispatchMarshaller.java     | 140 ----
 .../MessageDispatchNotificationMarshaller.java  | 141 ----
 .../openwire/codec/v9/MessageIdMarshaller.java  | 135 ----
 .../openwire/codec/v9/MessageMarshaller.java    | 304 --------
 .../codec/v9/MessagePullMarshaller.java         | 146 ----
 .../codec/v9/NetworkBridgeFilterMarshaller.java |   1 -
 .../codec/v9/OpenWireBlobMessageMarshaller.java | 133 ----
 .../v9/OpenWireBytesMessageMarshaller.java      | 107 ---
 .../codec/v9/OpenWireDestinationMarshaller.java | 105 ---
 .../codec/v9/OpenWireMapMessageMarshaller.java  | 107 ---
 .../codec/v9/OpenWireMessageMarshaller.java     | 107 ---
 .../v9/OpenWireObjectMessageMarshaller.java     | 108 ---
 .../codec/v9/OpenWireQueueMarshaller.java       | 108 ---
 .../v9/OpenWireStreamMessageMarshaller.java     | 108 ---
 .../v9/OpenWireTempDestinationMarshaller.java   |  88 ---
 .../codec/v9/OpenWireTempQueueMarshaller.java   | 108 ---
 .../codec/v9/OpenWireTempTopicMarshaller.java   | 108 ---
 .../codec/v9/OpenWireTextMessageMarshaller.java | 108 ---
 .../codec/v9/OpenWireTopicMarshaller.java       | 108 ---
 .../codec/v9/PartialCommandMarshaller.java      | 128 ----
 .../codec/v9/ProducerAckMarshaller.java         | 128 ----
 .../openwire/codec/v9/ProducerIdMarshaller.java | 134 ----
 .../codec/v9/ProducerInfoMarshaller.java        | 165 -----
 .../openwire/codec/v9/RemoveInfoMarshaller.java | 128 ----
 .../v9/RemoveSubscriptionInfoMarshaller.java    | 135 ----
 .../codec/v9/ReplayCommandMarshaller.java       | 123 ----
 .../openwire/codec/v9/ResponseMarshaller.java   | 118 ---
 .../openwire/codec/v9/SessionIdMarshaller.java  | 129 ----
 .../codec/v9/SessionInfoMarshaller.java         | 124 ----
 .../codec/v9/ShutdownInfoMarshaller.java        | 107 ---
 .../codec/v9/SubscriptionInfoMarshaller.java    | 145 ----
 .../codec/v9/TransactionIdMarshaller.java       |  88 ---
 .../codec/v9/TransactionInfoMarshaller.java     | 134 ----
 .../codec/v9/WireFormatInfoMarshaller.java      | 149 ----
 .../codec/v9/XATransactionIdMarshaller.java     | 132 ----
 .../activemq/openwire/commands/BaseCommand.java |   7 +
 .../activemq/openwire/commands/BrokerId.java    |   6 +
 .../activemq/openwire/commands/BrokerInfo.java  |  33 +-
 .../openwire/commands/ConnectionControl.java    |  29 +-
 .../openwire/commands/ConnectionError.java      |   9 +-
 .../openwire/commands/ConnectionId.java         |   5 +
 .../openwire/commands/ConnectionInfo.java       |  29 +-
 .../openwire/commands/ConsumerControl.java      |  27 +-
 .../activemq/openwire/commands/ConsumerId.java  |  15 +
 .../openwire/commands/ConsumerInfo.java         |  58 +-
 .../openwire/commands/ControlCommand.java       |   5 +
 .../openwire/commands/DataArrayResponse.java    |   5 +
 .../openwire/commands/DataResponse.java         |   5 +
 .../openwire/commands/DestinationInfo.java      |  13 +
 .../openwire/commands/DiscoveryEvent.java       |   7 +
 .../openwire/commands/ExceptionResponse.java    |   5 +
 .../openwire/commands/FlushCommand.java         |   3 +
 .../openwire/commands/IntegerResponse.java      |   5 +
 .../openwire/commands/JournalQueueAck.java      |   7 +
 .../openwire/commands/JournalTopicAck.java      |  19 +-
 .../openwire/commands/JournalTrace.java         |   5 +
 .../openwire/commands/JournalTransaction.java   |  11 +-
 .../openwire/commands/KeepAliveInfo.java        |   3 +
 .../openwire/commands/LastPartialCommand.java   |   3 +
 .../openwire/commands/LocalTransactionId.java   |  13 +-
 .../activemq/openwire/commands/Message.java     | 102 ++-
 .../activemq/openwire/commands/MessageAck.java  |  27 +-
 .../openwire/commands/MessageDispatch.java      |  11 +
 .../commands/MessageDispatchNotification.java   |  13 +-
 .../activemq/openwire/commands/MessageId.java   |  14 +
 .../activemq/openwire/commands/MessagePull.java |  23 +-
 .../openwire/commands/NetworkBridgeFilter.java  |   8 +
 .../openwire/commands/OpenWireBlobMessage.java  |  17 +-
 .../openwire/commands/OpenWireBytesMessage.java |   2 +
 .../openwire/commands/OpenWireDestination.java  |  14 +
 .../openwire/commands/OpenWireMapMessage.java   |   4 +
 .../openwire/commands/OpenWireMessage.java      |   6 +
 .../commands/OpenWireObjectMessage.java         |   4 +
 .../openwire/commands/OpenWireQueue.java        |   3 +
 .../commands/OpenWireStreamMessage.java         |   2 +
 .../commands/OpenWireTempDestination.java       |   6 +
 .../openwire/commands/OpenWireTempQueue.java    |   3 +
 .../openwire/commands/OpenWireTempTopic.java    |   3 +
 .../openwire/commands/OpenWireTextMessage.java  |   4 +
 .../openwire/commands/OpenWireTopic.java        |   3 +
 .../openwire/commands/PartialCommand.java       |   7 +
 .../activemq/openwire/commands/ProducerAck.java |   7 +
 .../activemq/openwire/commands/ProducerId.java  |  17 +-
 .../openwire/commands/ProducerInfo.java         |  13 +
 .../activemq/openwire/commands/RemoveInfo.java  |   7 +
 .../commands/RemoveSubscriptionInfo.java        |  11 +-
 .../openwire/commands/ReplayCommand.java        |  24 +-
 .../activemq/openwire/commands/Response.java    |   6 +
 .../activemq/openwire/commands/SessionId.java   |  13 +
 .../activemq/openwire/commands/SessionInfo.java |   5 +
 .../openwire/commands/ShutdownInfo.java         |   3 +
 .../openwire/commands/SubscriptionInfo.java     |  21 +-
 .../openwire/commands/TransactionId.java        |   3 +
 .../openwire/commands/TransactionInfo.java      |  11 +-
 .../openwire/commands/WireFormatInfo.java       |  10 +
 .../openwire/commands/XATransactionId.java      |  18 +-
 .../activemq/openwire/utils/CronParser.java     | 357 ----------
 .../commands/OpenWireTextMessageTest.java       |   5 +-
 .../openwire/ide/OpenWireCodecGenerator.java    | 121 ----
 .../activemq/openwire/utils/CronParserTest.java | 363 ----------
 .../openwire/utils/MarshallingSupport.java      |  76 ++
 openwire-generator/pom.xml                      |  50 +-
 .../openwire/generator/AbstractGenerator.java   |  70 ++
 .../activemq/openwire/generator/Generator.java  |  32 +
 .../openwire/generator/GeneratorTask.java       | 203 ++----
 .../openwire/generator/GeneratorUtils.java      | 211 ++++++
 .../activemq/openwire/generator/Generators.java |  36 +
 .../generator/MarshallingGenerator.java         | 712 -------------------
 .../generator/MultiSourceGenerator.java         | 265 -------
 .../openwire/generator/OpenWireGenerator.java   | 178 -----
 .../generator/OpenWirePropertyDescriptor.java   | 139 ++++
 .../generator/OpenWireTypeDescriptor.java       | 124 ++++
 .../openwire/generator/TestDataGenerator.java   |  66 --
 .../openwire/generator/TestsGenerator.java      | 198 ------
 .../UniversalMarshallerFactoryGenerator.java    | 147 ++++
 .../builtin/UniversalMarshallerGenerator.java   | 660 +++++++++++++++++
 .../src/main/resources/log4j.properties         |  35 +
 .../activenq/openwire/generator/IDERunner.java  |  34 +
 openwire-interop-tests/pom.xml                  |  22 +-
 openwire-legacy/pom.xml                         |   4 -
 .../codec/v1/BaseCommandMarshaller.java         | 109 +++
 .../openwire/codec/v1/BrokerIdMarshaller.java   | 118 +++
 .../openwire/codec/v1/BrokerInfoMarshaller.java | 175 +++++
 .../codec/v1/ConnectionControlMarshaller.java   | 144 ++++
 .../codec/v1/ConnectionErrorMarshaller.java     | 129 ++++
 .../codec/v1/ConnectionIdMarshaller.java        | 124 ++++
 .../codec/v1/ConnectionInfoMarshaller.java      | 189 +++++
 .../codec/v1/ConsumerControlMarshaller.java     | 148 ++++
 .../openwire/codec/v1/ConsumerIdMarshaller.java | 134 ++++
 .../codec/v1/ConsumerInfoMarshaller.java        | 222 ++++++
 .../codec/v1/ControlCommandMarshaller.java      | 123 ++++
 .../codec/v1/DataArrayResponseMarshaller.java   | 143 ++++
 .../codec/v1/DataResponseMarshaller.java        | 123 ++++
 .../v1/DataStructureSupportMarshaller.java      |  88 +++
 .../codec/v1/DestinationInfoMarshaller.java     | 164 +++++
 .../codec/v1/DiscoveryEventMarshaller.java      | 129 ++++
 .../codec/v1/ExceptionResponseMarshaller.java   | 123 ++++
 .../codec/v1/FlushCommandMarshaller.java        | 107 +++
 .../codec/v1/IntegerResponseMarshaller.java     | 119 ++++
 .../codec/v1/JournalQueueAckMarshaller.java     | 130 ++++
 .../codec/v1/JournalTopicAckMarshaller.java     | 150 ++++
 .../codec/v1/JournalTraceMarshaller.java        | 124 ++++
 .../codec/v1/JournalTransactionMarshaller.java  | 133 ++++
 .../codec/v1/KeepAliveInfoMarshaller.java       | 107 +++
 .../codec/v1/LastPartialCommandMarshaller.java  | 107 +++
 .../codec/v1/LocalTransactionIdMarshaller.java  | 128 ++++
 .../openwire/codec/v1/MarshallerFactory.java    |  95 +++
 .../openwire/codec/v1/MessageAckMarshaller.java | 152 ++++
 .../codec/v1/MessageDispatchMarshaller.java     | 139 ++++
 .../MessageDispatchNotificationMarshaller.java  | 140 ++++
 .../openwire/codec/v1/MessageIdMarshaller.java  | 134 ++++
 .../openwire/codec/v1/MessageMarshaller.java    | 258 +++++++
 .../codec/v1/NetworkBridgeFilterMarshaller.java | 129 ++++
 .../v1/OpenWireBytesMessageMarshaller.java      | 107 +++
 .../codec/v1/OpenWireDestinationMarshaller.java | 107 +++
 .../codec/v1/OpenWireMapMessageMarshaller.java  | 107 +++
 .../codec/v1/OpenWireMessageMarshaller.java     | 107 +++
 .../v1/OpenWireObjectMessageMarshaller.java     | 107 +++
 .../codec/v1/OpenWireQueueMarshaller.java       | 107 +++
 .../v1/OpenWireStreamMessageMarshaller.java     | 107 +++
 .../v1/OpenWireTempDestinationMarshaller.java   |  87 +++
 .../codec/v1/OpenWireTempQueueMarshaller.java   | 107 +++
 .../codec/v1/OpenWireTempTopicMarshaller.java   | 107 +++
 .../codec/v1/OpenWireTextMessageMarshaller.java | 108 +++
 .../codec/v1/OpenWireTopicMarshaller.java       | 107 +++
 .../codec/v1/PartialCommandMarshaller.java      | 128 ++++
 .../openwire/codec/v1/ProducerIdMarshaller.java | 134 ++++
 .../codec/v1/ProducerInfoMarshaller.java        | 156 ++++
 .../openwire/codec/v1/RemoveInfoMarshaller.java | 123 ++++
 .../v1/RemoveSubscriptionInfoMarshaller.java    | 134 ++++
 .../codec/v1/ReplayCommandMarshaller.java       | 124 ++++
 .../openwire/codec/v1/ResponseMarshaller.java   | 119 ++++
 .../openwire/codec/v1/SessionIdMarshaller.java  | 130 ++++
 .../codec/v1/SessionInfoMarshaller.java         | 124 ++++
 .../codec/v1/ShutdownInfoMarshaller.java        | 107 +++
 .../codec/v1/SubscriptionInfoMarshaller.java    | 140 ++++
 .../codec/v1/TransactionIdMarshaller.java       |  88 +++
 .../codec/v1/TransactionInfoMarshaller.java     | 134 ++++
 .../codec/v1/WireFormatInfoMarshaller.java      | 150 ++++
 .../codec/v1/XATransactionIdMarshaller.java     | 138 ++++
 .../codec/v10/BaseCommandMarshaller.java        | 109 +++
 .../openwire/codec/v10/BrokerIdMarshaller.java  | 124 ++++
 .../codec/v10/BrokerInfoMarshaller.java         | 199 ++++++
 .../codec/v10/ConnectionControlMarshaller.java  | 163 +++++
 .../codec/v10/ConnectionErrorMarshaller.java    | 129 ++++
 .../codec/v10/ConnectionIdMarshaller.java       | 124 ++++
 .../codec/v10/ConnectionInfoMarshaller.java     | 195 +++++
 .../codec/v10/ConsumerControlMarshaller.java    | 154 ++++
 .../codec/v10/ConsumerIdMarshaller.java         | 134 ++++
 .../codec/v10/ConsumerInfoMarshaller.java       | 253 +++++++
 .../codec/v10/ControlCommandMarshaller.java     | 123 ++++
 .../codec/v10/DataArrayResponseMarshaller.java  | 144 ++++
 .../codec/v10/DataResponseMarshaller.java       | 123 ++++
 .../codec/v10/DestinationInfoMarshaller.java    | 165 +++++
 .../codec/v10/DiscoveryEventMarshaller.java     | 129 ++++
 .../codec/v10/ExceptionResponseMarshaller.java  | 123 ++++
 .../codec/v10/FlushCommandMarshaller.java       | 108 +++
 .../codec/v10/IntegerResponseMarshaller.java    | 119 ++++
 .../codec/v10/JournalQueueAckMarshaller.java    | 131 ++++
 .../codec/v10/JournalTopicAckMarshaller.java    | 152 ++++
 .../codec/v10/JournalTraceMarshaller.java       | 124 ++++
 .../codec/v10/JournalTransactionMarshaller.java | 134 ++++
 .../codec/v10/KeepAliveInfoMarshaller.java      | 108 +++
 .../codec/v10/LastPartialCommandMarshaller.java | 108 +++
 .../codec/v10/LocalTransactionIdMarshaller.java | 129 ++++
 .../openwire/codec/v10/MarshallerFactory.java   |  95 +++
 .../codec/v10/MessageAckMarshaller.java         | 160 +++++
 .../codec/v10/MessageDispatchMarshaller.java    | 140 ++++
 .../MessageDispatchNotificationMarshaller.java  | 141 ++++
 .../openwire/codec/v10/MessageIdMarshaller.java | 140 ++++
 .../openwire/codec/v10/MessageMarshaller.java   | 309 ++++++++
 .../codec/v10/MessagePullMarshaller.java        | 146 ++++
 .../v10/NetworkBridgeFilterMarshaller.java      | 133 ++++
 .../v10/OpenWireBlobMessageMarshaller.java      | 133 ++++
 .../v10/OpenWireBytesMessageMarshaller.java     | 107 +++
 .../v10/OpenWireDestinationMarshaller.java      | 105 +++
 .../codec/v10/OpenWireMapMessageMarshaller.java | 107 +++
 .../codec/v10/OpenWireMessageMarshaller.java    | 107 +++
 .../v10/OpenWireObjectMessageMarshaller.java    | 108 +++
 .../codec/v10/OpenWireQueueMarshaller.java      | 108 +++
 .../v10/OpenWireStreamMessageMarshaller.java    | 108 +++
 .../v10/OpenWireTempDestinationMarshaller.java  |  88 +++
 .../codec/v10/OpenWireTempQueueMarshaller.java  | 108 +++
 .../codec/v10/OpenWireTempTopicMarshaller.java  | 108 +++
 .../v10/OpenWireTextMessageMarshaller.java      | 108 +++
 .../codec/v10/OpenWireTopicMarshaller.java      | 108 +++
 .../codec/v10/PartialCommandMarshaller.java     | 128 ++++
 .../codec/v10/ProducerAckMarshaller.java        | 128 ++++
 .../codec/v10/ProducerIdMarshaller.java         | 134 ++++
 .../codec/v10/ProducerInfoMarshaller.java       | 165 +++++
 .../codec/v10/RemoveInfoMarshaller.java         | 128 ++++
 .../v10/RemoveSubscriptionInfoMarshaller.java   | 135 ++++
 .../codec/v10/ReplayCommandMarshaller.java      | 123 ++++
 .../openwire/codec/v10/ResponseMarshaller.java  | 118 +++
 .../openwire/codec/v10/SessionIdMarshaller.java | 129 ++++
 .../codec/v10/SessionInfoMarshaller.java        | 124 ++++
 .../codec/v10/ShutdownInfoMarshaller.java       | 107 +++
 .../codec/v10/SubscriptionInfoMarshaller.java   | 145 ++++
 .../codec/v10/TransactionIdMarshaller.java      |  88 +++
 .../codec/v10/TransactionInfoMarshaller.java    | 134 ++++
 .../codec/v10/WireFormatInfoMarshaller.java     | 149 ++++
 .../codec/v10/XATransactionIdMarshaller.java    | 132 ++++
 .../codec/v11/BaseCommandMarshaller.java        | 109 +++
 .../openwire/codec/v11/BrokerIdMarshaller.java  | 124 ++++
 .../codec/v11/BrokerInfoMarshaller.java         | 199 ++++++
 .../codec/v11/ConnectionControlMarshaller.java  | 163 +++++
 .../codec/v11/ConnectionErrorMarshaller.java    | 129 ++++
 .../codec/v11/ConnectionIdMarshaller.java       | 124 ++++
 .../codec/v11/ConnectionInfoMarshaller.java     | 195 +++++
 .../codec/v11/ConsumerControlMarshaller.java    | 154 ++++
 .../codec/v11/ConsumerIdMarshaller.java         | 134 ++++
 .../codec/v11/ConsumerInfoMarshaller.java       | 253 +++++++
 .../codec/v11/ControlCommandMarshaller.java     | 123 ++++
 .../codec/v11/DataArrayResponseMarshaller.java  | 144 ++++
 .../codec/v11/DataResponseMarshaller.java       | 123 ++++
 .../codec/v11/DestinationInfoMarshaller.java    | 165 +++++
 .../codec/v11/DiscoveryEventMarshaller.java     | 129 ++++
 .../codec/v11/ExceptionResponseMarshaller.java  | 123 ++++
 .../codec/v11/FlushCommandMarshaller.java       | 108 +++
 .../codec/v11/IntegerResponseMarshaller.java    | 119 ++++
 .../codec/v11/JournalQueueAckMarshaller.java    | 131 ++++
 .../codec/v11/JournalTopicAckMarshaller.java    | 152 ++++
 .../codec/v11/JournalTraceMarshaller.java       | 124 ++++
 .../codec/v11/JournalTransactionMarshaller.java | 134 ++++
 .../codec/v11/KeepAliveInfoMarshaller.java      | 108 +++
 .../codec/v11/LastPartialCommandMarshaller.java | 108 +++
 .../codec/v11/LocalTransactionIdMarshaller.java | 129 ++++
 .../openwire/codec/v11/MarshallerFactory.java   |  95 +++
 .../codec/v11/MessageAckMarshaller.java         | 160 +++++
 .../codec/v11/MessageDispatchMarshaller.java    | 140 ++++
 .../MessageDispatchNotificationMarshaller.java  | 141 ++++
 .../openwire/codec/v11/MessageIdMarshaller.java | 140 ++++
 .../openwire/codec/v11/MessageMarshaller.java   | 309 ++++++++
 .../codec/v11/MessagePullMarshaller.java        | 146 ++++
 .../v11/NetworkBridgeFilterMarshaller.java      | 133 ++++
 .../v11/OpenWireBlobMessageMarshaller.java      | 133 ++++
 .../v11/OpenWireBytesMessageMarshaller.java     | 107 +++
 .../v11/OpenWireDestinationMarshaller.java      | 105 +++
 .../codec/v11/OpenWireMapMessageMarshaller.java | 107 +++
 .../codec/v11/OpenWireMessageMarshaller.java    | 107 +++
 .../v11/OpenWireObjectMessageMarshaller.java    | 108 +++
 .../codec/v11/OpenWireQueueMarshaller.java      | 108 +++
 .../v11/OpenWireStreamMessageMarshaller.java    | 108 +++
 .../v11/OpenWireTempDestinationMarshaller.java  |  88 +++
 .../codec/v11/OpenWireTempQueueMarshaller.java  | 108 +++
 .../codec/v11/OpenWireTempTopicMarshaller.java  | 108 +++
 .../v11/OpenWireTextMessageMarshaller.java      | 108 +++
 .../codec/v11/OpenWireTopicMarshaller.java      | 108 +++
 .../codec/v11/PartialCommandMarshaller.java     | 128 ++++
 .../codec/v11/ProducerAckMarshaller.java        | 128 ++++
 .../codec/v11/ProducerIdMarshaller.java         | 134 ++++
 .../codec/v11/ProducerInfoMarshaller.java       | 165 +++++
 .../codec/v11/RemoveInfoMarshaller.java         | 128 ++++
 .../v11/RemoveSubscriptionInfoMarshaller.java   | 135 ++++
 .../codec/v11/ReplayCommandMarshaller.java      | 123 ++++
 .../openwire/codec/v11/ResponseMarshaller.java  | 118 +++
 .../openwire/codec/v11/SessionIdMarshaller.java | 129 ++++
 .../codec/v11/SessionInfoMarshaller.java        | 124 ++++
 .../codec/v11/ShutdownInfoMarshaller.java       | 107 +++
 .../codec/v11/SubscriptionInfoMarshaller.java   | 150 ++++
 .../codec/v11/TransactionIdMarshaller.java      |  88 +++
 .../codec/v11/TransactionInfoMarshaller.java    | 134 ++++
 .../codec/v11/WireFormatInfoMarshaller.java     | 149 ++++
 .../codec/v11/XATransactionIdMarshaller.java    | 132 ++++
 .../codec/v9/BaseCommandMarshaller.java         | 109 +++
 .../openwire/codec/v9/BrokerIdMarshaller.java   | 124 ++++
 .../openwire/codec/v9/BrokerInfoMarshaller.java | 199 ++++++
 .../codec/v9/ConnectionControlMarshaller.java   | 163 +++++
 .../codec/v9/ConnectionErrorMarshaller.java     | 129 ++++
 .../codec/v9/ConnectionIdMarshaller.java        | 124 ++++
 .../codec/v9/ConnectionInfoMarshaller.java      | 195 +++++
 .../codec/v9/ConsumerControlMarshaller.java     | 154 ++++
 .../openwire/codec/v9/ConsumerIdMarshaller.java | 134 ++++
 .../codec/v9/ConsumerInfoMarshaller.java        | 248 +++++++
 .../codec/v9/ControlCommandMarshaller.java      | 123 ++++
 .../codec/v9/DataArrayResponseMarshaller.java   | 144 ++++
 .../codec/v9/DataResponseMarshaller.java        | 123 ++++
 .../codec/v9/DestinationInfoMarshaller.java     | 165 +++++
 .../codec/v9/DiscoveryEventMarshaller.java      | 129 ++++
 .../codec/v9/ExceptionResponseMarshaller.java   | 123 ++++
 .../codec/v9/FlushCommandMarshaller.java        | 108 +++
 .../codec/v9/IntegerResponseMarshaller.java     | 119 ++++
 .../codec/v9/JournalQueueAckMarshaller.java     | 131 ++++
 .../codec/v9/JournalTopicAckMarshaller.java     | 152 ++++
 .../codec/v9/JournalTraceMarshaller.java        | 124 ++++
 .../codec/v9/JournalTransactionMarshaller.java  | 134 ++++
 .../codec/v9/KeepAliveInfoMarshaller.java       | 108 +++
 .../codec/v9/LastPartialCommandMarshaller.java  | 108 +++
 .../codec/v9/LocalTransactionIdMarshaller.java  | 129 ++++
 .../openwire/codec/v9/MarshallerFactory.java    |  95 +++
 .../openwire/codec/v9/MessageAckMarshaller.java | 160 +++++
 .../codec/v9/MessageDispatchMarshaller.java     | 140 ++++
 .../MessageDispatchNotificationMarshaller.java  | 141 ++++
 .../openwire/codec/v9/MessageIdMarshaller.java  | 135 ++++
 .../openwire/codec/v9/MessageMarshaller.java    | 304 ++++++++
 .../codec/v9/MessagePullMarshaller.java         | 146 ++++
 .../codec/v9/NetworkBridgeFilterMarshaller.java |   1 +
 .../codec/v9/OpenWireBlobMessageMarshaller.java | 133 ++++
 .../v9/OpenWireBytesMessageMarshaller.java      | 107 +++
 .../codec/v9/OpenWireDestinationMarshaller.java | 105 +++
 .../codec/v9/OpenWireMapMessageMarshaller.java  | 107 +++
 .../codec/v9/OpenWireMessageMarshaller.java     | 107 +++
 .../v9/OpenWireObjectMessageMarshaller.java     | 108 +++
 .../codec/v9/OpenWireQueueMarshaller.java       | 108 +++
 .../v9/OpenWireStreamMessageMarshaller.java     | 108 +++
 .../v9/OpenWireTempDestinationMarshaller.java   |  88 +++
 .../codec/v9/OpenWireTempQueueMarshaller.java   | 108 +++
 .../codec/v9/OpenWireTempTopicMarshaller.java   | 108 +++
 .../codec/v9/OpenWireTextMessageMarshaller.java | 108 +++
 .../codec/v9/OpenWireTopicMarshaller.java       | 108 +++
 .../codec/v9/PartialCommandMarshaller.java      | 128 ++++
 .../codec/v9/ProducerAckMarshaller.java         | 128 ++++
 .../openwire/codec/v9/ProducerIdMarshaller.java | 134 ++++
 .../codec/v9/ProducerInfoMarshaller.java        | 165 +++++
 .../openwire/codec/v9/RemoveInfoMarshaller.java | 128 ++++
 .../v9/RemoveSubscriptionInfoMarshaller.java    | 135 ++++
 .../codec/v9/ReplayCommandMarshaller.java       | 123 ++++
 .../openwire/codec/v9/ResponseMarshaller.java   | 118 +++
 .../openwire/codec/v9/SessionIdMarshaller.java  | 129 ++++
 .../codec/v9/SessionInfoMarshaller.java         | 124 ++++
 .../codec/v9/ShutdownInfoMarshaller.java        | 107 +++
 .../codec/v9/SubscriptionInfoMarshaller.java    | 145 ++++
 .../codec/v9/TransactionIdMarshaller.java       |  88 +++
 .../codec/v9/TransactionInfoMarshaller.java     | 134 ++++
 .../codec/v9/WireFormatInfoMarshaller.java      | 149 ++++
 .../codec/v9/XATransactionIdMarshaller.java     | 132 ++++
 pom.xml                                         |  31 +-
 648 files changed, 44091 insertions(+), 35009 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-annotations/.gitignore
----------------------------------------------------------------------
diff --git a/openwire-annotations/.gitignore b/openwire-annotations/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/openwire-annotations/.gitignore
@@ -0,0 +1 @@
+/target/

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-annotations/pom.xml
----------------------------------------------------------------------
diff --git a/openwire-annotations/pom.xml b/openwire-annotations/pom.xml
new file mode 100644
index 0000000..af29c42
--- /dev/null
+++ b/openwire-annotations/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.activemq</groupId>
+    <artifactId>openwire-protocol</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>openwire-annotations</artifactId>
+  <name>openwire-annotations</name>
+  <description>The main OpenWire protocol implementation providing current versions of the codec.</description>
+  <packaging>jar</packaging>
+
+</project>

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireDocumentation.java
----------------------------------------------------------------------
diff --git a/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireDocumentation.java b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireDocumentation.java
new file mode 100644
index 0000000..e51cf52
--- /dev/null
+++ b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireDocumentation.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.annotations;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Used to add documentation notes to an OpenWire command or one its properties.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface OpenWireDocumentation {
+
+    /**
+     * @return a quick one sentence description of the element.
+     */
+    String shortDescription();
+
+    /**
+     * @return a longer more thorough description of the element.
+     */
+    String longDescription() default "";
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireExtension.java
----------------------------------------------------------------------
diff --git a/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireExtension.java b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireExtension.java
new file mode 100644
index 0000000..13a3c84
--- /dev/null
+++ b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireExtension.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Defines the annotation value to use to describes any extensions
+ * to a given OpenWire data type that is not part of the marshaled
+ * data for that type.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface OpenWireExtension {
+
+    /**
+     * Defines if the extension is transient or not.
+     *
+     * @return true if the value should not be marked as transient.
+     */
+    boolean serialized() default false;
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireProperty.java
----------------------------------------------------------------------
diff --git a/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireProperty.java b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireProperty.java
new file mode 100644
index 0000000..a4646c4
--- /dev/null
+++ b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireProperty.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Defines the annotation value for the properties of an OpenWire data type.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface OpenWireProperty {
+
+    int version();
+
+    int sequence();
+
+    boolean cached() default false;
+
+    boolean serialized() default true;
+
+    boolean mandatory() default false;
+
+    int size() default 0;
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireType.java
----------------------------------------------------------------------
diff --git a/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireType.java b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireType.java
new file mode 100644
index 0000000..797aef1
--- /dev/null
+++ b/openwire-annotations/src/main/java/org/apache/activemq/openwire/annotations/OpenWireType.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface OpenWireType {
+
+    int typeCode();
+
+    int version() default 1;
+
+    boolean marshalAware() default false;
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-core/pom.xml
----------------------------------------------------------------------
diff --git a/openwire-core/pom.xml b/openwire-core/pom.xml
index 18d3573..62077dd 100644
--- a/openwire-core/pom.xml
+++ b/openwire-core/pom.xml
@@ -29,16 +29,18 @@
   <packaging>jar</packaging>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openwire-src>${basedir}/src/main/java/io/openwire/commands</openwire-src>
-    <openwire-oldest>10</openwire-oldest>
-    <openwire-newest>10</openwire-newest>
+    <openwire-codec-dir>${basedir}/src/main/java/</openwire-codec-dir>
   </properties>
 
   <dependencies>
     <!-- =================================== -->
-    <!-- Required Dependencies                -->
+    <!-- Required Dependencies               -->
     <!-- =================================== -->
     <dependency>
+      <groupId>org.apache.activemq</groupId>
+      <artifactId>openwire-annotations</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
@@ -64,135 +66,59 @@
       <artifactId>slf4j-log4j12</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>openwire-generator</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>activemq-broker</artifactId>
-      <version>${activemq-version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>activemq-kahadb-store</artifactId>
-      <version>${activemq-version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>activemq-jaas</artifactId>
-      <version>${activemq-version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>activemq-spring</artifactId>
-      <version>${activemq-version}</version>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 
-<!--   <build> -->
-<!--     <plugins> -->
-<!--       <plugin> -->
-<!--         <groupId>org.apache.maven.plugins</groupId> -->
-<!--         <artifactId>maven-antrun-plugin</artifactId> -->
-<!--         <executions> -->
-<!--           <execution> -->
-<!--             <id>default</id> -->
-<!--             <phase>generate-sources</phase> -->
-<!--             <configuration> -->
-<!--               <target> -->
-<!--                 <echo>Running OpenWire Generator</echo> -->
-<!--                 <taskdef name="generate" classname="org.apache.activemq.openwire.generator.GeneratorTask" classpathref="maven.test.classpath" /> -->
-<!--                 <generate fromVersion="${openwire-oldest}" toVersion="${openwire-newest}" sourceDir="${openwire-src}" targetDir="${project.build.directory}/generated-sources/openwire" /> -->
-<!--               </target> -->
-<!--             </configuration> -->
-<!--             <goals> -->
-<!--               <goal>run</goal> -->
-<!--             </goals> -->
-<!--           </execution> -->
-<!--         </executions> -->
-<!--       </plugin> -->
-<!--       <plugin> -->
-<!--         <groupId>org.codehaus.mojo</groupId> -->
-<!--         <artifactId>build-helper-maven-plugin</artifactId> -->
-<!--         <version>1.7</version> -->
-<!--         <executions> -->
-<!--           <execution> -->
-<!--             <id>default</id> -->
-<!--             <phase>generate-sources</phase> -->
-<!--             <goals> -->
-<!--               <goal>add-source</goal> -->
-<!--             </goals> -->
-<!--             <configuration> -->
-<!--               <sources> -->
-<!--                 <source>${project.build.directory}/generated-sources/openwire</source> -->
-<!--               </sources> -->
-<!--             </configuration> -->
-<!--           </execution> -->
-<!--         </executions> -->
-<!--       </plugin> -->
-<!--     </plugins> -->
-<!--   </build> -->
-
-<!--   <profiles> -->
-<!--     <profile> -->
-<!--       <id>lib/tools.jar</id> -->
-<!--       <activation> -->
-<!--         <file> -->
-<!--           <exists>${java.home}/lib/tools.jar</exists> -->
-<!--         </file> -->
-<!--       </activation> -->
-<!--       <build> -->
-<!--         <plugins> -->
-<!--           <plugin> -->
-<!--             <groupId>org.apache.maven.plugins</groupId> -->
-<!--             <artifactId>maven-antrun-plugin</artifactId> -->
-<!--             <dependencies> -->
-<!--               <dependency> -->
-<!--                 <groupId>com.sun</groupId> -->
-<!--                 <artifactId>tools</artifactId> -->
-<!--                 <version>1.6.5</version> -->
-<!--                 <scope>system</scope> -->
-<!--                 <optional>true</optional> -->
-<!--                 <systemPath>${java.home}/lib/tools.jar</systemPath> -->
-<!--               </dependency> -->
-<!--             </dependencies> -->
-<!--           </plugin> -->
-<!--         </plugins> -->
-<!--       </build> -->
-<!--     </profile> -->
-<!--     <profile> -->
-<!--       <id>../lib/tools.jar</id> -->
-<!--       <activation> -->
-<!--         <file> -->
-<!--           <exists>${java.home}/../lib/tools.jar</exists> -->
-<!--         </file> -->
-<!--       </activation> -->
-<!--       <build> -->
-<!--         <plugins> -->
-<!--           <plugin> -->
-<!--             <groupId>org.apache.maven.plugins</groupId> -->
-<!--             <artifactId>maven-antrun-plugin</artifactId> -->
-<!--             <dependencies> -->
-<!--               <dependency> -->
-<!--                 <groupId>com.sun</groupId> -->
-<!--                 <artifactId>tools</artifactId> -->
-<!--                 <version>1.6.5</version> -->
-<!--                 <scope>system</scope> -->
-<!--                 <optional>true</optional> -->
-<!--                 <systemPath>${java.home}/../lib/tools.jar</systemPath> -->
-<!--               </dependency> -->
-<!--             </dependencies> -->
-<!--           </plugin> -->
-<!--         </plugins> -->
-<!--       </build> -->
-<!--     </profile> -->
-<!--   </profiles> -->
+  <profiles>
+    <!-- Execute with: mvn -P openwire-generate antrun:run -->
+    <profile>
+      <id>openwire-generate</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>default</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <target>
+                <echo>Running OpenWire Generator</echo>
+                <taskdef name="generate" classname="org.apache.activemq.openwire.generator.GeneratorTask" classpathref="maven.test.classpath"/>
+                <generate baseDir="${openwire-codec-dir}" />
+              </target>
+            </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>org.apache.activemq</groupId>
+                <artifactId>openwire-annotations</artifactId>
+                <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                <groupId>org.apache.activemq</groupId>
+                <artifactId>openwire-generator</artifactId>
+                <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                <groupId>org.apache.activemq</groupId>
+                <artifactId>openwire-core</artifactId>
+                <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                <groupId>org.reflections</groupId>
+                <artifactId>reflections</artifactId>
+                <version>${reflections-version}</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
 </project>

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-core/src/main/java/org/apache/activemq/openwire/codec/OpenWireFormat.java
----------------------------------------------------------------------
diff --git a/openwire-core/src/main/java/org/apache/activemq/openwire/codec/OpenWireFormat.java b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/OpenWireFormat.java
index 720d658..9e0c063 100644
--- a/openwire-core/src/main/java/org/apache/activemq/openwire/codec/OpenWireFormat.java
+++ b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/OpenWireFormat.java
@@ -53,6 +53,8 @@ public final class OpenWireFormat {
     private boolean sizePrefixDisabled;
     private long maxFrameSize = DEFAULT_MAX_FRAME_SIZE;
 
+    private boolean useLegacyCodecs = false;
+
     // The following fields are used for value caching
     private short nextMarshallCacheIndex;
     private short nextMarshallCacheEvictionIndex;
@@ -93,6 +95,7 @@ public final class OpenWireFormat {
         if (object == null) {
             return false;
         }
+
         OpenWireFormat o = (OpenWireFormat) object;
         return o.stackTraceEnabled == stackTraceEnabled && o.cacheEnabled == cacheEnabled && o.version == version
             && o.tightEncodingEnabled == tightEncodingEnabled && o.sizePrefixDisabled == sizePrefixDisabled;
@@ -123,7 +126,6 @@ public final class OpenWireFormat {
                 throw new IOException("Unknown data type: " + type);
             }
             if (tightEncodingEnabled) {
-
                 BooleanStream bs = new BooleanStream();
                 size += dsm.tightMarshal1(this, c, bs);
                 size += bs.marshalledSize();
@@ -136,7 +138,6 @@ public final class OpenWireFormat {
                 bs.marshal(bytesOut);
                 dsm.tightMarshal2(this, c, bytesOut, bs);
                 sequence = bytesOut.toBuffer();
-
             } else {
                 bytesOut.restart();
                 if (!sizePrefixDisabled) {
@@ -181,7 +182,6 @@ public final class OpenWireFormat {
     }
 
     public synchronized void marshal(Object o, DataOutput dataOut) throws IOException {
-
         if (cacheEnabled) {
             runMarshallCacheEvictionSweep();
         }
@@ -195,6 +195,7 @@ public final class OpenWireFormat {
             if (dsm == null) {
                 throw new IOException("Unknown data type: " + type);
             }
+
             if (tightEncodingEnabled) {
                 BooleanStream bs = new BooleanStream();
                 size += dsm.tightMarshal1(this, c, bs);
@@ -207,7 +208,6 @@ public final class OpenWireFormat {
                 dataOut.writeByte(type);
                 bs.marshal(dataOut);
                 dsm.tightMarshal2(this, c, dataOut, bs);
-
             } else {
                 DataOutput looseOut = dataOut;
 
@@ -224,9 +224,7 @@ public final class OpenWireFormat {
                     dataOut.writeInt(sequence.getLength());
                     dataOut.write(sequence.getData(), sequence.getOffset(), sequence.getLength());
                 }
-
             }
-
         } else {
             if (!sizePrefixDisabled) {
                 dataOut.writeInt(size);
@@ -243,6 +241,7 @@ public final class OpenWireFormat {
                 throw new IOException("Frame size of " + (size / (1024 * 1024)) + " MB larger than max allowed " + (maxFrameSize / (1024 * 1024)) + " MB");
             }
         }
+
         return doUnmarshal(dataIn);
     }
 
@@ -262,6 +261,7 @@ public final class OpenWireFormat {
             size += dsm.tightMarshal1(this, c, bs);
             size += bs.marshalledSize();
         }
+
         return size;
     }
 
@@ -286,29 +286,6 @@ public final class OpenWireFormat {
         }
     }
 
-    /**
-     * Allows you to dynamically switch the version of the openwire protocol being used.
-     *
-     * @param version
-     */
-    public void setVersion(int version) {
-        String mfName = "org.apache.activemq.openwire.codec.v" + version + ".MarshallerFactory";
-        Class<?> mfClass;
-        try {
-            mfClass = Class.forName(mfName, false, getClass().getClassLoader());
-        } catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException("Invalid version: " + version + ", could not load " + mfName, e);
-        }
-        try {
-            Method method = mfClass.getMethod("createMarshallerMap", new Class[] { OpenWireFormat.class });
-            dataMarshallers = (DataStreamMarshaller[]) method.invoke(null, new Object[] { this });
-        } catch (Throwable e) {
-            throw new IllegalArgumentException("Invalid version: " + version + ", " + mfName
-                + " does not properly implement the createMarshallerMap method.", e);
-        }
-        this.version = version;
-    }
-
     public Object doUnmarshal(DataInput dis) throws IOException {
         byte dataType = dis.readByte();
         if (dataType != NULL_TYPE) {
@@ -400,7 +377,6 @@ public final class OpenWireFormat {
 
     public DataStructure looseUnmarshalNestedObject(DataInput dis) throws IOException {
         if (dis.readBoolean()) {
-
             byte dataType = dis.readByte();
             DataStreamMarshaller dsm = dataMarshallers[dataType & 0xFF];
             if (dsm == null) {
@@ -409,7 +385,6 @@ public final class OpenWireFormat {
             DataStructure data = dsm.createObject();
             dsm.looseUnmarshal(this, data, dis);
             return data;
-
         } else {
             return null;
         }
@@ -536,6 +511,55 @@ public final class OpenWireFormat {
         this.maxFrameSize = maxFrameSize;
     }
 
+    /**
+     * @return the useLegacyCodecs current value.
+     */
+    public boolean isUseLegacyCodecs() {
+        return useLegacyCodecs;
+    }
+
+    /**
+     * Sets whether the WireFormat should use the legacy codecs or the universal codec.
+     *
+     * @param useLegacyCodecs
+     *      the useLegacyCodecs setting to use.
+     */
+    public void setUseLegacyCodecs(boolean useLegacyCodecs) {
+        this.useLegacyCodecs = useLegacyCodecs;
+    }
+
+    /**
+     * Allows you to dynamically switch the version of the openwire protocol being used.
+     *
+     * @param version
+     */
+    public void setVersion(int version) {
+        String mfName = null;
+        Class<?> mfClass;
+
+        if (!useLegacyCodecs) {
+            mfName = "org.apache.activemq.openwire.codec.universal.MarshallerFactory";
+        } else {
+            mfName = "org.apache.activemq.openwire.codec.v" + version + ".MarshallerFactory";
+        }
+
+        try {
+            mfClass = Class.forName(mfName, false, getClass().getClassLoader());
+        } catch (ClassNotFoundException e) {
+            throw new IllegalArgumentException("Invalid version: " + version + ", could not load " + mfName, e);
+        }
+
+        try {
+            Method method = mfClass.getMethod("createMarshallerMap", new Class[] { OpenWireFormat.class });
+            dataMarshallers = (DataStreamMarshaller[]) method.invoke(null, new Object[] { this });
+        } catch (Throwable e) {
+            throw new IllegalArgumentException("Invalid version: " + version + ", " + mfName
+                + " does not properly implement the createMarshallerMap method.", e);
+        }
+
+        this.version = version;
+    }
+
     public void renegotiateWireFormat(WireFormatInfo info) throws IOException {
         if (preferedWireFormatInfo == null) {
             throw new IllegalStateException("Wireformat cannot not be renegotiated.");

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BaseCommandMarshaller.java
----------------------------------------------------------------------
diff --git a/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BaseCommandMarshaller.java b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BaseCommandMarshaller.java
new file mode 100644
index 0000000..cd4f683
--- /dev/null
+++ b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BaseCommandMarshaller.java
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.codec.universal;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.codec.*;
+import org.apache.activemq.openwire.commands.*;
+
+/**
+ * Marshalling code for Open Wire for BaseCommand
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *
+ */
+public abstract class BaseCommandMarshaller extends BaseDataStreamMarshaller {
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param target the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @param bs the boolean stream where the type's booleans were marshaled
+     *
+     * @throws IOException if an error occurs while reading the data
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object target, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, target, dataIn, bs);
+
+        BaseCommand info = (BaseCommand) target;
+
+        info.setCommandId(dataIn.readInt());
+        info.setResponseRequired(bs.readBoolean());
+    }
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param source the object to marshal
+     * @param bs the boolean stream where the type's booleans are written
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object source, BooleanStream bs) throws IOException {
+        BaseCommand info = (BaseCommand) source;
+
+        int rc = super.tightMarshal1(wireFormat, source, bs);
+        bs.writeBoolean(info.isResponseRequired());
+
+        return rc + 4;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param source the object to marshal
+     * @param dataOut the DataOut where the properties are written
+     * @param bs the boolean stream where the type's booleans are written
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object source, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, source, dataOut, bs);
+
+        BaseCommand info = (BaseCommand) source;
+
+        dataOut.writeInt(info.getCommandId());
+        bs.readBoolean();
+    }
+
+    /**
+     * Write the object to the output using loose marshaling.
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object source, DataOutput dataOut) throws IOException {
+        BaseCommand info = (BaseCommand) source;
+
+        super.looseMarshal(wireFormat, source, dataOut);
+        dataOut.writeInt(info.getCommandId());
+        dataOut.writeBoolean(info.isResponseRequired());
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param target the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object target, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, target, dataIn);
+
+        BaseCommand info = (BaseCommand) target;
+
+        info.setCommandId(dataIn.readInt());
+        info.setResponseRequired(dataIn.readBoolean());
+    }
+}

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerIdMarshaller.java
----------------------------------------------------------------------
diff --git a/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerIdMarshaller.java b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerIdMarshaller.java
new file mode 100644
index 0000000..d2def84
--- /dev/null
+++ b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerIdMarshaller.java
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.codec.universal;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.codec.*;
+import org.apache.activemq.openwire.commands.*;
+
+/**
+ * Marshalling code for Open Wire for BrokerId
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *
+ */
+public class BrokerIdMarshaller extends BaseDataStreamMarshaller {
+
+    /**
+     * Return the type of Data Structure handled by this Marshaler
+     *
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return BrokerId.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new instance of the managed type.
+     */
+    public DataStructure createObject() {
+        return new BrokerId();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param target the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @param bs the boolean stream where the type's booleans were marshaled
+     *
+     * @throws IOException if an error occurs while reading the data
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object target, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, target, dataIn, bs);
+
+        BrokerId info = (BrokerId) target;
+
+        info.setValue(tightUnmarshalString(dataIn, bs));
+    }
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param source the object to marshal
+     * @param bs the boolean stream where the type's booleans are written
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object source, BooleanStream bs) throws IOException {
+        BrokerId info = (BrokerId) source;
+
+        int rc = super.tightMarshal1(wireFormat, source, bs);
+        rc += tightMarshalString1(info.getValue(), bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param source the object to marshal
+     * @param dataOut the DataOut where the properties are written
+     * @param bs the boolean stream where the type's booleans are written
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object source, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, source, dataOut, bs);
+
+        BrokerId info = (BrokerId) source;
+
+        tightMarshalString2(info.getValue(), dataOut, bs);
+    }
+
+    /**
+     * Write the object to the output using loose marshaling.
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object source, DataOutput dataOut) throws IOException {
+        BrokerId info = (BrokerId) source;
+
+        super.looseMarshal(wireFormat, source, dataOut);
+        looseMarshalString(info.getValue(), dataOut);
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param target the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object target, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, target, dataIn);
+
+        BrokerId info = (BrokerId) target;
+
+        info.setValue(looseUnmarshalString(dataIn));
+    }
+}

http://git-wip-us.apache.org/repos/asf/activemq-openwire/blob/0c90d2e3/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerInfoMarshaller.java
----------------------------------------------------------------------
diff --git a/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerInfoMarshaller.java b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerInfoMarshaller.java
new file mode 100644
index 0000000..b7c0433
--- /dev/null
+++ b/openwire-core/src/main/java/org/apache/activemq/openwire/codec/universal/BrokerInfoMarshaller.java
@@ -0,0 +1,259 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.codec.universal;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.codec.*;
+import org.apache.activemq.openwire.commands.*;
+
+/**
+ * Marshalling code for Open Wire for BrokerInfo
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *
+ */
+public class BrokerInfoMarshaller extends BaseCommandMarshaller {
+
+    /**
+     * Return the type of Data Structure handled by this Marshaler
+     *
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return BrokerInfo.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new instance of the managed type.
+     */
+    public DataStructure createObject() {
+        return new BrokerInfo();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param target the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @param bs the boolean stream where the type's booleans were marshaled
+     *
+     * @throws IOException if an error occurs while reading the data
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object target, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, target, dataIn, bs);
+
+        BrokerInfo info = (BrokerInfo) target;
+        int version = wireFormat.getVersion();
+
+        info.setBrokerId((BrokerId) tightUnmarsalCachedObject(wireFormat, dataIn, bs));
+        info.setBrokerURL(tightUnmarshalString(dataIn, bs));
+        if (bs.readBoolean()) {
+            short size = dataIn.readShort();
+            BrokerInfo value[] = new BrokerInfo[size];
+            for (int i = 0; i < size; i++) {
+                value[i] = (BrokerInfo) tightUnmarsalNestedObject(wireFormat,dataIn, bs);
+            }
+            info.setPeerBrokerInfos(value);
+        } else {
+            info.setPeerBrokerInfos(null);
+        }
+        info.setBrokerName(tightUnmarshalString(dataIn, bs));
+        info.setSlaveBroker(bs.readBoolean());
+        info.setMasterBroker(bs.readBoolean());
+        info.setFaultTolerantConfiguration(bs.readBoolean());
+        if (version >= 2) {
+            info.setDuplexConnection(bs.readBoolean());
+        }
+        if (version >= 2) {
+            info.setNetworkConnection(bs.readBoolean());
+        }
+        if (version >= 2) {
+            info.setConnectionId(tightUnmarshalLong(wireFormat, dataIn, bs));
+        }
+        if (version >= 3) {
+            info.setBrokerUploadUrl(tightUnmarshalString(dataIn, bs));
+        }
+        if (version >= 3) {
+            info.setNetworkProperties(tightUnmarshalString(dataIn, bs));
+        }
+    }
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param source the object to marshal
+     * @param bs the boolean stream where the type's booleans are written
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object source, BooleanStream bs) throws IOException {
+        BrokerInfo info = (BrokerInfo) source;
+        int version = wireFormat.getVersion();
+
+        int rc = super.tightMarshal1(wireFormat, source, bs);
+        rc += tightMarshalCachedObject1(wireFormat, (DataStructure)info.getBrokerId(), bs);
+        rc += tightMarshalString1(info.getBrokerURL(), bs);
+        rc += tightMarshalObjectArray1(wireFormat, info.getPeerBrokerInfos(), bs);
+        rc += tightMarshalString1(info.getBrokerName(), bs);
+        bs.writeBoolean(info.isSlaveBroker());
+        bs.writeBoolean(info.isMasterBroker());
+        bs.writeBoolean(info.isFaultTolerantConfiguration());
+        if (version >= 2) {
+            bs.writeBoolean(info.isDuplexConnection());
+        }
+        if (version >= 2) {
+            bs.writeBoolean(info.isNetworkConnection());
+        }
+        if (version >= 2) {
+            rc += tightMarshalLong1(wireFormat, info.getConnectionId(), bs);
+        }
+        if (version >= 3) {
+            rc += tightMarshalString1(info.getBrokerUploadUrl(), bs);
+        }
+        if (version >= 3) {
+            rc += tightMarshalString1(info.getNetworkProperties(), bs);
+        }
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param wireFormat the OpenWireFormat instance to use
+     * @param source the object to marshal
+     * @param dataOut the DataOut where the properties are written
+     * @param bs the boolean stream where the type's booleans are written
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object source, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, source, dataOut, bs);
+
+        BrokerInfo info = (BrokerInfo) source;
+        int version = wireFormat.getVersion();
+
+        tightMarshalCachedObject2(wireFormat, (DataStructure)info.getBrokerId(), dataOut, bs);
+        tightMarshalString2(info.getBrokerURL(), dataOut, bs);
+        tightMarshalObjectArray2(wireFormat, info.getPeerBrokerInfos(), dataOut, bs);
+        tightMarshalString2(info.getBrokerName(), dataOut, bs);
+        bs.readBoolean();
+        bs.readBoolean();
+        bs.readBoolean();
+        if (version >= 2) {
+            bs.readBoolean();
+        }
+        if (version >= 2) {
+            bs.readBoolean();
+        }
+        if (version >= 2) {
+            tightMarshalLong2(wireFormat, info.getConnectionId(), dataOut, bs);
+        }
+        if (version >= 3) {
+            tightMarshalString2(info.getBrokerUploadUrl(), dataOut, bs);
+        }
+        if (version >= 3) {
+            tightMarshalString2(info.getNetworkProperties(), dataOut, bs);
+        }
+    }
+
+    /**
+     * Write the object to the output using loose marshaling.
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object source, DataOutput dataOut) throws IOException {
+        BrokerInfo info = (BrokerInfo) source;
+        int version = wireFormat.getVersion();
+
+        super.looseMarshal(wireFormat, source, dataOut);
+        looseMarshalCachedObject(wireFormat, (DataStructure)info.getBrokerId(), dataOut);
+        looseMarshalString(info.getBrokerURL(), dataOut);
+        looseMarshalObjectArray(wireFormat, info.getPeerBrokerInfos(), dataOut);
+        looseMarshalString(info.getBrokerName(), dataOut);
+        dataOut.writeBoolean(info.isSlaveBroker());
+        dataOut.writeBoolean(info.isMasterBroker());
+        dataOut.writeBoolean(info.isFaultTolerantConfiguration());
+        if (version >= 2) {
+            dataOut.writeBoolean(info.isDuplexConnection());
+        }
+        if (version >= 2) {
+            dataOut.writeBoolean(info.isNetworkConnection());
+        }
+        if (version >= 2) {
+            looseMarshalLong(wireFormat, info.getConnectionId(), dataOut);
+        }
+        if (version >= 3) {
+            looseMarshalString(info.getBrokerUploadUrl(), dataOut);
+        }
+        if (version >= 3) {
+            looseMarshalString(info.getNetworkProperties(), dataOut);
+        }
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param target the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     *
+     * @throws IOException if an error occurs while writing the data
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object target, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, target, dataIn);
+
+        BrokerInfo info = (BrokerInfo) target;
+        int version = wireFormat.getVersion();
+
+        info.setBrokerId((BrokerId) looseUnmarsalCachedObject(wireFormat, dataIn));
+        info.setBrokerURL(looseUnmarshalString(dataIn));
+        if (dataIn.readBoolean()) {
+            short size = dataIn.readShort();
+            BrokerInfo value[] = new BrokerInfo[size];
+            for (int i = 0; i < size; i++) {
+                value[i] = (BrokerInfo) looseUnmarsalNestedObject(wireFormat,dataIn);
+            }
+            info.setPeerBrokerInfos(value);
+        } else {
+            info.setPeerBrokerInfos(null);
+        }
+        info.setBrokerName(looseUnmarshalString(dataIn));
+        info.setSlaveBroker(dataIn.readBoolean());
+        info.setMasterBroker(dataIn.readBoolean());
+        info.setFaultTolerantConfiguration(dataIn.readBoolean());
+        if (version >= 2) {
+            info.setDuplexConnection(dataIn.readBoolean());
+        }
+        if (version >= 2) {
+            info.setNetworkConnection(dataIn.readBoolean());
+        }
+        if (version >= 2) {
+            info.setConnectionId(looseUnmarshalLong(wireFormat, dataIn));
+        }
+        if (version >= 3) {
+            info.setBrokerUploadUrl(looseUnmarshalString(dataIn));
+        }
+        if (version >= 3) {
+            info.setNetworkProperties(looseUnmarshalString(dataIn));
+        }
+    }
+}


Mime
View raw message