[jboss-cvs] JBoss Messaging SVN: r5853 - in trunk: src/main/org/jboss/messaging/core/client and 50 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 12 04:14:38 EST 2009


Author: timfox
Date: 2009-02-12 04:14:37 -0500 (Thu, 12 Feb 2009)
New Revision: 5853

Added:
   trunk/src/main/org/jboss/messaging/core/client/SendAcknowledgementHandler.java
   trunk/src/main/org/jboss/messaging/core/remoting/CommandConfirmationHandler.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayChainClusterTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettySymmetricClusterTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/session/SendAcknowledgementsTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/AddressSettingsDeployerTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/AddressSettingsTest.java
Removed:
   trunk/src/main/org/jboss/messaging/core/client/AcknowledgementHandler.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/QueueSettingsDeployerTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java
Modified:
   trunk/.classpath
   trunk/src/main/org/jboss/messaging/core/client/ClientMessage.java
   trunk/src/main/org/jboss/messaging/core/client/ClientProducer.java
   trunk/src/main/org/jboss/messaging/core/client/ClientSession.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageInternal.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
   trunk/src/main/org/jboss/messaging/core/config/cluster/BridgeConfiguration.java
   trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java
   trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java
   trunk/src/main/org/jboss/messaging/core/deployers/impl/AddressSettingsDeployer.java
   trunk/src/main/org/jboss/messaging/core/management/BridgeControlMBean.java
   trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
   trunk/src/main/org/jboss/messaging/core/management/impl/BridgeControl.java
   trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
   trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
   trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java
   trunk/src/main/org/jboss/messaging/core/message/Message.java
   trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
   trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java
   trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java
   trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java
   trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java
   trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
   trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java
   trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java
   trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/Channel.java
   trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnection.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnector.java
   trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/spi/Connection.java
   trunk/src/main/org/jboss/messaging/core/server/Queue.java
   trunk/src/main/org/jboss/messaging/core/server/cluster/Bridge.java
   trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java
   trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterConnectionImpl.java
   trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterManagerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java
   trunk/src/main/org/jboss/messaging/integration/transports/mina/MinaConnection.java
   trunk/src/main/org/jboss/messaging/integration/transports/netty/NettyConnection.java
   trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
   trunk/src/schemas/jbm-configuration.xsd
   trunk/tests/config/ConfigurationTest-full-config.xml
   trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/RMITestServer.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/Server.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeReconnectTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/ClusterTestBase.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayTwoNodeClusterTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OneWayChainClusterTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OnewayTwoNodeClusterTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/SymmetricClusterTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/RandomFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/management/BridgeControlTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/remoting/DestroyConsumerTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaRecoveryTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/xa/XaTimeoutTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/QueueDeployerTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueFactoryImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/transaction/impl/TransactionImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java
Log:
clustering, send acks, lots of bits and pieces, more tests, split brain demonstration

Modified: trunk/.classpath
===================================================================
--- trunk/.classpath	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/.classpath	2009-02-12 09:14:37 UTC (rev 5853)
@@ -62,5 +62,7 @@
 	<classpathentry kind="lib" path="thirdparty/netty/lib/netty-3.1.0.ALPHA2.jar"/>
 	<classpathentry kind="lib" path="thirdparty/apache-mina/lib/mina-core-2.0.0-M4.jar"/>
 	<classpathentry kind="lib" path="thirdparty/slf4j/log4j/lib/slf4j-log4j12-1.5.2.jar"/>
+	<classpathentry kind="lib" path="thirdparty/slf4j/log4j/lib/slf4j-log4j12.jar"/>
+	<classpathentry kind="lib" path="thirdparty/slf4j/api/lib/slf4j-api-1.4.3.jar"/>
 	<classpathentry kind="output" path="eclipse-output"/>
 </classpath>

Deleted: trunk/src/main/org/jboss/messaging/core/client/AcknowledgementHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/AcknowledgementHandler.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/AcknowledgementHandler.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -1,35 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */ 
-
-package org.jboss.messaging.core.client;
-
-/**
- * 
- * A AcknowledgementHandler
- * 
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public interface AcknowledgementHandler
-{
-   void onAcknowledgement(long id);
-}

Modified: trunk/src/main/org/jboss/messaging/core/client/ClientMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/ClientMessage.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/ClientMessage.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -40,5 +40,5 @@
    
    void setDeliveryCount(int deliveryCount);
 
-   void acknowledge() throws MessagingException;
+   void acknowledge() throws MessagingException;   
 }

Modified: trunk/src/main/org/jboss/messaging/core/client/ClientProducer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/ClientProducer.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/ClientProducer.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -40,10 +40,6 @@
    
    void send(String address, Message message) throws MessagingException;
 
-   void registerAcknowledgementHandler(AcknowledgementHandler handler);
-   
-   void unregisterAcknowledgementHandler(AcknowledgementHandler handler);
-      
    void close() throws MessagingException;
    
    boolean isClosed();   

Modified: trunk/src/main/org/jboss/messaging/core/client/ClientSession.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/ClientSession.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/ClientSession.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -194,4 +194,6 @@
    boolean removeFailureListener(FailureListener listener);
 
    int getVersion();
+   
+   void setSendAcknowledgementHandler(SendAcknowledgementHandler handler);
 }

Added: trunk/src/main/org/jboss/messaging/core/client/SendAcknowledgementHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/SendAcknowledgementHandler.java	                        (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/client/SendAcknowledgementHandler.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.core.client;
+
+import org.jboss.messaging.core.message.Message;
+
+/**
+ * A SendAcknowledgementHandler
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * 
+ * Created 9 Feb 2009 12:49:34
+ *
+ *
+ */
+public interface SendAcknowledgementHandler
+{
+   void sendAcknowledged(Message message);
+}

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -48,6 +48,7 @@
 
    private int flowControlSize = -1;
 
+
    /*
     * Constructor for when reading from network
     */
@@ -129,7 +130,7 @@
    {
       return largeMessage;
    }
-   
+
    /**
     * @param largeMessage the largeMessage to set
     */

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageInternal.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageInternal.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientMessageInternal.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -45,5 +45,5 @@
 
    boolean isLargeMessage();
    
-   boolean isFileMessage();
+   boolean isFileMessage();    
 }

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -26,7 +26,6 @@
 
 import java.nio.ByteBuffer;
 
-import org.jboss.messaging.core.client.AcknowledgementHandler;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.message.Message;
@@ -141,16 +140,6 @@
       send(toSimpleString(address), message);
    }
 
-   public void registerAcknowledgementHandler(final AcknowledgementHandler handler)
-   {
-      // TODO
-   }
-
-   public void unregisterAcknowledgementHandler(final AcknowledgementHandler handler)
-   {
-      // TODO
-   }
-
    public synchronized void close() throws MessagingException
    {
       if (closed)

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -90,8 +90,8 @@
 
    public static final int DEFAULT_MAX_RETRIES_BEFORE_FAILOVER = 0;
 
-   public static final int DEFAULT_MAX_RETRIES_AFTER_FAILOVER = 10;
-   
+   public static final int DEFAULT_MAX_RETRIES_AFTER_FAILOVER = 0;
+
    // Attributes
    // -----------------------------------------------------------------------------------
 
@@ -171,7 +171,10 @@
    {
       InetAddress groupAddress = InetAddress.getByName(discoveryGroupAddress);
 
-      discoveryGroup = new DiscoveryGroupImpl(discoveryGroupAddress, groupAddress, discoveryGroupPort, discoveryRefreshTimeout);
+      discoveryGroup = new DiscoveryGroupImpl(discoveryGroupAddress,
+                                              groupAddress,
+                                              discoveryGroupPort,
+                                              discoveryRefreshTimeout);
 
       discoveryGroup.registerListener(this);
 
@@ -228,16 +231,19 @@
       try
       {
          InetAddress groupAddress = InetAddress.getByName(discoveryGroupAddress);
-   
-         discoveryGroup = new DiscoveryGroupImpl(discoveryGroupAddress, groupAddress, discoveryGroupPort, discoveryRefreshTimeout);
-   
+
+         discoveryGroup = new DiscoveryGroupImpl(discoveryGroupAddress,
+                                                 groupAddress,
+                                                 discoveryGroupPort,
+                                                 discoveryRefreshTimeout);
+
          discoveryGroup.registerListener(this);
-   
+
          discoveryGroup.start();
       }
       catch (Exception e)
       {
-         //TODO - handle exceptions better
+         // TODO - handle exceptions better
          throw new MessagingException(MessagingException.NOT_CONNECTED, e.toString());
       }
 
@@ -357,7 +363,7 @@
       this.retryIntervalMultiplier = retryIntervalMultiplier;
       this.maxRetriesBeforeFailover = maxRetriesBeforeFailover;
       this.maxRetriesAfterFailover = maxRetriesAfterFailover;
-      
+
       this.initialWaitTimeout = -1;
 
       Pair<TransportConfiguration, TransportConfiguration> pair = new Pair<TransportConfiguration, TransportConfiguration>(connectorConfig,
@@ -752,15 +758,15 @@
             log.error("Failed to stop discovery group", e);
          }
       }
-      
+
       for (ConnectionManager connectionManager : connectionManagerMap.values())
       {
          connectionManager.close();
       }
-      
+
       connectionManagerMap.clear();
    }
-   
+
    // DiscoveryListener implementation --------------------------------------------------------
 
    public synchronized void connectorsChanged()
