You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2008/12/10 17:23:11 UTC

svn commit: r725323 [1/7] - in /activemq/trunk/activemq-core: ./ src/main/java/org/apache/activemq/broker/ src/main/java/org/apache/activemq/broker/region/ src/main/java/org/apache/activemq/command/ src/main/java/org/apache/activemq/network/ src/main/j...

Author: gtully
Date: Wed Dec 10 08:23:07 2008
New Revision: 725323

URL: http://svn.apache.org/viewvc?rev=725323&view=rev
Log:
resolve AMQ-2030, rev OpenWire version to 4 to accomadate additional field in ConsumerInfo that can hold array of networkConsumerIds that allows suppression of duplicate topic subscriptions in a cyclic network

Added:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBlobMessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBytesMessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQDestinationMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMapMessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQObjectMessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQQueueMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQStreamMessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempDestinationMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempQueueMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempTopicMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTextMessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTopicMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/BaseCommandMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/BaseDataStreamMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/BrokerIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/BrokerInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ConnectionControlMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ConnectionErrorMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ConnectionIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ConnectionInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ConsumerControlMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ConsumerIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ConsumerInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ControlCommandMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/DataArrayResponseMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/DataResponseMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/DestinationInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/DiscoveryEventMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ExceptionResponseMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/FlushCommandMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/IntegerResponseMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/JournalQueueAckMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/JournalTopicAckMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/JournalTraceMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/JournalTransactionMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/KeepAliveInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/LastPartialCommandMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/LocalTransactionIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/MarshallerFactory.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/MessageAckMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/MessageDispatchMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/MessageDispatchNotificationMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/MessageIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/MessageMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/MessagePullMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/NetworkBridgeFilterMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/PartialCommandMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ProducerAckMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ProducerIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ProducerInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/RemoveInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/RemoveSubscriptionInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ReplayCommandMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ResponseMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/SessionIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/SessionInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ShutdownInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/SubscriptionInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/TransactionIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/TransactionInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/WireFormatInfoMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/XATransactionIdMarshaller.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/BaseCommandTestSupport.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/BrokerIdTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/BrokerInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ConnectionControlTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ConnectionErrorTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ConnectionIdTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ConnectionInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ConsumerControlTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ConsumerIdTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ConsumerInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ControlCommandTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/DataArrayResponseTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/DataResponseTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/DestinationInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/DiscoveryEventTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ExceptionResponseTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/FlushCommandTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/IntegerResponseTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/JournalQueueAckTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/JournalTopicAckTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/JournalTraceTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/JournalTransactionTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/KeepAliveInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/LastPartialCommandTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/LocalTransactionIdTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/MessageAckTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/MessageDispatchNotificationTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/MessageDispatchTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/MessageIdTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/MessagePullTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/MessageTestSupport.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/NetworkBridgeFilterTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/PartialCommandTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ProducerAckTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ProducerIdTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ProducerInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/RemoveInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/RemoveSubscriptionInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ReplayCommandTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ResponseTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/SessionIdTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/SessionInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/ShutdownInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/SubscriptionInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/TransactionIdTestSupport.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/TransactionInfoTest.java   (with props)
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v4/XATransactionIdTest.java   (with props)
Modified:
    activemq/trunk/activemq-core/pom.xml
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/TransportConnection.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/CommandTypes.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/MulticastNetworkConnector.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/DemandForwardingBridgeTest.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsUsingTcpTest.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/NoDuplicateOnTopicNetworkTest.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkUsingTcpTest.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerTopicNetworkUsingTcpTest.java

Modified: activemq/trunk/activemq-core/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/pom.xml?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/pom.xml (original)
+++ activemq/trunk/activemq-core/pom.xml Wed Dec 10 08:23:07 2008
@@ -624,7 +624,7 @@
                   <tasks>
                     <echo>Running OpenWire Generator</echo>
                     <taskdef name="generate" classname="org.apache.activemq.openwire.tool.JavaGeneratorTask" classpathref="maven.compile.classpath" />
-                    <generate version="3" basedir="${basedir}" />
+                    <generate version="4" basedir="${basedir}" />
                   </tasks>
                 </configuration>
                 <goals>

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/TransportConnection.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/TransportConnection.java?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/TransportConnection.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/TransportConnection.java Wed Dec 10 08:23:07 2008
@@ -1171,6 +1171,7 @@
                 Transport remoteBridgeTransport = new ResponseCorrelator(transport);
                 duplexBridge = NetworkBridgeFactory.createBridge(config, localTransport,
                                                                  remoteBridgeTransport);