@@ -833,8 +839,8 @@
                                                final int ackBatchSize) throws MessagingException
    {
       if (discoveryGroup != null && !receivedBroadcast)
-      {         
-         boolean ok = discoveryGroup.waitForBroadcast(initialWaitTimeout);         
+      {
+         boolean ok = discoveryGroup.waitForBroadcast(initialWaitTimeout);
 
          if (!ok)
          {

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -40,9 +40,11 @@
 import org.jboss.messaging.core.client.ClientFileMessage;
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.client.ClientProducer;
+import org.jboss.messaging.core.client.SendAcknowledgementHandler;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.Channel;
+import org.jboss.messaging.core.remoting.CommandConfirmationHandler;
 import org.jboss.messaging.core.remoting.FailureListener;
 import org.jboss.messaging.core.remoting.Packet;
 import org.jboss.messaging.core.remoting.RemotingConnection;
@@ -65,6 +67,7 @@
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveContinuationMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAEndMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAForgetMessage;
@@ -104,7 +107,7 @@
  * $Id: ClientSessionImpl.java 3603 2008-01-21 18:49:20Z timfox $
  *
  */
-public class ClientSessionImpl implements ClientSessionInternal, FailureListener
+public class ClientSessionImpl implements ClientSessionInternal, FailureListener, CommandConfirmationHandler
 {
    // Constants ----------------------------------------------------------------------------
 
@@ -171,6 +174,8 @@
 
    private volatile boolean started;
 
+   private SendAcknowledgementHandler sendAckHandler;
+
    // Constructors ----------------------------------------------------------------------------
 
    public ClientSessionImpl(final ConnectionManager connectionManager,
@@ -234,32 +239,25 @@
    // ClientSession implementation
    // -----------------------------------------------------------------
 
-   public void createQueue(final SimpleString address, 
-                           final SimpleString queueName, 
-                           final boolean durable) throws MessagingException
+   public void createQueue(final SimpleString address, final SimpleString queueName, final boolean durable) throws MessagingException
    {
       createQueue(address, queueName, durable, false);
    }
 
-   public void createQueue(final String address,
-                           final String queueName,
-                           final boolean durable) throws MessagingException
+   public void createQueue(final String address, final String queueName, final boolean durable) throws MessagingException
    {
       createQueue(toSimpleString(address), toSimpleString(queueName), durable);
    }
-   
-   public void createQueue(final SimpleString address, 
-                           final SimpleString queueName, 
-                           final boolean durable, 
+
+   public void createQueue(final SimpleString address,
+                           final SimpleString queueName,
+                           final boolean durable,
                            final boolean temporary) throws MessagingException
    {
       createQueue(address, queueName, null, durable, temporary);
    }
 
-   public void createQueue(final String address,
-                           final String queueName,
-                           final boolean durable,
-                           final boolean temporary) throws MessagingException
+   public void createQueue(final String address, final String queueName, final boolean durable, final boolean temporary) throws MessagingException
    {
       createQueue(toSimpleString(address), toSimpleString(queueName), durable, temporary);
    }
@@ -276,11 +274,11 @@
 
       channel.sendBlocking(request);
    }
-   
-   public void createQueue(final String address, 
-                           final String queueName, 
-                           final String filterString, 
-                           final boolean durable, 
+
+   public void createQueue(final String address,
+                           final String queueName,
+                           final String filterString,
+                           final boolean durable,
                            final boolean temporary) throws MessagingException
    {
       createQueue(toSimpleString(address), toSimpleString(queueName), toSimpleString(filterString), durable, temporary);
@@ -292,7 +290,7 @@
 
       channel.sendBlocking(new SessionDeleteQueueMessage(queueName));
    }
-   
+
    public void deleteQueue(final String queueName) throws MessagingException
    {
       deleteQueue(toSimpleString(queueName));
@@ -308,7 +306,7 @@
 
       return response;
    }
-   
+
    public SessionBindingQueryResponseMessage bindingQuery(final SimpleString address) throws MessagingException
    {
       checkClosed();
@@ -328,7 +326,7 @@
 
       channel.sendBlocking(request);
    }
-   
+
    public void addDestination(final String address, final boolean durable, final boolean temporary) throws MessagingException
    {
       addDestination(toSimpleString(address), durable, temporary);
@@ -342,7 +340,7 @@
 
       channel.sendBlocking(request);
    }
-   
+
    public void removeDestination(final String address, final boolean durable) throws MessagingException
    {
       removeDestination(toSimpleString(address), durable);
@@ -362,7 +360,7 @@
    {
       return createConsumer(queueName, filterString, consumerWindowSize, consumerMaxRate, false);
    }
-   
+
    public ClientConsumer createConsumer(final String queueName, final String filterString) throws MessagingException
    {
       return createConsumer(toSimpleString(queueName), toSimpleString(filterString));
@@ -374,10 +372,8 @@
    {
       return createConsumer(queueName, filterString, consumerWindowSize, consumerMaxRate, browseOnly);
    }
-   
-   public ClientConsumer createConsumer(final String queueName, 
-                                        final String filterString,
-                                        final boolean browseOnly) throws MessagingException
+
+   public ClientConsumer createConsumer(final String queueName, final String filterString, final boolean browseOnly) throws MessagingException
    {
       return createConsumer(toSimpleString(queueName), toSimpleString(filterString), browseOnly);
    }
@@ -398,7 +394,7 @@
    {
       return internalCreateConsumer(queueName, filterString, windowSize, browseOnly, null);
    }
-   
+
    public ClientConsumer createConsumer(final String queueName,
                                         final String filterString,
                                         final int windowSize,
@@ -412,7 +408,7 @@
    {
       return createFileConsumer(directory, queueName, null, false);
    }
-   
+
    public ClientConsumer createFileConsumer(final File directory, final String queueName) throws MessagingException
    {
       return createFileConsumer(directory, toSimpleString(queueName));
@@ -424,10 +420,8 @@
    {
       return createFileConsumer(directory, queueName, filterString, consumerWindowSize, consumerMaxRate, false);
    }
-   
-   public ClientConsumer createFileConsumer(final File directory, 
-                                            final String queueName, 
-                                            final String filterString) throws MessagingException
+
+   public ClientConsumer createFileConsumer(final File directory, final String queueName, final String filterString) throws MessagingException
    {
       return createFileConsumer(directory, toSimpleString(queueName), toSimpleString(filterString));
    }
@@ -440,14 +434,14 @@
       return createFileConsumer(directory, queueName, filterString, consumerWindowSize, consumerMaxRate, browseOnly);
    }
 
-   public ClientConsumer createFileConsumer(final File directory, 
-                                            final String queueName, 
-                                            final String filterString, 
+   public ClientConsumer createFileConsumer(final File directory,
+                                            final String queueName,
+                                            final String filterString,
                                             final boolean browseOnly) throws MessagingException
    {
       return createFileConsumer(directory, toSimpleString(queueName), toSimpleString(filterString), browseOnly);
    }
-   
+
    /*
     * Note, we DO NOT currently support direct consumers (i.e. consumers we're delivery occurs on the remoting thread.
     * Direct consumers have issues with blocking and failover.
@@ -465,7 +459,7 @@
    {
       return internalCreateConsumer(queueName, filterString, windowSize, browseOnly, directory);
    }
-   
+
    public ClientConsumer createFileConsumer(final File directory,
                                             final String queueName,
                                             final String filterString,
@@ -473,19 +467,24 @@
                                             final int maxRate,
                                             final boolean browseOnly) throws MessagingException
    {
-      return createFileConsumer(directory, toSimpleString(queueName), toSimpleString(filterString), windowSize, maxRate, browseOnly);
+      return createFileConsumer(directory,
+                                toSimpleString(queueName),
+                                toSimpleString(filterString),
+                                windowSize,
+                                maxRate,
+                                browseOnly);
    }
 
    public ClientProducer createProducer() throws MessagingException
    {
       return createProducer((SimpleString)null);
    }
-   
+
    public ClientProducer createProducer(final SimpleString address) throws MessagingException
    {
       return createProducer(address, producerMaxRate);
    }
-   
+
    public ClientProducer createProducer(final String address) throws MessagingException
    {
       return createProducer(toSimpleString(address));
@@ -495,7 +494,7 @@
    {
       return createProducer(address, maxRate, blockOnNonPersistentSend, blockOnPersistentSend);
    }
-   
+
    public ClientProducer createProducer(final String address, final int rate) throws MessagingException
    {
       return createProducer(toSimpleString(address), rate);
@@ -760,13 +759,13 @@
       {
          closeChildren();
 
-         channel.sendBlocking(new SessionCloseMessage());
+         channel.sendBlocking(new SessionCloseMessage());                  
       }
       catch (Throwable ignore)
       {
          // Session close should always return without exception
       }
-
+      
       doCleanup();
    }
 
@@ -776,24 +775,33 @@
       {
          return;
       }
-
+      
       cleanUpChildren();
 
       doCleanup();
    }
 
+   public void setSendAcknowledgementHandler(final SendAcknowledgementHandler handler)
+   {
+      this.channel.setCommandConfirmationHandler(this);
+
+      this.sendAckHandler = handler;
+   }
+
    // Needs to be synchronized to prevent issues with occurring concurrently with close()
-   public synchronized void handleFailover(final RemotingConnection backupConnection)
+   public synchronized boolean handleFailover(final RemotingConnection backupConnection)
    {
       if (closed)
       {
-         return;
+         return true;
       }
 
+      boolean ok = false;
+
       // We lock the channel to prevent any packets to be added to the resend
       // cache during the failover process
       channel.lock();
-      
+
       try
       {
          channel.transferConnection(backupConnection);
@@ -811,6 +819,8 @@
          if (!response.isRemoved())
          {
             channel.replayCommands(response.getLastReceivedCommandID());
+
+            ok = true;
          }
          else
          {
@@ -829,8 +839,27 @@
       }
 
       channel.send(new SessionFailoverCompleteMessage(name));
+
+      return ok;
    }
+   
+   public void returnBlocking()
+   {
+      channel.returnBlocking();
+   }
 
+   // CommandConfirmationHandler implementation ------------------------------------
+
+   public void commandConfirmed(final Packet packet)
+   {
+      if (packet.getType() == PacketImpl.SESS_SEND)
+      {
+         SessionSendMessage ssm = (SessionSendMessage)packet;
+
+         sendAckHandler.sendAcknowledged(ssm.getClientMessage());
+      }
+   }
+
    // XAResource implementation
    // --------------------------------------------------------------------
 
@@ -1064,9 +1093,11 @@
    public void start(final Xid xid, final int flags) throws XAException
    {
       checkXA();
-      if(state != null)
+      if (state != null)
       {
-         log.error("XA operation failed Cannot start, session is already doing work in a transaction " + state.xid + "code:" + XAException.XAER_PROTO);
+         log.error("XA operation failed Cannot start, session is already doing work in a transaction " + state.xid +
+                   "code:" +
+                   XAException.XAER_PROTO);
          throw new XAException(XAException.XAER_PROTO);
       }
       try
@@ -1232,7 +1263,7 @@
 
       return producer;
    }
-   
+
    private void checkXA() throws XAException
    {
       if (!xa)
@@ -1309,6 +1340,7 @@
    class ClientXAState
    {
       final Xid xid;
+
       int state;
 
       public ClientXAState(Xid xid)

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -45,9 +45,11 @@
 
    void handleReceiveContinuation(long consumerID, SessionReceiveContinuationMessage continuation) throws Exception;
 
-   void handleFailover(RemotingConnection backupConnection);
+   boolean handleFailover(RemotingConnection backupConnection);
 
    RemotingConnection getConnection();
    
    void cleanUp() throws Exception;
+   
+   void returnBlocking();
 }

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -191,7 +191,7 @@
       // being returned from the client side so we need to fail the conn and
       // call it's listeners
       if (connections.containsKey(connectionID))
-      {        
+      {
          MessagingException me = new MessagingException(MessagingException.OBJECT_CLOSED,
                                                         "The conn has been closed by the server");
 
@@ -243,10 +243,10 @@
                synchronized (failoverLock)
                {
                   connection = getConnectionForCreateSession();
-                  
+
                   if (connection == null)
                   {
-                     //This can happen if the connection manager gets closed - e.g. the server gets shut down
+                     // This can happen if the connection manager gets closed - e.g. the server gets shut down
                      return null;
                   }
 
@@ -409,16 +409,6 @@
 
    public boolean connectionFailed(final MessagingException me)
    {
-      if (me.getCode() == MessagingException.OBJECT_CLOSED)
-      {
-         log.info("The server closed the connection");
-         // The server has closed the connection. We don't want failover to occur in this case -
-         // either the server has booted off the connection, or it didn't receive a ping in time
-         // in either case server side resources on both live and backup will be removed so the client
-         // can't failover automatically anyway
-         return true;
-      }
-
       return !failover();
    }
 
@@ -436,14 +426,10 @@
 
    private RemotingConnection getConnectionForCreateSession() throws MessagingException
    {
-      boolean retried = false;
-
       while (true)
       {
          if (closed)
          {
-            log.warn("ConnectionManager is now closed");
-
             return null;
          }
 
@@ -468,15 +454,9 @@
             catch (Exception ignore)
             {
             }
-
-            retried = true;
          }
          else
          {
-            if (retried)
-            {
-               log.info("Reconnected successfully");
-            }
             return connection;
          }
       }
@@ -590,41 +570,27 @@
                   transportParams = backupTransportParams;
 
                   if (maxRetriesAfterFailover == 0)
-                  {
+                  {                     
                      retries = 1;
                   }
-
-                  log.info("Failing over to backup");
                }
-               else
-               {
-                  log.info("Attempting reconnection");
-               }
 
                backupConnectorFactory = null;
 
                backupTransportParams = null;
 
                done = reconnect(retries);
-
-               if (done)
-               {
-                  log.info("Successfully reconnected");
-               }
-               else
-               {
-                  log.info("Unable to failover/reconnect");
-               }
             }
-            else
-            {
-               log.info("succeeded in reconnecting to node");
-            }
 
             for (RemotingConnection connection : oldConnections)
             {
                connection.destroy();
             }
+            
+            if (done)
+            {
+               log.info("Automatic failover / reconnection successful");
+            }
 
             return done;
          }
@@ -639,7 +605,7 @@
    {
       // We fail over sessions per connection to ensure there is the same mapping of channel id
       // on live and backup connections
-
+      
       Map<RemotingConnection, List<ClientSessionInternal>> sessionsPerConnection = new HashMap<RemotingConnection, List<ClientSessionInternal>>();
 
       for (Map.Entry<ClientSessionInternal, RemotingConnection> entry : sessions.entrySet())
@@ -670,7 +636,7 @@
 
          if (backupConnection == null)
          {
-            log.warn("Failed to reconnect to server.");
+            log.warn("Failed to connect to server.");
 
             ok = false;
 
@@ -708,7 +674,12 @@
          // If all connections got ok, then handle failover
          for (Map.Entry<ClientSessionInternal, RemotingConnection> entry : sessions.entrySet())
          {
-            entry.getKey().handleFailover(entry.getValue());
+            ok = entry.getKey().handleFailover(entry.getValue());
+
+            if (!ok)
+            {
+               break;
+            }
          }
       }
 
@@ -729,9 +700,9 @@
 
             return null;
          }
-
+         
          RemotingConnection connection = getConnection(sessions.size());
-
+         
          if (connection == null)
          {
             // Failed to get backup connection
@@ -747,8 +718,6 @@
                   return null;
                }
 
-               log.warn("Now waiting " + interval + " ms before attempting reconnection.");
-
                try
                {
                   Thread.sleep(interval);
@@ -806,7 +775,7 @@
       if (connections.size() < maxConnections)
       {
          // Create a new one
-
+         
          DelegatingBufferHandler handler = new DelegatingBufferHandler();
 
          Connector connector = null;

Modified: trunk/src/main/org/jboss/messaging/core/config/cluster/BridgeConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/cluster/BridgeConfiguration.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/config/cluster/BridgeConfiguration.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -23,7 +23,6 @@
 package org.jboss.messaging.core.config.cluster;
 
 import java.io.Serializable;
-import java.util.List;
 
 import org.jboss.messaging.util.Pair;
 
@@ -41,17 +40,13 @@
    private static final long serialVersionUID = -1057244274380572226L;
 
    private final String name;
-   
+
    private final String queueName;
 
    private final String forwardingAddress;
 
    private final String filterString;
 
-   private final int maxBatchSize;
-
-   private final long maxBatchTime;
-
    private final Pair<String, String> connectorPair;
 
    private final String discoveryGroupName;
@@ -72,22 +67,18 @@
                               final String queueName,
                               final String forwardingAddress,
                               final String filterString,
-                              final int maxBatchSize,
-                              final long maxBatchTime,
                               final String transformerClassName,
                               final long retryInterval,
                               final double retryIntervalMultiplier,
                               final int maxRetriesBeforeFailover,
                               final int maxRetriesAfterFailover,
-                              final boolean useDuplicateDetection,                             
+                              final boolean useDuplicateDetection,
                               final Pair<String, String> connectorPair)
    {
       this.name = name;
       this.queueName = queueName;
       this.forwardingAddress = forwardingAddress;
       this.filterString = filterString;
-      this.maxBatchSize = maxBatchSize;
-      this.maxBatchTime = maxBatchTime;
       this.transformerClassName = transformerClassName;
       this.retryInterval = retryInterval;
       this.retryIntervalMultiplier = retryIntervalMultiplier;
@@ -102,22 +93,18 @@
                               final String queueName,
                               final String forwardingAddress,
                               final String filterString,
-                              final int maxBatchSize,
-                              final long maxBatchTime,
                               final String transformerClassName,
                               final long retryInterval,
                               final double retryIntervalMultiplier,
                               final int maxRetriesBeforeFailover,
                               final int maxRetriesAfterFailover,
-                              final boolean useDuplicateDetection,                             
+                              final boolean useDuplicateDetection,
                               final String discoveryGroupName)
    {
       this.name = name;
       this.queueName = queueName;
       this.forwardingAddress = forwardingAddress;
       this.filterString = filterString;
-      this.maxBatchSize = maxBatchSize;
-      this.maxBatchTime = maxBatchTime;
       this.transformerClassName = transformerClassName;
       this.retryInterval = retryInterval;
       this.retryIntervalMultiplier = retryIntervalMultiplier;
@@ -127,7 +114,7 @@
       this.connectorPair = null;
       this.discoveryGroupName = discoveryGroupName;
    }
-   
+
    public String getName()
    {
       return name;
@@ -148,16 +135,6 @@
       return filterString;
    }
 
-   public int getMaxBatchSize()
-   {
-      return maxBatchSize;
-   }
-
-   public long getMaxBatchTime()
-   {
-      return maxBatchTime;
-   }
-
    public String getTransformerClassName()
    {
       return transformerClassName;

Modified: trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -115,7 +115,7 @@
 
    public static final int DEFAULT_MESSAGE_EXPIRY_THREAD_PRIORITY = 3;
    
-   public static final int DEFAULT_ID_CACHE_SIZE = 100;
+   public static final int DEFAULT_ID_CACHE_SIZE = 2000;
    
    public static final boolean DEFAULT_PERSIST_ID_CACHE = true;
    

Modified: trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -67,6 +67,7 @@
    // Constants ------------------------------------------------------------------------
 
    private static final String DEFAULT_CONFIGURATION_URL = "jbm-configuration.xml";
+
    private static final String CONFIGURATION_SCHEMA_URL = "jbm-configuration.xsd";
 
    // Attributes ----------------------------------------------------------------------
@@ -103,7 +104,7 @@
       securityInvalidationInterval = getLong(e, "security-invalidation-interval", securityInvalidationInterval);
 
       connectionScanPeriod = getLong(e, "connection-scan-period", connectionScanPeriod);
-      
+
       connectionTTLOverride = getLong(e, "connection-ttl-override", connectionTTLOverride);
 
       transactionTimeout = getLong(e, "transaction-timeout", transactionTimeout);
@@ -113,9 +114,9 @@
       messageExpiryScanPeriod = getLong(e, "message-expiry-scan-period", messageExpiryScanPeriod);
 
       messageExpiryThreadPriority = getInteger(e, "message-expiry-thread-priority", messageExpiryThreadPriority);
-      
+
       idCacheSize = getInteger(e, "id-cache-size", idCacheSize);
-      
+
       persistIDCache = getBoolean(e, "persist-id-cache", persistIDCache);
 
       managementAddress = new SimpleString(getString(e, "management-address", managementAddress.toString()));
@@ -219,7 +220,7 @@
 
          parseBridgeConfiguration(mfNode);
       }
-      
+
       NodeList ccNodes = e.getElementsByTagName("cluster-connection");
 
       for (int i = 0; i < ccNodes.getLength(); i++)
@@ -228,7 +229,7 @@
 
          parseClusterConnectionConfiguration(ccNode);
       }
-      
+
       NodeList dvNodes = e.getElementsByTagName("divert");
 
       for (int i = 0; i < dvNodes.getLength(); i++)
@@ -237,7 +238,7 @@
 
          parseDivertConfiguration(dvNode);
       }
-      
+
       // Persistence config
 
       largeMessagesDirectory = getString(e, "large-messages-directory", largeMessagesDirectory);
@@ -249,7 +250,7 @@
       journalDirectory = getString(e, "journal-directory", journalDirectory);
 
       pagingMaxThreads = getInteger(e, "paging-max-threads", pagingMaxThreads);
-      
+
       pagingDirectory = getString(e, "paging-directory", pagingDirectory);
 
       pagingMaxGlobalSize = getLong(e, "paging-max-global-size-bytes", pagingMaxGlobalSize);
@@ -346,7 +347,7 @@
    private TransportConfiguration parseTransportConfiguration(final Node node)
    {
       Node nameNode = node.getAttributes().getNamedItem("name");
-      
+
       String name = nameNode != null ? nameNode.getNodeValue() : null;
 
       NodeList children = node.getChildNodes();
@@ -527,39 +528,39 @@
          discoveryGroupConfigurations.put(name, config);
       }
    }
-   
+
    private void parseClusterConnectionConfiguration(final Element brNode)
    {
       String name = null;
-      
+
       String address = null;
-      
+
       boolean duplicateDetection = DEFAULT_CLUSTER_DUPLICATE_DETECTION;
-      
+
       boolean forwardWhenNoConsumers = DEFAULT_CLUSTER_FORWARD_WHEN_NO_CONSUMERS;
-      
+
       String discoveryGroupName = null;
-      
+
       int maxHops = DEFAULT_CLUSTER_MAX_HOPS;
-      
+
       long retryInterval = DEFAULT_RETRY_INTERVAL;
-      
+
       double retryIntervalMultiplier = DEFAULT_RETRY_INTERVAL_MULTIPLIER;
-      
+
       int maxRetriesBeforeFailover = DEFAULT_MAX_RETRIES_BEFORE_FAILOVER;
-      
+
       int maxRetriesAfterFailover = DEFAULT_MAX_RETRIES_AFTER_FAILOVER;
-      
+
       List<Pair<String, String>> connectorPairs = new ArrayList<Pair<String, String>>();
-      
+
       name = brNode.getAttribute("name");
-      
+
       NodeList children = brNode.getChildNodes();
 
       for (int j = 0; j < children.getLength(); j++)
       {
          Node child = children.item(j);
-         
+
          if (child.getNodeName().equals("retry-interval"))
          {
             retryInterval = XMLUtil.parseLong(child);
@@ -598,59 +599,71 @@
             }
 
             Pair<String, String> connectorPair = new Pair<String, String>(connectorName, backupConnectorName);
-            
+
             connectorPairs.add(connectorPair);
          }
       }
-      
+
       ClusterConnectionConfiguration config;
-      
+
       if (discoveryGroupName == null)
       {
-         config = new ClusterConnectionConfiguration(name, address, retryInterval, retryIntervalMultiplier, maxRetriesBeforeFailover, maxRetriesAfterFailover,
-                                                     duplicateDetection, forwardWhenNoConsumers, maxHops, connectorPairs);
+         config = new ClusterConnectionConfiguration(name,
+                                                     address,
+                                                     retryInterval,
+                                                     retryIntervalMultiplier,
+                                                     maxRetriesBeforeFailover,
+                                                     maxRetriesAfterFailover,
+                                                     duplicateDetection,
+                                                     forwardWhenNoConsumers,
+                                                     maxHops,
+                                                     connectorPairs);
       }
       else
       {
-         config = new ClusterConnectionConfiguration(name, address, retryInterval, retryIntervalMultiplier, maxRetriesBeforeFailover, maxRetriesAfterFailover,
-                                                     duplicateDetection, forwardWhenNoConsumers, maxHops, discoveryGroupName);
+         config = new ClusterConnectionConfiguration(name,
+                                                     address,
+                                                     retryInterval,
+                                                     retryIntervalMultiplier,
+                                                     maxRetriesBeforeFailover,
+                                                     maxRetriesAfterFailover,
+                                                     duplicateDetection,
+                                                     forwardWhenNoConsumers,
+                                                     maxHops,
+                                                     discoveryGroupName);
       }
-      
-      clusterConfigurations.add(config);      
+
+      clusterConfigurations.add(config);
    }
 
    private void parseBridgeConfiguration(final Element brNode)
    {
       String name = null;
-      
+
       String queueName = null;
-            
+
       String forwardingAddress = null;
 
       String filterString = null;
 
-      int maxBatchSize = DEFAULT_MAX_FORWARD_BATCH_SIZE;
-
-      long maxBatchTime = DEFAULT_MAX_FORWARD_BATCH_TIME;
-
       Pair<String, String> connectorPair = null;
 
       String discoveryGroupName = null;
 
       String transformerClassName = null;
-      
+
       long retryInterval = DEFAULT_RETRY_INTERVAL;
-      
+
       double retryIntervalMultiplier = DEFAULT_RETRY_INTERVAL_MULTIPLIER;
-      
+
       int maxRetriesBeforeFailover = DEFAULT_MAX_RETRIES_BEFORE_FAILOVER;
-      
+
       int maxRetriesAfterFailover = DEFAULT_MAX_RETRIES_AFTER_FAILOVER;
-      
+
       boolean useDuplicateDetection = DEFAULT_BRIDGE_DUPLICATE_DETECTION;
-      
+
       name = brNode.getAttribute("name");
-      
+
       NodeList children = brNode.getChildNodes();
 
       for (int j = 0; j < children.getLength(); j++)
@@ -669,14 +682,6 @@
          {
             filterString = child.getAttributes().getNamedItem("string").getNodeValue();
          }
-         else if (child.getNodeName().equals("max-batch-size"))
-         {
-            maxBatchSize = XMLUtil.parseInt(child);
-         }
-         else if (child.getNodeName().equals("max-batch-time"))
-         {
-            maxBatchTime = XMLUtil.parseLong(child);
-         }
          else if (child.getNodeName().equals("transformer-class-name"))
          {
             transformerClassName = child.getTextContent().trim();
@@ -724,42 +729,38 @@
 
       BridgeConfiguration config;
 
-      if (connectorPair != null)               
+      if (connectorPair != null)
       {
          config = new BridgeConfiguration(name,
-                                               queueName,
-                                               forwardingAddress,
-                                               filterString,                                              
-                                               maxBatchSize,
-                                               maxBatchTime,
-                                               transformerClassName,
-                                               retryInterval,
-                                               retryIntervalMultiplier,
-                                               maxRetriesBeforeFailover,
-                                               maxRetriesAfterFailover,
-                                               useDuplicateDetection,                                                                                       
-                                               connectorPair);
+                                          queueName,
+                                          forwardingAddress,
+                                          filterString,
+                                          transformerClassName,
+                                          retryInterval,
+                                          retryIntervalMultiplier,
+                                          maxRetriesBeforeFailover,
+                                          maxRetriesAfterFailover,
+                                          useDuplicateDetection,
+                                          connectorPair);
       }
       else
       {
          config = new BridgeConfiguration(name,
-                                               queueName,
-                                               forwardingAddress,
-                                               filterString,                                            
-                                               maxBatchSize,
-                                               maxBatchTime,
-                                               transformerClassName,
-                                               retryInterval,
-                                               retryIntervalMultiplier,
-                                               maxRetriesBeforeFailover,
-                                               maxRetriesAfterFailover,       
-                                               useDuplicateDetection,                                                                                         
-                                               discoveryGroupName);
+                                          queueName,
+                                          forwardingAddress,
+                                          filterString,
+                                          transformerClassName,
+                                          retryInterval,
+                                          retryIntervalMultiplier,
+                                          maxRetriesBeforeFailover,
+                                          maxRetriesAfterFailover,
+                                          useDuplicateDetection,
+                                          discoveryGroupName);
       }
 
       bridgeConfigurations.add(config);
    }
-   
+
    private void parseDivertConfiguration(final Element dvNode)
    {
       String name = null;
@@ -775,7 +776,7 @@
       String filterString = null;
 
       String transformerClassName = null;
-            
+
       NodeList children = dvNode.getChildNodes();
 
       for (int j = 0; j < children.getLength(); j++)
@@ -793,7 +794,7 @@
          else if (child.getNodeName().equals("address"))
          {
             address = child.getTextContent().trim();
-         }         
+         }
          else if (child.getNodeName().equals("forwarding-address"))
          {
             forwardingAddress = child.getTextContent().trim();
@@ -809,11 +810,17 @@
          else if (child.getNodeName().equals("transformer-class-name"))
          {
             transformerClassName = child.getTextContent().trim();
-         }        
+         }
       }
 
-      DivertConfiguration config = new DivertConfiguration(name, routingName, address, forwardingAddress, exclusive, filterString, transformerClassName);
-      
+      DivertConfiguration config = new DivertConfiguration(name,
+                                                           routingName,
+                                                           address,
+                                                           forwardingAddress,
+                                                           exclusive,
+                                                           filterString,
+                                                           transformerClassName);
+
       divertConfigurations.add(config);
    }
 }

Modified: trunk/src/main/org/jboss/messaging/core/deployers/impl/AddressSettingsDeployer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/deployers/impl/AddressSettingsDeployer.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/deployers/impl/AddressSettingsDeployer.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -56,12 +56,12 @@
 
    private static final String SOLO_MESSAGE_NODE_NAME = "solo-queue";
 
-   private final HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
-   public AddressSettingsDeployer(final DeploymentManager deploymentManager, final HierarchicalRepository<AddressSettings> queueSettingsRepository)
+   public AddressSettingsDeployer(final DeploymentManager deploymentManager, final HierarchicalRepository<AddressSettings> addressSettingsRepository)
    {
    	super(deploymentManager);
-      this.queueSettingsRepository = queueSettingsRepository;
+      this.addressSettingsRepository = addressSettingsRepository;
    }
    
    /**
@@ -146,7 +146,7 @@
          }
       }
       
-      queueSettingsRepository.addMatch(match, addressSettings);
+      addressSettingsRepository.addMatch(match, addressSettings);
    }
 
    public String[] getConfigFileNames()
@@ -163,7 +163,7 @@
    {
       String match = node.getAttributes().getNamedItem(getKeyAttribute()).getNodeValue();
       
-      queueSettingsRepository.removeMatch(match);
+      addressSettingsRepository.removeMatch(match);
    }
 
    /**

Modified: trunk/src/main/org/jboss/messaging/core/management/BridgeControlMBean.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/BridgeControlMBean.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/management/BridgeControlMBean.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -46,10 +46,6 @@
 
    String getFilterString();
 
-   int getMaxBatchSize();
-
-   long getMaxBatchTime();
-
    String getTransformerClassName();
 
    TabularData getConnectorPair();

Modified: trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/ManagementService.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/management/ManagementService.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -66,7 +66,7 @@
    MessagingServerControlMBean registerServer(PostOffice postOffice,
                                               StorageManager storageManager,
                                               Configuration configuration,                                            
-                                              HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                                              HierarchicalRepository<AddressSettings> addressSettingsRepository,
                                               HierarchicalRepository<Set<Role>> securityRepository,
                                               ResourceManager resourceManager,
                                               RemotingService remotingService,

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/BridgeControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/BridgeControl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/BridgeControl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -84,16 +84,7 @@
       return configuration.getFilterString();
    }
 
-   public int getMaxBatchSize()
-   {
-      return configuration.getMaxBatchSize();
-   }
 
-   public long getMaxBatchTime()
-   {
-      return configuration.getMaxBatchTime();
-   }
-
    public int getMaxRetriesAfterFailover()
    {
       return configuration.getMaxRetriesAfterFailover();

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -112,7 +112,7 @@
 
    private HierarchicalRepository<Set<Role>> securityRepository;
 
-   private HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private MessagingServerControl managedServer;
 
@@ -149,7 +149,7 @@
    public MessagingServerControlMBean registerServer(final PostOffice postOffice,
                                                      final StorageManager storageManager,
                                                      final Configuration configuration,
-                                                     final HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                                                     final HierarchicalRepository<AddressSettings> addressSettingsRepository,
                                                      final HierarchicalRepository<Set<Role>> securityRepository,
                                                      final ResourceManager resourceManager,
                                                      final RemotingService remotingService,
@@ -157,7 +157,7 @@
                                                      final QueueFactory queueFactory) throws Exception
    {
       this.postOffice = postOffice;
-      this.queueSettingsRepository = queueSettingsRepository;
+      this.addressSettingsRepository = addressSettingsRepository;
       this.securityRepository = securityRepository;
       this.storageManager = storageManager;
       this.managementNotificationAddress = configuration.getManagementNotificationAddress();
@@ -226,7 +226,7 @@
                                                   messageCounterManager.getMaxDayCount());
       messageCounterManager.registerMessageCounter(queue.getName().toString(), counter);
       ObjectName objectName = ObjectNames.getQueueObjectName(address, queue.getName());
-      QueueControl queueControl = new QueueControl(queue, storageManager, postOffice, queueSettingsRepository, counter);
+      QueueControl queueControl = new QueueControl(queue, storageManager, postOffice, addressSettingsRepository, counter);
       registerInJMX(objectName, new ReplicationAwareQueueControlWrapper(objectName, queueControl));
       registerInRegistry(objectName, queueControl);
 
@@ -501,7 +501,7 @@
             {
                notifProps = new TypedProperties();
             }
-
+            
             notifProps.putStringProperty(ManagementHelper.HDR_NOTIFICATION_TYPE, new SimpleString(notification.getType().toString()));
             
             notifProps.putLongProperty(ManagementHelper.HDR_NOTIFICATION_TIMESTAMP, System.currentTimeMillis());

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -47,6 +47,7 @@
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.filter.impl.FilterImpl;
+import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.management.MessagingServerControlMBean;
 import org.jboss.messaging.core.management.NotificationType;
 import org.jboss.messaging.core.management.TransportConfigurationInfo;
@@ -77,6 +78,8 @@
 {
    // Constants -----------------------------------------------------
 
+   private static final Logger log = Logger.getLogger(MessagingServerControl.class);
+   
    private static DateFormat DATE_FORMAT = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM);
 
    // Attributes ----------------------------------------------------
@@ -476,6 +479,7 @@
    public String[] listRemoteAddresses()
    {
       Set<RemotingConnection> connections = remotingService.getConnections();
+      
       String[] remoteAddresses = new String[connections.size()];
       int i = 0;
       for (RemotingConnection connection : connections)

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -68,7 +68,7 @@
 
    private final PostOffice postOffice;
 
-   private final HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private final MessageCounter counter;
 
@@ -79,13 +79,13 @@
    public QueueControl(final Queue queue,
                        final StorageManager storageManager,
                        final PostOffice postOffice,
-                       final HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                       final HierarchicalRepository<AddressSettings> addressSettingsRepository,
                        final MessageCounter counter)
    {
       this.queue = queue;
       this.storageManager = storageManager;
       this.postOffice = postOffice;
-      this.queueSettingsRepository = queueSettingsRepository;
+      this.addressSettingsRepository = addressSettingsRepository;
       this.counter = counter;
    }
 
@@ -152,7 +152,7 @@
 
    public String getDeadLetterAddress()
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getName());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getName());
       if (addressSettings != null && addressSettings.getDeadLetterAddress() != null)
       {
          return addressSettings.getDeadLetterAddress().toString();
@@ -165,7 +165,7 @@
 
    public void setDeadLetterAddress(String deadLetterAddress) throws Exception
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getName());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getName());
 
       if (deadLetterAddress != null)
       {
@@ -175,7 +175,7 @@
 
    public String getExpiryAddress()
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getName());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getName());
       if (addressSettings != null && addressSettings.getExpiryAddress() != null)
       {
          return addressSettings.getExpiryAddress().toString();
@@ -188,7 +188,7 @@
 
    public void setExpiryAddress(String expiryAddres) throws Exception
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getName());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getName());
 
       if (expiryAddres != null)
       {

Modified: trunk/src/main/org/jboss/messaging/core/message/Message.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/message/Message.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/message/Message.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -24,6 +24,7 @@
 
 import java.util.Set;
 
+import org.jboss.messaging.core.client.SendAcknowledgementHandler;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
 import org.jboss.messaging.util.SimpleString;
 import org.jboss.messaging.util.TypedProperties;
@@ -89,9 +90,7 @@
    void encodeBody(MessagingBuffer buffer);
    
    void decodeBody(MessagingBuffer buffer);
-   
-   
-   
+      
    // Properties
    // ------------------------------------------------------------------
    

Modified: trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -29,6 +29,7 @@
 
 import java.util.Set;
 
+import org.jboss.messaging.core.client.SendAcknowledgementHandler;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.message.Message;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
@@ -94,6 +95,7 @@
 
    private MessagingBuffer body;
    
+  
    // Constructors --------------------------------------------------
 
    protected MessageImpl()
@@ -305,7 +307,7 @@
 
       return System.currentTimeMillis() - expiration >= 0;
    }
-
+   
    // Properties
    // ---------------------------------------------------------------------------------------
 

Modified: trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -52,7 +52,7 @@
 
    void setPostOffice(PostOffice office);
 
-   List<PagingStore> reloadStores(HierarchicalRepository<AddressSettings> queueSettingsRepository) throws Exception;
+   List<PagingStore> reloadStores(HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception;
 
    /**
     * @param storeName

Modified: trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -67,7 +67,7 @@
 
    private final ConcurrentMap<SimpleString, PagingStore> stores = new ConcurrentHashMap<SimpleString, PagingStore>();
 
-   private final HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private final PagingStoreFactory pagingStoreFactory;
 
@@ -89,14 +89,14 @@
 
    public PagingManagerImpl(final PagingStoreFactory pagingSPI,
                             final StorageManager storageManager,
-                            final HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                            final HierarchicalRepository<AddressSettings> addressSettingsRepository,
                             final long maxGlobalSize,
                             final long defaultPageSize,
                             final boolean syncNonTransactional,
                             final boolean backup)
    {
       pagingStoreFactory = pagingSPI;
-      this.queueSettingsRepository = queueSettingsRepository;
+      this.addressSettingsRepository = addressSettingsRepository;
       this.storageManager = storageManager;
       this.defaultPageSize = defaultPageSize;
       this.maxGlobalSize = maxGlobalSize;
@@ -137,7 +137,7 @@
     */
    public synchronized void reloadStores() throws Exception
    {
-      List<PagingStore> destinations = pagingStoreFactory.reloadStores(queueSettingsRepository);
+      List<PagingStore> destinations = pagingStoreFactory.reloadStores(addressSettingsRepository);
 
       for (PagingStore store : destinations)
       {
@@ -338,7 +338,7 @@
 
    private PagingStore newStore(final SimpleString destinationName) throws Exception
    {
-      return pagingStoreFactory.newStore(destinationName, queueSettingsRepository.getMatch(destinationName.toString()));
+      return pagingStoreFactory.newStore(destinationName, addressSettingsRepository.getMatch(destinationName.toString()));
    }
 
    // Inner classes -------------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -169,7 +169,7 @@
       this.postOffice = postOffice;
    }
 
-   public List<PagingStore> reloadStores(final HierarchicalRepository<AddressSettings> queueSettingsRepository) throws Exception
+   public List<PagingStore> reloadStores(final HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception
    {
       File pageDirectory = new File(directory);
 
@@ -213,7 +213,7 @@
 
             SequentialFileFactory factory = newFileFactory(guid);
 
-            AddressSettings settings = queueSettingsRepository.getMatch(destinationName.toString());
+            AddressSettings settings = addressSettingsRepository.getMatch(destinationName.toString());
 
             PagingStore store = new PagingStoreImpl(pagingManager,
                                                     storageManager,

Modified: trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -103,7 +103,7 @@
 
    void loadMessageJournal(PostOffice postOffice,
                            StorageManager storageManager,
-                           HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                           HierarchicalRepository<AddressSettings> addressSettingsRepository,
                            Map<Long, Queue> queues,
                            ResourceManager resourceManager,
                            Map<SimpleString, List<Pair<byte[], Long>>> duplicateIDMap) throws Exception;

Modified: trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -438,7 +438,7 @@
 
    public void loadMessageJournal(final PostOffice postOffice,
                                   final StorageManager storageManager,
-                                  final HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                                  final HierarchicalRepository<AddressSettings> addressSettingsRepository,
                                   final Map<Long, Queue> queues,
                                   final ResourceManager resourceManager,
                                   final Map<SimpleString, List<Pair<byte[], Long>>> duplicateIDMap) throws Exception
@@ -661,7 +661,7 @@
 
       loadPreparedTransactions(postOffice,
                                storageManager,
-                               queueSettingsRepository,
+                               addressSettingsRepository,
                                queues,
                                resourceManager,
                                preparedTransactions,
@@ -670,7 +670,7 @@
 
    private void loadPreparedTransactions(final PostOffice postOffice,
                                          final StorageManager storageManager,
-                                         final HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                                         final HierarchicalRepository<AddressSettings> addressSettingsRepository,
                                          final Map<Long, Queue> queues,
                                          final ResourceManager resourceManager,
                                          final List<PreparedTransactionInfo> preparedTransactions,

Modified: trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -215,7 +215,7 @@
 
    public void loadMessageJournal(PostOffice postOffice,
                                   StorageManager storageManager,
-                                  HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                                  HierarchicalRepository<AddressSettings> addressSettingsRepository,
                                   Map<Long, Queue> queues,
                                   ResourceManager resourceManager,
                                   Map<SimpleString, List<Pair<byte[], Long>>> duplicateIDMap) throws Exception

Modified: trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -133,6 +133,8 @@
 
    private void routeFromCluster(final ServerMessage message, final Transaction tx) throws Exception
    {
+     // log.info(System.identityHashCode(this) + " routing from cluster");
+
       byte[] ids = (byte[])message.getProperty(MessageImpl.HDR_ROUTE_TO_IDS);
       
       ByteBuffer buff = ByteBuffer.wrap(ids);
@@ -156,6 +158,8 @@
          binding.willRoute(message);
          
          chosen.add(binding.getBindable());
+         
+        // log.info("routing to " + binding.getType() + " : " + binding.getRoutingName());
       }
       
       for (Bindable bindable : chosen)
@@ -171,6 +175,8 @@
 
    public void route(final ServerMessage message, final Transaction tx) throws Exception
    {
+      //log.info(System.identityHashCode(this) + " routing " + message.getDestination());
+
       if (!exclusiveBindings.isEmpty())
       {
          for (Binding binding : exclusiveBindings)
@@ -297,6 +303,8 @@
                {
                   theBinding.willRoute(message);
                   
+                  //log.info("routing to " + theBinding.getType() + " : " + theBinding.getRoutingName());
+                  
                   chosen.add(theBinding.getBindable());
                }
 

Modified: trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -24,6 +24,7 @@
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -61,6 +62,7 @@
 import org.jboss.messaging.core.server.QueueFactory;
 import org.jboss.messaging.core.server.SendLock;
 import org.jboss.messaging.core.server.ServerMessage;
+import org.jboss.messaging.core.server.cluster.RemoteQueueBinding;
 import org.jboss.messaging.core.server.impl.SendLockImpl;
 import org.jboss.messaging.core.server.impl.ServerMessageImpl;
 import org.jboss.messaging.core.transaction.Transaction;
@@ -326,7 +328,7 @@
                      info.setFilterStrings(filterStrings);
                   }
                }
-               
+                              
                break;
             }
             case NotificationType.CONSUMER_CLOSED_INDEX:
@@ -358,12 +360,35 @@
                   filterStrings.remove(filterString);
                }
                
+//               if (redistributeMessages)
+//               {                  
+//                  int distance = (Integer)props.getProperty(ManagementHelper.HDR_DISTANCE);
+//                  
+//                  if (distance == 0)
+//                  {
+//                     if (info.getNumberOfConsumers() == 0)
+//                     {
+//                        Bindings bindings = getBindingsForAddress(info.getAddress());
+//                        
+//                        Collection<Binding> theBindings = bindings.getBindings();
+//                        
+//                        for (Binding binding: theBindings)
+//                        {
+//                           if (binding.getFilter() != null && !binding.getFilter().match(message) ?????????????
+//                        }
+//                     }
+//                  }
+//               }
+               
+               
                break;
             }
          }
       }
    }
 
+   private boolean redistributeMessages;
+   
    // PostOffice implementation -----------------------------------------------
 
    public synchronized boolean addDestination(final SimpleString address, final boolean durable) throws Exception
@@ -490,7 +515,7 @@
    public void route(final ServerMessage message, Transaction tx) throws Exception
    {
       SimpleString address = message.getDestination();
-
+            
       if (checkAllowable)
       {
          if (!addressManager.containsDestination(address))
@@ -501,7 +526,7 @@
       }
 
       byte[] duplicateID = (byte[])message.getProperty(MessageImpl.HDR_DUPLICATE_DETECTION_ID);
-
+      
       DuplicateIDCache cache = null;
 
       if (duplicateID != null)

Modified: trunk/src/main/org/jboss/messaging/core/remoting/Channel.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/Channel.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/remoting/Channel.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -58,4 +58,8 @@
    void replicatingChannelDead();
    
    void confirm(Packet packet);
+   
+   void setCommandConfirmationHandler(CommandConfirmationHandler handler);
+   
+   void flushConfirmations();
 }

Added: trunk/src/main/org/jboss/messaging/core/remoting/CommandConfirmationHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/CommandConfirmationHandler.java	                        (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/CommandConfirmationHandler.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.jboss.messaging.core.remoting;
+
+/**
+ * A CommandConfirmationHandler
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * 
+ * Created 9 Feb 2009 12:39:11
+ *
+ *
+ */
+public interface CommandConfirmationHandler
+{
+   void commandConfirmed(Packet packet);
+}

Modified: trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -16,6 +16,7 @@
 
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.remoting.spi.BufferHandler;
+import org.jboss.messaging.core.remoting.spi.Connection;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
 
 /**
@@ -63,4 +64,6 @@
    RemotingConnection getReplicatingConnection();
    
    void setReplicatingConnection(RemotingConnection connection);
+   
+   Connection getTransportConnection();
 }

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -84,6 +84,7 @@
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.Channel;
 import org.jboss.messaging.core.remoting.ChannelHandler;
+import org.jboss.messaging.core.remoting.CommandConfirmationHandler;
 import org.jboss.messaging.core.remoting.FailureListener;
 import org.jboss.messaging.core.remoting.Interceptor;
 import org.jboss.messaging.core.remoting.Packet;
@@ -173,7 +174,7 @@
 
       if (tc == null)
       {
-         throw new IllegalStateException("Failed to connect");
+         return null;
       }
 
       RemotingConnection connection = new RemotingConnectionImpl(tc,
@@ -313,13 +314,8 @@
 
       this.interceptors = interceptors;
 
-      this.replicatingConnection = replicatingConnection;
+      setReplicatingConnection(replicatingConnection);
 
-      if (replicatingConnection != null)
-      {
-         replicatingConnection.addFailureListener(new ReplicatingConnectionFailureListener());
-      }
-
       this.active = active;
 
       this.pingPeriod = pingPeriod;
@@ -355,6 +351,11 @@
    // RemotingConnection implementation
    // ------------------------------------------------------------
 
+   public Connection getTransportConnection()
+   {
+      return this.transportConnection;
+   }
+   
    public List<FailureListener> getFailureListeners()
    {
       return new ArrayList<FailureListener>(failureListeners);
@@ -424,6 +425,11 @@
    public void setReplicatingConnection(final RemotingConnection connection)
    {
       this.replicatingConnection = connection;
+      
+      if (replicatingConnection != null)
+      {
+         replicatingConnection.addFailureListener(new ReplicatingConnectionFailureListener());
+      }
    }
 
    /*
@@ -535,6 +541,18 @@
          frozen = true;
       }
    }
+   
+//   public void resetAllReplicatingChannels()
+//   {      
+//      replicatingConnection = null;
+//      
+//      for (ChannelImpl channel: channels.values())
+//      {
+//         channel.replicatingChannelDead();
+//         
+//         //channel.replicatingChannel = null;
+//      }
+//   }
 
    // Package protected
    // ----------------------------------------------------------------------------
@@ -885,7 +903,7 @@
 
       private volatile int lastReceivedCommandID = -1;
 
-      private Channel replicatingChannel;
+      private volatile Channel replicatingChannel;
 
       private volatile RemotingConnectionImpl connection;
 
@@ -914,6 +932,13 @@
       private final Semaphore sendSemaphore;
 
       private int receivedBytes;
+      
+      private CommandConfirmationHandler commandConfirmationHandler;
+      
+      public void setCommandConfirmationHandler(final CommandConfirmationHandler handler)
+      {
+         this.commandConfirmationHandler = handler;
+      }
 
       private ChannelImpl(final RemotingConnectionImpl connection,
                           final long id,
@@ -932,6 +957,7 @@
 
             replicatingChannel.setHandler(new ReplicatedPacketsConfirmedChannelHandler());
          }
+         
          this.windowSize = windowSize;
 
          this.confWindowSize = (int)(0.75 * windowSize);
@@ -1179,9 +1205,9 @@
       public void replicatingChannelDead()
       {
          synchronized (replicationLock)
-         {
+         {   
             replicatingChannel = null;
-
+            
             // Execute all the response actions now
 
             while (true)
@@ -1198,7 +1224,7 @@
                }
             }
 
-            responseActionCount = 0;
+            responseActionCount = 0;                        
          }
       }
 
@@ -1303,19 +1329,19 @@
          {
             return;
          }
-
+         
          if (!connection.destroyed && connection.channels.remove(id) == null)
          {
             throw new IllegalArgumentException("Cannot find channel with id " + id + " to close");
          }
-
+         
          if (replicatingChannel != null)
          {
             replicatingChannel.close();
          }
-
+         
          closed = true;
-      }
+      }           
 
       public Channel getReplicatingChannel()
       {
@@ -1461,10 +1487,24 @@
          final MessagingBuffer buffer = connection.transportConnection.createBuffer(packet.getRequiredBufferSize());
 
          packet.encode(buffer);
-
+         
          connection.transportConnection.write(buffer);
       }
+      
+      public void flushConfirmations()
+      {
+         if (receivedBytes != 0 && connection.active)
+         {
+            receivedBytes = 0;
 
+            final Packet confirmed = new PacketsConfirmedMessage(lastReceivedCommandID);
+
+            confirmed.setChannelID(id);
+
+            doWrite(confirmed);            
+         }
+      }
+
       public void confirm(final Packet packet)
       {
          if (resendCache != null && packet.isRequiresConfirmations())
@@ -1525,6 +1565,11 @@
             {
                sizeToFree += packet.getPacketSize();
             }
+            
+            if (commandConfirmationHandler != null)
+            {
+               commandConfirmationHandler.commandConfirmed(packet);
+            }
          }
 
          firstStoredCommandID += numberToClear;
@@ -1532,7 +1577,7 @@
          if (sendSemaphore != null)
          {
             sendSemaphore.release(sizeToFree);
-         }
+         }                  
       }
 
       private class ReplicatedPacketsConfirmedChannelHandler implements ChannelHandler
@@ -1623,6 +1668,8 @@
       {
          synchronized (RemotingConnectionImpl.this)
          {
+            replicatingConnection = null;
+            
             for (Channel channel : channels.values())
             {
                channel.replicatingChannelDead();

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnection.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnection.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -141,5 +141,10 @@
    {
       return "invm:" + serverID;
    }
+   
+   public void fail(final MessagingException me)
+   {
+      listener.connectionException(id, me);
+   }
       
 }

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnector.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnector.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/InVMConnector.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -92,11 +92,6 @@
       InVMRegistry registry = InVMRegistry.instance;
 
       acceptor = registry.getAcceptor(id);
-
-      if (acceptor == null)
-      {
-         log.warn("Cannot connect to invm acceptor with id " + id + " has it been started?");
-      }
    }
 
    public Acceptor getAcceptor()

Modified: trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -132,7 +132,6 @@
          return;
       }
       
-
       // when JMX is enabled, it requires a INVM acceptor to send the core messages
       // corresponding to the JMX management operations (@see ReplicationAwareStandardMBeanWrapper)
       if (jmxEnabled)
@@ -255,12 +254,15 @@
       }
       
       RemotingConnection replicatingConnection = server.getReplicatingConnection();
-
+            
       RemotingConnection rc = new RemotingConnectionImpl(connection,                                                                                             
-                                                         interceptors,
+                                                         interceptors,  
                                                          replicatingConnection,
                                                          !backup,
                                                          connectionTTL);
+      
+  
+      rc.setReplicatingConnection(replicatingConnection);
 
       Channel channel1 = rc.getChannel(1,  -1, false);
 
@@ -276,7 +278,7 @@
    public void connectionDestroyed(final Object connectionID)
    {
       RemotingConnection conn = connections.remove(connectionID);
-      
+            
       if (conn != null)
       {
          conn.destroy();
@@ -302,7 +304,7 @@
    {
       return interceptors.remove(interceptor);
    }
-
+   
    // Public --------------------------------------------------------
 
    // Package protected ---------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/remoting/spi/Connection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/spi/Connection.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/remoting/spi/Connection.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -22,8 +22,10 @@
 
 package org.jboss.messaging.core.remoting.spi;
 
+import org.jboss.messaging.core.exception.MessagingException;
 
 
+
 /**
  *
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
@@ -42,4 +44,6 @@
    void close();
 
    String getRemoteAddress();
+   
+   void fail(MessagingException me);
 }
\ No newline at end of file

Modified: trunk/src/main/org/jboss/messaging/core/server/Queue.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/Queue.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/Queue.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -73,6 +73,8 @@
    void reacknowledge(Transaction tx, MessageReference ref) throws Exception;
 
    void cancel(Transaction tx, MessageReference ref) throws Exception;
+   
+   void cancel(MessageReference reference) throws Exception;
 
    void deliverAsync(Executor executor);
 

Modified: trunk/src/main/org/jboss/messaging/core/server/cluster/Bridge.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/cluster/Bridge.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/cluster/Bridge.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -44,10 +44,6 @@
 
    Queue getQueue();
 
-   int getMaxBatchSize();
-
-   long getMaxBatchTime();
-
    SimpleString getForwardingAddress();
 
    Transformer getTransformer();

Modified: trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -22,20 +22,35 @@
 
 package org.jboss.messaging.core.server.cluster.impl;
 
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_ACK_BATCH_SIZE;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_AUTO_GROUP;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_BLOCK_ON_ACKNOWLEDGE;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_BLOCK_ON_NON_PERSISTENT_SEND;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_BLOCK_ON_PERSISTENT_SEND;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_CONNECTION_TTL;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_CONSUMER_MAX_RATE;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_CONSUMER_WINDOW_SIZE;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_MAX_CONNECTIONS;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_MIN_LARGE_MESSAGE_SIZE;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_PING_PERIOD;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_PRE_ACKNOWLEDGE;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_PRODUCER_MAX_RATE;
+import static org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.DEFAULT_SEND_WINDOW_SIZE;
 import static org.jboss.messaging.core.config.impl.ConfigurationImpl.DEFAULT_MANAGEMENT_NOTIFICATION_ADDRESS;
 
+import java.nio.ByteBuffer;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Set;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
 
 import org.jboss.messaging.core.client.ClientConsumer;
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.client.ClientProducer;
 import org.jboss.messaging.core.client.ClientSessionFactory;
+import org.jboss.messaging.core.client.SendAcknowledgementHandler;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionInternal;
@@ -48,8 +63,8 @@
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.management.NotificationType;
 import org.jboss.messaging.core.management.ObjectNames;
+import org.jboss.messaging.core.message.Message;
 import org.jboss.messaging.core.message.impl.MessageImpl;
-import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.BindingType;
 import org.jboss.messaging.core.remoting.FailureListener;
 import org.jboss.messaging.core.remoting.RemotingConnection;
@@ -60,8 +75,6 @@
 import org.jboss.messaging.core.server.cluster.Bridge;
 import org.jboss.messaging.core.server.cluster.MessageFlowRecord;
 import org.jboss.messaging.core.server.cluster.Transformer;
-import org.jboss.messaging.core.transaction.Transaction;
-import org.jboss.messaging.core.transaction.impl.TransactionImpl;
 import org.jboss.messaging.util.Future;
 import org.jboss.messaging.util.Pair;
 import org.jboss.messaging.util.SimpleString;
@@ -76,7 +89,7 @@
  *
  *
  */
-public class BridgeImpl implements Bridge, FailureListener
+public class BridgeImpl implements Bridge, FailureListener, SendAcknowledgementHandler
 {
    // Constants -----------------------------------------------------
 
@@ -90,28 +103,14 @@
 
    private final Executor executor;
 
-   private volatile boolean busy;
-
-   private final int maxBatchSize;
-
-   private final long maxBatchTime;
-
    private final SimpleString filterString;
 
    private final Filter filter;
 
    private final SimpleString forwardingAddress;
 
-   private int count;
-
    private final java.util.Queue<MessageReference> refs = new LinkedList<MessageReference>();
 
-   private Transaction tx;
-
-   private long lastReceivedTime = -1;
-
-   private final StorageManager storageManager;
-
    private final Transformer transformer;
 
    private volatile ClientSessionFactory csf;
@@ -122,8 +121,6 @@
 
    private volatile boolean started;
 
-   private final ScheduledFuture<?> future;
-
    private final boolean useDuplicateDetection;
 
    private volatile boolean active;
@@ -152,11 +149,8 @@
                      final Queue queue,
                      final Pair<TransportConfiguration, TransportConfiguration> connectorPair,
                      final Executor executor,
-                     final int maxBatchSize,
-                     final long maxBatchTime,
                      final SimpleString filterString,
                      final SimpleString forwardingAddress,
-                     final StorageManager storageManager,
                      final ScheduledExecutorService scheduledExecutor,
                      final Transformer transformer,
                      final long retryInterval,
@@ -169,11 +163,8 @@
            queue,
            connectorPair,
            executor,
-           maxBatchSize,
-           maxBatchTime,
            filterString,
            forwardingAddress,
-           storageManager,
            scheduledExecutor,
            transformer,
            retryInterval,
@@ -188,11 +179,8 @@
                      final Queue queue,
                      final Pair<TransportConfiguration, TransportConfiguration> connectorPair,
                      final Executor executor,
-                     final int maxBatchSize,
-                     final long maxBatchTime,
                      final SimpleString filterString,
                      final SimpleString forwardingAddress,
-                     final StorageManager storageManager,
                      final ScheduledExecutorService scheduledExecutor,
                      final Transformer transformer,
                      final long retryInterval,
@@ -208,10 +196,6 @@
 
       this.executor = executor;
 
-      this.maxBatchSize = maxBatchSize;
-
-      this.maxBatchTime = maxBatchTime;
-
       this.filterString = filterString;
 
       if (this.filterString != null)
@@ -225,8 +209,6 @@
 
       this.forwardingAddress = forwardingAddress;
 
-      this.storageManager = storageManager;
-
       this.transformer = transformer;
 
       this.useDuplicateDetection = useDuplicateDetection;
@@ -244,18 +226,6 @@
       this.idsHeaderName = MessageImpl.HDR_ROUTE_TO_IDS.concat(name);
 
       this.flowRecord = flowRecord;
-
-      if (maxBatchTime != -1)
-      {
-         future = scheduledExecutor.scheduleAtFixedRate(new BatchTimeout(),
-                                                        maxBatchTime,
-                                                        maxBatchTime,
-                                                        TimeUnit.MILLISECONDS);
-      }
-      else
-      {
-         future = null;
-      }
    }
 
    public synchronized void start() throws Exception
@@ -270,29 +240,121 @@
       executor.execute(new CreateObjectsRunnable());
    }
 
-   public void stop() throws Exception
+   private void cancelRefs() throws Exception
    {
-      if (!started)
+      MessageReference ref;
+
+      LinkedList<MessageReference> list = new LinkedList<MessageReference>();
+
+      while ((ref = refs.poll()) != null)
       {
-         return;
+         // ref.getQueue().cancel(ref);
+         list.addFirst(ref);
       }
 
-      started = false;
+      for (MessageReference ref2 : list)
+      {
+         ref2.getQueue().cancel(ref2);
+      }
+   }
 
-      active = false;
+   public void stop() throws Exception
+   {
+      executor.execute(new StopRunnable());
+      
+      this.waitForRunnablesToComplete();
+   }
 
-      queue.removeConsumer(this);
-
-      if (future != null)
+   private class StopRunnable implements Runnable
+   {
+      public void run()
       {
-         future.cancel(false);
+         try
+         {
+            synchronized (BridgeImpl.this)
+            {
+               if (!started)
+               {
+                  return;
+               }
+
+               // We close the session factory here - this will cause any connection retries to stop
+
+               csf.close();
+
+               if (session != null)
+               {    
+                  session.close();               
+               }
+
+               started = false;
+
+               active = false;
+
+            }
+
+            queue.removeConsumer(BridgeImpl.this);
+
+            cancelRefs();            
+         }
+         catch (Exception e)
+         {
+            log.error("Failed to stop bridge", e);
+         }
       }
+   }
 
-      // We close the session factory here - this will cause any connection retries to stop
-      csf.close();
+   private class FailRunnable implements Runnable
+   {
+      public void run()
+      {
+         synchronized (BridgeImpl.this)
+         {
+            if (!started)
+            {
+               return;
+            }
 
-      // Wait until all batches are complete
+            if (flowRecord != null)
+            {
+               try
+               {
+                  flowRecord.reset();
+               }
+               catch (Exception e)
+               {
+                  log.error("Failed to reset", e);
+               }
+            }
+            
+            active = false;
+         }
 
+         try
+         {
+            queue.removeConsumer(BridgeImpl.this);
+
+            session.cleanUp();
+
+            cancelRefs();
+
+            csf.close();
+         }
+         catch (Exception e)
+         {
+            log.error("Failed to stop", e);
+         }
+
+         if (!createObjects())
+         {
+            started = false;
+         }         
+      }
+   }
+
+   private void waitForRunnablesToComplete()
+   {
+      // Wait for any create objects runnable to complete
       Future future = new Future();
 
       executor.execute(future);
@@ -303,13 +365,134 @@
       {
          log.warn("Timed out waiting for batch to be sent");
       }
+   }
 
-      if (session != null)
+   private void fail()
+   {
+      if (started)
       {
-         session.close();
+         executor.execute(new FailRunnable());
       }
    }
 
+   private synchronized boolean createObjects()
+   {
+      if (!started)
+      {
+         return false;
+      }
+
+      try
+      {
+         queue.addConsumer(BridgeImpl.this);
+
+         csf = new ClientSessionFactoryImpl(connectorPair.a,
+                                            connectorPair.b,
+                                            DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME,
+                                            DEFAULT_PING_PERIOD,
+                                            DEFAULT_CONNECTION_TTL,
+                                            2000,
+                                            DEFAULT_CONSUMER_WINDOW_SIZE,
+                                            DEFAULT_CONSUMER_MAX_RATE,
+                                            DEFAULT_SEND_WINDOW_SIZE,
+                                            DEFAULT_PRODUCER_MAX_RATE,
+                                            DEFAULT_MIN_LARGE_MESSAGE_SIZE,
+                                            DEFAULT_BLOCK_ON_ACKNOWLEDGE,
+                                            DEFAULT_BLOCK_ON_PERSISTENT_SEND,
+                                            DEFAULT_BLOCK_ON_NON_PERSISTENT_SEND,
+                                            DEFAULT_AUTO_GROUP,
+                                            DEFAULT_MAX_CONNECTIONS,
+                                            DEFAULT_PRE_ACKNOWLEDGE,
+                                            DEFAULT_ACK_BATCH_SIZE,
+                                            retryInterval,
+                                            retryIntervalMultiplier,
+                                            maxRetriesBeforeFailover,
+                                            maxRetriesAfterFailover);
+
+         session = (ClientSessionInternal)csf.createSession(null, null, false, true, true, false, 1);
+
+         if (session == null)
+         {
+            // This can happen if the bridge is shutdown
+            return false;
+         }
+
+         producer = session.createProducer();
+
+         session.addFailureListener(BridgeImpl.this);
+
+         session.setSendAcknowledgementHandler(BridgeImpl.this);
+
+         // TODO - we should move this code to the ClusterConnectorImpl - and just execute it when the bridge
+         // connection is opened and closed - we can use
+         // a callback to tell us that
+         if (flowRecord != null)
+         {
+            // Get the queue data
+
+            SimpleString notifQueueName = new SimpleString("notif-").concat(UUIDGenerator.getInstance()
+                                                                                         .generateSimpleStringUUID());
+
+            // TODO - simplify this
+            SimpleString filter = new SimpleString(ManagementHelper.HDR_BINDING_TYPE + "<>" +
+                                                   BindingType.DIVERT.toInt() +
+                                                   " AND " +
+                                                   ManagementHelper.HDR_NOTIFICATION_TYPE +
+                                                   " IN ('" +
+                                                   NotificationType.BINDING_ADDED +
+                                                   "','" +
+                                                   NotificationType.BINDING_REMOVED +
+                                                   "','" +
+                                                   NotificationType.CONSUMER_CREATED +
+                                                   "','" +
+                                                   NotificationType.CONSUMER_CLOSED +
+                                                   "') AND " +
+                                                   ManagementHelper.HDR_DISTANCE +
+                                                   "<" +
+                                                   flowRecord.getMaxHops() +
+                                                   " AND (" +
+                                                   ManagementHelper.HDR_ADDRESS +
+                                                   " LIKE '" +
+                                                   flowRecord.getAddress() +
+                                                   "%')");
+
+            session.createQueue(DEFAULT_MANAGEMENT_NOTIFICATION_ADDRESS, notifQueueName, filter, false, true);
+
+            ClientConsumer notifConsumer = session.createConsumer(notifQueueName);
+
+            notifConsumer.setMessageHandler(flowRecord);
+
+            session.start();
+
+            ClientMessage message = session.createClientMessage(false);
+
+            ManagementHelper.putOperationInvocation(message,
+                                                    ObjectNames.getMessagingServerObjectName(),
+                                                    "sendQueueInfoToQueue",
+                                                    notifQueueName.toString(),
+                                                    flowRecord.getAddress());
+
+            ClientProducer prod = session.createProducer(ConfigurationImpl.DEFAULT_MANAGEMENT_ADDRESS);
+
+            prod.send(message);
+         }
+
+         active = true;
+
+         queue.deliverAsync(executor);
+
+         log.info("Bridge " + name + " connected successfully");
+
+         return true;
+      }
+      catch (Exception e)
+      {
+         log.warn("Unable to connect. Bridge is now disabled.", e);
+
+         return false;
+      }
+   }
+
    public boolean isStarted()
    {
       return started;
@@ -325,16 +508,6 @@
       return queue;
    }
 
-   public int getMaxBatchSize()
-   {
-      return maxBatchSize;
-   }
-
-   public long getMaxBatchTime()
-   {
-      return maxBatchTime;
-   }
-
    public Filter getFilter()
    {
       return filter;
@@ -368,355 +541,139 @@
       }
    }
 
-   // Consumer implementation ---------------------------------------
+   // SendAcknowledgementHandler implementation ---------------------
 
-   public HandleStatus handle(final MessageReference reference) throws Exception
+   public void sendAcknowledged(final Message message)
    {
-      if (busy)
-      {
-         return HandleStatus.BUSY;
-      }
-
-      if (filter != null && !filter.match(reference.getMessage()))
-      {
-         return HandleStatus.NO_MATCH;
-      }
-
-      synchronized (this)
-      {
-         if (!active)
-         {
-            return HandleStatus.BUSY;
-         }
-
-         reference.getQueue().referenceHandled();
-
-         refs.add(reference);
-
-         if (maxBatchTime != -1)
-         {
-            lastReceivedTime = System.currentTimeMillis();
-         }
-
-         count++;
-
-         if (count == maxBatchSize)
-         {
-            busy = true;
-
-            executor.execute(new BatchSender());
-         }
-
-         return HandleStatus.HANDLED;
-      }
-   }
-
-   // FailureListener implementation --------------------------------
-
-   public boolean connectionFailed(final MessagingException me)
-   {
-      if (flowRecord != null)
-      {
-         try
-         {
-            flowRecord.reset();
-         }
-         catch (Exception e)
-         {
-            log.error("Failed to reset", e);
-         }
-      }
-
-      fail();
-
-      return true;
-   }
-
-   private synchronized void fail()
-   {
-      if (!started)
-      {
-         return;
-      }
-
-      log.warn(System.identityHashCode(this) + " Bridge connection to target failed. Will try to reconnect");
-
       try
       {
-         tx.rollback();
+         MessageReference ref = refs.poll();
 
-         active = false;
-
-         queue.removeConsumer(this);
-
-         // Wait until all batches are complete
-
-         Future future = new Future();
-
-         executor.execute(future);
-
-         boolean ok = future.await(10000);
-
-         if (!ok)
+         if (ref != null)
          {
-            log.warn("Timed out waiting for batch to be sent");
+            // Acknowledge when we know send has been processed on the server
+            ref.getQueue().acknowledge(ref);
          }
-
-         session.cleanUp();
-
-         csf.close();
       }
       catch (Exception e)
       {
-         log.error("Failed to stop", e);
+         log.info("Failed to ack", e);
       }
-
-      executor.execute(new CreateObjectsRunnable());
    }
 
-   // Package protected ---------------------------------------------
+   // Consumer implementation ---------------------------------------
 
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   private synchronized void timeoutBatch()
+   public HandleStatus handle(final MessageReference ref) throws Exception
    {
-      if (!active)
+      if (filter != null && !filter.match(ref.getMessage()))
       {
-         return;
+         return HandleStatus.NO_MATCH;
       }
 
-      if (lastReceivedTime != -1 && count > 0)
+      if (!active)
       {
-         long now = System.currentTimeMillis();
-
-         if (now - lastReceivedTime >= maxBatchTime)
-         {
-            sendBatch();
-         }
+         return HandleStatus.BUSY;
       }
-   }
 
-   private synchronized void sendBatch()
-   {
-      try
+      synchronized (this)
       {
-         if (count == 0)
-         {
-            return;
-         }
+         ref.getQueue().referenceHandled();
 
-         // TODO - if batch size = 1 then don't need tx - actually we should use asynch send acknowledgement stream -
-         // then we don't need a transaction at all
+         ServerMessage message = ref.getMessage();
 
-         while (true)
+         refs.add(ref);
+
+         if (flowRecord != null)
          {
-            MessageReference ref = refs.poll();
+            // We make a shallow copy of the message, then we strip out the unwanted routing id headers and leave
+            // only
+            // the one pertinent for the destination node - this is important since different queues on different
+            // nodes could have same queue ids
+            // Note we must copy since same message may get routed to other nodes which require different headers
+            message = message.copy();
 
-            if (ref == null)
-            {
-               break;
-            }
+            // TODO - we can optimise this
 
-            ref.getQueue().acknowledge(tx, ref);
+            Set<SimpleString> propNames = new HashSet<SimpleString>(message.getPropertyNames());
 
-            ServerMessage message = ref.getMessage();
+            byte[] queueIds = (byte[])message.getProperty(idsHeaderName);
 
-            if (flowRecord != null)
+            for (SimpleString propName : propNames)
             {
-               // We make a shallow copy of the message, then we strip out the unwanted routing id headers and leave
-               // only
-               // the one pertinent for the destination node - this is important since different queues on different
-               // nodes could have same queue ids
-               // Note we must copy since same message may get routed to other nodes which require different headers
-               message = message.copy();
-
-               // TODO - we can optimise this
-
-               Set<SimpleString> propNames = new HashSet<SimpleString>(message.getPropertyNames());
-
-               byte[] queueIds = (byte[])message.getProperty(idsHeaderName);
-
-               for (SimpleString propName : propNames)
+               if (propName.startsWith(MessageImpl.HDR_ROUTE_TO_IDS))
                {
-                  if (propName.startsWith(MessageImpl.HDR_ROUTE_TO_IDS))
-                  {
-                     message.removeProperty(propName);
-                  }
+                  message.removeProperty(propName);
                }
+            }
 
-               message.putBytesProperty(MessageImpl.HDR_ROUTE_TO_IDS, queueIds);
+            message.putBytesProperty(MessageImpl.HDR_ROUTE_TO_IDS, queueIds);
 
-               message.putBooleanProperty(MessageImpl.HDR_FROM_CLUSTER, Boolean.TRUE);
-            }
+            message.putBooleanProperty(MessageImpl.HDR_FROM_CLUSTER, Boolean.TRUE);
+         }
 
-            if (transformer != null)
-            {
-               message = transformer.transform(message);
-            }
+         if (useDuplicateDetection && !message.containsProperty(MessageImpl.HDR_DUPLICATE_DETECTION_ID))
+         {
+            byte[] bytes = new byte[8];
 
-            SimpleString dest;
+            ByteBuffer bb = ByteBuffer.wrap(bytes);
 
-            if (forwardingAddress != null)
-            {
-               dest = forwardingAddress;
-            }
-            else
-            {
-               // Preserve the original address
-               dest = message.getDestination();
-            }
+            // TODO NEEDS to incluse server id
 
-            producer.send(dest, message);
+            bb.putLong(message.getMessageID());
+
+            message.putBytesProperty(MessageImpl.HDR_DUPLICATE_DETECTION_ID, bytes);
          }
 
-         session.commit();
+         if (transformer != null)
+         {
+            message = transformer.transform(message);
+         }
 
-         tx.commit();
+         SimpleString dest;
 
-         createTx();
+         if (forwardingAddress != null)
+         {
+            dest = forwardingAddress;
+         }
+         else
+         {
+            // Preserve the original address
+            dest = message.getDestination();
+         }
 
-         busy = false;
+         producer.send(dest, message);
 
-         count = 0;
-
-         queue.deliverAsync(executor);
+         return HandleStatus.HANDLED;
       }
-      catch (Exception e)
-      {
-         log.error("Failed to forward batch", e);
-
-         fail();
-      }
    }
 
-   private void createTx()
+   // FailureListener implementation --------------------------------
+
+   public boolean connectionFailed(final MessagingException me)
    {
-      tx = new TransactionImpl(storageManager);
+      fail();
+
+      return true;
    }
 
-   // Inner classes -------------------------------------------------
+   // Package protected ---------------------------------------------
 
-   private class BatchSender implements Runnable
-   {
-      public void run()
-      {
-         sendBatch();
-      }
-   }
+   // Protected -----------------------------------------------------
 
-   private class BatchTimeout implements Runnable
-   {
-      public void run()
-      {
-         timeoutBatch();
-      }
-   }
+   // Private -------------------------------------------------------
 
+   // Inner classes -------------------------------------------------
+
    private class CreateObjectsRunnable implements Runnable
    {
       public synchronized void run()
       {
-         if (!started)
+         if (!createObjects())
          {
-            return;
-         }
-
-         try
-         {
-            createTx();
-
-            queue.addConsumer(BridgeImpl.this);
-
-            csf = new ClientSessionFactoryImpl(connectorPair.a,
-                                               connectorPair.b,
-                                               retryInterval,
-                                               retryIntervalMultiplier,
-                                               maxRetriesBeforeFailover,
-                                               maxRetriesAfterFailover);
-
-            session = (ClientSessionInternal)csf.createSession(false, false, false);
-
-            if (session == null)
-            {
-               // This can happen if the bridge is shutdown
-               return;
-            }
-
-            producer = session.createProducer();
-
-            session.addFailureListener(BridgeImpl.this);
-
-            // TODO - we should move this code to the ClusterConnectorImpl - and just execute it when the bridge
-            // connection is opened and closed - we can use
-            // a callback to tell us that
-            if (flowRecord != null)
-            {
-               // Get the queue data
-
-               SimpleString notifQueueName = new SimpleString("notif-").concat(UUIDGenerator.getInstance()
-                                                                                            .generateSimpleStringUUID());
-
-               // TODO - simplify this
-               SimpleString filter = new SimpleString(ManagementHelper.HDR_BINDING_TYPE + "<>" +
-                                                      BindingType.DIVERT.toInt() +
-                                                      " AND " +
-                                                      ManagementHelper.HDR_NOTIFICATION_TYPE +
-                                                      " IN ('" +
-                                                      NotificationType.BINDING_ADDED +
-                                                      "','" +
-                                                      NotificationType.BINDING_REMOVED +
-                                                      "','" +
-                                                      NotificationType.CONSUMER_CREATED +
-                                                      "','" +
-                                                      NotificationType.CONSUMER_CLOSED +
-                                                      "') AND " +
-                                                      ManagementHelper.HDR_DISTANCE +
-                                                      "<" +
-                                                      flowRecord.getMaxHops() +
-                                                      " AND (" +                                                     
-                                                      ManagementHelper.HDR_ADDRESS +
-                                                      " LIKE '" +
-                                                      flowRecord.getAddress() +
-                                                      "%')");
-               
-               session.createQueue(DEFAULT_MANAGEMENT_NOTIFICATION_ADDRESS, notifQueueName, filter, false, true);
-
-               ClientConsumer notifConsumer = session.createConsumer(notifQueueName);
-
-               notifConsumer.setMessageHandler(flowRecord);
-
-               session.start();
-
-               ClientMessage message = session.createClientMessage(false);
-
-               ManagementHelper.putOperationInvocation(message,
-                                                       ObjectNames.getMessagingServerObjectName(),
-                                                       "sendQueueInfoToQueue",
-                                                       notifQueueName.toString(),
-                                                       flowRecord.getAddress());
-
-               ClientProducer prod = session.createProducer(ConfigurationImpl.DEFAULT_MANAGEMENT_ADDRESS);
-
-               prod.send(message);
-            }
-
-            active = true;
-
-            queue.deliverAsync(executor);
-
-         }
-         catch (Exception e)
-         {
-            log.warn("Unable to connect. Bridge is now disabled.", e);
-
             active = false;
-
+            
             started = false;
          }
-
-         log.info("Bridge " + name + " connected successfully");
       }
    }
 

Modified: trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterConnectionImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterConnectionImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -325,7 +325,7 @@
             }
             else
             {
-               queue = queueFactory.createQueue(-1, name, name, null, true, false);
+               queue = queueFactory.createQueue(-1, queueName, queueName, null, true, false);
 
                // Add binding in storage so the queue will get reloaded on startup and we can find it - it's never
                // actually routed to at that address though
@@ -340,12 +340,9 @@
             Bridge bridge = new BridgeImpl(queueName,
                                            queue,
                                            connectorPair,
-                                           executorFactory.getExecutor(),
-                                           1,
-                                           -1,
+                                           executorFactory.getExecutor(),                                    
                                            null,
-                                           null,
-                                           storageManager,
+                                           null,                                           
                                            scheduledExecutor,
                                            null,
                                            retryInterval,
@@ -486,8 +483,6 @@
                throw new IllegalStateException("distance is null");
             }
 
-            //log.info(System.identityHashCode(ClusterConnectionImpl.this) + " Got notification " + ntype);
-            
             switch (ntype.toInt())
             {
                case NotificationType.BINDING_ADDED_INDEX:
@@ -594,6 +589,8 @@
                   }
    
                   binding.addConsumer(filterString);
+                                    
+                  message.putIntProperty(ManagementHelper.HDR_DISTANCE, distance + 1);
                   
                   //Need to propagate the consumer add
                   Notification notification = new Notification(ntype, message.getProperties());
@@ -622,6 +619,8 @@
    
                   binding.removeConsumer(filterString);
                   
+                  message.putIntProperty(ManagementHelper.HDR_DISTANCE, distance + 1);
+                  
                   //Need to propagate the consumer close
                   Notification notification = new Notification(ntype, message.getProperties());
                   
@@ -638,7 +637,7 @@
       }
 
       private void clearBindings() throws Exception
-      {
+      {         
          for (RemoteQueueBinding binding : bindings.values())
          {
             postOffice.removeBinding(binding.getUniqueName());

Modified: trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterManagerImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/cluster/impl/ClusterManagerImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -326,20 +326,6 @@
          return;
       }
 
-      if (config.getMaxBatchTime() == 0 || config.getMaxBatchTime() < -1)
-      {
-         log.warn("Invalid value for max-batch-time. Valid values are -1 or > 0");
-
-         return;
-      }
-
-      if (config.getMaxBatchSize() < 1)
-      {
-         log.warn("Invalid value for max-batch-size. Valid values are > 0");
-
-         return;
-      }
-
       Transformer transformer = instantiateTransformer(config.getTransformerClassName());
 
       Pair<String, String> connectorNamePair = config.getConnectorPair();
@@ -389,12 +375,9 @@
          bridge = new BridgeImpl(new SimpleString(config.getName()),
                                  queue,
                                  pair,
-                                 executorFactory.getExecutor(),
-                                 config.getMaxBatchSize(),
-                                 config.getMaxBatchTime(),
+                                 executorFactory.getExecutor(),                             
                                  config.getFilterString() == null ? null : new SimpleString(config.getFilterString()),
-                                 new SimpleString(config.getForwardingAddress()),
-                                 storageManager,
+                                 new SimpleString(config.getForwardingAddress()),                               
                                  scheduledExecutor,
                                  transformer,
                                  config.getRetryInterval(),

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -176,8 +176,6 @@
 
       nodeID = UUIDGenerator.getInstance().generateSimpleStringUUID();
 
-      log.info("*** Starting " + this.nodeID);
-
       asyncDeliveryPool = Executors.newCachedThreadPool(new JBMThreadFactory("JBM-async-session-delivery-threads"));
 
       executorFactory = new OrderedExecutorFactory(asyncDeliveryPool);
@@ -609,8 +607,6 @@
 
       checkActivate(connection);
 
-      log.info("Got reattach session " + this.nodeID + " session is " + session);
-
       if (session == null)
       {
          return new ReattachSessionResponseMessage(-1, true);
@@ -721,7 +717,7 @@
                                                                                                                         listener);
 
          listener.conn = replicatingConnection;
-
+    
          replicatingConnection.startPinger();
 
          return replicatingConnection;
@@ -950,7 +946,6 @@
                                                               connection,
                                                               storageManager,
                                                               postOffice,
-                                                              addressSettingsRepository,
                                                               resourceManager,
                                                               securityStore,
                                                               executorFactory.getExecutor(),
@@ -1009,30 +1004,32 @@
          queue.activateNow(asyncDeliveryPool);
       }
    }
-
-   private static class NoCacheConnectionLifeCycleListener implements ConnectionLifeCycleListener
+   
+   private class NoCacheConnectionLifeCycleListener implements ConnectionLifeCycleListener
    {
       private RemotingConnection conn;
-
+      
       public void connectionCreated(final Connection connection)
-      {
+      {         
       }
 
       public void connectionDestroyed(final Object connectionID)
-      {
+      {   
          if (conn != null)
          {
             conn.destroy();
-         }
+         }                 
       }
 
       public void connectionException(final Object connectionID, final MessagingException me)
-      {
+      {                   
+         backupConnectorFactory = null;
+         
          if (conn != null)
          {
             conn.fail(me);
          }
-      }
+      }      
    }
 
 }

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -12,15 +12,28 @@
 
 package org.jboss.messaging.core.server.impl;
 
-import org.jboss.messaging.core.client.management.impl.ManagementHelper;
+import static org.jboss.messaging.core.message.impl.MessageImpl.HDR_ACTUAL_EXPIRY_TIME;
+import static org.jboss.messaging.core.message.impl.MessageImpl.HDR_ORIGINAL_DESTINATION;
+import static org.jboss.messaging.core.message.impl.MessageImpl.HDR_ORIG_MESSAGE_ID;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.list.PriorityLinkedList;
 import org.jboss.messaging.core.list.impl.PriorityLinkedListImpl;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.message.impl.MessageImpl;
-import static org.jboss.messaging.core.message.impl.MessageImpl.HDR_ACTUAL_EXPIRY_TIME;
-import static org.jboss.messaging.core.message.impl.MessageImpl.HDR_ORIGINAL_DESTINATION;
-import static org.jboss.messaging.core.message.impl.MessageImpl.HDR_ORIG_MESSAGE_ID;
 import org.jboss.messaging.core.paging.PagingManager;
 import org.jboss.messaging.core.paging.PagingStore;
 import org.jboss.messaging.core.persistence.StorageManager;
@@ -43,19 +56,6 @@
 import org.jboss.messaging.util.ConcurrentSet;
 import org.jboss.messaging.util.SimpleString;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-
 /**
  * Implementation of a Queue TODO use Java 5 concurrent queue
  *
@@ -110,7 +110,7 @@
 
    private final StorageManager storageManager;
 
-   private final HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private volatile boolean backup;
 
@@ -127,7 +127,7 @@
                     final ScheduledExecutorService scheduledExecutor,
                     final PostOffice postOffice,
                     final StorageManager storageManager,
-                    final HierarchicalRepository<AddressSettings> queueSettingsRepository)
+                    final HierarchicalRepository<AddressSettings> addressSettingsRepository)
    {
       this.persistenceID = persistenceID;
 
@@ -145,7 +145,7 @@
 
       this.storageManager = storageManager;
 
-      this.queueSettingsRepository = queueSettingsRepository;
+      this.addressSettingsRepository = addressSettingsRepository;
 
       if (postOffice == null)
       {
@@ -199,14 +199,6 @@
 
    public void route(final ServerMessage message, final Transaction tx) throws Exception
    {
-//      SimpleString filterString = null;
-//      if (filter != null)
-//      {
-//         filterString = filter.getFilterString();
-//      }
-      
-      //log.info("Adding message to queue " + name + " with filter " + filterString + " message has orig node " + message.getProperty(ManagementHelper.HDR_ORIGINATING_NODE));
-      
       boolean durableRef = message.isDurable() && durable;
 
       // If durable, must be persisted before anything is routed
@@ -473,8 +465,7 @@
    {
       int count = messageReferences.size() + getScheduledCount() + getDeliveringCount();
 
-      // log.info(System.identityHashCode(this) + " message count is " + count + " ( mr:" + messageReferences.size() + "
-      // sc:" + getScheduledCount() + " dc:" + getDeliveringCount() + ")");
+      // log.info(System.identityHashCode(this) + " message count is " + count + " ( mr:" + messageReferences.size() + " sc:" + getScheduledCount() + " dc:" + getDeliveringCount() + ")");
 
       return count;
    }
@@ -556,10 +547,21 @@
    {
       getRefsOperation(tx).addAck(reference);
    }
-
+   
+   public void cancel(final MessageReference reference) throws Exception
+   {
+      if (checkDLQ(reference))
+      {
+         if (!scheduledDeliveryHandler.checkAndSchedule(reference, backup))
+         {
+            messageReferences.addFirst(reference, reference.getMessage().getPriority());
+         }
+      }
+   }
+     
    public void expire(final MessageReference ref) throws Exception
    {
-      SimpleString expiryAddress = queueSettingsRepository.getMatch(address.toString()).getExpiryAddress();
+      SimpleString expiryAddress = addressSettingsRepository.getMatch(address.toString()).getExpiryAddress();
 
       if (expiryAddress != null)
       {
@@ -785,7 +787,7 @@
          {
             deliveringCount.incrementAndGet();
             move(toAddress, tx, ref, false);
-            // ref.acknowledge(tx, storageManager, postOffice, queueSettingsRepository);
+            // ref.acknowledge(tx, storageManager, postOffice, addressSettingsRepository);
             acknowledge(tx, ref);
             count++;
          }
@@ -906,6 +908,44 @@
    // Private
    // ------------------------------------------------------------------------------
 
+   private boolean checkDLQ(final MessageReference reference) throws Exception
+   {
+      ServerMessage message = reference.getMessage();
+
+      if (message.isDurable() && durable)
+      {
+         storageManager.updateDeliveryCount(reference);
+      }
+
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(address.toString());
+
+      int maxDeliveries = addressSettings.getMaxDeliveryAttempts();
+
+      if (maxDeliveries > 0 && reference.getDeliveryCount() >= maxDeliveries)
+      {
+         log.warn("Message has reached maximum delivery attempts, sending it to Dead Letter Address");
+
+         sendToDeadLetterAddress(reference);
+
+         return false;
+      }
+      else
+      {
+         long redeliveryDelay = addressSettings.getRedeliveryDelay();
+
+         if (redeliveryDelay > 0)
+         {
+            reference.setScheduledDeliveryTime(System.currentTimeMillis() + redeliveryDelay);
+
+            storageManager.updateScheduledDeliveryTime(reference);
+         }
+
+         deliveringCount.decrementAndGet();
+
+         return true;
+      }
+   }
+   
    private void move(final SimpleString toAddress, final MessageReference ref) throws Exception
    {
       move(toAddress, ref, false);
@@ -960,7 +1000,7 @@
 
    private void expire(final Transaction tx, final MessageReference ref) throws Exception
    {
-      SimpleString expiryAddress = queueSettingsRepository.getMatch(address.toString()).getExpiryAddress();
+      SimpleString expiryAddress = addressSettingsRepository.getMatch(address.toString()).getExpiryAddress();
 
       if (expiryAddress != null)
       {
@@ -985,7 +1025,7 @@
 
    private void sendToDeadLetterAddress(final MessageReference ref) throws Exception
    {
-      SimpleString deadLetterAddress = queueSettingsRepository.getMatch(address.toString()).getDeadLetterAddress();
+      SimpleString deadLetterAddress = addressSettingsRepository.getMatch(address.toString()).getDeadLetterAddress();
       if (deadLetterAddress != null)
       {
          Bindings bindingList = postOffice.getBindingsForAddress(deadLetterAddress);
@@ -1025,44 +1065,8 @@
       tx.commit();
    }
 
-   private boolean cancel(final MessageReference reference) throws Exception
-   {
-      ServerMessage message = reference.getMessage();
 
-      if (message.isDurable() && durable)
-      {
-         storageManager.updateDeliveryCount(reference);
-      }
 
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(address.toString());
-
-      int maxDeliveries = addressSettings.getMaxDeliveryAttempts();
-
-      if (maxDeliveries > 0 && reference.getDeliveryCount() >= maxDeliveries)
-      {
-         log.warn("Message has reached maximum delivery attempts, sending it to Dead Letter Address");
-
-         sendToDeadLetterAddress(reference);
-
-         return false;
-      }
-      else
-      {
-         long redeliveryDelay = addressSettings.getRedeliveryDelay();
-
-         if (redeliveryDelay > 0)
-         {
-            reference.setScheduledDeliveryTime(System.currentTimeMillis() + redeliveryDelay);
-
-            storageManager.updateScheduledDeliveryTime(reference);
-         }
-
-         deliveringCount.decrementAndGet();
-
-         return true;
-      }
-   }
-
    /*
     * Attempt to deliver all the messages in the queue
     */
@@ -1072,7 +1076,7 @@
       // because it's async and could get out of step
       // with the live node. Instead, when we replicate the delivery we remove
       // the ref from the queue
-
+      
       if (backup)
       {
          return;
@@ -1081,7 +1085,7 @@
       MessageReference reference;
 
       Iterator<MessageReference> iterator = null;
-
+      
       while (true)
       {
          if (iterator == null)
@@ -1182,7 +1186,7 @@
       if (direct && !backup)
       {
          // Deliver directly
-
+     
          HandleStatus status = deliver(ref);
 
          if (status == HandleStatus.HANDLED)
@@ -1308,7 +1312,7 @@
    }
 
    void postRollback(LinkedList<MessageReference> refs) throws Exception
-   {
+   {      
       synchronized (this)
       {
          for (MessageReference ref : refs)
@@ -1371,7 +1375,7 @@
 
          for (MessageReference ref : refsToAck)
          {
-            if (cancel(ref))
+            if (checkDLQ(ref))
             {
                LinkedList<MessageReference> toCancel = queueMap.get(ref.getQueue());
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -283,7 +283,7 @@
       {
          MessageReference ref = iter.next();
 
-         // ref.cancel(tx, storageManager, postOffice, queueSettingsRepository);
+         // ref.cancel(tx, storageManager, postOffice, addressSettingsRepository);
          ref.getQueue().cancel(tx, ref);
       }
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -151,8 +151,6 @@
 
    private final StorageManager storageManager;
 
-   private final HierarchicalRepository<AddressSettings> queueSettingsRepository;
-
    private final ResourceManager resourceManager;
 
    private final PostOffice postOffice;
@@ -203,7 +201,6 @@
                             final RemotingConnection remotingConnection,
                             final StorageManager storageManager,
                             final PostOffice postOffice,
-                            final HierarchicalRepository<AddressSettings> queueSettingsRepository,
                             final ResourceManager resourceManager,
                             final SecurityStore securityStore,
                             final Executor executor,
@@ -233,8 +230,6 @@
 
       this.postOffice = postOffice;
 
-      this.queueSettingsRepository = queueSettingsRepository;
-
       this.resourceManager = resourceManager;
 
       this.securityStore = securityStore;
@@ -332,7 +327,6 @@
             log.error("Failed to delete large message file", error);
          }
       }
-
    }
 
    public void promptDelivery(final Queue queue)
@@ -1271,7 +1265,7 @@
       {
          this.setStarted(false);
       }
-
+      
       remotingConnection.removeFailureListener(this);
 
       channel.transferConnection(newConnection);
@@ -1289,7 +1283,7 @@
 
       newConnection.syncIDGeneratorSequence(remotingConnection.getIDGeneratorSequence());
 
-      // Destroy the old connection
+      // Destroy the old connection     
       remotingConnection.destroy();
 
       remotingConnection = newConnection;
@@ -1304,7 +1298,7 @@
       {
          this.setStarted(true);
       }
-
+      
       return serverLastReceivedCommandID;
    }
 
@@ -2475,6 +2469,8 @@
       }
 
       channel.confirm(packet);
+      
+      channel.flushConfirmations();
 
       channel.send(response);
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -64,9 +64,9 @@
                     final ScheduledExecutorService scheduledExecutor,
                     final PostOffice postOffice,
                     final StorageManager storageManager,
-                    final HierarchicalRepository<AddressSettings> queueSettingsRepository)
+                    final HierarchicalRepository<AddressSettings> addressSettingsRepository)
    {
-      super(persistenceID, address, name, filter, durable, temporary, scheduledExecutor, postOffice, storageManager, queueSettingsRepository);
+      super(persistenceID, address, name, filter, durable, temporary, scheduledExecutor, postOffice, storageManager, addressSettingsRepository);
       this.pagingManager  = postOffice.getPagingManager();
       this.storageManager = storageManager;
    }

Modified: trunk/src/main/org/jboss/messaging/integration/transports/mina/MinaConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/integration/transports/mina/MinaConnection.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/integration/transports/mina/MinaConnection.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -27,6 +27,7 @@
 import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.ssl.SslFilter;
+import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.spi.Connection;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
@@ -70,9 +71,10 @@
          return;
       }
 
-      SslFilter sslFilter = (SslFilter) session.getFilterChain().get("ssl");
+      SslFilter sslFilter = (SslFilter)session.getFilterChain().get("ssl");
 
-      if (session.getService() instanceof IoConnector) {
+      if (session.getService() instanceof IoConnector)
+      {
          if (sslFilter != null)
          {
             try
@@ -85,7 +87,9 @@
             }
          }
          session.close().awaitUninterruptibly();
-      } else {
+      }
+      else
+      {
          if (sslFilter != null)
          {
             try
@@ -96,7 +100,9 @@
             {
                // ignore
             }
-         } else {
+         }
+         else
+         {
             session.close();
          }
       }
@@ -126,6 +132,10 @@
       return session.getRemoteAddress().toString();
    }
 
+   public void fail(final MessagingException me)
+   {     
+   }
+
    // Public --------------------------------------------------------
 
    // Package protected ---------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/integration/transports/netty/NettyConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/integration/transports/netty/NettyConnection.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/integration/transports/netty/NettyConnection.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -22,6 +22,7 @@
 
 package org.jboss.messaging.integration.transports.netty;
 
+import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.spi.Connection;
 import org.jboss.messaging.core.remoting.spi.ConnectionLifeCycleListener;
@@ -131,6 +132,11 @@
    {
       return channel.getRemoteAddress().toString();
    }
+   
+   public void fail(final MessagingException me)
+   {
+      listener.connectionException(channel.getId(), me);
+   }
 
    // Public --------------------------------------------------------
 

Modified: trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -82,7 +82,7 @@
 
    private final StorageManager storageManager;
 
-   private final HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private final JMSManagementService managementService;
 
@@ -108,13 +108,13 @@
    public JMSServerManagerImpl(final MessagingServerControlMBean server,
                                final PostOffice postOffice,
                                final StorageManager storageManager,
-                               final HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                               final HierarchicalRepository<AddressSettings> addressSettingsRepository,
                                final JMSManagementService managementService)
    {
       messagingServer = server;
       this.postOffice = postOffice;
       this.storageManager = storageManager;
-      this.queueSettingsRepository = queueSettingsRepository;
+      this.addressSettingsRepository = addressSettingsRepository;
       this.managementService = managementService;
    }
 
@@ -159,7 +159,7 @@
                                       jndiBinding,
                                       postOffice,
                                       storageManager,
-                                      queueSettingsRepository);
+                                      addressSettingsRepository);
       return added;
    }
 
@@ -172,7 +172,7 @@
       {
          addToDestinationBindings(topicName, jndiBinding);
       }
-      managementService.registerTopic(jBossTopic, jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      managementService.registerTopic(jBossTopic, jndiBinding, postOffice, storageManager, addressSettingsRepository);
       return added;
    }
 

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -51,7 +51,7 @@
                       String jndiBinding,
                       PostOffice postOffice,
                       StorageManager storageManager,
-                      HierarchicalRepository<AddressSettings> queueSettingsRepository) throws Exception;
+                      HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception;
 
    void unregisterQueue(String name) throws Exception;
 
@@ -59,7 +59,7 @@
                       String jndiBinding,
                       PostOffice postOffice,
                       StorageManager storageManager,
-                      HierarchicalRepository<AddressSettings> queueSettingsRepository) throws Exception;
+                      HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception;
 
    void unregisterTopic(String name) throws Exception;
 

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -91,7 +91,7 @@
                              final String jndiBinding,
                              final PostOffice postOffice,
                              final StorageManager storageManager,
-                             HierarchicalRepository<AddressSettings> queueSettingsRepository) throws Exception
+                             HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception
    {
       MessageCounterManager messageCounterManager = managementService.getMessageCounterManager();
       MessageCounter counter = new MessageCounter(queue.getName(),
@@ -106,7 +106,7 @@
                                                     coreQueue,
                                                     jndiBinding,
                                                     postOffice,                                                
-                                                    queueSettingsRepository,
+                                                    addressSettingsRepository,
                                                     counter);
       managementService.registerInJMX(objectName,
                                       new ReplicationAwareJMSQueueControlWrapper(objectName, control));
@@ -123,7 +123,7 @@
                              final String jndiBinding,
                              final PostOffice postOffice,
                              final StorageManager storageManager,
-                             final HierarchicalRepository<AddressSettings> queueSettingsRepository) throws Exception
+                             final HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception
    {
       ObjectName objectName = ObjectNames.getJMSTopicObjectName(topic.getTopicName());
       TopicControl control = new TopicControl(topic, jndiBinding, postOffice);

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -75,7 +75,7 @@
 
    private final PostOffice postOffice;
 
-   private final HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private final MessageCounter counter;
 
@@ -98,14 +98,14 @@
                           final Queue coreQueue,
                           final String jndiBinding,
                           final PostOffice postOffice,                          
-                          final HierarchicalRepository<AddressSettings> queueSettingsRepository,
+                          final HierarchicalRepository<AddressSettings> addressSettingsRepository,
                           final MessageCounter counter)
    {
       this.managedQueue = queue;
       this.coreQueue = coreQueue;
       this.binding = jndiBinding;
       this.postOffice = postOffice;
-      this.queueSettingsRepository = queueSettingsRepository;
+      this.addressSettingsRepository = addressSettingsRepository;
       this.counter = counter;
    }
 
@@ -165,7 +165,7 @@
 
    public String getDeadLetterAddress()
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getAddress());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getAddress());
       if (addressSettings != null && addressSettings.getDeadLetterAddress() != null)
       {
          return addressSettings.getDeadLetterAddress().toString();
@@ -178,7 +178,7 @@
 
    public void setDeadLetterAddress(String deadLetterAddress) throws Exception
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getAddress());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getAddress());
 
       if (deadLetterAddress != null)
       {
@@ -188,7 +188,7 @@
 
    public String getExpiryAddress()
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getAddress());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getAddress());
       if (addressSettings != null && addressSettings.getExpiryAddress() != null)
       {
          return addressSettings.getExpiryAddress().toString();
@@ -201,7 +201,7 @@
 
    public void setExpiryAddress(String expiryQueueName)
    {
-      AddressSettings addressSettings = queueSettingsRepository.getMatch(getAddress());
+      AddressSettings addressSettings = addressSettingsRepository.getMatch(getAddress());
 
       if (expiryQueueName != null)
       {

Modified: trunk/src/schemas/jbm-configuration.xsd
===================================================================
--- trunk/src/schemas/jbm-configuration.xsd	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/src/schemas/jbm-configuration.xsd	2009-02-12 09:14:37 UTC (rev 5853)
@@ -309,12 +309,6 @@
 			<xsd:element name="filter" type="filterType" maxOccurs="1"
 				minOccurs="0">
 			</xsd:element>
-			<xsd:element name="max-batch-size" type="xsd:int"
-				maxOccurs="1" minOccurs="0">
-			</xsd:element>
-			<xsd:element name="max-batch-time" type="xsd:long"
-				maxOccurs="1" minOccurs="0">
-			</xsd:element>
 			<xsd:element name="transformer-class-name" type="xsd:string"
 				maxOccurs="1" minOccurs="0">
 			</xsd:element>

Modified: trunk/tests/config/ConfigurationTest-full-config.xml
===================================================================
--- trunk/tests/config/ConfigurationTest-full-config.xml	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/config/ConfigurationTest-full-config.xml	2009-02-12 09:14:37 UTC (rev 5853)
@@ -115,8 +115,6 @@
           <queue-name>foo</queue-name>
           <forwarding-address>bridge-forwarding-address</forwarding-address>
           <filter string="sku > 1"/>
-          <max-batch-size>124</max-batch-size>
-          <max-batch-time>123456</max-batch-time>
           <transformer-class-name>org.foo.BridgeTransformer</transformer-class-name>
           <retry-interval>3</retry-interval>
           <retry-interval-multiplier>0.2</retry-interval-multiplier>

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -827,14 +827,14 @@
       servers.get(0).configureSecurityForDestination(s, b, lockedConf);
    }
 
-   protected void addQueueSettings(String name, long scheduledDeliveryTime)
+   protected void addAddressSettings(String name, long scheduledDeliveryTime)
    {
-      servers.get(0).addQueueSettings("queuejms." + name, scheduledDeliveryTime);
+      servers.get(0).addAddressSettings("queuejms." + name, scheduledDeliveryTime);
    }
 
-   protected void removeQueueSettings(String name)
+   protected void removeAddressSettings(String name)
    {
-      servers.get(0).removeQueueSettings(name);   
+      servers.get(0).removeAddressSettings(name);   
    }
 
    protected void kill(int i) throws Exception

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -232,7 +232,7 @@
    	try
    	{
          long delay = 3000;
-         addQueueSettings(qName, delay);
+         addAddressSettings(qName, delay);
          createQueue(qName);
          queue1 = (Queue) getInitialContext().lookup("/queue/" + qName);
 
@@ -243,7 +243,7 @@
    	}
    	finally
    	{
-         removeQueueSettings(qName);
+         removeAddressSettings(qName);
          this.destroyQueue(qName);
       }
    }

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -652,7 +652,7 @@
       return (JMSServerManager)bootstrap.getKernel().getRegistry().getEntry("JMSServerManager").getTarget();
    }
 
-   public void addQueueSettings(String name, long redeliveryDelay)
+   public void addAddressSettings(String name, long redeliveryDelay)
    {
       AddressSettings qs = getMessagingServer().getAddressSettingsRepository().getMatch("*");
       AddressSettings newSets = new AddressSettings();
@@ -661,7 +661,7 @@
       getMessagingServer().getAddressSettingsRepository().addMatch(name, newSets);
    }
 
-   public void removeQueueSettings(String name)
+   public void removeAddressSettings(String name)
    {
       getMessagingServer().getAddressSettingsRepository().removeMatch(name);
    }
@@ -748,7 +748,7 @@
       AddressSettings addressSettings = new AddressSettings();
       addressSettings.setRedeliveryDelay(delay);
       // FIXME we need to expose queue attributes in another way
-      // getMessagingServer().getServerManagement().setQueueAttributes(condition, queueSettings);
+      // getMessagingServer().getServerManagement().setQueueAttributes(condition, addressSettings);
    }
 
    // Inner classes --------------------------------------------------------------------------------

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/RMITestServer.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/RMITestServer.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/RMITestServer.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -491,14 +491,14 @@
       server.setSecurityConfig(defConfig);
    }
 
-   public void addQueueSettings(String name, long redeliveryDelay)
+   public void addAddressSettings(String name, long redeliveryDelay)
    {
-      server.addQueueSettings(name, redeliveryDelay);
+      server.addAddressSettings(name, redeliveryDelay);
    }
 