+                duplexBridge.setBrokerService(broker.getBrokerService());
                 // now turn duplex off this side
                 info.setDuplexConnection(false);
                 duplexBridge.setCreatedByDuplex(true);

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java Wed Dec 10 08:23:07 2008
@@ -132,6 +132,10 @@
         }
     }
 
+    public Map<ConsumerId, Subscription> getSubscriptions() {
+        return subscriptions;
+    }
+    
     protected List<Subscription> addSubscriptionsForDestination(ConnectionContext context, Destination dest) throws Exception {
 
         List<Subscription> rc = new ArrayList<Subscription>();

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/CommandTypes.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/CommandTypes.java?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/CommandTypes.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/CommandTypes.java Wed Dec 10 08:23:07 2008
@@ -24,7 +24,7 @@
 public interface CommandTypes {
 
     // What is the latest version of the openwire protocol
-    byte PROTOCOL_VERSION = 3;
+    byte PROTOCOL_VERSION = 4;
 
     // A marshaling layer can use this type to specify a null object.
     byte NULL = 0;

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java Wed Dec 10 08:23:07 2008
@@ -432,4 +432,28 @@
         return result;
     }
 
+    /**
+     * Tracks the original subscription id that causes a subscription to 
+     * percolate through a network when networkTTL > 1. Tracking the original
+     * subscription allows duplicate suppression.
+     * 
+     * @return array of the current subscription path
+     * @openwire:property version=4
+     */
+    public ConsumerId[] getNetworkConsumerPath() {
+        ConsumerId[] result = null;
+        if (networkConsumerIds != null) {
+            result = networkConsumerIds.toArray(new ConsumerId[0]);
+        }
+        return result;
+    }
+    
+    public void setNetworkConsumerPath(ConsumerId[] consumerPath) {
+        if (consumerPath != null) {
+            for (int i=0; i<consumerPath.length; i++) {
+                addNetworkConsumerId(consumerPath[i]);
+            }
+        }
+    }
+
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java Wed Dec 10 08:23:07 2008
@@ -18,6 +18,8 @@
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
+import java.util.Collection;
+import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
@@ -30,7 +32,12 @@
 
 import org.apache.activemq.Service;
 import org.apache.activemq.advisory.AdvisorySupport;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.BrokerServiceAware;
 import org.apache.activemq.broker.TransportConnection;
+import org.apache.activemq.broker.region.AbstractRegion;
+import org.apache.activemq.broker.region.RegionBroker;
+import org.apache.activemq.broker.region.Subscription;
 import org.apache.activemq.command.ActiveMQDestination;
 import org.apache.activemq.command.ActiveMQMessage;
 import org.apache.activemq.command.ActiveMQTempDestination;
@@ -78,7 +85,7 @@
  * 
  * @version $Revision$
  */
-public abstract class DemandForwardingBridgeSupport implements NetworkBridge {
+public abstract class DemandForwardingBridgeSupport implements NetworkBridge, BrokerServiceAware {
     
     private static final Log LOG = LogFactory.getLog(DemandForwardingBridge.class);
     private static final ThreadPoolExecutor ASYNC_TASKS;
@@ -123,6 +130,7 @@
 
     private AtomicBoolean started = new AtomicBoolean();
     private TransportConnection duplexInitiatingConnection;
+    private BrokerService brokerService = null;
 
     public DemandForwardingBridgeSupport(NetworkBridgeConfiguration configuration, Transport localBroker, Transport remoteBroker) {
         this.configuration = configuration;
@@ -498,20 +506,20 @@
             // Create a new local subscription
             ConsumerInfo info = (ConsumerInfo)data;
             BrokerId[] path = info.getBrokerPath();
+            
             if (path != null && path.length >= networkTTL) {
                 if (LOG.isDebugEnabled()) {
                     LOG.debug(configuration.getBrokerName() + " Ignoring sub  from " + remoteBrokerName + ", restricted to " + networkTTL + " network hops only : " + info);
                 }
                 return;
             }
-            if (contains(info.getBrokerPath(), localBrokerPath[0])) {
-                // Ignore this consumer as it's a consumer we locally sent to
-                // the broker.
+            if (contains(path, localBrokerPath[0])) {
+                // Ignore this consumer as it's a consumer we locally sent to the broker.
                 if (LOG.isDebugEnabled()) {
                     LOG.debug(configuration.getBrokerName() + " Ignoring sub from " + remoteBrokerName + ", already routed through this broker once : " + info);
                 }
                 return;
-            }
+            }            
             if (!isPermissableDestination(info.getDestination())) {
                 // ignore if not in the permitted or in the excluded list
                 if (LOG.isDebugEnabled()) {
@@ -519,13 +527,25 @@
                 }
                 return;
             }
-            if (addConsumerInfo(info)) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug(configuration.getBrokerName() + " Forwarding sub on " + localBroker + " from " + remoteBrokerName + " : " + info);
+            
+            // in a cyclic network there can be multiple bridges per broker that can propagate
+            // a network subscription so there is a need to synchronise on a shared entity
+            synchronized(brokerService) {
+                if (isDuplicateNetworkSubscription(info)) {
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug(configuration.getBrokerName() + " Ignoring sub from " + remoteBrokerName + ", destination " + info.getDestination() 
+                                + ", for " + info.getConsumerId() + " as a duplicate. Already subscribed via network subscription :"  + info);
+                    }
+                    return;
                 }
-            } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug(configuration.getBrokerName() + " Ignoring sub from " + remoteBrokerName + " as already subscribed to matching destination : " + info);
+                if (addConsumerInfo(info)) {
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug(configuration.getBrokerName() + " Forwarding sub on " + localBroker + " from " + remoteBrokerName + " : " + info);
+                    }
+                } else {
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug(configuration.getBrokerName() + " Ignoring sub from " + remoteBrokerName + " as already subscribed to matching destination : " + info);
+                    }
                 }
             }
         } else if (data.getClass() == DestinationInfo.class) {
@@ -875,7 +895,7 @@
     }
 
     /**
-     * Subscriptions for these desitnations are always created
+     * Subscriptions for these destinations are always created
      */
     protected void setupStaticDestinations() {
         ActiveMQDestination[] dests = staticallyIncludedDestinations;
@@ -907,6 +927,52 @@
         return result;
     }
     