-   public void removeQueueSettings(String name)
+   public void removeAddressSettings(String name)
    {
-      server.removeQueueSettings(name);
+      server.removeAddressSettings(name);
    }
 
    public InitialContext getInitialContext() throws Exception

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/Server.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/Server.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/Server.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -271,7 +271,7 @@
    //void setDefaultRedeliveryDelay(long delay) throws Exception;
    JMSServerManager getJMSServerManager() throws Exception;
 
-   void addQueueSettings(String name, long redeliveryDelay);
+   void addAddressSettings(String name, long redeliveryDelay);
 
-   void removeQueueSettings(String name);
+   void removeAddressSettings(String name);
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeReconnectTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeReconnectTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeReconnectTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -109,10 +109,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                      
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         retryInterval,
                                                                         retryIntervalMultiplier,
                                                                         retriesBeforeFailover,
@@ -242,10 +240,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                            
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         retryInterval,
                                                                         retryIntervalMultiplier,
                                                                         retriesBeforeFailover,
@@ -395,10 +391,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                               
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         retryInterval,
                                                                         retryIntervalMultiplier,
                                                                         retriesBeforeFailover,
@@ -523,10 +517,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                               
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         retryInterval,
                                                                         retryIntervalMultiplier,
                                                                         retriesBeforeFailover,
@@ -639,10 +631,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                           
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         retryInterval,
                                                                         retryIntervalMultiplier,
                                                                         retriesBeforeFailover,

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -61,11 +61,11 @@
    public void testStartStop() throws Exception
    {
       Map<String, Object> service0Params = new HashMap<String, Object>();
-      MessagingService service0 = createClusteredServiceWithParams(0, false, service0Params);
+      MessagingService service0 = createClusteredServiceWithParams(0, true, service0Params);
 
       Map<String, Object> service1Params = new HashMap<String, Object>();
       service1Params.put(SERVER_ID_PROP_NAME, 1);
-      MessagingService service1 = createClusteredServiceWithParams(1, false, service1Params);
+      MessagingService service1 = createClusteredServiceWithParams(1, true, service1Params);
 
       final String testAddress = "testAddress";
       final String queueName0 = "queue0";
@@ -88,15 +88,13 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                                
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         1000,
                                                                         1d,
                                                                         0,
                                                                         0,
-                                                                        false,
+                                                                        true,
                                                                         connectorPair);
 
       List<BridgeConfiguration> bridgeConfigs = new ArrayList<BridgeConfiguration>();
@@ -201,12 +199,15 @@
 
    public void testTargetServerUpAndDown() throws Exception
    {
+      //This test needs to use real files, since it requires duplicate detection, since when the target server is shutdown, messages will get resent when it is started, so the dup id cache needs
+      //to be persisted
+      
       Map<String, Object> service0Params = new HashMap<String, Object>();
-      MessagingService service0 = createClusteredServiceWithParams(0, false, service0Params);
+      MessagingService service0 = createClusteredServiceWithParams(0, true, service0Params);
 
       Map<String, Object> service1Params = new HashMap<String, Object>();
       service1Params.put(SERVER_ID_PROP_NAME, 1);
-      MessagingService service1 = createClusteredServiceWithParams(1, false, service1Params);
+      MessagingService service1 = createClusteredServiceWithParams(1, true, service1Params);
 
       final String testAddress = "testAddress";
       final String queueName0 = "queue0";
@@ -229,15 +230,13 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                                   
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         1000,
                                                                         1d,
                                                                         -1,
                                                                         -1,
-                                                                        false,
+                                                                        true,
                                                                         connectorPair);
 
       List<BridgeConfiguration> bridgeConfigs = new ArrayList<BridgeConfiguration>();
@@ -415,10 +414,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                                
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         1000,
                                                                         1d,
                                                                         0,
@@ -467,7 +464,7 @@
       Thread.sleep(1000);
 
       // Bridge should be stopped since retries = 0
-;
+
       service1.start();
 
       ClientSessionFactory sf1 = new ClientSessionFactoryImpl(server1tc);
@@ -545,10 +542,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration(bridgeName,
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                               
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         1000,
                                                                         1d,
                                                                         0,
@@ -638,7 +633,7 @@
          ClientMessage message = consumer1.receive(1000);
 
          assertNotNull(message);
-
+         
          assertEquals((Integer)i, (Integer)message.getProperty(propKey));
 
          message.acknowledge();

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -85,10 +85,8 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration("bridge1",
                                                                         queueName0,
                                                                         forwardAddress,
+                                                                        null,                                                                   
                                                                         null,
-                                                                        1,
-                                                                        -1,
-                                                                        null,
                                                                         1000,
                                                                         1d,
                                                                         0,
@@ -166,245 +164,7 @@
       service1.stop();
    }
 
-   public void testBatchSize() throws Exception
-   {
-      Map<String, Object> service0Params = new HashMap<String, Object>();
-      MessagingService service0 = createClusteredServiceWithParams(0, false, service0Params);
-
-      Map<String, Object> service1Params = new HashMap<String, Object>();
-      service1Params.put(SERVER_ID_PROP_NAME, 1);
-      MessagingService service1 = createClusteredServiceWithParams(1, false, service1Params);
-
-      final String testAddress = "testAddress";
-      final String queueName0 = "queue0";
-      final String forwardAddress = "forwardAddress";
-      final String queueName1 = "queue1";
-
-      Map<String, TransportConfiguration> connectors = new HashMap<String, TransportConfiguration>();
-      TransportConfiguration server0tc = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                    service0Params);
-      TransportConfiguration server1tc = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                    service1Params);
-      connectors.put(server1tc.getName(), server1tc);
-
-      service0.getServer().getConfiguration().setConnectorConfigurations(connectors);
-
-      Pair<String, String> connectorPair = new Pair<String, String>(server1tc.getName(), null);
-
-      final int batchSize = 10;
-
-      BridgeConfiguration bridgeConfiguration = new BridgeConfiguration("bridge1",
-                                                                        queueName0,
-                                                                        forwardAddress,
-                                                                        null,
-                                                                        batchSize,
-                                                                        -1,
-                                                                        null,
-                                                                        1000,
-                                                                        1d,
-                                                                        0,
-                                                                        0,
-                                                                        false,                                                                        
-                                                                        connectorPair);
-
-      List<BridgeConfiguration> bridgeConfigs = new ArrayList<BridgeConfiguration>();
-      bridgeConfigs.add(bridgeConfiguration);
-      service0.getServer().getConfiguration().setBridgeConfigurations(bridgeConfigs);
-
-      QueueConfiguration queueConfig0 = new QueueConfiguration(testAddress, queueName0, null, true);
-      List<QueueConfiguration> queueConfigs0 = new ArrayList<QueueConfiguration>();
-      queueConfigs0.add(queueConfig0);
-      service0.getServer().getConfiguration().setQueueConfigurations(queueConfigs0);
-
-      QueueConfiguration queueConfig1 = new QueueConfiguration(forwardAddress, queueName1, null, true);
-      List<QueueConfiguration> queueConfigs1 = new ArrayList<QueueConfiguration>();
-      queueConfigs1.add(queueConfig1);
-      service1.getServer().getConfiguration().setQueueConfigurations(queueConfigs1);
-
-      service1.start();
-      service0.start();
-
-      ClientSessionFactory sf0 = new ClientSessionFactoryImpl(server0tc);
-
-      ClientSessionFactory sf1 = new ClientSessionFactoryImpl(server1tc);
-
-      ClientSession session0 = sf0.createSession(false, true, true);
-
-      ClientSession session1 = sf1.createSession(false, true, true);
-
-      ClientProducer producer0 = session0.createProducer(new SimpleString(testAddress));
-
-      ClientConsumer consumer1 = session1.createConsumer(queueName1);
-
-      session1.start();
-
-      final SimpleString propKey = new SimpleString("testkey");
-
-      for (int j = 0; j < 10; j++)
-      {
-         for (int i = 0; i < batchSize - 1; i++)
-         {
-            ClientMessage message = session0.createClientMessage(false);
-            message.putIntProperty(propKey, i);
-            message.getBody().flip();
-
-            producer0.send(message);
-         }
-
-         ClientMessage message = consumer1.receive(250);
-
-         assertNull(message);
-
-         message = session0.createClientMessage(false);
-         message.putIntProperty(propKey, batchSize - 1);
-         message.getBody().flip();
-
-         producer0.send(message);
-
-         for (int i = 0; i < batchSize; i++)
-         {
-            message = consumer1.receive(250);
-
-            assertNotNull(message);
-
-            assertEquals(i, message.getProperty(propKey));
-         }
-
-         message = consumer1.receive(250);
-
-         assertNull(message);
-      }
-
-      session0.close();
-
-      session1.close();
-
-      sf0.close();
-
-      sf1.close();
-
-      service0.stop();
-
-      service1.stop();
-   }
-
-   public void testBatchTime() throws Exception
-   {
-      Map<String, Object> service0Params = new HashMap<String, Object>();
-      MessagingService service0 = createClusteredServiceWithParams(0, false, service0Params);
-
-      Map<String, Object> service1Params = new HashMap<String, Object>();
-      service1Params.put(SERVER_ID_PROP_NAME, 1);
-      MessagingService service1 = createClusteredServiceWithParams(1, false, service1Params);
-
-      final String testAddress = "testAddress";
-      final String queueName0 = "queue0";
-      final String forwardAddress = "forwardAddress";
-      final String queueName1 = "queue1";
-
-      Map<String, TransportConfiguration> connectors = new HashMap<String, TransportConfiguration>();
-      TransportConfiguration server0tc = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                    service0Params);
-      TransportConfiguration server1tc = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                    service1Params);
-      connectors.put(server1tc.getName(), server1tc);
-
-      service0.getServer().getConfiguration().setConnectorConfigurations(connectors);
-
-      Pair<String, String> connectorPair = new Pair<String, String>(server1tc.getName(), null);
-
-      final int batchSize = 10;
-      final long batchTime = 250;
-
-      BridgeConfiguration bridgeConfiguration = new BridgeConfiguration("bridge1",
-                                                                        queueName0,
-                                                                        forwardAddress,
-                                                                        null,
-                                                                        batchSize,
-                                                                        batchTime,
-                                                                        null,
-                                                                        1000,
-                                                                        1d,
-                                                                        0,
-                                                                        0,
-                                                                        false,                                                                        
-                                                                        connectorPair);
-
-      List<BridgeConfiguration> bridgeConfigs = new ArrayList<BridgeConfiguration>();
-      bridgeConfigs.add(bridgeConfiguration);
-      service0.getServer().getConfiguration().setBridgeConfigurations(bridgeConfigs);
-
-      QueueConfiguration queueConfig0 = new QueueConfiguration(testAddress, queueName0, null, true);
-      List<QueueConfiguration> queueConfigs0 = new ArrayList<QueueConfiguration>();
-      queueConfigs0.add(queueConfig0);
-      service0.getServer().getConfiguration().setQueueConfigurations(queueConfigs0);
-
-      QueueConfiguration queueConfig1 = new QueueConfiguration(forwardAddress, queueName1, null, true);
-      List<QueueConfiguration> queueConfigs1 = new ArrayList<QueueConfiguration>();
-      queueConfigs1.add(queueConfig1);
-      service1.getServer().getConfiguration().setQueueConfigurations(queueConfigs1);
-
-      service1.start();
-      service0.start();
-
-      ClientSessionFactory sf0 = new ClientSessionFactoryImpl(server0tc);
-
-      ClientSessionFactory sf1 = new ClientSessionFactoryImpl(server1tc);
-
-      ClientSession session0 = sf0.createSession(false, true, true);
-
-      ClientSession session1 = sf1.createSession(false, true, true);
-
-      ClientProducer producer0 = session0.createProducer(new SimpleString(testAddress));
-
-      ClientConsumer consumer1 = session1.createConsumer(queueName1);
-
-      session1.start();
-
-      final SimpleString propKey = new SimpleString("testkey");
-
-      for (int j = 0; j < 5; j++)
-      {
-         for (int i = 0; i < batchSize - 1; i++)
-         {
-            ClientMessage message = session0.createClientMessage(false);
-            message.putIntProperty(propKey, i);
-            message.getBody().flip();
-
-            producer0.send(message);
-         }
-
-         ClientMessage message = consumer1.receiveImmediate();
-
-         assertNull(message);
-
-         // Now wait until max batch time is exceeded - this should prompt delivery
-
-         Thread.sleep(batchTime * 2);
-
-         for (int i = 0; i < batchSize - 1; i++)
-         {
-            message = consumer1.receive(1000);
-
-            assertNotNull(message);
-
-            assertEquals(i, message.getProperty(propKey));
-         }
-      }
-
-      session0.close();
-
-      session1.close();
-
-      sf0.close();
-
-      sf1.close();
-
-      service0.stop();
-
-      service1.stop();
-   }
-
+   
    public void testWithFilter() throws Exception
    {
       Map<String, Object> service0Params = new HashMap<String, Object>();
@@ -435,9 +195,7 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration("bridge1",
                                                                         queueName0,
                                                                         forwardAddress,
-                                                                        filterString,
-                                                                        1,
-                                                                        -1,
+                                                                        filterString,                                                                    
                                                                         null,
                                                                         1000,
                                                                         1d,
@@ -561,9 +319,7 @@
       BridgeConfiguration bridgeConfiguration = new BridgeConfiguration("bridge1",
                                                                         queueName0,
                                                                         forwardAddress,
-                                                                        null,
-                                                                        1,
-                                                                        -1,
+                                                                        null,                                                                      
                                                                         SimpleTransformer.class.getName(),
                                                                         1000,
                                                                         1d,

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/ClusterTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/ClusterTestBase.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/ClusterTestBase.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -120,15 +120,15 @@
                                   final int consumerCount,
                                   final boolean local) throws Exception
    {
-      // log.info("waiting for bindings on node " + node +
-      // " address " +
-      // address +
-      // " count " +
-      // count +
-      // " consumerCount " +
-      // consumerCount +
-      // " local " +
-      // local);
+//       log.info("waiting for bindings on node " + node +
+//       " address " +
+//       address +
+//       " count " +
+//       count +
+//       " consumerCount " +
+//       consumerCount +
+//       " local " +
+//       local);
       MessagingService service = this.services[node];
 
       if (service == null)
@@ -160,11 +160,11 @@
             }
          }
 
-         // log.info(node + " binding count " + bindingCount + " consumer Count " + totConsumers);
+      //    log.info(node + " binding count " + bindingCount + " consumer Count " + totConsumers);
 
          if (bindingCount == count && totConsumers == consumerCount)
          {
-            log.info("Waited " + (System.currentTimeMillis() - start));
+            //log.info("Waited " + (System.currentTimeMillis() - start));
             return;
          }
 
@@ -416,6 +416,11 @@
     */
    protected void verifyReceiveRoundRobinInSomeOrder(int numMessages, int... consumerIDs) throws Exception
    {
+      verifyReceiveRoundRobinInSomeOrder(true, numMessages, consumerIDs);
+   }
+      
+   protected void verifyReceiveRoundRobinInSomeOrder(boolean ack, int numMessages, int... consumerIDs) throws Exception
+   {
       Map<Integer, Integer> countMap = new HashMap<Integer, Integer>();
 
       Set<Integer> counts = new HashSet<Integer>();
@@ -450,6 +455,11 @@
                counts.add(count);
 
                countMap.put(i, count);
+               
+               if (ack)
+               {
+                  message.acknowledge();
+               }
             }
          }
          while (message != null);
@@ -460,7 +470,12 @@
          assertTrue(counts.contains(i));
       }
    }