+    /*
+     * check our existing subs networkConsumerIds against the list of network ids in this subscription
+     * a match means a duplicate which we suppress for topics
+     */
+    private boolean isDuplicateNetworkSubscription(ConsumerInfo consumerInfo) {
+        boolean isDuplicate = false;
+        if (consumerInfo.getDestination().isTopic()) {
+            List<ConsumerId> candidateConsumers = consumerInfo.getNetworkConsumerIds();
+            if (candidateConsumers.isEmpty()) {
+                candidateConsumers.add(consumerInfo.getConsumerId());
+            }
+            Collection<Subscription> currentSubs = getTopicRegionSubscriptions();
+            for (Subscription sub : currentSubs) {
+                List<ConsumerId> networkConsumers =  sub.getConsumerInfo().getNetworkConsumerIds();
+                if (!networkConsumers.isEmpty()) {
+                    if (matchFound(candidateConsumers, networkConsumers)) {
+                        if (LOG.isDebugEnabled()) {
+                            LOG.debug("subscription: " + consumerInfo + " is duplicated by network subscription: " 
+                                    + sub.getConsumerInfo()  + ", networkComsumerIds: " + networkConsumers);
+                        }
+                        isDuplicate = true;
+                        break;
+                    }
+                }
+            }
+        }
+        return isDuplicate;
+    }
+
+    private boolean matchFound(List<ConsumerId> candidateConsumers, List<ConsumerId> networkConsumers) {
+        boolean found = false;
+        for (ConsumerId aliasConsumer : networkConsumers) {        
+            if (candidateConsumers.contains(aliasConsumer)) {
+                found = true;
+                break;
+            }
+        }
+        return found;
+    }
+
+    private final Collection<Subscription> getTopicRegionSubscriptions() {
+        RegionBroker region = (RegionBroker) brokerService.getRegionBroker();
+        AbstractRegion topicRegion = (AbstractRegion) region.getTopicRegion();
+        return topicRegion.getSubscriptions().values();
+    }
+
     protected DemandSubscription createDemandSubscription(ConsumerInfo info) throws IOException {
         //add our original id to ourselves
         info.addNetworkConsumerId(info.getConsumerId());
@@ -1037,6 +1103,10 @@
         return configuration.isDuplex() || createdByDuplex;
     }
     