-
+   
+   protected void verifyReceiveRoundRobinInSomeOrderNoAck(int numMessages, int... consumerIDs) throws Exception
+   {
+      verifyReceiveRoundRobinInSomeOrder(false, numMessages, consumerIDs);
+   }
+   
    protected void verifyNotReceive(int... consumerIDs) throws Exception
    {
       for (int i = 0; i < consumerIDs.length; i++)
@@ -618,7 +633,7 @@
 
       ClusterConnectionConfiguration clusterConf = new ClusterConnectionConfiguration(name,
                                                                                       address,
-                                                                                      10,
+                                                                                      100,
                                                                                       1d,
                                                                                       -1,
                                                                                       -1,
@@ -647,9 +662,9 @@
    {
       for (int i = 0; i < nodes.length; i++)
       {
-         log.info("stopping service " + nodes[i]);
+         log.info("*** stopping server " + i);
          services[nodes[i]].stop();
-         log.info("stopped service");
+         log.info("*** stopped server " + i);
       }
    }
 

Added: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayChainClusterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayChainClusterTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayChainClusterTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,50 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.jboss.messaging.tests.integration.cluster.distribution;
+
+import org.jboss.messaging.core.logging.Logger;
+
+/**
+ * A NettyOneWayChainClusterTest
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * 
+ * Created 8 Feb 2009 10:45:50
+ *
+ *
+ */
+public class NettyOneWayChainClusterTest extends OneWayChainClusterTest
+{
+   private static final Logger log = Logger.getLogger(NettyOneWayChainClusterTest.class);
+
+   protected boolean isNetty()
+   {
+      return true;
+   }
+   
+   protected boolean isFileStorage()
+   {
+      return false;
+   }
+}

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayTwoNodeClusterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayTwoNodeClusterTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettyOneWayTwoNodeClusterTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -23,6 +23,8 @@
 
 package org.jboss.messaging.tests.integration.cluster.distribution;
 
+import org.jboss.messaging.core.logging.Logger;
+
 /**
  * A NettyOneWayTwoNodeClusterTest
  *
@@ -34,6 +36,8 @@
  */
 public class NettyOneWayTwoNodeClusterTest extends OnewayTwoNodeClusterTest
 {
+   private static final Logger log = Logger.getLogger(NettyOneWayTwoNodeClusterTest.class);
+
    protected boolean isNetty()
    {
       return true;
@@ -43,5 +47,7 @@
    {
       return false;
    }
+   
+   
 
 }

Added: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettySymmetricClusterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettySymmetricClusterTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/NettySymmetricClusterTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.jboss.messaging.tests.integration.cluster.distribution;
+
+/**
+ * A NettySymmetricClusterTest
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * 
+ * Created 8 Feb 2009 10:45:12
+ *
+ *
+ */
+public class NettySymmetricClusterTest extends SymmetricClusterTest
+{
+   protected boolean isNetty()
+   {
+      return true;
+   }
+   
+   protected boolean isFileStorage()
+   {
+      return false;
+   }
+
+}

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OneWayChainClusterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OneWayChainClusterTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OneWayChainClusterTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -100,6 +100,221 @@
       verifyNotReceive(0, 1);            
    }
    
-  
+   public void testBasicNonLoadBalanced() throws Exception
+   {
+      setupClusterConnection("cluster0-1", 0, 1, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", false, 4, isNetty());
+            
+      startServers(0, 1, 2, 3, 4);
 
+      setupSessionFactory(0, isNetty());
+      setupSessionFactory(4, isNetty());
+
+      createQueue(0, "queues.testaddress", "queue0", null, false);
+      createQueue(0, "queues.testaddress", "queue1", null, false);
+
+      createQueue(4, "queues.testaddress", "queue2", null, false);
+      createQueue(4, "queues.testaddress", "queue3", null, false);
+
+      addConsumer(0, 0, "queue0", null);
+      addConsumer(1, 0, "queue1", null);
+
+      addConsumer(2, 4, "queue2", null);
+      addConsumer(3, 4, "queue3", null);
+
+      waitForBindings(0, "queues.testaddress", 2, 2, true);
+      waitForBindings(0, "queues.testaddress", 2, 2, false);
+
+      send(0, "queues.testaddress", 10, false, null);
+      verifyReceiveAll(10, 0, 1, 2, 3);
+      verifyNotReceive(0, 1, 2, 3);       
+   }
+   
+   public void testRoundRobinForwardWhenNoConsumersTrue() throws Exception
+   {
+      setupClusterConnection("cluster0-1", 0, 1, "queues", true, 4, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", true, 4, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", true, 4, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", true, 4, isNetty());
+            
+      startServers(0, 1, 2, 3, 4);
+
+      setupSessionFactory(0, isNetty());
+      setupSessionFactory(4, isNetty());
+
+      createQueue(0, "queues.testaddress", "queue0", null, false);
+
+      createQueue(4, "queues.testaddress", "queue0", null, false);
+
+      waitForBindings(0, "queues.testaddress", 1, 0, true);
+      waitForBindings(0, "queues.testaddress", 1, 0, false);
+      
+      addConsumer(0, 0, "queue0", null);
+      addConsumer(1, 4, "queue0", null);
+
+      waitForBindings(0, "queues.testaddress", 1, 1, true);
+      waitForBindings(0, "queues.testaddress", 1, 1, false);
+
+      send(0, "queues.testaddress", 10, false, null);
+      verifyReceiveRoundRobin(10, 0, 1);
+      verifyNotReceive(0, 1);            
+   }
+   
+   public void testRoundRobinForwardWhenNoConsumersFalseNoLocalQueue() throws Exception
+   {
+      setupClusterConnection("cluster0-1", 0, 1, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", false, 4, isNetty());
+            
+      startServers(0, 1, 2, 3, 4);
+
+      setupSessionFactory(0, isNetty());
+      setupSessionFactory(4, isNetty());
+    
+      createQueue(4, "queues.testaddress", "queue0", null, false);
+     
+      waitForBindings(0, "queues.testaddress", 1, 0, false);
+      
+      addConsumer(1, 4, "queue0", null);
+     
+      waitForBindings(0, "queues.testaddress", 1, 1, false);
+
+      send(0, "queues.testaddress", 10, false, null);
+      verifyReceiveAll(10, 1);
+      verifyNotReceive(1);            
+   }
+   
+   public void testRoundRobinForwardWhenNoConsumersFalse() throws Exception
+   {
+      setupClusterConnection("cluster0-1", 0, 1, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", false, 4, isNetty());
+            
+      startServers(0, 1, 2, 3, 4);
+
+      setupSessionFactory(0, isNetty());
+      setupSessionFactory(4, isNetty());
+
+      createQueue(0, "queues.testaddress", "queue0", null, false);
+
+      createQueue(4, "queues.testaddress", "queue0", null, false);
+
+      waitForBindings(0, "queues.testaddress", 1, 0, true);
+      waitForBindings(0, "queues.testaddress", 1, 0, false);
+      
+      addConsumer(0, 0, "queue0", null);
+      addConsumer(1, 4, "queue0", null);
+
+      waitForBindings(0, "queues.testaddress", 1, 1, true);
+      waitForBindings(0, "queues.testaddress", 1, 1, false);
+ 
+      //Should still be round robin'd since there's no local consumer
+      
+      send(0, "queues.testaddress", 10, false, null);
+      verifyReceiveRoundRobin(10, 0, 1);
+      verifyNotReceive(0, 1);            
+   }
+   
+   public void testRoundRobinForwardWhenNoConsumersFalseLocalConsumer() throws Exception
+   {
+      setupClusterConnection("cluster0-1", 0, 1, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", false, 4, isNetty());
+            
+      startServers(0, 1, 2, 3, 4);
+
+      setupSessionFactory(0, isNetty());
+      setupSessionFactory(4, isNetty());
+
+      createQueue(0, "queues.testaddress", "queue0", null, false);
+
+      createQueue(4, "queues.testaddress", "queue0", null, false);
+      
+      addConsumer(0, 0, "queue0", null);
+
+      waitForBindings(0, "queues.testaddress", 1, 1, true);
+      waitForBindings(0, "queues.testaddress", 1, 0, false);
+            
+      send(0, "queues.testaddress", 10, false, null);
+      
+      addConsumer(1, 4, "queue0", null);
+
+      waitForBindings(0, "queues.testaddress", 1, 1, true);
+      waitForBindings(0, "queues.testaddress", 1, 1, false);
+      
+      verifyReceiveAll(10, 0);
+      verifyNotReceive(0, 1);            
+   }
+      
+   public void testHopsTooLow() throws Exception
+   {
+      setupClusterConnection("cluster0-1", 0, 1, "queues", false, 3, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", false, 3, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", false, 3, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", false, 3, isNetty());
+            
+      startServers(0, 1, 2, 3, 4);
+
+      setupSessionFactory(0, isNetty());
+      setupSessionFactory(4, isNetty());
+
+      createQueue(0, "queues.testaddress", "queue0", null, false);
+
+      createQueue(4, "queues.testaddress", "queue0", null, false);
+
+      addConsumer(0, 0, "queue0", null);
+
+      addConsumer(1, 4, "queue0", null);
+
+      send(0, "queues.testaddress", 10, false, null);  
+      
+      verifyReceiveAll(10, 0);
+      
+      verifyNotReceive(1);
+   }
+   
+   public void testStartStopMiddleOfChain() throws Exception
+   {
+      setupClusterConnection("cluster0-1", 0, 1, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", false, 4, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", false, 4, isNetty());
+            
+      startServers(0, 1, 2, 3, 4);
+
+      setupSessionFactory(0, isNetty());
+      setupSessionFactory(4, isNetty());
+
+      createQueue(0, "queues.testaddress", "queue0", null, false);
+
+      createQueue(4, "queues.testaddress", "queue0", null, false);
+
+      addConsumer(0, 0, "queue0", null);
+
+      addConsumer(1, 4, "queue0", null);
+
+      waitForBindings(0, "queues.testaddress", 1, 1, true);
+      waitForBindings(0, "queues.testaddress", 1, 1, false);
+
+      send(0, "queues.testaddress", 10, false, null);
+      verifyReceiveRoundRobin(10, 0, 1);
+      verifyNotReceive(0, 1); 
+      
+      stopServers(2);
+
+      startServers(2);
+
+      Thread.sleep(2000);
+      
+      send(0, "queues.testaddress", 10, false, null);
+       
+      verifyReceiveRoundRobin(10, 0, 1);
+      verifyNotReceive(0, 1); 
+   }
+   
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OnewayTwoNodeClusterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OnewayTwoNodeClusterTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/OnewayTwoNodeClusterTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -176,6 +176,7 @@
 
       send(0, "queues.testaddress", 10, false, myFilter);
       verifyReceiveAll(10, 0);
+      this.checkReceive(0);
       verifyNotReceive(0);
       
       send(0, "queues.testaddress", 10, false, null);

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/SymmetricClusterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/SymmetricClusterTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/distribution/SymmetricClusterTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -114,9 +114,10 @@
       verifyReceiveRoundRobinInSomeOrder(10, 0, 1, 2, 3, 4);
 
       verifyNotReceive(0, 1, 2, 3, 4);
+      
+      log.info("got here");
    }
    
-
    public void testRoundRobinMultipleQueues() throws Exception
    {
       setupCluster();
@@ -1455,9 +1456,7 @@
 
       verifyNotReceive(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27);
    }
-   
-   
-   
+         
    private void setupCluster() throws Exception
    {
       setupCluster(false);
@@ -1465,30 +1464,30 @@
    
    private void setupCluster(final boolean forwardWhenNoConsumers) throws Exception
    {
-      setupClusterConnection("cluster0-1", 0, 1, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster0-2", 0, 2, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster0-3", 0, 3, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster0-4", 0, 4, "queues", forwardWhenNoConsumers, 2, isNetty());
+      setupClusterConnection("cluster0-1", 0, 1, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster0-2", 0, 2, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster0-3", 0, 3, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster0-4", 0, 4, "queues", forwardWhenNoConsumers, 1, isNetty());
 
-      setupClusterConnection("cluster1-0", 1, 0, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster1-2", 1, 2, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster1-3", 1, 3, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster1-4", 1, 4, "queues", forwardWhenNoConsumers, 2, isNetty());
+      setupClusterConnection("cluster1-0", 1, 0, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster1-2", 1, 2, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster1-3", 1, 3, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster1-4", 1, 4, "queues", forwardWhenNoConsumers, 1, isNetty());
 
-      setupClusterConnection("cluster2-0", 2, 0, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster2-1", 2, 1, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster2-3", 2, 3, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster2-4", 2, 4, "queues", forwardWhenNoConsumers, 2, isNetty());
+      setupClusterConnection("cluster2-0", 2, 0, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster2-1", 2, 1, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster2-3", 2, 3, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster2-4", 2, 4, "queues", forwardWhenNoConsumers, 1, isNetty());
 
-      setupClusterConnection("cluster3-0", 3, 0, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster3-1", 3, 1, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster3-2", 3, 2, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster3-4", 3, 4, "queues", forwardWhenNoConsumers, 2, isNetty());
+      setupClusterConnection("cluster3-0", 3, 0, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster3-1", 3, 1, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster3-2", 3, 2, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster3-4", 3, 4, "queues", forwardWhenNoConsumers, 1, isNetty());
 
-      setupClusterConnection("cluster4-0", 4, 0, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster4-1", 4, 1, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster4-2", 4, 2, "queues", forwardWhenNoConsumers, 2, isNetty());
-      setupClusterConnection("cluster4-3", 4, 3, "queues", forwardWhenNoConsumers, 2, isNetty());
+      setupClusterConnection("cluster4-0", 4, 0, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster4-1", 4, 1, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster4-2", 4, 2, "queues", forwardWhenNoConsumers, 1, isNetty());
+      setupClusterConnection("cluster4-3", 4, 3, "queues", forwardWhenNoConsumers, 1, isNetty());
    }
    
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -184,18 +184,20 @@
 
       Configuration liveConf = new ConfigurationImpl();
       liveConf.setSecurityEnabled(false);
+      TransportConfiguration liveTC = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory");
       liveConf.getAcceptorConfigurations()
               .add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory"));
       Map<String, TransportConfiguration> connectors = new HashMap<String, TransportConfiguration>();
       TransportConfiguration backupTC = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                   backupParams, "backup-connector");
+                                                                   backupParams);
       connectors.put(backupTC.getName(), backupTC);
+      connectors.put(liveTC.getName(), liveTC);
       liveConf.setConnectorConfigurations(connectors);
       liveConf.setBackupConnectorName(backupTC.getName());
       liveConf.setClustered(true);
       
       List<Pair<String, String>> connectorNames = new ArrayList<Pair<String, String>>();
-      connectorNames.add(new Pair<String, String>(backupTC.getName(), null));
+      connectorNames.add(new Pair<String, String>(liveTC.getName(), backupTC.getName()));
       
       final long broadcastPeriod = 250;
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -173,6 +173,54 @@
       assertNull(message);
 
       session1.close();
+      
+      //Send some more on different session factory
+      
+      sf1.close();
+      
+      sf1 = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      sf1.setSendWindowSize(32 * 1024);
+
+      session1 = sf1.createSession(false, true, true);
+
+      producer = session1.createProducer(ADDRESS);
+      
+      consumer1 = session1.createConsumer(ADDRESS);
+
+      session1.start();
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         message = session1.createClientMessage(JBossTextMessage.TYPE,
+                                                              false,
+                                                              0,
+                                                              System.currentTimeMillis(),
+                                                              (byte)1);
+         message.putIntProperty(new SimpleString("count"), i);
+         message.getBody().putString("aardvarks");
+         message.getBody().flip();
+         producer.send(message);
+      }
+      
+      for (int i = 0; i < numMessages; i++)
+      {
+         message = consumer1.receive(1000);
+
+         assertNotNull(message);
+
+         assertEquals("aardvarks", message.getBody().getString());
+
+         assertEquals(i, message.getProperty(new SimpleString("count")));
+
+         message.acknowledge();
+      }
+
+      message = consumer1.receive(1000);
+
+      assertNull(message);
+
+      session1.close();
    }
 
    // Package protected ---------------------------------------------

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -231,7 +231,7 @@
          {
             doTestL(sf);
          }
-      }, NUM_THREADS, false);
+      }, 1, false, true);
    }
 
    // public void testM() throws Exception
@@ -1063,20 +1063,26 @@
       s.close();
    }
 
+   /*
+    * This test tests failure during create connection
+    */
    protected void doTestL(final ClientSessionFactory sf) throws Exception
-   {
-      ClientSession s = sf.createSession(false, false, false);
+   {     
+      ClientSessionFactoryInternal sf2 = createSessionFactory();
+      
+      final int numSessions = 10;
 
-      final int numSessions = 100;
-
       for (int i = 0; i < numSessions; i++)
       {
-         ClientSession session = sf.createSession(false, false, false);
+         log.info("i " + i);
+         ClientSession session = sf2.createSession(false, false, false);
 
          session.close();
+         
+         Thread.sleep(10);
       }
-
-      s.close();
+ 
+      sf2.close();     
    }
 
    // Browsers
@@ -1243,7 +1249,7 @@
 
    protected int getNumIterations()
    {
-      return 1;
+      return 2;
    }
 
    @Override
@@ -1278,6 +1284,11 @@
 
    private void runTestMultipleThreads(final RunnableT runnable, final int numThreads, final boolean fileBased) throws Exception
    {
+      runTestMultipleThreads(runnable, numThreads, fileBased, false);
+   }
+   
+   private void runTestMultipleThreads(final RunnableT runnable, final int numThreads, final boolean fileBased, final boolean failOnCreateConnection) throws Exception
+   {
       final int numIts = getNumIterations();
 
       for (int its = 0; its < numIts; its++)
@@ -1290,7 +1301,7 @@
 
          ClientSession session = sf.createSession(false, false, false);
 
-         Failer failer = startFailer(1000, session);
+         Failer failer = startFailer(1000, session, failOnCreateConnection);
 
          class Runner extends Thread
          {
@@ -1345,26 +1356,34 @@
                   throw new Exception("Exception on thread " + thread, thread.throwable);
                }
             }
+            
+            log.info("completed*******");
 
             runnable.checkFail();
+            
+            log.info("super completed");
          }
          while (!failer.isExecuted());
 
          InVMConnector.resetFailures();
 
+         log.info("closing session");
          session.close();
+         log.info("closed session");
 
          assertEquals(0, sf.numSessions());
 
          assertEquals(0, sf.numConnections());
 
+         log.info("stopping");
          stop();
+         log.info("stopped");
       }
    }
 
-   private Failer startFailer(final long time, final ClientSession session)
+   private Failer startFailer(final long time, final ClientSession session, final boolean failOnCreateConnection)
    {
-      Failer failer = new Failer(session);
+      Failer failer = new Failer(session, failOnCreateConnection);
 
       timer.schedule(failer, (long)(time * Math.random()), 100);
 
@@ -1475,10 +1494,14 @@
       private final ClientSession session;
 
       private boolean executed;
-
-      public Failer(final ClientSession session)
+      
+      private final boolean failOnCreateConnection;
+      
+      public Failer(final ClientSession session, final boolean failOnCreateConnection)
       {
          this.session = session;
+         
+         this.failOnCreateConnection = failOnCreateConnection;
       }
 
       @Override
@@ -1487,11 +1510,17 @@
          log.info("** Failing connection");
 
          RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionImpl)session).getConnection();
+         
+         if (failOnCreateConnection)
+         {
+            InVMConnector.numberOfFailures = 1;
+            InVMConnector.failOnCreateConnection = true;            
+         }
+         else
+         {
+            conn.fail(new MessagingException(MessagingException.NOT_CONNECTED, "blah"));
+         }
 
-         InVMConnector.numberOfFailures = 1;
-         InVMConnector.failOnCreateConnection = true;
-         conn.fail(new MessagingException(MessagingException.NOT_CONNECTED, "blah"));
-
          log.info("** Fail complete");
 
          cancel();
@@ -1501,6 +1530,7 @@
 
       public synchronized boolean isExecuted()
       {
+         log.info("executed??" + executed);
          return executed;
       }
    }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/RandomFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/RandomFailoverTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/RandomFailoverTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -247,8 +247,6 @@
          }
          while (!failer.isExecuted());
          
-         InVMConnector.resetFailures();
-
          session.close();
 
          assertEquals(0, sf.numSessions());
@@ -1526,8 +1524,6 @@
       {
          log.info("** Failing connection");
 
-         InVMConnector.numberOfFailures = 1;
-         InVMConnector.failOnCreateConnection = true;
          session.getConnection().fail(new MessagingException(MessagingException.NOT_CONNECTED, "oops"));
 
          log.info("** Fail complete");

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -91,35 +91,33 @@
    // Constructors --------------------------------------------------
 
    // Public --------------------------------------------------------
-   
+
    public void testFailConnection() throws Exception
    {
       final long pingPeriod = 500;
 
       ClientSessionFactoryInternal sf1 = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"),
-                                                                      new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                                                 backupParams),
-                                                                                                 DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME,
-                                                                                                 pingPeriod,
-                                                                                                 (long)(pingPeriod * 1.5),
-                                                                                                 DEFAULT_CALL_TIMEOUT,
-                                                                                                 DEFAULT_CONSUMER_WINDOW_SIZE,
-                                                                                                 DEFAULT_CONSUMER_MAX_RATE,
-                                                                                                 DEFAULT_SEND_WINDOW_SIZE,
-                                                                                                 DEFAULT_PRODUCER_MAX_RATE,
-                                                                                                 DEFAULT_MIN_LARGE_MESSAGE_SIZE,
-                                                                                                 DEFAULT_BLOCK_ON_ACKNOWLEDGE,
-                                                                                                 DEFAULT_BLOCK_ON_PERSISTENT_SEND,
-                                                                                                 DEFAULT_BLOCK_ON_NON_PERSISTENT_SEND,
-                                                                                                 DEFAULT_AUTO_GROUP,
-                                                                                                 DEFAULT_MAX_CONNECTIONS,
-                                                                                                 DEFAULT_PRE_ACKNOWLEDGE,
-                                                                                                 DEFAULT_ACK_BATCH_SIZE,                                                                                    
-                                                                                                 DEFAULT_RETRY_INTERVAL,
-                                                                                                 DEFAULT_RETRY_INTERVAL_MULTIPLIER,
-                                                                                                 DEFAULT_MAX_RETRIES_BEFORE_FAILOVER,
-                                                                                                 DEFAULT_MAX_RETRIES_AFTER_FAILOVER);
-      
+                                                                      null,
+                                                                      DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME,
+                                                                      pingPeriod,
+                                                                      (long)(pingPeriod * 1.5),
+                                                                      DEFAULT_CALL_TIMEOUT,
+                                                                      DEFAULT_CONSUMER_WINDOW_SIZE,
+                                                                      DEFAULT_CONSUMER_MAX_RATE,
+                                                                      DEFAULT_SEND_WINDOW_SIZE,
+                                                                      DEFAULT_PRODUCER_MAX_RATE,
+                                                                      DEFAULT_MIN_LARGE_MESSAGE_SIZE,
+                                                                      DEFAULT_BLOCK_ON_ACKNOWLEDGE,
+                                                                      DEFAULT_BLOCK_ON_PERSISTENT_SEND,
+                                                                      DEFAULT_BLOCK_ON_NON_PERSISTENT_SEND,
+                                                                      DEFAULT_AUTO_GROUP,
+                                                                      DEFAULT_MAX_CONNECTIONS,
+                                                                      DEFAULT_PRE_ACKNOWLEDGE,
+                                                                      DEFAULT_ACK_BATCH_SIZE,
+                                                                      DEFAULT_RETRY_INTERVAL,
+                                                                      DEFAULT_RETRY_INTERVAL_MULTIPLIER,
+                                                                      DEFAULT_MAX_RETRIES_BEFORE_FAILOVER,
+                                                                      DEFAULT_MAX_RETRIES_AFTER_FAILOVER);
 
       sf1.setSendWindowSize(32 * 1024);
 
@@ -183,7 +181,8 @@
               .add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory"));
       Map<String, TransportConfiguration> connectors = new HashMap<String, TransportConfiguration>();
       TransportConfiguration backupTC = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                   backupParams, "backup-connector");
+                                                                   backupParams,
+                                                                   "backup-connector");
       connectors.put(backupTC.getName(), backupTC);
       liveConf.setConnectorConfigurations(connectors);
       liveConf.setBackupConnectorName(backupTC.getName());

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -46,6 +46,7 @@
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.FailureListener;
 import org.jboss.messaging.core.remoting.RemotingConnection;
+import org.jboss.messaging.core.remoting.impl.invm.InVMConnector;
 import org.jboss.messaging.core.remoting.impl.invm.InVMRegistry;
 import org.jboss.messaging.core.remoting.impl.invm.TransportConstants;
 import org.jboss.messaging.core.server.Messaging;
@@ -87,7 +88,7 @@
       ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       ClientSession session = sf.createSession(false, true, true);
 
       session.createQueue(ADDRESS, ADDRESS, null, false, false);
@@ -143,7 +144,7 @@
                                                                                                 backupParams));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       ClientSession session = sf.createSession(false, true, true);
 
       session.createQueue(ADDRESS, ADDRESS, null, false, false);
@@ -222,7 +223,7 @@
                                                                                                 backupParams));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       ClientSession session = sf.createSession(false, true, true);
 
       session.createQueue(ADDRESS, ADDRESS, null, false, false);
@@ -304,7 +305,7 @@
                                                                                                 backupParams));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       ClientSession session = sf.createSession(false, true, true);
 
       session.createQueue(ADDRESS, ADDRESS, null, false, false);
@@ -373,7 +374,7 @@
                                                                                                 backupParams));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       ClientSession session = sf.createSession(false, true, true);
 
       session.createQueue(ADDRESS, ADDRESS, null, false, false);
@@ -437,8 +438,6 @@
       assertEquals(0, sf.numConnections());
    }
 
-  
-
    public void testFailoverMultipleSessions() throws Exception
    {
       ClientSessionFactoryInternal sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"),
@@ -446,7 +445,7 @@
                                                                                                 backupParams));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       final int numSessions = ClientSessionFactoryImpl.DEFAULT_MAX_CONNECTIONS * 2;
 
       List<ClientSession> sessions = new ArrayList<ClientSession>();
@@ -526,6 +525,8 @@
       assertEquals(0, sf.numSessions());
 
       assertEquals(0, sf.numConnections());
+      
+      log.info("** got to end");
    }
 
    public void testAllConnectionsReturned() throws Exception
@@ -535,7 +536,7 @@
                                                                                                 backupParams));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       final int numSessions = ClientSessionFactoryImpl.DEFAULT_MAX_CONNECTIONS * 2;
 
       List<ClientSession> sessions = new ArrayList<ClientSession>();
@@ -566,7 +567,7 @@
                                                                                                 backupParams));
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       final int numSessions = ClientSessionFactoryImpl.DEFAULT_MAX_CONNECTIONS * 2;
 
       List<ClientSession> sessions = new ArrayList<ClientSession>();
@@ -602,9 +603,9 @@
       final double retryMultiplier = 1d;
 
       final int maxRetriesBeforeFailover = 0;
-      
-      final int maxRetriesAfterFailover = 0;      
-      
+
+      final int maxRetriesAfterFailover = 0;
+
       ClientSessionFactoryInternal sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"),
                                                                      new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
                                                                                                 backupParams),
@@ -614,7 +615,7 @@
                                                                      maxRetriesAfterFailover);
 
       sf.setSendWindowSize(32 * 1024);
-      
+
       ClientSession session = sf.createSession(false, true, true);
 
       session.createQueue(ADDRESS, ADDRESS, null, false, false);
@@ -667,7 +668,7 @@
          public boolean connectionFailed(final MessagingException me)
          {
             latch.countDown();
-            
+
             return true;
          }
       }
@@ -700,12 +701,89 @@
       assertEquals(0, sf.numConnections());
    }
 
+   public void testFailoverOnCreateSession() throws Exception
+   {
+      stopServers();
+      for (int j = 0; j < 10; j++)
+      {
+         startServers();
+
+         ClientSessionFactoryInternal sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"),
+                                                                        new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
+                                                                                                   backupParams));
+
+         sf.setSendWindowSize(32 * 1024);
+
+         for (int i = 0; i < 10; i++)
+         {
+            log.info("j:" + j + " i:" + i);
+            // We test failing on the 0th connection created, then the first, then the second etc, to make sure they are
+            // all failed over ok
+            if (i == j)
+            {
+               log.info("Failing on " + i);
+               InVMConnector.numberOfFailures = 1;
+               InVMConnector.failOnCreateConnection = true;
+            }
+
+            ClientSession session = sf.createSession(false, true, true);
+
+            session.createQueue(ADDRESS, ADDRESS, null, false, false);
+
+            ClientProducer producer = session.createProducer(ADDRESS);
+
+            final int numMessages = 10;
+
+            for (int k = 0; k < numMessages; k++)
+            {
+               ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE,
+                                                                   false,
+                                                                   0,
+                                                                   System.currentTimeMillis(),
+                                                                   (byte)1);
+               message.putIntProperty(new SimpleString("count"), k);
+               message.getBody().putString("aardvarks");
+               message.getBody().flip();
+               producer.send(message);
+            }
+
+            ClientConsumer consumer = session.createConsumer(ADDRESS);
+
+            session.start();
+
+            for (int k = 0; k < numMessages; k++)
+            {
+               ClientMessage message2 = consumer.receive();
+
+               assertEquals("aardvarks", message2.getBody().getString());
+
+               assertEquals(k, message2.getProperty(new SimpleString("count")));
+
+               message2.acknowledge();
+            }
+
+            consumer.close();
+
+            session.deleteQueue(ADDRESS);
+
+            session.close();
+         }
+
+         assertEquals(0, sf.numSessions());
+
+         assertEquals(0, sf.numConnections());
+
+         sf.close();
+
+         stopServers();
+      }
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------
 
-   @Override
-   protected void setUp() throws Exception
+   protected void startServers() throws Exception
    {
       Configuration backupConf = new ConfigurationImpl();
       backupConf.setSecurityEnabled(false);
@@ -723,7 +801,8 @@
               .add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory"));
       Map<String, TransportConfiguration> connectors = new HashMap<String, TransportConfiguration>();
       TransportConfiguration backupTC = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
-                                                                   backupParams, "backup-connector");
+                                                                   backupParams,
+                                                                   "backup-connector");
       connectors.put(backupTC.getName(), backupTC);
       liveConf.setConnectorConfigurations(connectors);
       liveConf.setBackupConnectorName(backupTC.getName());
@@ -731,16 +810,33 @@
       liveService.start();
    }
 
-   @Override
-   protected void tearDown() throws Exception
+   protected void stopServers() throws Exception
    {
-      backupService.stop();
+      if (backupService.isStarted())
+      {
+         backupService.stop();
+      }
 
-      liveService.stop();
+      if (liveService.isStarted())
+      {
+         liveService.stop();
+      }
 
       assertEquals(0, InVMRegistry.instance.size());
    }
 
+   @Override
+   protected void setUp() throws Exception
+   {
+      startServers();
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      stopServers();
+   }
+
    // Private -------------------------------------------------------
 
    // Inner classes -------------------------------------------------

Added: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,257 @@
+/*
+ * JBoss, Home of Professional Open Source Copyright 2005-2008, Red Hat
+ * Middleware LLC, and individual contributors by the @authors tag. See the
+ * copyright.txt in the distribution for a full listing of individual
+ * contributors.
+ * 
+ * This is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * 
+ * This software is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this software; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
+ * site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.tests.integration.cluster.failover;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.jboss.messaging.core.client.ClientConsumer;
+import org.jboss.messaging.core.client.ClientMessage;
+import org.jboss.messaging.core.client.ClientProducer;
+import org.jboss.messaging.core.client.ClientSession;
+import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
+import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.config.TransportConfiguration;
+import org.jboss.messaging.core.config.impl.ConfigurationImpl;
+import org.jboss.messaging.core.exception.MessagingException;
+import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.RemotingConnection;
+import org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory;
+import org.jboss.messaging.core.remoting.impl.invm.InVMRegistry;
+import org.jboss.messaging.core.remoting.impl.invm.TransportConstants;
+import org.jboss.messaging.core.remoting.spi.Connection;
+import org.jboss.messaging.core.server.Messaging;
+import org.jboss.messaging.core.server.MessagingService;
+import org.jboss.messaging.jms.client.JBossTextMessage;
+import org.jboss.messaging.util.SimpleString;
+
+/**
+ * 
+ * A SplitBrainTest
+ * 
+ * Verify that split brain can occur
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * 
+ * Created 6 Nov 2008 11:27:17
+ *
+ *
+ */
+public class SplitBrainTest extends TestCase
+{
+   private static final Logger log = Logger.getLogger(FailBackupServerTest.class);
+
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   private static final SimpleString ADDRESS = new SimpleString("FailoverTestAddress");
+
+   private MessagingService liveService;
+
+   private MessagingService backupService;
+
+   private final Map<String, Object> backupParams = new HashMap<String, Object>();
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   public void testDemonstrateSplitBrain() throws Exception
+   {
+      ClientSessionFactoryInternal sf1 = new ClientSessionFactoryImpl(new TransportConfiguration(InVMConnectorFactory.class.getName()),
+                                                                      new TransportConfiguration(InVMConnectorFactory.class.getName(),
+                                                                                                 backupParams));
+      
+      sf1.setBlockOnNonPersistentSend(true);
+
+      ClientSession session = sf1.createSession(false, true, true);
+
+      session.createQueue(ADDRESS, ADDRESS, null, false, false);
+
+      ClientProducer producer = session.createProducer(ADDRESS);
+
+      final int numMessages = 10;
+      
+      int sendCount = 0;
+      
+      int consumeCount = 0;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE,
+                                                              false,
+                                                              0,
+                                                              System.currentTimeMillis(),
+                                                              (byte)1);
+         message.putIntProperty(new SimpleString("count"), sendCount++);
+         message.getBody().putString("aardvarks");
+         message.getBody().flip();
+         producer.send(message);
+      }
+      
+      //Now fail the replicating connections
+      Set<RemotingConnection> conns = liveService.getServer().getRemotingService().getConnections();
+      for (RemotingConnection conn : conns)
+      {
+         RemotingConnection replicatingConn = conn.getReplicatingConnection();
+         Connection tcConn = replicatingConn.getTransportConnection();
+         tcConn.fail(new MessagingException(MessagingException.INTERNAL_ERROR, "blah"));
+      }
+      
+      Thread.sleep(2000);
+      
+      //Fail client connection      
+      ((ClientSessionImpl)session).getConnection().fail(new MessagingException(MessagingException.NOT_CONNECTED, "simulated failure b/w client and live node"));
+
+      ClientConsumer consumer1 = session.createConsumer(ADDRESS);
+
+      session.start();
+      
+      Set<Integer> deliveredMessageIDs = new HashSet<Integer>();
+           
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = consumer1.receive(1000);
+
+         assertNotNull(message);
+
+         assertEquals("aardvarks", message.getBody().getString());
+         
+         int count = (Integer)message.getProperty(new SimpleString("count"));
+         
+         log.info("got message " + count);
+
+         assertEquals(consumeCount++, count);
+       
+         deliveredMessageIDs.add(count);
+
+         message.acknowledge();
+      }
+      
+      session.close();
+      
+      sf1.close();
+      
+      //Now try and connect to live node - even though we failed over
+      
+      ClientSessionFactoryInternal sf2 = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      session = sf2.createSession(false, true, true);
+      
+      producer = session.createProducer(ADDRESS);
+
+      consumer1 = session.createConsumer(ADDRESS);
+         
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE,
+                                                              false,
+                                                              0,
+                                                              System.currentTimeMillis(),
+                                                              (byte)1);
+         message.putIntProperty(new SimpleString("count"), i + numMessages);
+         message.getBody().putString("aardvarks");
+         message.getBody().flip();
+         producer.send(message);
+      }
+      
+      session.start();
+      
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = consumer1.receive(1000);
+         
+         assertNotNull(message);
+
+         assertEquals("aardvarks", message.getBody().getString());
+         
+         int count = (Integer)message.getProperty(new SimpleString("count"));
+         
+         log.info("got message on live after failover " + count);
+         
+         //Assert that this has been consumed before!!
+         assertTrue(deliveredMessageIDs.contains(count));
+ 
+         message.acknowledge();
+      }
+      
+      session.close();
+      
+      sf2.close();
+      
+   }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      Configuration backupConf = new ConfigurationImpl();
+      backupConf.setSecurityEnabled(false);
+      backupParams.put(TransportConstants.SERVER_ID_PROP_NAME, 1);
+      backupConf.getAcceptorConfigurations()
+                .add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory",
+                                                backupParams));
+      backupConf.setBackup(true);
+      backupService = Messaging.newNullStorageMessagingService(backupConf);
+      backupService.start();
+
+      Configuration liveConf = new ConfigurationImpl();
+      liveConf.setSecurityEnabled(false);
+      liveConf.getAcceptorConfigurations()
+              .add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory"));
+      Map<String, TransportConfiguration> connectors = new HashMap<String, TransportConfiguration>();
+      TransportConfiguration backupTC = new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
+                                                                   backupParams, "backup-connector");
+      connectors.put(backupTC.getName(), backupTC);
+      liveConf.setConnectorConfigurations(connectors);
+      liveConf.setBackupConnectorName(backupTC.getName());
+      liveService = Messaging.newNullStorageMessagingService(liveConf);
+      liveService.start();
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      backupService.stop();
+
+      liveService.stop();
+
+      assertEquals(0, InVMRegistry.instance.size());
+   }
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -387,7 +387,7 @@
          });
 
          assertTrue(control.closeConnectionsForAddress(remoteAddress));
-
+         
          boolean gotException = exceptionLatch.await(1, TimeUnit.SECONDS);
          assertTrue("did not received the expected JMSException", gotException);
          assertEquals(0, control.listRemoteAddresses().length);

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/management/BridgeControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/management/BridgeControlTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/management/BridgeControlTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -59,11 +59,9 @@
       return new BridgeConfiguration(randomString(),
                                      randomString(),
                                      randomString(),
+                                     null,                             
                                      null,
-                                     randomPositiveInt(),
                                      randomPositiveLong(),
-                                     null,
-                                     randomPositiveLong(),
                                      randomDouble(),
                                      randomPositiveInt(),
                                      randomPositiveInt(),

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -37,6 +37,7 @@
 
 import java.lang.management.ManagementFactory;
 import java.nio.ByteBuffer;
+import java.util.Set;
 
 import javax.management.MBeanServer;
 import javax.management.MBeanServerFactory;
@@ -45,6 +46,7 @@
 import junit.framework.TestCase;
 
 import org.jboss.messaging.core.client.management.impl.ManagementHelper;
+import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.management.AddressControlMBean;
 import org.jboss.messaging.core.management.ManagementService;
 import org.jboss.messaging.core.management.ObjectNames;
@@ -66,6 +68,8 @@
 {
    // Constants -----------------------------------------------------
 
+   private final Logger log = Logger.getLogger(ManagementServiceImplTest.class);
+
    // Attributes ----------------------------------------------------
 
    // Static --------------------------------------------------------
@@ -178,34 +182,42 @@
 
       managementService.stop();
    }
-   
+
    public void testStop() throws Exception
    {
       MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
-      
+
       ManagementService managementService = new ManagementServiceImpl(mbeanServer, true);
       assertNotNull(managementService);
 
       managementService.registerAddress(randomSimpleString());
-      
+
       assertEquals(1, mbeanServer.queryMBeans(ObjectName.getInstance(ObjectNames.DOMAIN + ":*"), null).size());
-      
+
       managementService.stop();
 
       assertEquals(0, mbeanServer.queryMBeans(ObjectName.getInstance(ObjectNames.DOMAIN + ":*"), null).size());
    }
 
    // Package protected ---------------------------------------------
-   
+
    @Override
    protected void tearDown() throws Exception
    {
       MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
+
+      Set set = mbeanServer.queryMBeans(ObjectName.getInstance(ObjectNames.DOMAIN + ":*"), null);
+
+      for (Object obj : set)
+      {
+         log.info("mbean:" + set);
+      }
+
       assertEquals(0, mbeanServer.queryMBeans(ObjectName.getInstance(ObjectNames.DOMAIN + ":*"), null).size());
 
       super.tearDown();
    }
-   
+
    // Protected -----------------------------------------------------
 
    // Private -------------------------------------------------------

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -64,12 +64,12 @@
    public void testPagingManager() throws Exception
    {
       
-      HierarchicalRepository<AddressSettings> queueSettings = new HierarchicalObjectRepository<AddressSettings>();
-      queueSettings.setDefault(new AddressSettings());
+      HierarchicalRepository<AddressSettings> addressSettings = new HierarchicalObjectRepository<AddressSettings>();
+      addressSettings.setDefault(new AddressSettings());
       
       PagingManagerImpl managerImpl = new PagingManagerImpl(new PagingStoreFactoryNIO(getPageDir(), 10),
                                                             new NullStorageManager(),
-                                                            queueSettings,
+                                                            addressSettings,
                                                             -1,
                                                             1024 * 1024,
                                                             true,

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/remoting/DestroyConsumerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/remoting/DestroyConsumerTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/remoting/DestroyConsumerTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -44,7 +44,7 @@
    
 //   public void testDestroyConsumer() throws Exception
 //   {
-//      MessagingService service = createService(false, false, createDefaultConfig(), new HashMap<String, QueueSettings>());
+//      MessagingService service = createService(false, false, createDefaultConfig(), new HashMap<String, AddressSettings>());
 //      service.start();
 //      
 //      SimpleString queue = new SimpleString("add1");

Added: trunk/tests/src/org/jboss/messaging/tests/integration/session/SendAcknowledgementsTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/session/SendAcknowledgementsTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/session/SendAcknowledgementsTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,116 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.tests.integration.session;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.jboss.messaging.core.client.ClientMessage;
+import org.jboss.messaging.core.client.ClientProducer;
+import org.jboss.messaging.core.client.ClientSession;
+import org.jboss.messaging.core.client.ClientSessionFactory;
+import org.jboss.messaging.core.client.SendAcknowledgementHandler;
+import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.message.Message;
+import org.jboss.messaging.core.server.MessagingService;
+import org.jboss.messaging.tests.util.ServiceTestBase;
+import org.jboss.messaging.util.SimpleString;
+
+/**
+ * A SendAcknowledgementsTest
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * 
+ * Created 9 Feb 2009 13:29:19
+ *
+ *
+ */
+public class SendAcknowledgementsTest extends ServiceTestBase
+{
+   private static final Logger log = Logger.getLogger(SendAcknowledgementsTest.class);
+
+   private MessagingService messagingService;
+
+   private SimpleString address = new SimpleString("address");
+
+   private SimpleString queueName = new SimpleString("queue");
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+
+      messagingService = createService(false);
+      messagingService.start();
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      super.tearDown();
+
+      if (messagingService != null && messagingService.isStarted())
+      {
+         messagingService.stop();
+      }
+   }
+
+   public void testSendAcknowledgements() throws Exception
+   {
+      ClientSessionFactory csf = createInVMFactory();
+
+      ClientSession session = csf.createSession(null, null, false, true, true, false, 1);
+
+      csf.setSendWindowSize(1024);
+
+      session.createQueue(address, queueName, false);
+
+      ClientProducer prod = session.createProducer(address);
+
+      final int numMessages = 1000;
+
+      final CountDownLatch latch = new CountDownLatch(numMessages);
+
+      session.setSendAcknowledgementHandler(new SendAcknowledgementHandler()
+      {
+         public void sendAcknowledged(final Message message)
+         {
+            latch.countDown();
+         }
+      });
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage msg = session.createClientMessage(false);
+
+         prod.send(msg);
+      }
+
+      session.close();
+
+      boolean ok = latch.await(5000, TimeUnit.MILLISECONDS);
+
+      assertTrue(ok);
+   }  
+}

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaRecoveryTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaRecoveryTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaRecoveryTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -53,7 +53,7 @@
 {
    private static Logger log = Logger.getLogger(BasicXaRecoveryTest.class);
 
-   private final Map<String, AddressSettings> queueSettings = new HashMap<String, AddressSettings>();
+   private final Map<String, AddressSettings> addressSettings = new HashMap<String, AddressSettings>();
 
    private MessagingService messagingService;
 
@@ -73,13 +73,13 @@
    protected void setUp() throws Exception
    {
       clearData();
-      queueSettings.clear();
+      addressSettings.clear();
       configuration = createDefaultConfig();
       configuration.setSecurityEnabled(false);
       configuration.setJournalMinFiles(2);
       configuration.setPagingDirectory(getPageDir());
 
-      messagingService = createService(true, configuration, queueSettings);
+      messagingService = createService(true, configuration, addressSettings);
 
       // start the server
       messagingService.start();
@@ -250,7 +250,7 @@
       pageAddressSettings.setMaxSizeBytes(100 * 1024);
       pageAddressSettings.setPageSizeBytes(10 * 1024);
 
-      queueSettings.put(pageQueue.toString(), pageAddressSettings);
+      addressSettings.put(pageQueue.toString(), pageAddressSettings);
 
       addSettings();
 
@@ -333,7 +333,7 @@
       pageAddressSettings.setMaxSizeBytes(100 * 1024);
       pageAddressSettings.setPageSizeBytes(10 * 1024);
 
-      queueSettings.put(pageQueue.toString(), pageAddressSettings);
+      addressSettings.put(pageQueue.toString(), pageAddressSettings);
 
       addSettings();
 
@@ -1213,7 +1213,7 @@
       clientSession = null;
       messagingService.stop();
       messagingService = null;
-      messagingService = createService(true, configuration, queueSettings);
+      messagingService = createService(true, configuration, addressSettings);
 
       messagingService.start();
       createClients();
@@ -1221,7 +1221,7 @@
 
    private void addSettings()
    {
-      for (Map.Entry<String, AddressSettings> setting : queueSettings.entrySet())
+      for (Map.Entry<String, AddressSettings> setting : addressSettings.entrySet())
       {
          messagingService.getServer().getAddressSettingsRepository().addMatch(setting.getKey(), setting.getValue());
       }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -48,7 +48,7 @@
 {
       private static Logger log = Logger.getLogger(BasicXaTest.class);
 
-   private final Map<String, AddressSettings> queueSettings = new HashMap<String, AddressSettings>();
+   private final Map<String, AddressSettings> addressSettings = new HashMap<String, AddressSettings>();
 
    private MessagingService messagingService;
 
@@ -64,13 +64,13 @@
    protected void setUp() throws Exception
    {
       clearData();
-      queueSettings.clear();
+      addressSettings.clear();
       configuration = createDefaultConfig();
       configuration.setSecurityEnabled(false);
       configuration.setJournalMinFiles(2);
       configuration.setPagingDirectory(getPageDir());
 
-      messagingService = createService(true, configuration, queueSettings);
+      messagingService = createService(true, configuration, addressSettings);
 
       // start the server
       messagingService.start();

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/xa/XaTimeoutTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/xa/XaTimeoutTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/xa/XaTimeoutTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -51,7 +51,7 @@
 public class XaTimeoutTest extends UnitTestCase
 {
 
-   private Map<String, AddressSettings> queueSettings = new HashMap<String, AddressSettings>();
+   private Map<String, AddressSettings> addressSettings = new HashMap<String, AddressSettings>();
 
    private MessagingService messagingService;
    
@@ -69,7 +69,7 @@
 
    protected void setUp() throws Exception
    {
-      queueSettings.clear();
+      addressSettings.clear();
       configuration = new ConfigurationImpl();
       configuration.setSecurityEnabled(false);
       configuration.setTransactionTimeoutScanPeriod(500);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -428,7 +428,7 @@
       testAcknowledge(true);
       testAcknowledge(false);
    }
-   
+
    public void testCommit() throws Exception
    {
       expect(channel.sendBlocking(new PacketImpl(PacketImpl.SESS_COMMIT))).andReturn(new NullResponseMessage());
@@ -1484,16 +1484,16 @@
 
       super.tearDown();
    }
-   
+
    // Private -----------------------------------------------------
 
    private void testAcknowledge(boolean blockOnAck) throws Exception
    {
       resetMocks();
-      
+
       long messageID = randomPositiveLong();
       long consumerID = randomPositiveLong();
-      
+
       boolean preack = false;
       session = new ClientSessionImpl(cm,
                                       randomString(),
@@ -1513,22 +1513,23 @@
                                       rc,
                                       1,
                                       channel);
-      
+
       if (blockOnAck)
       {
          expect(channel.sendBlocking(new SessionAcknowledgeMessage(consumerID, messageID, true))).andReturn(new NullResponseMessage());
-      } else
+      }
+      else
       {
          channel.send(new SessionAcknowledgeMessage(consumerID, messageID, false));
       }
 
       replayMocks();
-      
+
       session.acknowledge(consumerID, messageID);
-      
+
       verifyMocks();
    }
-   
+
    private void replayMocks(Object... additionalMocks)
    {
       replay(cm, rc, channel);
@@ -1574,7 +1575,7 @@
    }
 
    // Inner classes -------------------------------------------------
-   
+
    public interface SessionCaller
    {
       void call(ClientSessionImpl session) throws Exception;

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/QueueDeployerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/QueueDeployerTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/QueueDeployerTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -52,7 +52,7 @@
 
    // Public --------------------------------------------------------
 
-   public void testParseQueueConfigurationFromQueueSettings() throws Exception
+   public void testParseQueueConfigurationFromAddressSettings() throws Exception
    {
       Configuration configuration = new ConfigurationImpl();
       QueueDeployer deployer = new QueueDeployer(new FileDeploymentManager(500), configuration);

Copied: trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/AddressSettingsDeployerTest.java (from rev 5836, trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/QueueSettingsDeployerTest.java)
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/AddressSettingsDeployerTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/AddressSettingsDeployerTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,103 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */ 
+
+package org.jboss.messaging.tests.unit.core.deployers.impl;
+
+import junit.framework.TestCase;
+
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
+import org.jboss.messaging.core.deployers.DeploymentManager;
+import org.jboss.messaging.core.deployers.impl.AddressSettingsDeployer;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.AddressSettings;
+import org.jboss.messaging.util.SimpleString;
+import org.jboss.messaging.util.XMLUtil;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class AddressSettingsDeployerTest extends TestCase
+{
+   private String conf = "<address-settings match=\"queues.*\">\n" +
+           "      <manageConfirmations>false</manageConfirmations>\n" +
+           "      <dead-letter-address>DLQtest</dead-letter-address>\n" +
+           "      <expiry-address>ExpiryQueueTest</expiry-address>\n" +
+           "      <redelivery-delay>100</redelivery-delay>\n" +
+           "      <max-size-bytes>-100</max-size-bytes>\n" +
+           "      <distribution-policy-class>org.jboss.messaging.core.impl.RoundRobinDistributionPolicy</distribution-policy-class>\n" +
+           "      <message-counter-history-day-limit>1000</message-counter-history-day-limit>\n" +
+           "   </address-settings>";
+
+   private AddressSettingsDeployer addressSettingsDeployer;
+
+   private HierarchicalRepository<AddressSettings> repository;
+
+   protected void setUp() throws Exception
+   {
+      repository = EasyMock.createStrictMock(HierarchicalRepository.class);
+      DeploymentManager deploymentManager = EasyMock.createNiceMock(DeploymentManager.class);
+      addressSettingsDeployer = new AddressSettingsDeployer(deploymentManager, repository);
+   }
+
+   public void testDeploy() throws Exception
+   {
+      final AddressSettings addressSettings = new AddressSettings();
+      addressSettings.setClustered(false);
+      addressSettings.setRedeliveryDelay((long) 100);
+      addressSettings.setMaxSizeBytes(-100);
+      addressSettings.setDistributionPolicyClass("org.jboss.messaging.core.impl.RoundRobinDistributionPolicy");
+      addressSettings.setMessageCounterHistoryDayLimit(1000);
+      addressSettings.setDeadLetterAddress(new SimpleString("DLQtest"));
+      addressSettings.setExpiryAddress(new SimpleString("ExpiryQueueTest"));
+
+      repository.addMatch(EasyMock.eq("queues.*"),(AddressSettings) EasyMock.anyObject());
+      EasyMock.expectLastCall().andAnswer(new IAnswer<Object>()
+      {
+         public Object answer() throws Throwable
+         {
+            AddressSettings q = (AddressSettings) EasyMock.getCurrentArguments()[1];
+            assertFalse(q.isClustered());
+            assertEquals(q.getRedeliveryDelay(), addressSettings.getRedeliveryDelay());
+            assertEquals(q.getMaxSizeBytes(), addressSettings.getMaxSizeBytes());
+            assertEquals(q.getDistributionPolicyClass(), addressSettings.getDistributionPolicyClass());
+            assertEquals(q.getMessageCounterHistoryDayLimit(), addressSettings.getMessageCounterHistoryDayLimit());
+            assertEquals(q.getDeadLetterAddress(), addressSettings.getDeadLetterAddress());
+            assertEquals(q.getExpiryAddress(), addressSettings.getExpiryAddress());
+            return null;
+         }
+      });
+      EasyMock.replay(repository);
+      addressSettingsDeployer.deploy(XMLUtil.stringToElement(conf));
+      EasyMock.verify(repository);
+   }
+
+   public void testUndeploy() throws Exception
+   {
+      repository.removeMatch("queues.*");
+      EasyMock.replay(repository);
+      addressSettingsDeployer.undeploy(XMLUtil.stringToElement(conf));
+      EasyMock.verify(repository);
+   }
+
+
+}

Deleted: trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/QueueSettingsDeployerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/QueueSettingsDeployerTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/deployers/impl/QueueSettingsDeployerTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -1,103 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */ 
-
-package org.jboss.messaging.tests.unit.core.deployers.impl;
-
-import junit.framework.TestCase;
-
-import org.easymock.EasyMock;
-import org.easymock.IAnswer;
-import org.jboss.messaging.core.deployers.DeploymentManager;
-import org.jboss.messaging.core.deployers.impl.AddressSettingsDeployer;
-import org.jboss.messaging.core.settings.HierarchicalRepository;
-import org.jboss.messaging.core.settings.impl.AddressSettings;
-import org.jboss.messaging.util.SimpleString;
-import org.jboss.messaging.util.XMLUtil;
-
-/**
- * @author <a href="ataylor at redhat.com">Andy Taylor</a>
- */
-public class QueueSettingsDeployerTest extends TestCase
-{
-   private String conf = "<address-settings match=\"queues.*\">\n" +
-           "      <manageConfirmations>false</manageConfirmations>\n" +
-           "      <dead-letter-address>DLQtest</dead-letter-address>\n" +
-           "      <expiry-address>ExpiryQueueTest</expiry-address>\n" +
-           "      <redelivery-delay>100</redelivery-delay>\n" +
-           "      <max-size-bytes>-100</max-size-bytes>\n" +
-           "      <distribution-policy-class>org.jboss.messaging.core.impl.RoundRobinDistributionPolicy</distribution-policy-class>\n" +
-           "      <message-counter-history-day-limit>1000</message-counter-history-day-limit>\n" +
-           "   </address-settings>";
-
-   private AddressSettingsDeployer addressSettingsDeployer;
-
-   private HierarchicalRepository<AddressSettings> repository;
-
-   protected void setUp() throws Exception
-   {
-      repository = EasyMock.createStrictMock(HierarchicalRepository.class);
-      DeploymentManager deploymentManager = EasyMock.createNiceMock(DeploymentManager.class);
-      addressSettingsDeployer = new AddressSettingsDeployer(deploymentManager, repository);
-   }
-
-   public void testDeploy() throws Exception
-   {
-      final AddressSettings addressSettings = new AddressSettings();
-      addressSettings.setClustered(false);
-      addressSettings.setRedeliveryDelay((long) 100);
-      addressSettings.setMaxSizeBytes(-100);
-      addressSettings.setDistributionPolicyClass("org.jboss.messaging.core.impl.RoundRobinDistributionPolicy");
-      addressSettings.setMessageCounterHistoryDayLimit(1000);
-      addressSettings.setDeadLetterAddress(new SimpleString("DLQtest"));
-      addressSettings.setExpiryAddress(new SimpleString("ExpiryQueueTest"));
-
-      repository.addMatch(EasyMock.eq("queues.*"),(AddressSettings) EasyMock.anyObject());
-      EasyMock.expectLastCall().andAnswer(new IAnswer<Object>()
-      {
-         public Object answer() throws Throwable
-         {
-            AddressSettings q = (AddressSettings) EasyMock.getCurrentArguments()[1];
-            assertFalse(q.isClustered());
-            assertEquals(q.getRedeliveryDelay(), addressSettings.getRedeliveryDelay());
-            assertEquals(q.getMaxSizeBytes(), addressSettings.getMaxSizeBytes());
-            assertEquals(q.getDistributionPolicyClass(), addressSettings.getDistributionPolicyClass());
-            assertEquals(q.getMessageCounterHistoryDayLimit(), addressSettings.getMessageCounterHistoryDayLimit());
-            assertEquals(q.getDeadLetterAddress(), addressSettings.getDeadLetterAddress());
-            assertEquals(q.getExpiryAddress(), addressSettings.getExpiryAddress());
-            return null;
-         }
-      });
-      EasyMock.replay(repository);
-      addressSettingsDeployer.deploy(XMLUtil.stringToElement(conf));
-      EasyMock.verify(repository);
-   }
-
-   public void testUndeploy() throws Exception
-   {
-      repository.removeMatch("queues.*");
-      EasyMock.replay(repository);
-      addressSettingsDeployer.undeploy(XMLUtil.stringToElement(conf));
-      EasyMock.verify(repository);
-   }
-
-
-}

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -85,7 +85,7 @@
 //      expect(configuration.getManagementNotificationAddress()).andReturn(randomSimpleString());
 //      expect(configuration.isMessageCounterEnabled()).andReturn(false);
 //      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
-//      HierarchicalRepository<AddressSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+//      HierarchicalRepository<AddressSettings> addressSettingsRepository = createMock(HierarchicalRepository.class);
 //      QueueFactory queueFactory = createMock(QueueFactory.class);
 //      ResourceManager resourceManager = createMock(ResourceManager.class);
 //      RemotingService remotingService = createMock(RemotingService.class);
@@ -99,7 +99,7 @@
 //             storageManager,
 //             configuration,
 //             securityRepository,
-//             queueSettingsRepository,
+//             addressSettingsRepository,
 //             resourceManager,
 //             remotingService,
 //             messagingServer);
@@ -108,7 +108,7 @@
 //      service.registerServer(postOffice,
 //                             storageManager,
 //                             configuration,
-//                             queueSettingsRepository,
+//                             addressSettingsRepository,
 //                             securityRepository,
 //                             resourceManager,
 //                             remotingService,
@@ -120,7 +120,7 @@
 //             storageManager,
 //             configuration,
 //             securityRepository,
-//             queueSettingsRepository,
+//             addressSettingsRepository,
 //             resourceManager,
 //             remotingService,
 //             messagingServer);
@@ -137,7 +137,7 @@
 //      expect(configuration.getManagementNotificationAddress()).andReturn(randomSimpleString());
 //      expect(configuration.isMessageCounterEnabled()).andReturn(false);
 //      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
-//      HierarchicalRepository<AddressSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+//      HierarchicalRepository<AddressSettings> addressSettingsRepository = createMock(HierarchicalRepository.class);
 //      QueueFactory queueFactory = createMock(QueueFactory.class);
 //      ResourceManager resourceManager = createMock(ResourceManager.class);
 //      RemotingService remotingService = createMock(RemotingService.class);
@@ -152,7 +152,7 @@
 //             storageManager,
 //             configuration,
 //             securityRepository,
-//             queueSettingsRepository,
+//             addressSettingsRepository,
 //             resourceManager,
 //             remotingService,
 //             messagingServer);
@@ -161,7 +161,7 @@
 //      service.registerServer(postOffice,
 //                             storageManager,
 //                             configuration,
-//                             queueSettingsRepository,
+//                             addressSettingsRepository,
 //                             securityRepository,
 //                             resourceManager,
 //                             remotingService,
@@ -173,7 +173,7 @@
 //             storageManager,
 //             configuration,
 //             securityRepository,
-//             queueSettingsRepository,
+//             addressSettingsRepository,
 //             resourceManager,
 //             remotingService,
 //             messagingServer);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -81,7 +81,7 @@
 
    private HierarchicalRepository<Set<Role>> securityRepository;
 
-   private HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private ResourceManager resourceManager;
 
@@ -626,7 +626,7 @@
       configuration = createMock(Configuration.class);
       expect(configuration.isMessageCounterEnabled()).andReturn(false);
       securityRepository = createMock(HierarchicalRepository.class);
-      queueSettingsRepository = createMock(HierarchicalRepository.class);
+      addressSettingsRepository = createMock(HierarchicalRepository.class);
       queueFactory = createMock(QueueFactory.class);
       remotingService = createMock(RemotingService.class);
       resourceManager = createMock(ResourceManager.class);
@@ -641,7 +641,7 @@
       storageManager = null;
       configuration = null;
       securityRepository = null;
-      queueSettingsRepository = null;
+      addressSettingsRepository = null;
       resourceManager = null;
       remotingService = null;
       server = null;
@@ -672,7 +672,7 @@
              storageManager,
              configuration,
              securityRepository,
-             queueSettingsRepository,
+             addressSettingsRepository,
              resourceManager,
              remotingService,
              server,
@@ -685,7 +685,7 @@
              storageManager,
              configuration,
              securityRepository,
-             queueSettingsRepository,
+             addressSettingsRepository,
              resourceManager,
              remotingService,
              server,

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -62,17 +62,17 @@
 //
 //   public void testCancelDurable() throws Exception
 //   {
-//      QueueSettings queueSettings = new QueueSettings();
+//      AddressSettings addressSettings = new AddressSettings();
 //      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
 //      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
-//      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+//      HierarchicalRepository<AddressSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
 //      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
 //      Queue queue = EasyMock.createStrictMock(Queue.class);
 //      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
 //      SimpleString queueName = new SimpleString("queueName");
 //      queue.referenceCancelled();
 //      EasyMock.expect(queue.getName()).andStubReturn(queueName);
-//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(addressSettings);
 //      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
 //      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
 //      EasyMock.expect(queue.isDurable()).andStubReturn(true);
@@ -84,17 +84,17 @@
 //
 //   public void testCancelNonDurable() throws Exception
 //   {
-//      QueueSettings queueSettings = new QueueSettings();
+//      AddressSettings addressSettings = new AddressSettings();
 //      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
 //      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
-//      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+//      HierarchicalRepository<AddressSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
 //      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
 //      Queue queue = EasyMock.createStrictMock(Queue.class);
 //      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
 //      SimpleString queueName = new SimpleString("queueName");
 //      queue.referenceCancelled();
 //      EasyMock.expect(queue.getName()).andStubReturn(queueName);
-//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(addressSettings);
 //      EasyMock.expect(serverMessage.isDurable()).andStubReturn(false);
 //      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
 //      EasyMock.expect(queue.isDurable()).andStubReturn(false);
@@ -105,10 +105,10 @@
 //
 //   public void testCancelToDLQExists() throws Exception
 //   {
-//      QueueSettings queueSettings = new QueueSettings();
-//      queueSettings.setMaxDeliveryAttempts(1);
+//      AddressSettings addressSettings = new AddressSettings();
+//      addressSettings.setMaxDeliveryAttempts(1);
 //      SimpleString dlqName = new SimpleString("testDLQ");
-//      queueSettings.setDeadLetterAddress(dlqName);
+//      addressSettings.setDeadLetterAddress(dlqName);
 //      
 //      Binding dlqBinding = EasyMock.createStrictMock(Binding.class);
 //      //EasyMock.expect(dlqBinding.getAddress()).andReturn(dlqName);
@@ -121,7 +121,7 @@
 //      EasyMock.expect(po.getPagingManager()).andStubReturn(pm);
 //      
 //      
-//      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+//      HierarchicalRepository<AddressSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
 //      
 //      ServerMessage serverMessage = EasyMock.createNiceMock(ServerMessage.class);
 //      
@@ -138,7 +138,7 @@
 //      
 //      EasyMock.expect(queue.getName()).andStubReturn(queueName);
 //      
-//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(addressSettings);
 //      
 //      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
 //      
@@ -180,10 +180,10 @@
 //  
 //   public void testExpire() throws Exception
 //   {
-//      QueueSettings queueSettings = new QueueSettings();
-//      queueSettings.setMaxDeliveryAttempts(1);
+//      AddressSettings addressSettings = new AddressSettings();
+//      addressSettings.setMaxDeliveryAttempts(1);
 //      SimpleString dlqName = new SimpleString("testDLQ");
-//      queueSettings.setDeadLetterAddress(dlqName);
+//      addressSettings.setDeadLetterAddress(dlqName);
 //      StorageManager sm = EasyMock.createNiceMock(StorageManager.class);
 //      
 //      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
@@ -194,7 +194,7 @@
 //      pm.messageDone(EasyMock.isA(ServerMessage.class));
 //      EasyMock.expectLastCall().anyTimes();
 //
-//      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+//      HierarchicalRepository<AddressSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
 //      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
 //      Queue queue = EasyMock.createStrictMock(Queue.class);
 //      
@@ -205,7 +205,7 @@
 //      SimpleString queueName = new SimpleString("queueName");
 //      queue.referenceAcknowledged(messageReference);
 //      EasyMock.expect(queue.getName()).andStubReturn(queueName);
-//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(addressSettings);
 //      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
 //      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
 //      EasyMock.expect(queue.isDurable()).andStubReturn(true);
@@ -219,11 +219,11 @@
 //
 //   public void testExpireToQExists() throws Exception
 //   {
-//      QueueSettings queueSettings = new QueueSettings();
-//      queueSettings.setMaxDeliveryAttempts(1);
+//      AddressSettings addressSettings = new AddressSettings();
+//      addressSettings.setMaxDeliveryAttempts(1);
 //      SimpleString expQName = new SimpleString("testexpQ");
 //      Binding expQBinding = EasyMock.createStrictMock(Binding.class);
-//      queueSettings.setExpiryAddress(expQName);
+//      addressSettings.setExpiryAddress(expQName);
 //      StorageManager sm = EasyMock.createNiceMock(StorageManager.class);
 //
 //      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
@@ -234,7 +234,7 @@
 //      pm.messageDone(EasyMock.isA(ServerMessage.class));
 //      EasyMock.expectLastCall().anyTimes();
 //      
-//      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+//      HierarchicalRepository<AddressSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
 //      
 //      ServerMessage serverMessage = EasyMock.createNiceMock(ServerMessage.class);
 //      Queue queue = EasyMock.createStrictMock(Queue.class);
@@ -246,7 +246,7 @@
 //      SimpleString queueName = new SimpleString("queueName");
 //      queue.referenceAcknowledged(messageReference);
 //      EasyMock.expect(queue.getName()).andStubReturn(queueName);
-//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+//      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(addressSettings);
 //      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
 //      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
 //      EasyMock.expect(queue.isDurable()).andStubReturn(true);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueFactoryImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueFactoryImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueFactoryImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -42,19 +42,19 @@
    public void testCreateQueue()
    {
       ScheduledExecutorService scheduledExecutor = EasyMock.createStrictMock(ScheduledExecutorService.class);
-      HierarchicalRepository<AddressSettings> queueSettingsRepository = EasyMock.createStrictMock(HierarchicalRepository.class);
+      HierarchicalRepository<AddressSettings> addressSettingsRepository = EasyMock.createStrictMock(HierarchicalRepository.class);
       StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
       Filter filter = EasyMock.createStrictMock(Filter.class);
       AddressSettings addressSettings = new AddressSettings();
       addressSettings.setClustered(true);
       addressSettings.setMaxSizeBytes(9999);
       addressSettings.setDistributionPolicyClass("org.jboss.messaging.core.server.impl.RoundRobinDistributor");
-      EasyMock.expect(queueSettingsRepository.getMatch("testQ")).andReturn(addressSettings);
-      EasyMock.replay(scheduledExecutor, queueSettingsRepository);
-      QueueFactoryImpl queueFactory = new QueueFactoryImpl(scheduledExecutor, queueSettingsRepository, sm);
+      EasyMock.expect(addressSettingsRepository.getMatch("testQ")).andReturn(addressSettings);
+      EasyMock.replay(scheduledExecutor, addressSettingsRepository);
+      QueueFactoryImpl queueFactory = new QueueFactoryImpl(scheduledExecutor, addressSettingsRepository, sm);
       SimpleString qName = new SimpleString("testQ");
       Queue queue = queueFactory.createQueue(123, qName, qName, filter, true, false);
-      EasyMock.verify(scheduledExecutor, queueSettingsRepository);
+      EasyMock.verify(scheduledExecutor, addressSettingsRepository);
       assertEquals(queue.getDistributionPolicy().getClass(), RoundRobinDistributor.class);
       assertEquals(queue.getName(), qName);
       assertEquals(queue.getPersistenceID(), 123);
@@ -66,18 +66,18 @@
    public void testCreateQueue2()
    {
       ScheduledExecutorService scheduledExecutor = EasyMock.createStrictMock(ScheduledExecutorService.class);
-      HierarchicalRepository<AddressSettings> queueSettingsRepository = EasyMock.createStrictMock(HierarchicalRepository.class);
+      HierarchicalRepository<AddressSettings> addressSettingsRepository = EasyMock.createStrictMock(HierarchicalRepository.class);
       StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
       AddressSettings addressSettings = new AddressSettings();
       addressSettings.setClustered(false);
       addressSettings.setMaxSizeBytes(8888);
       addressSettings.setDistributionPolicyClass(null);
-      EasyMock.expect(queueSettingsRepository.getMatch("testQ2")).andReturn(addressSettings);
-      EasyMock.replay(scheduledExecutor, queueSettingsRepository);
-      QueueFactoryImpl queueFactory = new QueueFactoryImpl(scheduledExecutor, queueSettingsRepository, sm);
+      EasyMock.expect(addressSettingsRepository.getMatch("testQ2")).andReturn(addressSettings);
+      EasyMock.replay(scheduledExecutor, addressSettingsRepository);
+      QueueFactoryImpl queueFactory = new QueueFactoryImpl(scheduledExecutor, addressSettingsRepository, sm);
       SimpleString qName = new SimpleString("testQ2");
       Queue queue = queueFactory.createQueue(456, qName, qName, null, false, false);
-      EasyMock.verify(scheduledExecutor, queueSettingsRepository);
+      EasyMock.verify(scheduledExecutor, addressSettingsRepository);
       assertEquals(queue.getDistributionPolicy().getClass(), RoundRobinDistributor.class);
       assertEquals(queue.getName(), qName);
       assertEquals(queue.getPersistenceID(), 456);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -1221,8 +1221,8 @@
 //      bindings.addBinding(expiryBinding);
 //      EasyMock.expect(postOffice.getBindingsForAddress(expiryQueue)).andReturn(bindings);
 //      EasyMock.expect(postOffice.route(EasyMock.isA(ServerMessage.class))).andReturn(new ArrayList<MessageReference>());
-//      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-//      QueueSettings queueSettings = new QueueSettings() 
+//      HierarchicalRepository<QueueSettings> addressSettingsRepository = createMock(HierarchicalRepository.class);
+//      QueueSettings QueueSettings = new QueueSettings() 
 //      {
 //         @Override
 //         public SimpleString getExpiryAddress()
@@ -1230,9 +1230,9 @@
 //            return expiryQueue;
 //         } 
 //      };
-//      EasyMock.expect(queueSettingsRepository.getMatch(queue1.toString())).andStubReturn(queueSettings);
+//      EasyMock.expect(addressSettingsRepository.getMatch(queue1.toString())).andStubReturn(QueueSettings);
 //
-//      EasyMock.replay(storageManager, postOffice, queueSettingsRepository, expiryBinding, pm);
+//      EasyMock.replay(storageManager, postOffice, addressSettingsRepository, expiryBinding, pm);
 //
 //      assertEquals(0, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
@@ -1242,12 +1242,12 @@
 //      assertEquals(1, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
 //
-//      queue.expireMessage(messageID, storageManager , postOffice, queueSettingsRepository);
+//      queue.expireMessage(messageID, storageManager , postOffice, addressSettingsRepository);
 //      
 //      assertEquals(0, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
 // 
-//      EasyMock.verify(storageManager, postOffice, queueSettingsRepository, expiryBinding, pm);
+//      EasyMock.verify(storageManager, postOffice, addressSettingsRepository, expiryBinding, pm);
 //   }
 //
 //   public void testSendMessageToDLQ() throws Exception
@@ -1277,8 +1277,8 @@
 //      bindings.addBinding(dlqBinding);
 //      expect(postOffice.getBindingsForAddress(dlqName)).andReturn(bindings);
 //      expect(postOffice.route(isA(ServerMessage.class))).andReturn(new ArrayList<MessageReference>());
-//      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-//      QueueSettings queueSettings = new QueueSettings() 
+//      HierarchicalRepository<QueueSettings> addressSettingsRepository = createMock(HierarchicalRepository.class);
+//      QueueSettings QueueSettings = new QueueSettings() 
 //      {
 //         @Override
 //         public SimpleString getDeadLetterAddress()
@@ -1286,9 +1286,9 @@
 //            return dlqName;
 //         } 
 //      };
-//      EasyMock.expect(queueSettingsRepository.getMatch(queue1.toString())).andStubReturn(queueSettings);
+//      EasyMock.expect(addressSettingsRepository.getMatch(queue1.toString())).andStubReturn(QueueSettings);
 //
-//      EasyMock.replay(storageManager, postOffice, queueSettingsRepository, dlqBinding, pm);
+//      EasyMock.replay(storageManager, postOffice, addressSettingsRepository, dlqBinding, pm);
 //
 //      assertEquals(0, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
@@ -1298,12 +1298,12 @@
 //      assertEquals(1, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
 //
-//      queue.sendMessageToDeadLetterAddress(messageID, storageManager , postOffice, queueSettingsRepository);
+//      queue.sendMessageToDeadLetterAddress(messageID, storageManager , postOffice, addressSettingsRepository);
 //      
 //      assertEquals(0, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
 //
-//      EasyMock.verify(storageManager, postOffice, queueSettingsRepository, dlqBinding, pm);
+//      EasyMock.verify(storageManager, postOffice, addressSettingsRepository, dlqBinding, pm);
 //   }
    
 //   public void testMoveMessage() throws Exception
@@ -1336,9 +1336,9 @@
 //      EasyMock.expect(toBinding.getAddress()).andStubReturn(toQueueName);
 //      EasyMock.expect(toBinding.getBindable()).andStubReturn(toQueue);
 //      postOffice.route(EasyMock.isA(ServerMessage.class), EasyMock.isA(Transaction.class));
-//      HierarchicalRepository<QueueSettings> queueSettingsRepository = EasyMock.createMock(HierarchicalRepository.class);
+//      HierarchicalRepository<QueueSettings> addressSettingsRepository = EasyMock.createMock(HierarchicalRepository.class);
 //
-//      EasyMock.replay(storageManager, postOffice, queueSettingsRepository, toBinding, pm);
+//      EasyMock.replay(storageManager, postOffice, addressSettingsRepository, toBinding, pm);
 //
 //      assertEquals(0, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
@@ -1353,7 +1353,7 @@
 //      assertEquals(0, queue.getMessageCount());
 //      assertEquals(0, queue.getDeliveringCount());
 // 
-//      EasyMock.verify(storageManager, postOffice, queueSettingsRepository, toBinding, pm);
+//      EasyMock.verify(storageManager, postOffice, addressSettingsRepository, toBinding, pm);
 //   }
 
    /**

Copied: trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/AddressSettingsTest.java (from rev 5836, trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java)
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/AddressSettingsTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/AddressSettingsTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -0,0 +1,148 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */ 
+
+package org.jboss.messaging.tests.unit.core.settings.impl;
+
+import junit.framework.TestCase;
+
+import org.jboss.messaging.core.settings.impl.AddressSettings;
+import org.jboss.messaging.util.SimpleString;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class AddressSettingsTest extends TestCase
+{
+   public void testDefaults()
+   {
+      AddressSettings addressSettings = new AddressSettings();
+      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
+      assertEquals(addressSettings.getDistributionPolicyClass(), null);
+      assertEquals(addressSettings.getDeadLetterAddress(), null);
+      assertEquals(addressSettings.isClustered(), Boolean.valueOf(false));
+      assertEquals(addressSettings.getExpiryAddress(), null);
+      assertEquals(addressSettings.getMaxDeliveryAttempts(), AddressSettings.DEFAULT_MAX_DELIVERY_ATTEMPTS);
+      assertEquals(addressSettings.getMaxSizeBytes(), AddressSettings.DEFAULT_MAX_SIZE_BYTES);
+      assertEquals(addressSettings.getPageSizeBytes(), null);
+      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), AddressSettings.DEFAULT_MESSAGE_COUNTER_HISTORY_DAY_LIMIT);
+      assertEquals(addressSettings.getRedeliveryDelay(), AddressSettings.DEFAULT_REDELIVER_DELAY);
+
+   }
+
+   public void testSingleMerge()
+   {
+      AddressSettings addressSettings = new AddressSettings();
+      AddressSettings addressSettingsToMerge = new AddressSettings();
+      addressSettingsToMerge.setClustered(true);
+      SimpleString DLQ = new SimpleString("testDLQ");
+      SimpleString exp = new SimpleString("testExpiryQueue");
+      addressSettingsToMerge.setDeadLetterAddress(DLQ);
+      addressSettingsToMerge.setExpiryAddress(exp);
+      addressSettingsToMerge.setMaxDeliveryAttempts(1000);
+      addressSettingsToMerge.setDropMessagesWhenFull(true);
+      addressSettingsToMerge.setMaxSizeBytes(1001);
+      addressSettingsToMerge.setMessageCounterHistoryDayLimit(1002);
+      addressSettingsToMerge.setRedeliveryDelay((long)1003);
+      addressSettingsToMerge.setPageSizeBytes(1004);
+      addressSettings.merge(addressSettingsToMerge);
+      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
+      assertEquals(addressSettings.getDistributionPolicyClass(), null);
+      assertEquals(addressSettings.isClustered(), Boolean.valueOf(true));
+      assertEquals(addressSettings.getDeadLetterAddress(), DLQ);
+      assertEquals(addressSettings.getExpiryAddress(), exp);
+      assertEquals(addressSettings.getMaxDeliveryAttempts(), Integer.valueOf(1000));
+      assertEquals(addressSettings.getMaxSizeBytes(), Integer.valueOf(1001));
+      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), Integer.valueOf(1002));
+      assertEquals(addressSettings.getRedeliveryDelay(), Long.valueOf(1003));
+      assertEquals(addressSettings.getPageSizeBytes(), (Integer)1004);
+      assertTrue(addressSettings.isDropMessagesWhenFull());
+   }
+
+   public void testMultipleMerge()
+   {
+      AddressSettings addressSettings = new AddressSettings();
+      AddressSettings addressSettingsToMerge = new AddressSettings();
+      addressSettingsToMerge.setClustered(true);
+      SimpleString DLQ = new SimpleString("testDLQ");
+      SimpleString exp = new SimpleString("testExpiryQueue");
+      addressSettingsToMerge.setDeadLetterAddress(DLQ);
+      addressSettingsToMerge.setExpiryAddress(exp);
+      addressSettingsToMerge.setMaxDeliveryAttempts(1000);
+      addressSettingsToMerge.setMaxSizeBytes(1001);
+      addressSettingsToMerge.setMessageCounterHistoryDayLimit(1002);
+      addressSettings.merge(addressSettingsToMerge);
+
+      AddressSettings addressSettingsToMerge2 = new AddressSettings();
+      addressSettingsToMerge2.setClustered(true);
+      SimpleString exp2 = new SimpleString("testExpiryQueue2");
+      addressSettingsToMerge2.setExpiryAddress(exp2);
+      addressSettingsToMerge2.setMaxSizeBytes(2001);
+      addressSettingsToMerge2.setRedeliveryDelay((long)2003);
+      addressSettings.merge(addressSettingsToMerge2);
+
+      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
+      assertEquals(addressSettings.getDistributionPolicyClass(), null);
+      assertEquals(addressSettings.isClustered(), Boolean.valueOf(true));
+      assertEquals(addressSettings.getDeadLetterAddress(), DLQ);
+      assertEquals(addressSettings.getExpiryAddress(), exp);
+      assertEquals(addressSettings.getMaxDeliveryAttempts(), Integer.valueOf(1000));
+      assertEquals(addressSettings.getMaxSizeBytes(), Integer.valueOf(1001));
+      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), Integer.valueOf(1002));
+      assertEquals(addressSettings.getRedeliveryDelay(), Long.valueOf(2003));
+   }
+
+   public void testMultipleMergeAll()
+   {
+      AddressSettings addressSettings = new AddressSettings();
+      AddressSettings addressSettingsToMerge = new AddressSettings();
+      addressSettingsToMerge.setClustered(true);
+      SimpleString DLQ = new SimpleString("testDLQ");
+      SimpleString exp = new SimpleString("testExpiryQueue");
+      addressSettingsToMerge.setDeadLetterAddress(DLQ);
+      addressSettingsToMerge.setExpiryAddress(exp);
+      addressSettingsToMerge.setMaxSizeBytes(1001);
+      addressSettingsToMerge.setRedeliveryDelay((long)1003);
+      addressSettings.merge(addressSettingsToMerge);
+
+      AddressSettings addressSettingsToMerge2 = new AddressSettings();
+      addressSettingsToMerge2.setClustered(false);
+      SimpleString exp2 = new SimpleString("testExpiryQueue2");
+      SimpleString DLQ2 = new SimpleString("testDlq2");
+      addressSettingsToMerge2.setExpiryAddress(exp2);
+      addressSettingsToMerge2.setDeadLetterAddress(DLQ2);
+      addressSettingsToMerge2.setMaxDeliveryAttempts(2000);
+      addressSettingsToMerge2.setMaxSizeBytes(2001);
+      addressSettingsToMerge2.setMessageCounterHistoryDayLimit(2002);
+      addressSettingsToMerge2.setRedeliveryDelay((long)2003);
+      addressSettings.merge(addressSettingsToMerge2);
+
+      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
+      assertEquals(addressSettings.getDistributionPolicyClass(), null);
+      assertEquals(addressSettings.isClustered(), Boolean.valueOf(true));
+      assertEquals(addressSettings.getDeadLetterAddress(), DLQ);
+      assertEquals(addressSettings.getExpiryAddress(), exp);
+      assertEquals(addressSettings.getMaxDeliveryAttempts(), Integer.valueOf(2000));
+      assertEquals(addressSettings.getMaxSizeBytes(), Integer.valueOf(1001));
+      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), Integer.valueOf(2002));
+      assertEquals(addressSettings.getRedeliveryDelay(), Long.valueOf(1003));
+   }
+}

Deleted: trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -1,148 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */ 
-
-package org.jboss.messaging.tests.unit.core.settings.impl;
-
-import junit.framework.TestCase;
-
-import org.jboss.messaging.core.settings.impl.AddressSettings;
-import org.jboss.messaging.util.SimpleString;
-
-/**
- * @author <a href="ataylor at redhat.com">Andy Taylor</a>
- */
-public class QueueSettingsTest extends TestCase
-{
-   public void testDefaults()
-   {
-      AddressSettings addressSettings = new AddressSettings();
-      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
-      assertEquals(addressSettings.getDistributionPolicyClass(), null);
-      assertEquals(addressSettings.getDeadLetterAddress(), null);
-      assertEquals(addressSettings.isClustered(), Boolean.valueOf(false));
-      assertEquals(addressSettings.getExpiryAddress(), null);
-      assertEquals(addressSettings.getMaxDeliveryAttempts(), AddressSettings.DEFAULT_MAX_DELIVERY_ATTEMPTS);
-      assertEquals(addressSettings.getMaxSizeBytes(), AddressSettings.DEFAULT_MAX_SIZE_BYTES);
-      assertEquals(addressSettings.getPageSizeBytes(), null);
-      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), AddressSettings.DEFAULT_MESSAGE_COUNTER_HISTORY_DAY_LIMIT);
-      assertEquals(addressSettings.getRedeliveryDelay(), AddressSettings.DEFAULT_REDELIVER_DELAY);
-
-   }
-
-   public void testSingleMerge()
-   {
-      AddressSettings addressSettings = new AddressSettings();
-      AddressSettings addressSettingsToMerge = new AddressSettings();
-      addressSettingsToMerge.setClustered(true);
-      SimpleString DLQ = new SimpleString("testDLQ");
-      SimpleString exp = new SimpleString("testExpiryQueue");
-      addressSettingsToMerge.setDeadLetterAddress(DLQ);
-      addressSettingsToMerge.setExpiryAddress(exp);
-      addressSettingsToMerge.setMaxDeliveryAttempts(1000);
-      addressSettingsToMerge.setDropMessagesWhenFull(true);
-      addressSettingsToMerge.setMaxSizeBytes(1001);
-      addressSettingsToMerge.setMessageCounterHistoryDayLimit(1002);
-      addressSettingsToMerge.setRedeliveryDelay((long)1003);
-      addressSettingsToMerge.setPageSizeBytes(1004);
-      addressSettings.merge(addressSettingsToMerge);
-      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
-      assertEquals(addressSettings.getDistributionPolicyClass(), null);
-      assertEquals(addressSettings.isClustered(), Boolean.valueOf(true));
-      assertEquals(addressSettings.getDeadLetterAddress(), DLQ);
-      assertEquals(addressSettings.getExpiryAddress(), exp);
-      assertEquals(addressSettings.getMaxDeliveryAttempts(), Integer.valueOf(1000));
-      assertEquals(addressSettings.getMaxSizeBytes(), Integer.valueOf(1001));
-      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), Integer.valueOf(1002));
-      assertEquals(addressSettings.getRedeliveryDelay(), Long.valueOf(1003));
-      assertEquals(addressSettings.getPageSizeBytes(), (Integer)1004);
-      assertTrue(addressSettings.isDropMessagesWhenFull());
-   }
-
-   public void testMultipleMerge()
-   {
-      AddressSettings addressSettings = new AddressSettings();
-      AddressSettings addressSettingsToMerge = new AddressSettings();
-      addressSettingsToMerge.setClustered(true);
-      SimpleString DLQ = new SimpleString("testDLQ");
-      SimpleString exp = new SimpleString("testExpiryQueue");
-      addressSettingsToMerge.setDeadLetterAddress(DLQ);
-      addressSettingsToMerge.setExpiryAddress(exp);
-      addressSettingsToMerge.setMaxDeliveryAttempts(1000);
-      addressSettingsToMerge.setMaxSizeBytes(1001);
-      addressSettingsToMerge.setMessageCounterHistoryDayLimit(1002);
-      addressSettings.merge(addressSettingsToMerge);
-
-      AddressSettings addressSettingsToMerge2 = new AddressSettings();
-      addressSettingsToMerge2.setClustered(true);
-      SimpleString exp2 = new SimpleString("testExpiryQueue2");
-      addressSettingsToMerge2.setExpiryAddress(exp2);
-      addressSettingsToMerge2.setMaxSizeBytes(2001);
-      addressSettingsToMerge2.setRedeliveryDelay((long)2003);
-      addressSettings.merge(addressSettingsToMerge2);
-
-      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
-      assertEquals(addressSettings.getDistributionPolicyClass(), null);
-      assertEquals(addressSettings.isClustered(), Boolean.valueOf(true));
-      assertEquals(addressSettings.getDeadLetterAddress(), DLQ);
-      assertEquals(addressSettings.getExpiryAddress(), exp);
-      assertEquals(addressSettings.getMaxDeliveryAttempts(), Integer.valueOf(1000));
-      assertEquals(addressSettings.getMaxSizeBytes(), Integer.valueOf(1001));
-      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), Integer.valueOf(1002));
-      assertEquals(addressSettings.getRedeliveryDelay(), Long.valueOf(2003));
-   }
-
-   public void testMultipleMergeAll()
-   {
-      AddressSettings addressSettings = new AddressSettings();
-      AddressSettings addressSettingsToMerge = new AddressSettings();
-      addressSettingsToMerge.setClustered(true);
-      SimpleString DLQ = new SimpleString("testDLQ");
-      SimpleString exp = new SimpleString("testExpiryQueue");
-      addressSettingsToMerge.setDeadLetterAddress(DLQ);
-      addressSettingsToMerge.setExpiryAddress(exp);
-      addressSettingsToMerge.setMaxSizeBytes(1001);
-      addressSettingsToMerge.setRedeliveryDelay((long)1003);
-      addressSettings.merge(addressSettingsToMerge);
-
-      AddressSettings addressSettingsToMerge2 = new AddressSettings();
-      addressSettingsToMerge2.setClustered(false);
-      SimpleString exp2 = new SimpleString("testExpiryQueue2");
-      SimpleString DLQ2 = new SimpleString("testDlq2");
-      addressSettingsToMerge2.setExpiryAddress(exp2);
-      addressSettingsToMerge2.setDeadLetterAddress(DLQ2);
-      addressSettingsToMerge2.setMaxDeliveryAttempts(2000);
-      addressSettingsToMerge2.setMaxSizeBytes(2001);
-      addressSettingsToMerge2.setMessageCounterHistoryDayLimit(2002);
-      addressSettingsToMerge2.setRedeliveryDelay((long)2003);
-      addressSettings.merge(addressSettingsToMerge2);
-
-      assertEquals(addressSettings.getDistributionPolicy().getClass(), AddressSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
-      assertEquals(addressSettings.getDistributionPolicyClass(), null);
-      assertEquals(addressSettings.isClustered(), Boolean.valueOf(true));
-      assertEquals(addressSettings.getDeadLetterAddress(), DLQ);
-      assertEquals(addressSettings.getExpiryAddress(), exp);
-      assertEquals(addressSettings.getMaxDeliveryAttempts(), Integer.valueOf(2000));
-      assertEquals(addressSettings.getMaxSizeBytes(), Integer.valueOf(1001));
-      assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), Integer.valueOf(2002));
-      assertEquals(addressSettings.getRedeliveryDelay(), Long.valueOf(1003));
-   }
-}

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/transaction/impl/TransactionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/transaction/impl/TransactionImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/transaction/impl/TransactionImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -50,14 +50,14 @@
 {
 	private final ScheduledExecutorService scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
 
-   private final HierarchicalRepository<AddressSettings> queueSettings =
+   private final HierarchicalRepository<AddressSettings> addressSettings =
    	new HierarchicalObjectRepository<AddressSettings>();
 	
    protected void setUp() throws Exception
    {
    	super.setUp();
    	
-   	queueSettings.setDefault(new AddressSettings());
+   	addressSettings.setDefault(new AddressSettings());
    }
    
    public void testFoo()

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -103,7 +103,7 @@
       expect(coreQueue.isDurable()).andReturn(true);
       PostOffice postOffice = createMock(PostOffice.class);
       StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<AddressSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      HierarchicalRepository<AddressSettings> addressSettingsRepository = createMock(HierarchicalRepository.class);
 
       ManagementService managementService = createMock(ManagementService.class);
       MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
@@ -113,12 +113,12 @@
       managementService.registerInJMX(eq(objectName), isA(StandardMBean.class));
       managementService.registerInRegistry(eq(objectName), isA(JMSQueueControl.class));
       
-      replay(managementService, messageCounterManager, coreQueue, postOffice, storageManager, queueSettingsRepository);
+      replay(managementService, messageCounterManager, coreQueue, postOffice, storageManager, addressSettingsRepository);
 
       JMSManagementService service = new JMSManagementServiceImpl(managementService);
-      service.registerQueue(queue, coreQueue, jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      service.registerQueue(queue, coreQueue, jndiBinding, postOffice, storageManager, addressSettingsRepository);
 
-      verify(managementService, messageCounterManager, coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verify(managementService, messageCounterManager, coreQueue, postOffice, storageManager, addressSettingsRepository);
    }
 
    public void testRegisterTopic() throws Exception
@@ -130,7 +130,7 @@
       JBossTopic topic = new JBossTopic(name);
       PostOffice postOffice = createMock(PostOffice.class);
       StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<AddressSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      HierarchicalRepository<AddressSettings> addressSettingsRepository = createMock(HierarchicalRepository.class);
 
       ManagementService managementService = createMock(ManagementService.class);
       managementService.registerInJMX(eq(objectName), isA(StandardMBean.class));
@@ -139,7 +139,7 @@
       replay(managementService, postOffice, storageManager);
 
       JMSManagementService service = new JMSManagementServiceImpl(managementService);
-      service.registerTopic(topic, jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      service.registerTopic(topic, jndiBinding, postOffice, storageManager, addressSettingsRepository);
       
       verify(managementService, postOffice, storageManager);
    }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java	2009-02-12 09:10:45 UTC (rev 5852)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java	2009-02-12 09:14:37 UTC (rev 5853)
@@ -79,7 +79,7 @@
 
    private StorageManager storageManager;
 
-   private HierarchicalRepository<AddressSettings> queueSettingsRepository;
+   private HierarchicalRepository<AddressSettings> addressSettingsRepository;
 
    private MessageCounter counter;
 
@@ -223,7 +223,7 @@
             return new SimpleString(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + deadLetterAddress);
          }
       };