+    public void setBrokerService(BrokerService brokerService) {
+        this.brokerService = brokerService;
+    }
+    
     static {
         ASYNC_TASKS =   new ThreadPoolExecutor(0, Integer.MAX_VALUE, 30, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), new ThreadFactory() {
             public Thread newThread(Runnable runnable) {

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java Wed Dec 10 08:23:07 2008
@@ -207,6 +207,7 @@
 
         };
         DemandForwardingBridge result = NetworkBridgeFactory.createBridge(this, localTransport, remoteTransport, listener);
+        result.setBrokerService(getBrokerService());
         return configureBridge(result);
     }
 

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/MulticastNetworkConnector.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/MulticastNetworkConnector.java?rev=725323&r1=725322&r2=725323&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/MulticastNetworkConnector.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/MulticastNetworkConnector.java Wed Dec 10 08:23:07 2008
@@ -151,7 +151,9 @@
     }
 
     protected DemandForwardingBridgeSupport createBridge(Transport local, Transport remote) {
-        return new CompositeDemandForwardingBridge(this, local, remote);
+        CompositeDemandForwardingBridge bridge = new CompositeDemandForwardingBridge(this, local, remote);
+        bridge.setBrokerService(getBrokerService());
+        return bridge;
     }
 
 }

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBlobMessageMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBlobMessageMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBlobMessageMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBlobMessageMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,139 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQBlobMessageMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQBlobMessageMarshaller extends ActiveMQMessageMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQBlobMessage.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQBlobMessage();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+        ActiveMQBlobMessage info = (ActiveMQBlobMessage)o;
+        info.setRemoteBlobUrl(tightUnmarshalString(dataIn, bs));
+        info.setMimeType(tightUnmarshalString(dataIn, bs));
+        info.setDeletedByBroker(bs.readBoolean());
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        ActiveMQBlobMessage info = (ActiveMQBlobMessage)o;
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+        rc += tightMarshalString1(info.getRemoteBlobUrl(), bs);
+        rc += tightMarshalString1(info.getMimeType(), bs);
+        bs.writeBoolean(info.isDeletedByBroker());
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+        ActiveMQBlobMessage info = (ActiveMQBlobMessage)o;
+        tightMarshalString2(info.getRemoteBlobUrl(), dataOut, bs);
+        tightMarshalString2(info.getMimeType(), dataOut, bs);
+        bs.readBoolean();
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+        ActiveMQBlobMessage info = (ActiveMQBlobMessage)o;
+        info.setRemoteBlobUrl(looseUnmarshalString(dataIn));
+        info.setMimeType(looseUnmarshalString(dataIn));
+        info.setDeletedByBroker(dataIn.readBoolean());
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        ActiveMQBlobMessage info = (ActiveMQBlobMessage)o;
+
+        super.looseMarshal(wireFormat, o, dataOut);
+        looseMarshalString(info.getRemoteBlobUrl(), dataOut);
+        looseMarshalString(info.getMimeType(), dataOut);
+        dataOut.writeBoolean(info.isDeletedByBroker());
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBlobMessageMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBlobMessageMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBytesMessageMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBytesMessageMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBytesMessageMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBytesMessageMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQBytesMessageMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQBytesMessageMarshaller extends ActiveMQMessageMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQBytesMessage.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQBytesMessage();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBytesMessageMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQBytesMessageMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQDestinationMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQDestinationMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQDestinationMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQDestinationMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQDestinationMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public abstract class ActiveMQDestinationMarshaller extends BaseDataStreamMarshaller {
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+        ActiveMQDestination info = (ActiveMQDestination)o;
+        info.setPhysicalName(tightUnmarshalString(dataIn, bs));
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        ActiveMQDestination info = (ActiveMQDestination)o;
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+        rc += tightMarshalString1(info.getPhysicalName(), bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+        ActiveMQDestination info = (ActiveMQDestination)o;
+        tightMarshalString2(info.getPhysicalName(), dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+        ActiveMQDestination info = (ActiveMQDestination)o;
+        info.setPhysicalName(looseUnmarshalString(dataIn));
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        ActiveMQDestination info = (ActiveMQDestination)o;
+
+        super.looseMarshal(wireFormat, o, dataOut);
+        looseMarshalString(info.getPhysicalName(), dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQDestinationMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQDestinationMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMapMessageMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMapMessageMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMapMessageMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMapMessageMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQMapMessageMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQMapMessageMarshaller extends ActiveMQMessageMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQMapMessage.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQMapMessage();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMapMessageMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMapMessageMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMessageMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMessageMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMessageMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMessageMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQMessageMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQMessageMarshaller extends MessageMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQMessage.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQMessage();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMessageMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQMessageMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQObjectMessageMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQObjectMessageMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQObjectMessageMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQObjectMessageMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQObjectMessageMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQObjectMessageMarshaller extends ActiveMQMessageMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQObjectMessage.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQObjectMessage();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQObjectMessageMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQObjectMessageMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQQueueMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQQueueMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQQueueMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQQueueMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQQueueMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQQueueMarshaller extends ActiveMQDestinationMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQQueue.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQQueue();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQQueueMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQQueueMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQStreamMessageMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQStreamMessageMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQStreamMessageMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQStreamMessageMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQStreamMessageMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQStreamMessageMarshaller extends ActiveMQMessageMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQStreamMessage.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQStreamMessage();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQStreamMessageMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQStreamMessageMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempDestinationMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempDestinationMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempDestinationMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempDestinationMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,99 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQTempDestinationMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public abstract class ActiveMQTempDestinationMarshaller extends ActiveMQDestinationMarshaller {
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempDestinationMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempDestinationMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempQueueMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempQueueMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempQueueMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempQueueMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQTempQueueMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQTempQueueMarshaller extends ActiveMQTempDestinationMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQTempQueue.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQTempQueue();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempQueueMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempQueueMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempTopicMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempTopicMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempTopicMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempTopicMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQTempTopicMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQTempTopicMarshaller extends ActiveMQTempDestinationMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQTempTopic.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQTempTopic();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempTopicMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTempTopicMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTextMessageMarshaller.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTextMessageMarshaller.java?rev=725323&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTextMessageMarshaller.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTextMessageMarshaller.java Wed Dec 10 08:23:07 2008
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.v4;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.activemq.openwire.*;
+import org.apache.activemq.command.*;
+
+
+
+/**
+ * Marshalling code for Open Wire Format for ActiveMQTextMessageMarshaller
+ *
+ *
+ * NOTE!: This file is auto generated - do not modify!
+ *        if you need to make a change, please see the modify the groovy scripts in the
+ *        under src/gram/script and then use maven openwire:generate to regenerate 
+ *        this file.
+ *
+ * @version $Revision$
+ */
+public class ActiveMQTextMessageMarshaller extends ActiveMQMessageMarshaller {
+
+    /**
+     * Return the type of Data Structure we marshal
+     * @return short representation of the type data structure
+     */
+    public byte getDataStructureType() {
+        return ActiveMQTextMessage.DATA_STRUCTURE_TYPE;
+    }
+    
+    /**
+     * @return a new object instance
+     */
+    public DataStructure createObject() {
+        return new ActiveMQTextMessage();
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn, BooleanStream bs) throws IOException {
+        super.tightUnmarshal(wireFormat, o, dataIn, bs);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public int tightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) throws IOException {
+
+        int rc = super.tightMarshal1(wireFormat, o, bs);
+
+        return rc + 0;
+    }
+
+    /**
+     * Write a object instance to data output stream
+     *
+     * @param o the instance to be marshaled
+     * @param dataOut the output stream
+     * @throws IOException thrown if an error occurs
+     */
+    public void tightMarshal2(OpenWireFormat wireFormat, Object o, DataOutput dataOut, BooleanStream bs) throws IOException {
+        super.tightMarshal2(wireFormat, o, dataOut, bs);
+
+    }
+
+    /**
+     * Un-marshal an object instance from the data input stream
+     *
+     * @param o the object to un-marshal
+     * @param dataIn the data input stream to build the object from
+     * @throws IOException
+     */
+    public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataInput dataIn) throws IOException {
+        super.looseUnmarshal(wireFormat, o, dataIn);
+
+    }
+
+
+    /**
+     * Write the booleans that this object uses to a BooleanStream
+     */
+    public void looseMarshal(OpenWireFormat wireFormat, Object o, DataOutput dataOut) throws IOException {
+
+        super.looseMarshal(wireFormat, o, dataOut);
+
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTextMessageMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v4/ActiveMQTextMessageMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date