-      expect(queueSettingsRepository.getMatch(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + name)).andReturn(settings);
+      expect(addressSettingsRepository.getMatch(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + name)).andReturn(settings);
 
       replayMockedAttributes();
 
@@ -245,7 +245,7 @@
             return new SimpleString(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + expiryQueue);
          }
       };
-      expect(queueSettingsRepository.getMatch(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + name)).andReturn(settings);
+      expect(addressSettingsRepository.getMatch(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + name)).andReturn(settings);
 
       replayMockedAttributes();
 
@@ -539,7 +539,7 @@
       coreQueue = createMock(Queue.class);
       postOffice = createMock(PostOffice.class);
       storageManager = createMock(StorageManager.class);
-      queueSettingsRepository = createMock(HierarchicalRepository.class);
+      addressSettingsRepository = createMock(HierarchicalRepository.class);
       counter = new MessageCounter(name, null, coreQueue, false, true, 10);
    }
 
@@ -552,7 +552,7 @@
       coreQueue = null;
       postOffice = null;
       storageManager = null;
-      queueSettingsRepository = null;
+      addressSettingsRepository = null;
       counter = null;
 
       super.tearDown();
@@ -566,18 +566,18 @@
                                  coreQueue,
                                  jndiBinding,
                                  postOffice,                               
-                                 queueSettingsRepository,
+                                 addressSettingsRepository,
                                  counter);
    }
 
    private void replayMockedAttributes()
    {
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      replay(coreQueue, postOffice, storageManager, addressSettingsRepository);
    }
 
    private void verifyMockedAttributes()
    {
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verify(coreQueue, postOffice, storageManager, addressSettingsRepository);
    }
 
    // Inner classes -------------------------------------------------




More information about the jboss-cvs-commits mailing list