[jboss-cvs] JBoss Messaging SVN: r4520 - in trunk: src/config and 20 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jun 19 09:27:18 EDT 2008


Author: timfox
Date: 2008-06-19 09:27:17 -0400 (Thu, 19 Jun 2008)
New Revision: 4520

Modified:
   trunk/examples/messaging/src/org/jboss/messaging/example/SimpleExample.java
   trunk/src/config/jbm-beans.xml
   trunk/src/config/jbm-standalone-beans.xml
   trunk/src/main/org/jboss/messaging/core/client/ClientConnection.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientBrowserImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionInternal.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.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/management/MessagingServerManagement.java
   trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java
   trunk/src/main/org/jboss/messaging/core/security/impl/SecurityStoreImpl.java
   trunk/src/main/org/jboss/messaging/core/server/ConnectionManager.java
   trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
   trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ConnectionManagerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerProducerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
   trunk/src/main/org/jboss/messaging/util/ByteBufferWrapper.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.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/core/remoting/impl/ClientCrashTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/impl/PacketFilterTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/impl/JMSServerManagerimplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientBrowserImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConsumerImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientProducerImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/ConnectionManagerTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/INVMServerTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaAcceptorTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/network/ClientNetworkFailureTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java
Log:
Invoking the law of demeter


Modified: trunk/examples/messaging/src/org/jboss/messaging/example/SimpleExample.java
===================================================================
--- trunk/examples/messaging/src/org/jboss/messaging/example/SimpleExample.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/examples/messaging/src/org/jboss/messaging/example/SimpleExample.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -69,11 +69,6 @@
          messagingService = MessagingServiceImpl.newNullStorageMessagingServer(configuration);
          //start the server
          messagingService.start();
-         //add a new binding
-         
-         SimpleString atestq = new SimpleString("atestq");
-         
-         messagingService.getServer().getPostOffice().addBinding(atestq, atestq, null, false, false);
 
          //then we create a client as normal
          Location location = new LocationImpl(TransportType.TCP, "localhost", 5400);
@@ -82,6 +77,8 @@
 
          clientConnection = connectionFactory.createConnection();
          ClientSession clientSession = clientConnection.createClientSession(false, true, true, 100, true, false);
+         SimpleString atestq = new SimpleString("atestq");
+         clientSession.createQueue(atestq, atestq, null, false, true);
          ClientProducer clientProducer = clientSession.createProducer(atestq);
          ClientMessage message = new ClientMessageImpl(JBossTextMessage.TYPE, false, 0,
                  System.currentTimeMillis(), (byte) 1);

Modified: trunk/src/config/jbm-beans.xml
===================================================================
--- trunk/src/config/jbm-beans.xml	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/config/jbm-beans.xml	2008-06-19 13:27:17 UTC (rev 4520)
@@ -23,6 +23,7 @@
       </property>
    </bean>-->
 
+<!--
    <bean name="MessagingServerManagement"
          class="org.jboss.messaging.core.management.impl.MessagingServerManagementImpl">
       <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.messaging:service=MessagingServerManagement",exposedInterface=org.jboss.messaging.core.management.MessagingServerManagement.class)</annotation>
@@ -30,6 +31,7 @@
          <inject bean="MessagingServer"/>
       </property>
    </bean>
+-->   
 
    <bean name="MessagingServer" class="org.jboss.messaging.core.server.impl.MessagingServerImpl">
       <property name="storageManager">
@@ -64,9 +66,11 @@
 
    <bean name="JMSServerManager" class="org.jboss.messaging.jms.server.impl.JMSServerManagerImpl">
       <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.messaging:service=JMSServerManager",exposedInterface=org.jboss.messaging.jms.server.JMSServerManager.class)</annotation>
-      <property name="messagingServerManagement">
-         <inject bean="MessagingServerManagement"/>
-      </property>
+      <constructor>
+         <parameter>
+            <inject bean="MessagingServer" property="serverManagement"/>
+         </parameter>
+      </constructor>
    </bean>
 
    <bean name="JMSServerDeployer" class="org.jboss.messaging.jms.server.impl.JMSServerDeployer">

Modified: trunk/src/config/jbm-standalone-beans.xml
===================================================================
--- trunk/src/config/jbm-standalone-beans.xml	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/config/jbm-standalone-beans.xml	2008-06-19 13:27:17 UTC (rev 4520)
@@ -26,7 +26,7 @@
 
    <bean name="JBMSecurityManager" class="org.jboss.messaging.core.security.impl.JBMSecurityManagerImpl">
       <constructor>
-         <parameter>false</parameter>
+         <parameter>false</parameter>  
       </constructor>
    </bean>
 
@@ -41,6 +41,7 @@
       </property>
    </bean>
 
+<!--
    <bean name="MessagingServerManagement"
          class="org.jboss.messaging.core.management.impl.MessagingServerManagementImpl">
       <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.messaging:service=MessagingServerManagement",exposedInterface=org.jboss.messaging.core.management.MessagingServerManagement.class)</annotation>
@@ -48,6 +49,7 @@
          <inject bean="MessagingServer"/>
       </property>
    </bean>
+-->   
 
    <bean name="MessagingServer" class="org.jboss.messaging.core.server.impl.MessagingServerImpl">
       <depends>QueueSettingsDeployer</depends>
@@ -83,9 +85,11 @@
    
    <bean name="JMSServerManager" class="org.jboss.messaging.jms.server.impl.JMSServerManagerImpl">
       <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.messaging:service=JMSServerManager",exposedInterface=org.jboss.messaging.jms.server.JMSServerManager.class)</annotation>
-      <property name="messagingServerManagement">
-         <inject bean="MessagingServerManagement"/>
-      </property>
+      <constructor>
+         <parameter>
+            <inject bean="MessagingServer" property="serverManagement"/>
+         </parameter>
+      </constructor>
    </bean>
 
    <bean name="JMSServerDeployer" class="org.jboss.messaging.jms.server.impl.JMSServerDeployer">

Modified: trunk/src/main/org/jboss/messaging/core/client/ClientConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/ClientConnection.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/ClientConnection.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -51,7 +51,5 @@
 
    Version getServerVersion();
       
-   ClientConnectionFactory getConnectionFactory();
-
    void cleanUp();
 }

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientBrowserImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientBrowserImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientBrowserImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -51,19 +51,25 @@
 	
 	private final RemotingConnection remotingConnection;
 	
+	private final long sessionTargetID;
+	
 	private volatile boolean closed;
 	
    // Static ---------------------------------------------------------------------------------------
 
    // Constructors ---------------------------------------------------------------------------------
 
-   public ClientBrowserImpl(final ClientSessionInternal session, final long serverTargetID)
+   public ClientBrowserImpl(final ClientSessionInternal session, final long serverTargetID,
+                            final RemotingConnection remotingConnection,
+                            final long sessionTargetID)
    {
-      this.remotingConnection = session.getConnection().getRemotingConnection();
+      this.remotingConnection = remotingConnection;
       
       this.serverTargetID = serverTargetID;
       
       this.session = session;
+      
+      this.sessionTargetID = sessionTargetID;
    }
 
    // ClientBrowser implementation -----------------------------------------------------------------
@@ -77,7 +83,7 @@
       
       try
       {
-         remotingConnection.sendBlocking(serverTargetID, session.getServerTargetID(), new PacketImpl(PacketImpl.CLOSE));
+         remotingConnection.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.CLOSE));
       }
       finally
       {
@@ -103,7 +109,7 @@
    {
       checkClosed();
       
-      remotingConnection.sendBlocking(serverTargetID, session.getServerTargetID(), new PacketImpl(PacketImpl.SESS_BROWSER_RESET));
+      remotingConnection.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_RESET));
    }
 
    public boolean hasNextMessage() throws MessagingException
@@ -111,7 +117,7 @@
       checkClosed();
       
       SessionBrowserHasNextMessageResponseMessage response =
-         (SessionBrowserHasNextMessageResponseMessage)remotingConnection.sendBlocking(serverTargetID, session.getServerTargetID(), new PacketImpl(PacketImpl.SESS_BROWSER_HASNEXTMESSAGE));
+         (SessionBrowserHasNextMessageResponseMessage)remotingConnection.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_HASNEXTMESSAGE));
       
       return response.hasNext();
    }
@@ -121,7 +127,7 @@
       checkClosed();
       
       ReceiveMessage response =
-         (ReceiveMessage)remotingConnection.sendBlocking(serverTargetID, session.getServerTargetID(), new PacketImpl(PacketImpl.SESS_BROWSER_NEXTMESSAGE));
+         (ReceiveMessage)remotingConnection.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_NEXTMESSAGE));
       
       return response.getClientMessage();
    }

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -27,6 +27,7 @@
 import org.jboss.messaging.core.client.Location;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.RemotingConnectionFactory;
 import org.jboss.messaging.core.remoting.impl.RemotingConnectionFactoryImpl;
@@ -185,7 +186,8 @@
          CreateConnectionResponse response =
             (CreateConnectionResponse)remotingConnection.sendBlocking(0, 0, request);
 
-         return new ClientConnectionImpl(this, response.getConnectionTargetID(), remotingConnection, response.getServerVersion());
+         return new ClientConnectionImpl(this, response.getConnectionTargetID(), remotingConnection,
+               response.getServerVersion(), remotingConnection.getPacketDispatcher());
       }
       catch (Throwable t)
       {

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -21,11 +21,15 @@
  */ 
 package org.jboss.messaging.core.client.impl;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.jboss.messaging.core.client.ClientConnectionFactory;
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.RemotingSessionListener;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionResponseMessage;
@@ -33,9 +37,6 @@
 import org.jboss.messaging.core.version.Version;
 import org.jboss.messaging.util.ConcurrentHashSet;
 
-import java.util.HashSet;
-import java.util.Set;
-
 /**
  * The client-side Connection connectionFactory class.
  *
@@ -69,6 +70,8 @@
    
    private final ClientConnectionFactory connectionFactory;
    
+   private final PacketDispatcher dispatcher;
+   
    private volatile boolean closed;
       
    // Static ---------------------------------------------------------------------------------------
@@ -78,7 +81,8 @@
    public ClientConnectionImpl(final ClientConnectionFactory connectionFactory,
                                final long serverTargetID,
                                final RemotingConnection connection,
-                               final Version serverVersion)
+                               final Version serverVersion,
+                               final PacketDispatcher dispatcher)
    {
       this.connectionFactory = connectionFactory;
       
@@ -87,6 +91,8 @@
       this.remotingConnection = connection;
       
       this.serverVersion = serverVersion;
+      
+      this.dispatcher = dispatcher;
    }
    
    // ClientConnection implementation --------------------------------------------------------------
@@ -104,7 +110,8 @@
 
       ClientSessionInternal session =
       	new ClientSessionImpl(this, response.getSessionID(), xa, ackBatchSize, cacheProducers,
-      			                autoCommitSends, autoCommitAcks, blockOnAcknowledge);
+      			                autoCommitSends, autoCommitAcks, blockOnAcknowledge,
+      			                remotingConnection, connectionFactory, dispatcher);
 
       addSession(session);
 
@@ -201,10 +208,10 @@
       return serverVersion;
    }
    
-   public ClientConnectionFactory getConnectionFactory()
-   {
-      return connectionFactory;
-   }
+//   public ClientConnectionFactory getConnectionFactory()
+//   {
+//      return connectionFactory;
+//   }
 
    // Public ---------------------------------------------------------------------------------------
 

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionInternal.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionInternal.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionInternal.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -37,11 +37,12 @@
  */
 public interface ClientConnectionInternal extends ClientConnection
 {
-   RemotingConnection getRemotingConnection();
-
    void addSession(ClientSessionInternal session);
    
    void removeSession(ClientSessionInternal session);
    
    Set<ClientSession> getSessions();
+   
+   //For testing only
+   RemotingConnection getRemotingConnection();
 }

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -22,20 +22,21 @@
 
 package org.jboss.messaging.core.client.impl;
 
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.client.MessageHandler;
 import org.jboss.messaging.core.exception.MessagingException;
 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.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.impl.wireformat.ConsumerFlowCreditMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
 
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
 /**
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
  * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
@@ -69,7 +70,11 @@
    
    private final ExecutorService sessionExecutor;
    
+   private final long sessionTargetID;
+   
    private final RemotingConnection remotingConnection;
+   
+   private final PacketDispatcher dispatcher;
 
    private final int clientWindowSize;
    
@@ -107,7 +112,11 @@
    public ClientConsumerImpl(final ClientSessionInternal session, final long targetID,
                              final long clientTargetID,                                                   
                              final int clientWindowSize,
-                             final boolean direct)
+                             final boolean direct,
+                             final RemotingConnection remotingConnection,
+                             final PacketDispatcher dispatcher,
+                             final ExecutorService executorService,
+                             final long sessionTargetID)
    {
       this.targetID = targetID;
       
@@ -115,10 +124,14 @@
       
       this.session = session;
       
-      this.sessionExecutor = session.getExecutorService();
+      this.sessionTargetID = sessionTargetID;
       
-      this.remotingConnection = session.getConnection().getRemotingConnection();
+      this.sessionExecutor = executorService;
       
+      this.remotingConnection = remotingConnection;
+      
+      this.dispatcher = dispatcher;
+      
       this.clientWindowSize = clientWindowSize;
       
       this.direct = direct;
@@ -273,9 +286,9 @@
          
          receiverThread = null;
 
-         remotingConnection.sendBlocking(targetID, session.getServerTargetID(), new PacketImpl(PacketImpl.CLOSE));
+         remotingConnection.sendBlocking(targetID, sessionTargetID, new PacketImpl(PacketImpl.CLOSE));
 
-         remotingConnection.getPacketDispatcher().unregister(clientTargetID);
+         dispatcher.unregister(clientTargetID);
       }
       finally
       {
@@ -305,7 +318,7 @@
 
          receiverThread = null;
 
-         remotingConnection.getPacketDispatcher().unregister(clientTargetID);
+         dispatcher.unregister(clientTargetID);
       }
       finally
       {
@@ -320,8 +333,6 @@
       }
    }
 
-
-
    public boolean isClosed()
    {
       return closed;
@@ -463,7 +474,7 @@
    
          if (creditsToSend >= clientWindowSize)
          {            
-            remotingConnection.sendOneWay(targetID, session.getServerTargetID(), new ConsumerFlowCreditMessage(creditsToSend));
+            remotingConnection.sendOneWay(targetID, sessionTargetID, new ConsumerFlowCreditMessage(creditsToSend));
             
             creditsToSend = 0;            
          }

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientProducerImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -22,17 +22,18 @@
 
 package org.jboss.messaging.core.client.impl;
 
+import java.util.concurrent.Semaphore;
+
 import org.jboss.messaging.core.client.AcknowledgementHandler;
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.impl.wireformat.ProducerSendMessage;
 import org.jboss.messaging.util.SimpleString;
 import org.jboss.messaging.util.TokenBucketLimiter;
 
-import java.util.concurrent.Semaphore;
-
 /**
  * The client-side Producer connectionFactory class.
  *
@@ -64,6 +65,8 @@
    
    private final RemotingConnection remotingConnection;
    
+   private final PacketDispatcher dispatcher;
+   
    private volatile boolean closed;
    
    //For limit throttling
@@ -81,7 +84,9 @@
    private final boolean creditFlowControl;
    
    private final int initialWindowSize;
-    
+   
+   private final long sessionTargetID;
+   
    // Static ---------------------------------------------------------------------------------------
 
    // Constructors ---------------------------------------------------------------------------------
@@ -93,7 +98,10 @@
    		                    final TokenBucketLimiter rateLimiter,
    		                    final boolean blockOnNonPersistentSend,
    		                    final boolean blockOnPersistentSend,
-   		                    final int initialCredits)
+   		                    final int initialCredits,
+   		                    final RemotingConnection remotingConnection,
+   		                    final PacketDispatcher dispatcher,
+   		                    final long sessionTargetID)
    {   	
       this.session = session;
       
@@ -103,8 +111,12 @@
       
       this.address = address;
       
-      this.remotingConnection = session.getConnection().getRemotingConnection();
+      this.remotingConnection = remotingConnection;
       
+      this.dispatcher = dispatcher;
+      
+      this.sessionTargetID = sessionTargetID;
+      
       this.rateLimiter = rateLimiter;
             
       this.blockOnNonPersistentSend = blockOnNonPersistentSend; 
@@ -158,7 +170,7 @@
       
       session.removeProducer(this);
       
-      remotingConnection.getPacketDispatcher().unregister(clientTargetID);
+      dispatcher.unregister(clientTargetID);
       
       closed = true;
    }
@@ -167,7 +179,7 @@
    {
       session.removeProducer(this);
 
-      remotingConnection.getPacketDispatcher().unregister(clientTargetID);
+      dispatcher.unregister(clientTargetID);
 
       closed = true;
    }
@@ -241,11 +253,11 @@
                
       if (sendBlocking)
       {        
-         remotingConnection.sendBlocking(serverTargetID, session.getServerTargetID(), message);
+         remotingConnection.sendBlocking(serverTargetID, sessionTargetID, message);
       }
       else
       {
-         remotingConnection.sendOneWay(serverTargetID, session.getServerTargetID(), message);
+         remotingConnection.sendOneWay(serverTargetID, sessionTargetID, message);
       }      
       
       //We only flow control with non-anonymous producers

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -21,24 +21,61 @@
  */ 
 package org.jboss.messaging.core.client.impl;
 
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
 import org.jboss.messaging.core.client.ClientBrowser;
+import org.jboss.messaging.core.client.ClientConnectionFactory;
 import org.jboss.messaging.core.client.ClientConsumer;
 import org.jboss.messaging.core.client.ClientProducer;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
-import org.jboss.messaging.core.remoting.impl.wireformat.*;
+import org.jboss.messaging.core.remoting.impl.wireformat.ConsumerFlowCreditMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCancelMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateQueueMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionDeleteQueueMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
+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;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetInDoubtXidsResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetTimeoutResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAJoinMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAPrepareMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResumeMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXARollbackMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
 import org.jboss.messaging.util.SimpleString;
 import org.jboss.messaging.util.TokenBucketLimiterImpl;
 
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
-import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
 /**
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
  * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
@@ -82,6 +119,10 @@
    
    private final Map<SimpleString, ClientProducerInternal> producerCache;
    
+   private final ClientConnectionFactory connectionFactory;
+   
+   private final PacketDispatcher dispatcher;
+   
    private volatile boolean closed;
       
    private boolean acked = true;
@@ -113,7 +154,10 @@
                             final boolean xa,
                             final int lazyAckBatchSize, final boolean cacheProducers,                            
                             final boolean autoCommitSends, final boolean autoCommitAcks,
-                            final boolean blockOnAcknowledge) throws MessagingException
+                            final boolean blockOnAcknowledge,
+                            final RemotingConnection remotingConnection,
+                            final ClientConnectionFactory connectionFactory,
+                            final PacketDispatcher dispatcher) throws MessagingException
    {
    	if (lazyAckBatchSize < -1 || lazyAckBatchSize == 0)
    	{
@@ -124,8 +168,12 @@
       
       this.connection = connection;
       
-      this.remotingConnection = connection.getRemotingConnection();
+      this.remotingConnection = remotingConnection;
       
+      this.connectionFactory = connectionFactory;
+      
+      this.dispatcher = dispatcher;
+      
       this.cacheProducers = cacheProducers;
       
       //TODO - we should use OrderedExecutorFactory and a pool here
@@ -224,8 +272,8 @@
       checkClosed();
       
       return createConsumer(queueName, filterString, noLocal, autoDeleteQueue, direct,
-                            connection.getConnectionFactory().getDefaultConsumerWindowSize(),
-                            connection.getConnectionFactory().getDefaultConsumerMaxRate());
+                            connectionFactory.getDefaultConsumerWindowSize(),
+                            connectionFactory.getDefaultConsumerMaxRate());
    }
    
    public ClientConsumer createConsumer(final SimpleString queueName, final SimpleString filterString, final boolean noLocal,
@@ -234,7 +282,7 @@
    {
       checkClosed();
       
-      long clientTargetID = remotingConnection.getPacketDispatcher().generateID();
+      long clientTargetID = dispatcher.generateID();
     
       SessionCreateConsumerMessage request =
          new SessionCreateConsumerMessage(clientTargetID, queueName, filterString, noLocal, autoDeleteQueue,
@@ -268,11 +316,12 @@
       }
       
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(this, response.getConsumerTargetID(), clientTargetID, clientWindowSize, direct);
+         new ClientConsumerImpl(this, response.getConsumerTargetID(), clientTargetID, clientWindowSize, direct,
+                                remotingConnection, dispatcher, executorService, serverTargetID);
 
       addConsumer(consumer);
       
-      remotingConnection.getPacketDispatcher().register(new ClientConsumerPacketHandler(consumer, clientTargetID));
+      dispatcher.register(new ClientConsumerPacketHandler(consumer, clientTargetID));
       
       //Now we send window size credits to start the consumption
       //We even send it if windowSize == -1, since we need to start the consumer
@@ -296,7 +345,7 @@
 
       SessionCreateBrowserResponseMessage response = (SessionCreateBrowserResponseMessage)remotingConnection.sendBlocking(serverTargetID, serverTargetID, request);
 
-      ClientBrowser browser = new ClientBrowserImpl(this, response.getBrowserTargetID());  
+      ClientBrowser browser = new ClientBrowserImpl(this, response.getBrowserTargetID(), remotingConnection, serverTargetID);  
 
       addBrowser(browser);
 
@@ -307,8 +356,8 @@
    {
       checkClosed();
       
-      return createProducer(address, connection.getConnectionFactory().getDefaultProducerWindowSize(),
-                            connection.getConnectionFactory().getDefaultProducerMaxRate());
+      return createProducer(address, connectionFactory.getDefaultProducerWindowSize(),
+                            connectionFactory.getDefaultProducerMaxRate());
    }
       
    public ClientProducer createRateLimitedProducer(SimpleString address, int rate) throws MessagingException
@@ -328,8 +377,8 @@
    private ClientProducer createProducer(final SimpleString address, final int windowSize, final int maxRate) throws MessagingException
    {
       return createProducer(address, windowSize, maxRate,
-                            connection.getConnectionFactory().isDefaultBlockOnNonPersistentSend(),
-                            connection.getConnectionFactory().isDefaultBlockOnPersistentSend());
+                            connectionFactory.isDefaultBlockOnNonPersistentSend(),
+                            connectionFactory.isDefaultBlockOnPersistentSend());
    }
    
    public ClientProducer createProducer(final SimpleString address, final int windowSize, final int maxRate,
@@ -347,7 +396,7 @@
 
       if (producer == null)
       {
-         long clientTargetID = remotingConnection.getPacketDispatcher().generateID();
+         long clientTargetID = dispatcher.generateID();
 
          SessionCreateProducerMessage request = new SessionCreateProducerMessage(clientTargetID, address, windowSize, maxRate);
 
@@ -363,9 +412,12 @@
                response.getMaxRate() == -1 ? null : new TokenBucketLimiterImpl(response.getMaxRate(), false),
                autoCommitSends && blockOnNonPersistentSend,                                                      
                autoCommitSends && blockOnPersistentSend,
-               response.getInitialCredits());  
+               response.getInitialCredits(),
+               remotingConnection,               
+               dispatcher,
+               serverTargetID);  
 
-         remotingConnection.getPacketDispatcher().register(new ClientProducerPacketHandler(producer, clientTargetID));        
+         dispatcher.register(new ClientProducerPacketHandler(producer, clientTargetID));        
       }
 
       addProducer(producer);
@@ -736,8 +788,8 @@
       
       ClientSessionImpl other = (ClientSessionImpl)xares;
       
-      return connection.getRemotingConnection().getLocation()
-                .equals(other.getConnection().getRemotingConnection().getLocation());
+      return remotingConnection.getLocation()
+                .equals(other.remotingConnection.getLocation());
    }
 
    public int prepare(final Xid xid) throws XAException

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -24,7 +24,6 @@
 
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ExecutorService;
 
 import org.jboss.messaging.core.client.ClientBrowser;
 import org.jboss.messaging.core.client.ClientSession;
@@ -65,6 +64,4 @@
    Set<ClientBrowser> getBrowsers();
    
    Map<SimpleString, ClientProducerInternal> getProducerCache();
-   
-   ExecutorService getExecutorService();
 }

Modified: trunk/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -23,9 +23,12 @@
 package org.jboss.messaging.core.management;
 
 import java.util.List;
+import java.util.Set;
 
 import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.security.Role;
 import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -36,6 +39,8 @@
  */
 public interface MessagingServerManagement
 {
+   int getConnectionCount();
+   
    /**
     * is the server started
     * @return true if the server is running
@@ -88,6 +93,14 @@
     */
    void removeAllMessagesForAddress(SimpleString address) throws Exception;
 
+   void setSecurityForAddress(String address, Set<Role> roles) throws Exception;
+   
+   void removeSecurityForAddress(String address) throws Exception;
+   
+   Set<Role> getSecurityForAddress(String address) throws Exception;
+   
+   void setQueueAttributes(String queueName, QueueSettings settings) throws Exception;
+   
    /**
     * remove all the messages for a specific binding
     * @param name the name of the binding

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -24,13 +24,19 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.Binding;
-import org.jboss.messaging.core.server.MessagingComponent;
+import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.security.Role;
+import org.jboss.messaging.core.server.ConnectionManager;
 import org.jboss.messaging.core.server.MessagingServer;
 import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -44,9 +50,9 @@
  * @author <a href="mailto:ataylor at redhat.com>Andy Taylor</a>
  */
 //@JMX(name = "jboss.messaging:service=MessagingServerManagement", exposedInterface = MessagingServerManagement.class)
-public class MessagingServerManagementImpl implements MessagingServerManagement, MessagingComponent
+public class MessagingServerManagementImpl implements MessagingServerManagement
 {
-   private MessagingServer messagingServer;
+   //private MessagingServer messagingServer;
 
 //   private HashMap<String, MessageCounter> currentCounters = new HashMap<String, MessageCounter>();
 //
@@ -55,58 +61,96 @@
 //   private ScheduledExecutorService scheduler;
 //
 //   private int maxMessageCounters = 20;
-
-   public void setMessagingServer(MessagingServer messagingServer)
+   
+   private final PostOffice postOffice;
+   
+   private final StorageManager storageManager;
+   
+   private final Configuration configuration;
+   
+   private final ConnectionManager connectionManager;
+   
+   private final MessagingServer server;
+   
+   private HierarchicalRepository<Set<Role>> securityRepository;
+   
+   private HierarchicalRepository<QueueSettings> queueSettingsRepository;
+   
+   
+   
+   public MessagingServerManagementImpl(final PostOffice postOffice, final StorageManager storageManager,
+                                        final Configuration configuration,
+                                        final ConnectionManager connectionManager,                                        
+                                        final HierarchicalRepository<Set<Role>> securityRepository,
+                                        final HierarchicalRepository<QueueSettings> queueSettingsRepository,
+                                        final MessagingServer server)
    {
-      this.messagingServer = messagingServer;
+      this.postOffice = postOffice;
+      
+      this.storageManager = storageManager;
+      
+      this.configuration = configuration;
+      
+      this.connectionManager = connectionManager;
+      
+      this.server = server;
+      
+      this.securityRepository = securityRepository;
+      
+      this.queueSettingsRepository = queueSettingsRepository;
    }
 
    public boolean isStarted()
    {
-      return messagingServer.isStarted();
+      return server.isStarted();
    }
 
    public void createQueue(SimpleString address, SimpleString name) throws Exception
    {
-      if (messagingServer.getPostOffice().getBinding(name) == null)
+      if (postOffice.getBinding(name) == null)
       {
-         messagingServer.getPostOffice().addBinding(address, name, null, true, false);
+         postOffice.addBinding(address, name, null, true, false);
       }
    }
+   
+   public int getConnectionCount()
+   {
+      return connectionManager.size();
+   }
 
    public void destroyQueue(SimpleString name) throws Exception
    {
-      Binding binding = messagingServer.getPostOffice().getBinding(name);
+      Binding binding = postOffice.getBinding(name);
 
       if (binding != null)
       {
          Queue queue = binding.getQueue();
 
-         queue.deleteAllReferences(messagingServer.getStorageManager());
+         queue.deleteAllReferences(storageManager);
          
-         messagingServer.getPostOffice().removeBinding(queue.getName());
+         postOffice.removeBinding(queue.getName());
       }
    }
 
    public boolean addDestination(SimpleString address) throws Exception
    {
-      return messagingServer.getPostOffice().addDestination(address, false);
+      return postOffice.addDestination(address, false);
    }
 
    public boolean removeDestination(SimpleString address) throws Exception
    {
-      return messagingServer.getPostOffice().removeDestination(address, false);
+      return postOffice.removeDestination(address, false);
    }
 
    public void removeAllMessagesForAddress(SimpleString address) throws Exception
    {
-      List<Binding> bindings = messagingServer.getPostOffice().getBindingsForAddress(address);
+      List<Binding> bindings = postOffice.getBindingsForAddress(address);
 
       for (Binding binding : bindings)
       {
          Queue queue = binding.getQueue();
 
-         queue.deleteAllReferences(messagingServer.getStorageManager());
+         queue.deleteAllReferences(storageManager);
       }
    }
 //
@@ -163,7 +207,7 @@
    public List<Queue> getQueuesForAddress(SimpleString address) throws Exception
    {
       List<Queue> queues = new ArrayList<Queue>();
-      List<Binding> bindings = messagingServer.getPostOffice().getBindingsForAddress(address);
+      List<Binding> bindings = postOffice.getBindingsForAddress(address);
 
       for (Binding binding : bindings)
       {
@@ -177,6 +221,28 @@
    {
       return getQueue(queue).getMessageCount();
    }
+   
+   public void setSecurityForAddress(String address, Set<Role> roles) throws Exception
+   {
+      this.securityRepository.addMatch(address, roles);
+   }
+   
+   public void removeSecurityForAddress(String address) throws Exception
+   {
+      this.securityRepository.removeMatch(address);
+   }
+   
+   public Set<Role> getSecurityForAddress(String address) throws Exception
+   {
+      return this.securityRepository.getMatch(address);
+   }
+   
+   public void setQueueAttributes(String queueName, QueueSettings settings) throws Exception
+   {
+      this.queueSettingsRepository.addMatch(queueName, settings);
+   }
+   
+   
 //
 //   public int getMaxMessageCounters()
 //   {
@@ -396,7 +462,7 @@
 
    public Configuration getConfiguration()
    {
-      return messagingServer.getConfiguration();
+      return configuration;
    }
 
    // Private ---------------------------------------------------------------------------
@@ -404,7 +470,7 @@
 
    private Queue getQueue(SimpleString queueName) throws Exception
    {
-      Binding binding = messagingServer.getPostOffice().getBinding(queueName);
+      Binding binding = postOffice.getBinding(queueName);
       if (binding == null)
       {
          throw new IllegalArgumentException("No queue with name " + queueName);
@@ -415,19 +481,19 @@
 
 
 
-   public void start() throws Exception
-   {
-      //scheduler = Executors.newScheduledThreadPool(maxMessageCounters);
-   }
+//   public void start() throws Exception
+//   {
+//      //scheduler = Executors.newScheduledThreadPool(maxMessageCounters);
+//   }
+//
+//   public void stop() throws Exception
+//   {
+////      if (scheduler != null)
+////      {
+////         scheduler.shutdown();
+////      }
+//   }
 
-   public void stop() throws Exception
-   {
-//      if (scheduler != null)
-//      {
-//         scheduler.shutdown();
-//      }
-   }
-
 //   protected void finalize() throws Throwable
 //   {
 //      super.finalize();

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -83,7 +83,11 @@
 
       connector = ConnectorRegistryFactory.getRegistry().getConnector(location, connectionParams);
       
+      log.info("*** getting connector " + connector);
+      
       session = connector.connect();
+      
+      log.info("** got session " + session.getID());
 
       if (log.isDebugEnabled())
          log.debug("Using " + connector + " to connect to " + location);

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -165,6 +165,8 @@
          throw new IOException("Cannot connect to " + address.toString());
       }
       session = future.getSession();
+      
+      log.info("Got mina session " + session);
 
       MinaSession minaSession = new MinaSession(session);
       //register a handler for dealing with server pings

Modified: trunk/src/main/org/jboss/messaging/core/security/impl/SecurityStoreImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/security/impl/SecurityStoreImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/security/impl/SecurityStoreImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -115,7 +115,8 @@
          String saddress = address.toString();
          
          Set<Role> roles = securityRepository.getMatch(saddress);
-         if(!securityManager.validateUserAndRole(conn.getUsername(), conn.getPassword(), roles, checkType))
+         
+         if (!securityManager.validateUserAndRole(conn.getUsername(), conn.getPassword(), roles, checkType))
          {
              throw new MessagingException(MessagingException.SECURITY_EXCEPTION, "Unable to validate user: " + conn.getUsername());
          }

Modified: trunk/src/main/org/jboss/messaging/core/server/ConnectionManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/ConnectionManager.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/ConnectionManager.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -56,4 +56,6 @@
     * @return List<ServerConnection>
     */
    List<ServerConnection> getActiveConnections();
+   
+   int size();
 }

Modified: trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -22,23 +22,20 @@
 
 package org.jboss.messaging.core.server;
 
+import java.util.Set;
+
 import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.management.MessagingServerManagement;
 import org.jboss.messaging.core.persistence.StorageManager;
-import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.remoting.PacketReturner;
 import org.jboss.messaging.core.remoting.RemotingService;
 import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionResponse;
 import org.jboss.messaging.core.security.JBMSecurityManager;
 import org.jboss.messaging.core.security.Role;
-import org.jboss.messaging.core.security.SecurityStore;
 import org.jboss.messaging.core.settings.HierarchicalRepository;
 import org.jboss.messaging.core.settings.impl.QueueSettings;
-import org.jboss.messaging.core.transaction.ResourceManager;
 import org.jboss.messaging.core.version.Version;
-import org.jboss.messaging.util.ExecutorFactory;
 
-import java.util.Set;
-
 /**
  * This interface defines the internal interface of the Messaging Server exposed
  * to other components of the server.
@@ -53,8 +50,6 @@
  */
 public interface MessagingServer extends MessagingComponent
 {  
-   //The pluggable components
-   
    void setConfiguration(Configuration configuration);
    
    Configuration getConfiguration(); 
@@ -71,32 +66,17 @@
       
    void setSecurityManager(JBMSecurityManager securityManager);
 
-   
-   //Access to hard wired components
-      
-   PostOffice getPostOffice();
-   
-   ConnectionManager getConnectionManager();
-   
-   HierarchicalRepository<Set<Role>> getSecurityRepository();
-   
-   SecurityStore getSecurityStore();
-
-   HierarchicalRepository<QueueSettings> getQueueSettingsRepository();
-   
-   ExecutorFactory getExecutorFactory();
-   
-   ResourceManager getResourceManager();
-   
    Version getVersion();
   
-   //Operations
-   
    CreateConnectionResponse createConnection(String username, String password,                                          
                                              int incrementingVersion,
                                              PacketReturner returner) throws Exception;
-   
-      
+        
    boolean isStarted();
    
+   MessagingServerManagement getServerManagement();  
+   
+   HierarchicalRepository<Set<Role>> getSecurityRepository();
+   
+   HierarchicalRepository<QueueSettings> getQueueSettingsRepository();
 }

Modified: trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -38,8 +38,6 @@
 {
 	long getID();
 	
-	MessagingServer getServer();
-	
 	ConnectionCreateSessionResponseMessage createSession(boolean xa, boolean autoCommitSends, boolean autoCommitAcks,
                                                         PacketReturner returner) throws Exception;
 	

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ConnectionManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ConnectionManagerImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ConnectionManagerImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -110,6 +110,11 @@
       }
       return list;
    }      
+   
+   public synchronized int size()
+   {
+      return endpoints.size();
+   }
 
    // FailureListener implementation --------------------------------------------------------------
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -34,11 +34,14 @@
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.management.impl.MessagingServerManagementImpl;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.postoffice.impl.PostOfficeImpl;
 import org.jboss.messaging.core.remoting.ConnectorRegistryFactory;
 import org.jboss.messaging.core.remoting.Interceptor;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.PacketReturner;
 import org.jboss.messaging.core.remoting.RemotingService;
 import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionResponse;
@@ -98,6 +101,8 @@
    private HierarchicalRepository<Set<Role>> securityRepository;
    private ResourceManager resourceManager;   
    private MessagingServerPacketHandler serverPacketHandler;
+   private MessagingServerManagement serverManagement;
+   private PacketDispatcher dispatcher;
 
    // plugins
 
@@ -183,6 +188,7 @@
       scheduledExecutor = new ScheduledThreadPoolExecutor(configuration.getScheduledThreadPoolMaxSize(), new JBMThreadFactory("JBM-scheduled-threads"));            
       resourceManager = new ResourceManagerImpl(0);                           
       remotingService.addRemotingSessionListener(sessionListener);  
+      dispatcher = remotingService.getDispatcher();
       postOffice.start();
       serverPacketHandler = new MessagingServerPacketHandler(this);          
       ClassLoader loader = Thread.currentThread().getContextClassLoader();
@@ -198,9 +204,12 @@
             log.warn("Error instantiating interceptor \"" + interceptorClass + "\"", e);
          }
       }
+      serverManagement = new MessagingServerManagementImpl(postOffice, storageManager, configuration,
+                                                           connectionManager, securityRepository,
+                                                           queueSettingsRepository, this);
       //Register the handler as the last thing - since after that users will be able to connect
       started = true;
-      getRemotingService().getDispatcher().register(serverPacketHandler);      
+      dispatcher.register(serverPacketHandler);      
    }
 
    public synchronized void stop() throws Exception
@@ -210,7 +219,7 @@
          return;
       }
       
-      getRemotingService().getDispatcher().unregister(serverPacketHandler.getID());       
+      dispatcher.unregister(serverPacketHandler.getID());       
       remotingService.removeRemotingSessionListener(sessionListener);
       
       securityStore = null;
@@ -227,6 +236,7 @@
       queueFactory = null;
       resourceManager = null;
       serverPacketHandler = null;
+      serverManagement = null;
       ConnectorRegistryFactory.getRegistry().clear();
       
       started = false;
@@ -294,51 +304,24 @@
    {
       return securityManager;
    }
-
-   //The hardwired components
    
-   public PostOffice getPostOffice()
-   {
-      return postOffice;
-   }
-   
-   public ConnectionManager getConnectionManager()
-   {
-      return connectionManager;
-   }
-   
+   //This is needed for the security deployer
    public HierarchicalRepository<Set<Role>> getSecurityRepository()
    {
       return securityRepository;
    }
    
-   public SecurityStore getSecurityStore()
-   {
-      return securityStore;
-   }
-   
+   //This is needed for the queue settings deployer
    public HierarchicalRepository<QueueSettings> getQueueSettingsRepository()
    {
       return queueSettingsRepository;
    }
-   
-   public ExecutorFactory getExecutorFactory()
-   {
-      return executorFactory;
-   }
 
-   public ResourceManager getResourceManager()
-   {
-      return resourceManager;
-   }
-   
    public Version getVersion()
    {
       return version;
    }
    
-   //Operations
-   
    public boolean isStarted()
    {
       return started;
@@ -354,6 +337,7 @@
          throw new MessagingException(MessagingException.INCOMPATIBLE_CLIENT_SERVER_VERSIONS,
                  "client not compatible with version: " + version.getFullVersion());
       }
+      
       // Authenticate. Successful autentication will place a new SubjectContext on thread local,
       // which will be used in the authorization process. However, we need to make sure we clean
       // up thread local immediately after we used the information, otherwise some other people
@@ -363,15 +347,26 @@
 
       long sessionID = returner.getSessionID();
       
+      log.info("****Session id is " + sessionID);
+      
       final ServerConnection connection =
-              new ServerConnectionImpl(this, username, password, sessionID);
+              new ServerConnectionImpl(username, password, sessionID,
+                                       postOffice, connectionManager,
+                                       dispatcher, storageManager,
+                                       queueSettingsRepository, resourceManager,
+                                       securityStore, executorFactory);
       
       connectionManager.registerConnection(sessionID, connection);
 
-      remotingService.getDispatcher().register(new ServerConnectionPacketHandler(connection));
+      dispatcher.register(new ServerConnectionPacketHandler(connection));
 
       return new CreateConnectionResponse(connection.getID(), version);
    }
+         
+   public MessagingServerManagement getServerManagement()
+   {
+      return serverManagement;
+   }
 
    // Public ---------------------------------------------------------------------------------------
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -39,6 +39,7 @@
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.message.Message;
 import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.PacketHandler;
 import org.jboss.messaging.core.remoting.PacketReturner;
 import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
@@ -74,15 +75,16 @@
    private final Queue destination;
    private final Filter filter;
    private Iterator<ServerMessage> iterator;
-
+   
    // Constructors ---------------------------------------------------------------------------------
 
    public ServerBrowserImpl(final ServerSession session,
-                            final Queue destination, final String messageFilter) throws Exception
+                            final Queue destination, final String messageFilter,
+                            final PacketDispatcher dispatcher) throws Exception
    {     
       this.session = session;
       
-      this.id = session.getConnection().getServer().getRemotingService().getDispatcher().generateID();
+      this.id = dispatcher.generateID();
       
       this.destination = destination;
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -24,20 +24,25 @@
 
 import java.util.HashSet;
 import java.util.Set;
+import java.util.concurrent.Executor;
 
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.Binding;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.PacketReturner;
-import org.jboss.messaging.core.remoting.RemotingService;
 import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionResponseMessage;
+import org.jboss.messaging.core.security.SecurityStore;
 import org.jboss.messaging.core.server.ConnectionManager;
-import org.jboss.messaging.core.server.MessagingServer;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.core.server.ServerConnection;
 import org.jboss.messaging.core.server.ServerSession;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
+import org.jboss.messaging.core.transaction.ResourceManager;
 import org.jboss.messaging.util.ConcurrentHashSet;
+import org.jboss.messaging.util.ExecutorFactory;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -72,46 +77,63 @@
    private final Set<Queue> temporaryQueues = new ConcurrentHashSet<Queue>();
    
    private final Set<SimpleString> temporaryDestinations = new ConcurrentHashSet<SimpleString>();
-   
-   private final MessagingServer server;
-   
+     
    private volatile boolean started;
    
-   //We cache some of the service locally
-   
    private final PostOffice postOffice;
 
    private final ConnectionManager connectionManager;
 
    private final PacketDispatcher dispatcher;
    
+   private final StorageManager storageManager;
+   
+   private final HierarchicalRepository<QueueSettings> queueSettingsRepository;
+   
+   private final ResourceManager resourceManager;
+   
+   private final SecurityStore securityStore;
+   
+   private final ExecutorFactory executorFactory;
+   
    private volatile boolean closed;
 
    // Constructors ---------------------------------------------------------------------------------
       
-   public ServerConnectionImpl(final MessagingServer server,
-                               final String username, final String password,
-   		                      final long remotingClientSessionID)
-   {
-      RemotingService rs = server.getRemotingService();
-      
-      this.dispatcher = rs.getDispatcher();
- 
-   	this.id = dispatcher.generateID();
-      
+   public ServerConnectionImpl(final String username, final String password,
+                               final long remotingClientSessionID,
+                               final PostOffice postOffice,
+                               final ConnectionManager connectionManager,
+                               final PacketDispatcher packetDispatcher,
+                               final StorageManager storageManager,
+                               final HierarchicalRepository<QueueSettings> queueSettingsRepository,
+                               final ResourceManager resourceManager,
+                               final SecurityStore securityStore,
+                               final ExecutorFactory executorFactory)
+   {          	      
    	this.username = username;
       
       this.password = password;
       
       this.remotingClientSessionID = remotingClientSessionID;
 
-      started = false;
+      this.postOffice = postOffice;
       
-      this.server = server;
+      this.connectionManager = connectionManager;
       
-      this.postOffice = server.getPostOffice();
+      this.dispatcher = packetDispatcher;
       
-      this.connectionManager = server.getConnectionManager();
+      this.storageManager = storageManager;
+      
+      this.queueSettingsRepository = queueSettingsRepository;
+      
+      this.resourceManager = resourceManager;
+      
+      this.securityStore = securityStore;
+      
+      this.executorFactory = executorFactory;
+      
+      this.id = dispatcher.generateID();    
    }
 
    // ServerConnection implementation ------------------------------------------------------------
@@ -121,11 +143,6 @@
    	return id;
    }
    
-   public MessagingServer getServer()
-   {
-      return server;
-   }
-   
    public ConnectionCreateSessionResponseMessage createSession(final boolean xa, final boolean autoCommitSends,
    		                                                      final boolean autoCommitAcks,
                                                                final PacketReturner returner) throws Exception
@@ -140,10 +157,15 @@
    }
    
    protected ServerSession doCreateSession(final boolean autoCommitSends, final boolean autoCommitAcks,
-                                         final boolean xa, final PacketReturner returner)
+                                           final boolean xa, final PacketReturner returner)
       throws Exception
    {
-      return new ServerSessionImpl(this, autoCommitSends, autoCommitAcks, xa, returner);
+      Executor executor = executorFactory.getExecutor();
+            
+      return new ServerSessionImpl(this, autoCommitSends, autoCommitAcks, xa, returner,
+                                   storageManager, postOffice, queueSettingsRepository,
+                                   resourceManager, securityStore, dispatcher,
+                                   executor);
    }
       
    public void start() throws Exception
@@ -237,6 +259,7 @@
       {
          throw new IllegalStateException("Connection already has temporary queue " + queue);
       }
+      
       temporaryQueues.add(queue);      
    }
    
@@ -254,6 +277,7 @@
       {
          throw new IllegalStateException("Connection already has temporary destination " + address);
       }
+      
       temporaryDestinations.add(address);     
    }
    
@@ -279,7 +303,7 @@
     
    public void addSession(final ServerSession session)
    {
-      this.sessions.add(session);
+      sessions.add(session);
    }
    
    public Set<Queue> getTemporaryQueues()

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -28,9 +28,9 @@
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.server.HandleStatus;
 import org.jboss.messaging.core.server.MessageReference;
-import org.jboss.messaging.core.server.MessagingServer;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.core.server.ServerConsumer;
 import org.jboss.messaging.core.server.ServerMessage;
@@ -46,11 +46,6 @@
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * 
- * Partially derived from JBM 1.x version by:
- * 
- * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * 
  * @version <tt>$Revision: 3783 $</tt> $Id: ServerConsumerImpl.java 3783 2008-02-25 12:15:14Z timfox $
  */
 public class ServerConsumerImpl implements ServerConsumer
@@ -87,7 +82,6 @@
    
    private boolean started;
    
-   //We cache some of the service locally
    private final StorageManager storageManager;
    
    private final HierarchicalRepository<QueueSettings> queueSettingsRepository;
@@ -100,7 +94,11 @@
                       final Queue messageQueue, final boolean noLocal, final Filter filter,
    		             final boolean autoDeleteQueue, final boolean enableFlowControl, final int maxRate,
    		             final long connectionID, 
-					       final boolean started)
+					       final boolean started,
+					       final StorageManager storageManager,
+					       final HierarchicalRepository<QueueSettings> queueSettingsRepository,
+					       final PostOffice postOffice,
+					       final PacketDispatcher dispatcher)
    {
    	this.clientTargetID = clientTargetID;
       
@@ -116,8 +114,6 @@
 
       this.session = session;
       
-      MessagingServer server = session.getConnection().getServer();
-
       this.started = started;
       
       if (enableFlowControl)
@@ -129,13 +125,13 @@
       	availableCredits = null;
       }
       
-      this.storageManager = server.getStorageManager();
+      this.storageManager = storageManager;
       
-      this.queueSettingsRepository = server.getQueueSettingsRepository();
+      this.queueSettingsRepository = queueSettingsRepository;
       
-      this.postOffice = server.getPostOffice();
+      this.postOffice = postOffice;
       
-      this.id = server.getRemotingService().getDispatcher().generateID();
+      this.id = dispatcher.generateID();
             
       messageQueue.addConsumer(this);
    }

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerProducerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerProducerImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerProducerImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -27,6 +27,7 @@
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.postoffice.FlowController;
 import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.PacketReturner;
 import org.jboss.messaging.core.remoting.impl.wireformat.ProducerFlowCreditMessage;
 import org.jboss.messaging.core.server.ServerMessage;
@@ -69,9 +70,10 @@
 	                          final SimpleString address, 
 			                    final PacketReturner sender,
 			                    final FlowController flowController,
-			                    final int windowSize) throws Exception
+			                    final int windowSize,
+			                    final PacketDispatcher dispatcher) throws Exception
 	{
-		this.id = session.getConnection().getServer().getRemotingService().getDispatcher().generateID();
+		this.id = dispatcher.generateID();
 		
 		this.clientTargetID = clientTargetID;
       

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -123,9 +123,7 @@
    private final Executor executor;
 
    private Transaction tx;
-   
-   //We cache some of the services locally
-   
+     
    private final StorageManager storageManager;
 
    private final HierarchicalRepository<QueueSettings> queueSettingsRepository;
@@ -141,10 +139,18 @@
    // Constructors
    // ---------------------------------------------------------------------------------
 
-   public ServerSessionImpl(final ServerConnection connection, final boolean autoCommitSends,
+   public ServerSessionImpl(final ServerConnection connection,
+                            final boolean autoCommitSends,
                             final boolean autoCommitAcks,
                             final boolean xa, 
-                            final PacketReturner sender) throws Exception
+                            final PacketReturner sender,
+                            final StorageManager storageManager,
+                            final PostOffice postOffice,
+                            final HierarchicalRepository<QueueSettings> queueSettingsRepository,
+                            final ResourceManager resourceManager,
+                            final SecurityStore securityStore,
+                            final PacketDispatcher packetDispatcher,
+                            final Executor executor) throws Exception
    {
       this.autoCommitSends = autoCommitSends;
 
@@ -153,17 +159,22 @@
       this.connection = connection;
       
       this.sender = sender;
+            
+      this.storageManager = storageManager;
       
-      MessagingServer server = connection.getServer();
-            
-      this.storageManager = server.getStorageManager();
-      this.postOffice = server.getPostOffice();
-      this.queueSettingsRepository = server.getQueueSettingsRepository();
-      this.resourceManager = server.getResourceManager();
-      this.securityStore = server.getSecurityStore();
-      this.dispatcher = server.getRemotingService().getDispatcher();
+      this.postOffice = postOffice;
+      
+      this.queueSettingsRepository = queueSettingsRepository;
+      
+      this.resourceManager = resourceManager;
+      
+      this.securityStore = securityStore;
+      
+      this.dispatcher = packetDispatcher;
+      
       this.id = dispatcher.generateID();      
-      this.executor = server.getExecutorFactory().getExecutor();
+      
+      this.executor = executor;
 
       if (!xa)
       {
@@ -285,6 +296,7 @@
       {
          securityStore.check(msg.getDestination(), CheckType.WRITE, connection);
       }
+      
       catch (MessagingException e)
       {       
          if (!autoCommitSends)
@@ -992,7 +1004,11 @@
       ServerConsumer consumer =
               new ServerConsumerImpl(this, clientTargetID, binding.getQueue(), noLocal, filter,
                                      autoDeleteQueue, windowSize != -1, maxRate, connection.getID(),
-                                     connection.isStarted());
+                                     connection.isStarted(),
+                                     storageManager,
+                                     queueSettingsRepository,
+                                     postOffice,
+                                     dispatcher);
 
       dispatcher.register(new ServerConsumerPacketHandler(consumer));
 
@@ -1071,7 +1087,10 @@
 
       securityStore.check(binding.getAddress(), CheckType.READ, connection);
 
-      ServerBrowserImpl browser = new ServerBrowserImpl(this, binding.getQueue(), filterString == null ? null : filterString.toString());
+      ServerBrowserImpl browser =
+         new ServerBrowserImpl(this, binding.getQueue(),
+                               filterString == null ? null : filterString.toString(),
+                               dispatcher);
 
       browsers.add(browser);
 
@@ -1108,7 +1127,8 @@
       final int serverWindowSize = windowToUse == -1 ? -1 : (int)(windowToUse * 0.75);            
       
       ServerProducerImpl producer 
-         = new ServerProducerImpl(this, clientTargetID, address, sender, flowController, serverWindowSize);
+         = new ServerProducerImpl(this, clientTargetID, address, sender, flowController, serverWindowSize,
+                                  dispatcher);
 
       producers.add(producer);
 

Modified: trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -63,11 +63,11 @@
 
    private final Map<String, List<String>> connectionFactoryBindings = new HashMap<String, List<String>>();
 
-   private MessagingServerManagement messagingServerManagement;
-
-   public void setMessagingServerManagement(final MessagingServerManagement messagingServerManagement)
+   private final MessagingServerManagement messagingServerManagement;
+   
+   public JMSServerManagerImpl(final MessagingServerManagement serverManager)
    {
-      this.messagingServerManagement = messagingServerManagement;
+      messagingServerManagement = serverManager;
    }
 
    /**

Modified: trunk/src/main/org/jboss/messaging/util/ByteBufferWrapper.java
===================================================================
--- trunk/src/main/org/jboss/messaging/util/ByteBufferWrapper.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/src/main/org/jboss/messaging/util/ByteBufferWrapper.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -226,7 +226,9 @@
    	if (b == NULL)
    	{
    	   return null;
-   	} else {
+   	}
+   	else
+   	{
          return getSimpleString();
    	}
    }

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/JBMServerTestCase.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -585,9 +585,13 @@
    protected void removeAllMessages(String destName, boolean isQueue, int server) throws Exception
    {
       if (isQueue)
+      {
          servers.get(server).removeAllMessagesForQueue(destName);
+      }
       else
+      {
          servers.get(server).removeAllMessagesForTopic(destName);
+      }
    }
 
    public void dropTables() throws Exception
@@ -595,21 +599,7 @@
       dropAllTables();
    }
 
-
-//   public StorageManager getPersistenceManager()
-//   {
-//      try
-//      {
-//         return servers.get(0).getPersistenceManager();
-//      }
-//      catch (Exception e)
-//      {
-//         //will never happen as always is local
-//         return null;
-//      }
-//   }
-
-   protected void dropAllTables() throws Exception
+   private void dropAllTables() throws Exception
    {
       log.info("DROPPING ALL TABLES FROM DATABASE!");
 
@@ -723,9 +713,7 @@
    protected static void assertActiveConnectionsOnTheServer(int expectedSize)
    throws Exception
    {
-      ConnectionManager cm = servers.get(0).getMessagingServer()
-      .getConnectionManager();
-      assertEquals(expectedSize, cm.getActiveConnections().size());
+      assertEquals(expectedSize, servers.get(0).getMessagingServer().getServerManagement().getConnectionCount());
    }
 
    public static void deployConnectionFactory(String clientId, String objectName,
@@ -809,42 +797,6 @@
       servers.get(server).undeployConnectionFactory(objectName);
    }
 
-   private void clearDatabase() throws Exception
-   {
-      if (databaseClearer == null)
-      {
-         JBMBootstrapServer bootstrap = new JBMBootstrapServer(new String[]{"datasource.xml", "transaction-manager.xml", "database-clearer.xml"});
-         bootstrap.run();
-         databaseClearer = (DatabaseClearer) bootstrap.getKernel().getRegistry().getEntry("DatabaseClearer").getTarget();
-         databaseClearer.deleteAllData();
-      }
-      else
-      {
-         databaseClearer.deleteData();
-      }
-   }
-
-   /*protected void deployAdministeredObjects() throws Exception
-   {
-
-      ServerManagement.deployTopic("Topic1");
-      ServerManagement.deployTopic("Topic2");
-      ServerManagement.deployTopic("Topic3");
-      ServerManagement.deployQueue("Queue1");
-      ServerManagement.deployQueue("Queue2");
-      ServerManagement.deployQueue("Queue3");
-      ServerManagement.deployQueue("Queue4");
-
-      ic = getInitialContext();
-      cf = (JBossConnectionFactory) ic.lookup("/ConnectionFactory");
-      topic1 = (Topic) ic.lookup("/topic/Topic1");
-      topic2 = (Topic) ic.lookup("/topic/Topic2");
-      topic3 = (Topic) ic.lookup("/topic/Topic3");
-      queue1 = (Queue) ic.lookup("/queue/Queue1");
-      queue2 = (Queue) ic.lookup("/queue/Queue2");
-      queue3 = (Queue) ic.lookup("/queue/Queue3");
-      queue4 = (Queue) ic.lookup("/queue/Queue4");
-   }*/
    protected List listAllSubscriptionsForTopic(String s) throws Exception
    {
       return servers.get(0).listAllSubscriptionsForTopic(s);
@@ -872,7 +824,7 @@
 
    protected void setSecurityConfigOnManager(boolean b, String s, HashSet<Role> lockedConf) throws Exception
    {
-      servers.get(0).setSecurityConfigOnManager(b, s, lockedConf);
+      servers.get(0).configureSecurityForDestination(s, b, lockedConf);
    }
 
    protected void setRedeliveryDelayOnDestination(String dest, boolean isQueue, long delay) throws Exception
@@ -880,15 +832,6 @@
       servers.get(0).setRedeliveryDelayOnDestination(dest, isQueue, delay);
    }
 
-//   protected void setDefaultRedeliveryDelay(long delay) throws Exception
-//   {
-//      servers.get(0).setDefaultRedeliveryDelay(delay);
-//   }
-
-   /*public TransactionManager getTransactionManager()
-   {
-      return databaseClearer.getTransactionManager();
-   }*/
    protected void kill(int i) throws Exception
    {
       log.info("Attempting to kill server " + i);

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	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -31,12 +31,9 @@
 import java.util.Properties;
 import java.util.Set;
 
-import javax.jms.InvalidDestinationException;
 import javax.management.NotificationListener;
 import javax.management.ObjectName;
-import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.naming.NameNotFoundException;
 import javax.sql.DataSource;
 import javax.transaction.TransactionManager;
 import javax.transaction.UserTransaction;
@@ -48,7 +45,7 @@
 import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.jms.server.JMSServerManager;
 import org.jboss.messaging.microcontainer.JBMBootstrapServer;
-import org.jboss.messaging.util.JNDIUtil;
+import org.jboss.messaging.util.SimpleString;
 import org.jboss.test.messaging.tools.ConfigurationHelper;
 import org.jboss.test.messaging.tools.ServerManagement;
 import org.jboss.test.messaging.tools.jboss.MBeanConfigurationElement;
@@ -84,11 +81,6 @@
 
    private ServiceContainer sc;
 
-   // service dependencies
-   private ObjectName persistenceManagerObjectName;
-   private ObjectName postOfficeObjectName;
-   private ObjectName jmsUserManagerObjectName;
-
    // the server MBean itself
    private ObjectName serverPeerObjectName;
 
@@ -446,24 +438,6 @@
       return serverPeerObjectName;
    }
 
-//   /**
-//    * Only for in-VM use!
-//    */
-//   public MessageStore getMessageStore() throws Exception
-//   {
-//      return getServerPeer().getMessageStore();
-//   }
-
-//   public DestinationManager getDestinationManager() throws Exception
-//   {
-//      return getServerPeer().getDestinationManager();
-//   }
-//
-//   public StorageManager getPersistenceManager()
-//   {
-//      return getServerPeer().getPersistenceManagerInstance();
-//   }
-
    /**
     * Only for in-VM use!
     */
@@ -471,78 +445,6 @@
    {
       return getMessagingServer();
    }
-
-//   public void deployTopic(String name, String jndiName, boolean clustered) throws Exception
-//   {
-//      deployDestination(false, name, jndiName, clustered);
-//   }
-//
-//   public void deployTopic(String name, String jndiName, int fullSize, int pageSize,
-//                           int downCacheSize, boolean clustered) throws Exception
-//   {
-//      deployDestination(false, name, jndiName, fullSize, pageSize, downCacheSize, clustered);
-//   }
-//
-//   public void deployTopicProgrammatically(String name, String jndiName) throws Exception
-//   {
-//      deployTopic(name, jndiName, false);
-//   }
-//
-//   public void deployQueue(String name, String jndiName, boolean clustered) throws Exception
-//   {
-//      deployDestination(true, name, jndiName, clustered);
-//   }
-//
-//   public void deployQueue(String name, String jndiName, int fullSize, int pageSize,
-//                           int downCacheSize, boolean clustered) throws Exception
-//   {
-//      deployDestination(true, name, jndiName, fullSize, pageSize, downCacheSize, clustered);
-//   }
-//
-//   public void deployQueueProgrammatically(String name, String jndiName) throws Exception
-//   {
-//      deployQueue(name, jndiName, false);
-//   }
-//
-//   public void deployDestination(boolean isQueue, String name, String jndiName, boolean clustered) throws Exception
-//   {
-//      if (isQueue)
-//         getMessagingServer().deployQueue(name, jndiName);
-//      else
-//         getMessagingServer().deployTopic(name, jndiName);
-//   }
-//
-//   public void deployDestination(boolean isQueue,
-//                                 String name,
-//                                 String jndiName,
-//                                 int fullSize,
-//                                 int pageSize,
-//                                 int downCacheSize,
-//                                 boolean clustered) throws Exception
-//   {
-//      if (isQueue)
-//         getMessagingServer().deployQueue(name, jndiName, fullSize, pageSize, downCacheSize);
-//      else
-//         getMessagingServer().deployTopic(name, jndiName, fullSize, pageSize, downCacheSize);
-//   }
-//
-//   public void undeployDestination(boolean isQueue, String name) throws Exception
-//   {
-//      if (isQueue)
-//         getMessagingServer().undeployQueue(name);
-//      else
-//         getMessagingServer().undeployTopic(name);
-//   }
-//
-//   public boolean undeployDestinationProgrammatically(boolean isQueue, String name) throws Exception
-//   {
-//      if (isQueue)
-//         return getMessagingServer().undeployQueue(name);
-//      else
-//         return getMessagingServer().undeployTopic(name);
-//   }
-
-
    public void destroyQueue(String name, String jndiName) throws Exception
    {
       this.getJMSServerManager().destroyQueue(name);
@@ -563,36 +465,6 @@
       this.getJMSServerManager().createTopic(name, "/topic/" + (jndiName != null ? jndiName : name));
    }
 
-   private void bindObject(String jndiName, Object object)
-           throws Exception
-   {
-      String parentContext;
-      String jndiNameInContext;
-      int sepIndex = jndiName.lastIndexOf('/');
-      if (sepIndex == -1)
-      {
-         parentContext = "";
-      }
-      else
-      {
-         parentContext = jndiName.substring(0, sepIndex);
-      }
-      jndiNameInContext = jndiName.substring(sepIndex + 1);
-      try
-      {
-         getInitialContext().lookup(jndiName);
-         throw new InvalidDestinationException("Destination " + jndiName + " already exists");
-      }
-      catch (NameNotFoundException e)
-      {
-         // OK
-      }
-
-      Context c = JNDIUtil.createContext(getInitialContext(), parentContext);
-
-      c.rebind(jndiNameInContext, object);
-   }
-
    public void deployConnectionFactory(String clientId, String objectName,
                                        List<String> jndiBindings) throws Exception
    {
@@ -660,11 +532,11 @@
       String prefix = isQueue ? "queuejms." : "topicjms.";
       if (roles != null)
       {
-         getMessagingServer().getSecurityRepository().addMatch(prefix + destName, roles);
+         getMessagingServer().getServerManagement().setSecurityForAddress(prefix + destName, roles);
       }
       else
       {
-         getMessagingServer().getSecurityRepository().removeMatch(prefix + destName);
+         getMessagingServer().getServerManagement().removeSecurityForAddress(prefix + destName);
       }
    }
 
@@ -679,26 +551,6 @@
       return null;
    }
 
-//   public Set getNodeIDView() throws Exception
-//   {
-//      return getServerPeer().getPostOffice().nodeIDView();
-//   }
-//
-//   public Map getFailoverMap() throws Exception
-//   {
-//      return getServerPeer().getPostOffice().getFailoverMap();
-//   }
-//
-//   public Map getRecoveryArea(String queueName) throws Exception
-//   {
-//      return getServerPeer().getPostOffice().getRecoveryArea(queueName);
-//   }
-//
-//   public int getRecoveryMapSize(String queueName) throws Exception
-//   {
-//      return getServerPeer().getPostOffice().getRecoveryMapSize(queueName);
-//   }
-
    public List pollNotificationListener(long listenerID) throws Exception
    {
       throw new IllegalStateException("Poll doesn't make sense on a local server. " +
@@ -800,29 +652,21 @@
 
    public Set<Role> getSecurityConfig() throws Exception
    {
-      return getMessagingServer().getSecurityRepository().getMatch("*");
+      return getMessagingServer().getServerManagement().getSecurityForAddress("*");
    }
 
    public void setSecurityConfig(Set<Role> defConfig) throws Exception
    {
-      getMessagingServer().getSecurityRepository().removeMatch("*");
-      getMessagingServer().getSecurityRepository().addMatch("*", defConfig);      
+      getMessagingServer().getServerManagement().removeSecurityForAddress("*");
+      getMessagingServer().getServerManagement().setSecurityForAddress("*", defConfig);      
    }
 
-
-   public void setSecurityConfigOnManager(boolean b, String s, Set<Role> conf) throws Exception
-   {
-      String prefix = b ? "queuejms." : "topicjms.";
-      getMessagingServer().getSecurityRepository().addMatch(prefix + s, conf);
-   }
-
-
    public void setRedeliveryDelayOnDestination(String dest, boolean queue, long delay) throws Exception
    {
       String condition = (queue ? "queuejms." : "topicjms.") + dest;
       QueueSettings queueSettings = new QueueSettings();
       queueSettings.setRedeliveryDelay(delay);
-      getMessagingServer().getQueueSettingsRepository().addMatch(condition, queueSettings);
+      getMessagingServer().getServerManagement().setQueueAttributes(condition, queueSettings);      
    }
 
 

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	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/RMITestServer.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -26,7 +26,6 @@
 import java.rmi.server.UnicastRemoteObject;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
@@ -312,76 +311,11 @@
       return server.isStarted();
    }
 
-//   public MessageStore getMessageStore() throws Exception
-//   {
-//      return server.getMessageStore();
-//   }
-//
-//   public DestinationManager getDestinationManager() throws Exception
-//   {
-//      return server.getDestinationManager();
-//   }
-//
-//   public StorageManager getPersistenceManager()
-//   {
-//      return server.getPersistenceManager();
-//   }
-
    public MessagingServer getServerPeer() throws Exception
    {
       return server.getServerPeer();
    }
 
-//   public void deployTopic(String name, String jndiName, boolean clustered) throws Exception
-//   {
-//      server.deployTopic(name, jndiName, clustered);
-//   }
-//
-//   public void deployTopic(String name,
-//                           String jndiName,
-//                           int fullSize,
-//                           int pageSize,
-//                           int downCacheSize,
-//                           boolean clustered) throws Exception
-//   {
-//      server.deployTopic(name, jndiName, fullSize, pageSize, downCacheSize, clustered);
-//   }
-//
-//   public void deployTopicProgrammatically(String name, String jndiName) throws Exception
-//   {
-//      server.deployTopicProgrammatically(name, jndiName);
-//   }
-//
-//   public void deployQueue(String name, String jndiName, boolean clustered) throws Exception
-//   {
-//      server.deployQueue(name, jndiName, clustered);
-//   }
-//
-//   public void deployQueue(String name,
-//                           String jndiName,
-//                           int fullSize,
-//                           int pageSize,
-//                           int downCacheSize,
-//                           boolean clustered) throws Exception
-//   {
-//      server.deployQueue(name, jndiName, fullSize, pageSize, downCacheSize, clustered);
-//   }
-//
-//   public void deployQueueProgrammatically(String name, String jndiName) throws Exception
-//   {
-//      server.deployQueueProgrammatically(name, jndiName);
-//   }
-//
-//   public void undeployDestination(boolean isQueue, String name) throws Exception
-//   {
-//      server.undeployDestination(isQueue, name);
-//   }
-//
-//   public boolean undeployDestinationProgrammatically(boolean isQueue, String name) throws Exception
-//   {
-//      return server.undeployDestinationProgrammatically(isQueue, name);
-//   }
-   
    public void destroyQueue(String name, String jndiName) throws Exception
    {
       server.destroyQueue(name, jndiName);
@@ -549,24 +483,12 @@
       server.setSecurityConfig(defConfig);
    }
 
-
-   public void setSecurityConfigOnManager(boolean b, String s, Set<Role> conf) throws Exception
-   {
-      server.setSecurityConfigOnManager(b, s, conf);
-   }
-
-
    public void setRedeliveryDelayOnDestination(String dest, boolean queue, long delay) throws Exception
    {
       server.setRedeliveryDelayOnDestination(dest, queue, delay);
    }
 
 
-//   public void setDefaultRedeliveryDelay(long delay) throws Exception
-//   {
-//      server.setDefaultRedeliveryDelay(delay);
-//   }
-
    public InitialContext getInitialContext() throws Exception
    {
       Hashtable env = new Hashtable();

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	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/Server.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -266,7 +266,7 @@
 
    void setSecurityConfig(Set<Role> defConfig) throws Exception;
 
-   void setSecurityConfigOnManager(boolean b, String s, Set<Role> lockedConf) throws Exception;
+   //void setSecurityConfigOnManager(boolean b, String s, Set<Role> lockedConf) throws Exception;
 
    void setRedeliveryDelayOnDestination(String dest, boolean queue, long delay) throws Exception;
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/impl/ClientCrashTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/impl/ClientCrashTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/impl/ClientCrashTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -186,8 +186,7 @@
    private void assertActiveConnections(int expectedActiveConnections)
            throws Exception
    {
-      ConnectionManager cm = messagingService.getServer().getConnectionManager();
-      assertEquals(expectedActiveConnections, cm.getActiveConnections().size());
+      assertEquals(expectedActiveConnections, messagingService.getServer().getServerManagement().getConnectionCount());
    }
 
    // Inner classes -------------------------------------------------

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/impl/PacketFilterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/impl/PacketFilterTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/impl/PacketFilterTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -93,13 +93,11 @@
       ClientConnectionFactory cf = new ClientConnectionFactoryImpl(location);
       ClientConnection conn = null;
       try
-      {
-         
+      {         
          // Deploy using the API
          interceptorA = new DummyInterceptor();
          messagingService.getServer().getRemotingService().addInterceptor(interceptorA);
-         
-         
+                  
          interceptorA.sendException=true;
          try
          {
@@ -117,8 +115,7 @@
          conn.createClientSession(false, true, true, -1, false, false);
          conn.close();
          conn = null;
-         
-         
+                  
          assertEquals(0, DummyInterceptorB.getCounter());
          assertTrue(interceptorA.getCounter() > 0);
          
@@ -146,7 +143,6 @@
          
          assertTrue(DummyInterceptorB.getCounter() > 0);
          assertTrue(interceptorA.getCounter() == 0);
-
          
          log.info("Undeploying server");
          messagingService.getServer().getRemotingService().removeInterceptor(interceptorB);
@@ -188,13 +184,11 @@
       ClientConnection conn = null;
         
       try
-      {
-         
+      {         
          interceptor = new DummyInterceptor();
          messagingService.getServer().getRemotingService().addInterceptor(interceptor);
-         messagingService.getServer().getPostOffice().addBinding(QUEUE1, QUEUE1, null, false, false);
-         
-         interceptor.sendException=false;
+ 
+         interceptor.sendException = false;
 
          Location location = new LocationImpl(TransportType.TCP, "localhost", ConfigurationImpl.DEFAULT_PORT);
          
@@ -202,6 +196,9 @@
          conn = cf.createConnection();
          conn.start();
          ClientSession session = conn.createClientSession(false, true, true, -1, false, false);
+         
+         session.createQueue(QUEUE1, QUEUE1, null, false, true);
+         
          ClientProducer producer = session.createProducer(QUEUE1);
          String msg = "msg " + UUID.randomUUID().toString();
          
@@ -213,8 +210,7 @@
          ClientConsumer consumer = session.createConsumer(QUEUE1);
          Message m = consumer.receive(100000);
          assertEquals(m.getProperty(new SimpleString("DummyInterceptor")), new SimpleString("was here"));
-         
-         
+                  
          assertNotNull(m);
          
          assertEquals(msg, m.getBody().getString());

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/impl/JMSServerManagerimplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/impl/JMSServerManagerimplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/impl/JMSServerManagerimplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -35,7 +35,6 @@
 import junit.framework.TestCase;
 
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
-import org.jboss.messaging.core.management.impl.MessagingServerManagementImpl;
 import org.jboss.messaging.core.server.MessagingService;
 import org.jboss.messaging.core.server.impl.MessagingServiceImpl;
 import org.jboss.messaging.jms.client.JBossConnectionFactory;
@@ -53,15 +52,13 @@
 
    protected void setUp() throws Exception
    {
-      jmsServerManager = new JMSServerManagerImpl();
-      MessagingServerManagementImpl messagingServerManagement = new MessagingServerManagementImpl();
+           
       ConfigurationImpl conf = new ConfigurationImpl();
       conf.getConnectionParams().setInVMOptimisationEnabled(true);
       conf.setTransport(INVM);
       messagingService = MessagingServiceImpl.newNullStorageMessagingServer(conf);
       messagingService.start();
-      jmsServerManager.setMessagingServerManagement(messagingServerManagement);
-      messagingServerManagement.setMessagingServer(messagingService.getServer());
+      jmsServerManager = new JMSServerManagerImpl(messagingService.getServer().getServerManagement());     
       Hashtable env = new Hashtable();
       env.put("java.naming.factory.initial",
               "org.jboss.messaging.tests.util.InVMSingleInitialContextFactory");

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientBrowserImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientBrowserImplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientBrowserImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -25,6 +25,7 @@
 import org.easymock.EasyMock;
 import org.jboss.messaging.core.client.ClientBrowser;
 import org.jboss.messaging.core.client.ClientMessage;
+import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.impl.ClientBrowserImpl;
 import org.jboss.messaging.core.client.impl.ClientConnectionInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionInternal;
@@ -49,18 +50,13 @@
    public void testConstructor() throws Exception
    {
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
-      ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
             
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
+      final long serverTargetID = 1209102;
+      final long sessionTargetID = 19281982;
       
-      EasyMock.replay(session, connection, rc);
-      
       ClientBrowser browser =
-         new ClientBrowserImpl(session, 67567576);
-      
-      EasyMock.verify(session, connection, rc);            
+         new ClientBrowserImpl(session, serverTargetID, rc, sessionTargetID);      
    }
    
    public void testHasNextMessage() throws Exception
@@ -71,163 +67,129 @@
    
    public void testNextMessage() throws Exception
    {
-      ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
-      ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);      
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
             
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
+      final long serverTargetID = 1209102;
+      final long sessionTargetID = 19281982;
       
-      final long targetID = 187282;
-      
-      long sessionTargetID = 198271982;
-      
       ReceiveMessage resp = new ReceiveMessage();
       
-      EasyMock.expect(session.getServerTargetID()).andReturn(sessionTargetID);
+      EasyMock.expect(rc.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_NEXTMESSAGE))).andReturn(resp);
       
-      EasyMock.expect(rc.sendBlocking(targetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_NEXTMESSAGE))).andReturn(resp);
+      EasyMock.replay(session, rc);
       
-      EasyMock.replay(session, connection, rc);
-      
       ClientBrowser browser =
-         new ClientBrowserImpl(session, targetID);
+         new ClientBrowserImpl(session, serverTargetID, rc, sessionTargetID);      
             
       ClientMessage msg2 = browser.nextMessage();
       
       assertTrue(msg2 == null);
       
-      EasyMock.verify(session, connection, rc);            
+      EasyMock.verify(session, rc);            
    }
    
    public void testReset() throws Exception
    {
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
-      ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
             
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
+      final long serverTargetID = 1209102;
+      final long sessionTargetID = 19281982;
+            
+      ClientBrowser browser =
+         new ClientBrowserImpl(session, serverTargetID, rc, sessionTargetID);  
       
-      final long targetID = 187282;
+      EasyMock.expect(rc.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_RESET))).andReturn(null);
       
-      long sessionTargetID = 198271982;
+      EasyMock.replay(session, rc);
       
-      EasyMock.expect(session.getServerTargetID()).andReturn(sessionTargetID);
-      
-      EasyMock.expect(rc.sendBlocking(targetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_RESET))).andReturn(null);
-      
-      EasyMock.replay(session, connection, rc);
-      
-      ClientBrowser browser =
-         new ClientBrowserImpl(session, targetID);
-            
       browser.reset();
       
-      EasyMock.verify(session, connection, rc);            
+      EasyMock.verify(session, rc);            
    }
    
    public void testClose() throws Exception
    {
-      ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
-      ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);     
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
             
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
-      EasyMock.replay(session, connection, rc);
-      
-      final long targetID = 187282;
-      
+      final long serverTargetID = 1209102;
+      final long sessionTargetID = 19281982;
+            
       ClientBrowser browser =
-         new ClientBrowserImpl(session, targetID);
+         new ClientBrowserImpl(session, serverTargetID, rc, sessionTargetID);  
+       
+      EasyMock.expect(rc.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.CLOSE))).andReturn(null);
       
-      EasyMock.verify(session, connection, rc);  
-      
-      EasyMock.reset(session, connection, rc);
-      
-      long sessionTargetID = 198271982;
-      
-      EasyMock.expect(session.getServerTargetID()).andReturn(sessionTargetID);
-      
-      EasyMock.expect(rc.sendBlocking(targetID, sessionTargetID, new PacketImpl(PacketImpl.CLOSE))).andReturn(null);
-      
       session.removeBrowser(browser);
       
-      EasyMock.replay(session, connection, rc);
+      EasyMock.replay(session, rc);
       
       assertFalse(browser.isClosed());
             
       browser.close();
       
-      EasyMock.verify(session, connection, rc);
+      EasyMock.verify(session, rc);
       
       assertTrue(browser.isClosed());
       
       //Try and close again - nothing should happen
       
-      EasyMock.reset(session, connection, rc);
+      EasyMock.reset(session, rc);
       
-      EasyMock.replay(session, connection, rc);
+      EasyMock.replay(session, rc);
       
       browser.close();
                 
-      EasyMock.verify(session, connection, rc);
+      EasyMock.verify(session, rc);
    }
 
    // Private -----------------------------------------------------------------------------------------------------------
    
    private void testHasNextMessage(final boolean hasNext) throws Exception
    {
-      ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
-      ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);     
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
             
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
+      final long serverTargetID = 187282;
       
-      final long targetID = 187282;
+      final long sessionTargetID = 198271982;
       
-      long sessionTargetID = 198271982;
-      
       SessionBrowserHasNextMessageResponseMessage resp = new SessionBrowserHasNextMessageResponseMessage(hasNext);
       
-      EasyMock.expect(session.getServerTargetID()).andReturn(sessionTargetID);
+      EasyMock.expect(rc.sendBlocking(serverTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_HASNEXTMESSAGE))).andReturn(resp);
       
-      EasyMock.expect(rc.sendBlocking(targetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_BROWSER_HASNEXTMESSAGE))).andReturn(resp);
+      EasyMock.replay(session, rc);
       
-      EasyMock.replay(session, connection, rc);
-      
       ClientBrowser browser =
-         new ClientBrowserImpl(session, targetID);
+         new ClientBrowserImpl(session, serverTargetID, rc, sessionTargetID);      
             
       boolean has = browser.hasNextMessage();
       
       assertEquals(has, hasNext);
       
-      EasyMock.verify(session, connection, rc);            
+      EasyMock.verify(session, rc);            
    }
 
    public void testCleanUp() throws Exception
    {
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
-      ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
 
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-
-      EasyMock.replay(session, connection, rc);
-
+      final long serverTargetID = 187282;
+      
+      final long sessionTargetID = 198271982;
+      
       ClientBrowser browser =
-         new ClientBrowserImpl(session, 67567576);
-      EasyMock.verify(session, connection, rc);
-      EasyMock.reset(session, connection, rc);
+         new ClientBrowserImpl(session, serverTargetID, rc, sessionTargetID);      
+      
       session.removeBrowser(browser);
-      EasyMock.replay(session, connection, rc);
+      
+      EasyMock.replay(session, rc);
+      
       browser.cleanUp();
-      EasyMock.verify(session, connection, rc);
-
+      
+      EasyMock.verify(session, rc);
    }
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -33,6 +33,7 @@
 import org.jboss.messaging.core.client.impl.LocationImpl;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.RemotingConnectionFactory;
 import org.jboss.messaging.core.remoting.TransportType;
@@ -220,6 +221,8 @@
       
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      
       ClientConnectionFactory cf =
          new ClientConnectionFactoryImpl(rcf, location, params,
                32432, 4323,
@@ -244,8 +247,10 @@
       
       EasyMock.expect(rc.sendBlocking(0, 0, request)).andReturn(response);
       
-      EasyMock.replay(rcf, rc);
+      EasyMock.expect(rc.getPacketDispatcher()).andReturn(dispatcher);
       
+      EasyMock.replay(rcf, rc, dispatcher);
+      
       ClientConnection conn;
       
       if (username == null)         
@@ -257,7 +262,7 @@
          conn = cf.createConnection(username, password);
       }
          
-      EasyMock.verify(rcf, rc);
+      EasyMock.verify(rcf, rc, dispatcher);
       
       assertTrue(conn instanceof ClientConnectionImpl);
       

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -27,6 +27,7 @@
 import org.jboss.messaging.core.client.impl.*;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.TransportType;
 import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionMessage;
@@ -49,7 +50,7 @@
 {
    private static final Logger log = Logger.getLogger(ClientConnectionImplTest.class);
 
-   public void testGetAttributes() throws Exception
+   public void testConstructor() throws Exception
    {
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);   
 
@@ -58,11 +59,18 @@
       Location location = new LocationImpl(TransportType.TCP, "sausages");
 
       ClientConnectionFactory cf = new ClientConnectionFactoryImpl(location);
+      
+      final long serverTargetID = 12091092;
+      
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      
+      EasyMock.replay(rc, pd);
+      
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
+      
+      EasyMock.verify(rc, pd);
 
-      ClientConnectionInternal conn = new ClientConnectionImpl(cf, 23, rc, version);
-
       assertTrue(conn.getServerVersion() == version);
-      assertTrue(conn.getRemotingConnection() == rc);      
    }
 
    public void testCreateSession() throws Exception
@@ -86,19 +94,21 @@
 
       final int serverTargetID = 23;
       
-      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
+      
       rc.sendOneWay(serverTargetID, serverTargetID, new PacketImpl(PacketImpl.CONN_START));
       
       EasyMock.expect(rc.sendBlocking(serverTargetID, serverTargetID, new PacketImpl(PacketImpl.CONN_STOP))).andReturn(null);
       
-      EasyMock.replay(rc);
+      EasyMock.replay(rc, pd);
       
       conn.start();
       
       conn.stop();
       
-      EasyMock.verify(rc);            
+      EasyMock.verify(rc, pd);            
    }
    
    public void testSetRemotingSessionListener() throws Exception
@@ -113,8 +123,10 @@
 
       final int serverTargetID = 23;
       
-      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
+      
       RemotingSessionListener listener = new RemotingSessionListener()
       {
          public void sessionDestroyed(long sessionID, MessagingException me)
@@ -124,11 +136,11 @@
       
       rc.setRemotingSessionListener(listener);
             
-      EasyMock.replay(rc);
+      EasyMock.replay(rc, pd);
       
       conn.setRemotingSessionListener(listener);
       
-      EasyMock.verify(rc);            
+      EasyMock.verify(rc, pd);            
    }
    
    public void testClose() throws Exception
@@ -143,8 +155,10 @@
       
       final int serverTargetID = 23;
       
-      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
+      
       assertFalse(conn.isClosed());
     
       //Create some sessions
@@ -167,22 +181,22 @@
             
       rc.stop();      
       
-      EasyMock.replay(rc, sess1, sess2, sess3);
+      EasyMock.replay(rc, pd, sess1, sess2, sess3);
       
       conn.close();
       
-      EasyMock.verify(rc, sess1, sess2, sess3);
+      EasyMock.verify(rc, pd, sess1, sess2, sess3);
       
       assertTrue(conn.isClosed());
       
       //Close again should do nothing
-      EasyMock.reset(rc, sess1, sess2, sess3);
+      EasyMock.reset(rc, pd, sess1, sess2, sess3);
       
-      EasyMock.replay(rc, sess1, sess2, sess3);
+      EasyMock.replay(rc, pd, sess1, sess2, sess3);
       
       conn.close();
       
-      EasyMock.verify(rc, sess1, sess2, sess3);
+      EasyMock.verify(rc, pd, sess1, sess2, sess3);
       
       try
       {
@@ -252,8 +266,10 @@
       
       final int serverTargetID = 23;
       
-      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
+      
       //Create some sessions
       
       ClientSessionInternal sess1 = EasyMock.createStrictMock(ClientSessionInternal.class);
@@ -299,11 +315,13 @@
 
       ClientConnectionFactory cf = new ClientConnectionFactoryImpl(location);
 
-      final int connTargetID = 17267162;
+      final int serverTargetID = 17267162;
 
       Version version = new VersionImpl("uqysuyqs", 1, 1, 1, 12, "uqysuays");
 
-      ClientConnection conn = new ClientConnectionImpl(cf, connTargetID, rc, version);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
 
       ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(true, true, true);
 
@@ -311,14 +329,15 @@
 
       ConnectionCreateSessionResponseMessage response = new ConnectionCreateSessionResponseMessage(sessionTargetID);
 
-      EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response);
+      EasyMock.expect(rc.sendBlocking(serverTargetID, serverTargetID, request)).andReturn(response);
 
-      EasyMock.replay(rc);
+      EasyMock.replay(rc, pd);
+      
       ClientSession session = conn.createClientSession(true, true, true, 1);
       conn.cleanUp();
       assertTrue(session.isClosed());
       assertTrue(conn.isClosed());
-      EasyMock.verify(rc);
+      EasyMock.verify(rc, pd);
    }
 
 
@@ -330,11 +349,13 @@
 
       ClientConnectionFactory cf = new ClientConnectionFactoryImpl(location);
 
-      final int connTargetID = 17267162;
+      final int serverTargetID = 17267162;
 
       Version version = new VersionImpl("uqysuyqs", 1, 1, 1, 12, "uqysuays");
 
-      ClientConnection conn = new ClientConnectionImpl(cf, connTargetID, rc, version);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
 
       ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(true, true, true);
 
@@ -342,18 +363,18 @@
 
       ConnectionCreateSessionResponseMessage response = new ConnectionCreateSessionResponseMessage(sessionTargetID);
 
-      EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response).anyTimes();
+      EasyMock.expect(rc.sendBlocking(serverTargetID, serverTargetID, request)).andReturn(response).anyTimes();
 
-      EasyMock.replay(rc);
-      ClientSession session = conn.createClientSession(true, true, true, 1);
+      EasyMock.replay(rc, pd);
+      ClientSession session1 = conn.createClientSession(true, true, true, 1);
       ClientSession session2 = conn.createClientSession(true, true, true, 2);
       ClientSession session3 = conn.createClientSession(true, true, true, 3);
       conn.cleanUp();
-      assertTrue(session.isClosed());
+      assertTrue(session1.isClosed());
       assertTrue(session2.isClosed());
       assertTrue(session3.isClosed());
       assertTrue(conn.isClosed());
-      EasyMock.verify(rc);
+      EasyMock.verify(rc, pd);
 
    }
                
@@ -379,21 +400,23 @@
          cf.setDefaultBlockOnAcknowledge(!blockOnAcknowledge); // Should be ignored
       }
 
-      final int connTargetID = 17267162;
+      final int serverTargetID = 17267162;
 
       Version version = new VersionImpl("uqysuyqs", 1, 1, 1, 12, "uqysuays");
+      
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      
+      ClientConnectionInternal conn = new ClientConnectionImpl(cf, serverTargetID, rc, version, pd);
 
-      ClientConnection conn = new ClientConnectionImpl(cf, connTargetID, rc, version);
-
       ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(xa, autoCommitSends, autoCommitAcks);
 
       final int sessionTargetID = 12127162;
 
       ConnectionCreateSessionResponseMessage response = new ConnectionCreateSessionResponseMessage(sessionTargetID);
 
-      EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response);
+      EasyMock.expect(rc.sendBlocking(serverTargetID, serverTargetID, request)).andReturn(response);
 
-      EasyMock.replay(rc);
+      EasyMock.replay(rc, pd);
 
       ClientSession session;
 
@@ -413,6 +436,6 @@
       assertEquals(autoCommitAcks, session.isAutoCommitAcks());
       assertEquals(blockOnAcknowledge, session.isBlockOnAcknowledge());
 
-      EasyMock.verify(rc);
+      EasyMock.verify(rc, pd);
    }
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConsumerImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConsumerImplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConsumerImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -62,20 +62,15 @@
       testConstructor(6565, 71627162, -1, false);
       testConstructor(6565, 71627162, -1, true);
    }
-   
-   
+      
    public void testHandleMessageNoHandler() throws Exception
    {
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
-      
-
-      EasyMock.expect(session.getExecutorService()).andReturn(executor);
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);      
+     
       final int numMessages = 10;
       
       List<ClientMessage> msgs = new ArrayList<ClientMessage>();
@@ -89,18 +84,18 @@
          EasyMock.expect(msg.getPriority()).andReturn((byte)4); //default priority
       }
             
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd);
       EasyMock.replay(msgs.toArray());
       
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, false);
-      
+         new ClientConsumerImpl(session, 675765, 67565, 787, false, rc, pd, executor, 878787);
+            
       for (ClientMessage msg: msgs)
       {
          consumer.handleMessage(msg);
       }
       
-      EasyMock.verify(session, connection, rc, executor);      
+      EasyMock.verify(session, connection, rc, executor, pd);      
       EasyMock.verify(msgs.toArray());
       
       assertEquals(numMessages, consumer.getBufferSize());         
@@ -112,12 +107,8 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);  
       
-
-      EasyMock.expect(session.getExecutorService()).andReturn(executor);
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
       final int numMessages = 10;
       
       List<ClientMessage> msgs = new ArrayList<ClientMessage>();
@@ -133,11 +124,11 @@
          executor.execute(EasyMock.isA(Runnable.class));
       }
             
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd);
       EasyMock.replay(msgs.toArray());
       
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, false);
+         new ClientConsumerImpl(session, 675765, 67565, 787, false, rc, pd, executor, 878787);
       
       consumer.setMessageHandler(new MessageHandler()
       {
@@ -151,7 +142,7 @@
          consumer.handleMessage(msg);
       }
       
-      EasyMock.verify(session, connection, rc, executor);      
+      EasyMock.verify(session, connection, rc, executor, pd);      
       EasyMock.verify(msgs.toArray());
       
       assertEquals(numMessages, consumer.getBufferSize());         
@@ -163,12 +154,9 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);  
       MessageHandler handler = EasyMock.createStrictMock(MessageHandler.class);
       
-      EasyMock.expect(session.getExecutorService()).andReturn(executor);
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
       final int numMessages = 10;
       
       List<ClientMessage> msgs = new ArrayList<ClientMessage>();
@@ -190,11 +178,11 @@
          handler.onMessage(msg);
       }
             
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd, handler);
       EasyMock.replay(msgs.toArray());
       
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, true);
+         new ClientConsumerImpl(session, 675765, 67565, 787, true, rc, pd, executor, 878787);
       
       consumer.setMessageHandler(handler);
       
@@ -203,7 +191,7 @@
          consumer.handleMessage(msg);
       }
       
-      EasyMock.verify(session, connection, rc, executor);      
+      EasyMock.verify(session, connection, rc, executor, pd, handler);      
       EasyMock.verify(msgs.toArray());
       
       assertEquals(0, consumer.getBufferSize());         
@@ -215,11 +203,9 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);  
+      MessageHandler handler = EasyMock.createStrictMock(MessageHandler.class);
       
-      EasyMock.expect(session.getExecutorService()).andReturn(executor);
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
       final int numMessages = 10;
       
       List<ClientMessage> msgs = new ArrayList<ClientMessage>();
@@ -233,21 +219,21 @@
          EasyMock.expect(msg.getPriority()).andReturn((byte)4); //default priority
       }
             
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd);
       EasyMock.replay(msgs.toArray());
       
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, false);
+         new ClientConsumerImpl(session, 675765, 67565, 787, false, rc, pd, executor, 878787);
       
       for (ClientMessage msg: msgs)
       {
          consumer.handleMessage(msg);
       }
       
-      EasyMock.verify(session, connection, rc, executor);      
+      EasyMock.verify(session, connection, rc, executor, pd);      
       EasyMock.verify(msgs.toArray());
       
-      EasyMock.reset(session, connection, rc, executor);      
+      EasyMock.reset(session, connection, rc, executor, pd);      
       EasyMock.reset(msgs.toArray());
       
       assertEquals(numMessages, consumer.getBufferSize());
@@ -257,14 +243,13 @@
          executor.execute(EasyMock.isA(Runnable.class));
       }
       
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd, handler);
       EasyMock.replay(msgs.toArray());
       
-      MessageHandler handler = EasyMock.createStrictMock(MessageHandler.class);
       
       consumer.setMessageHandler(handler);
       
-      EasyMock.verify(session, connection, rc, executor);
+      EasyMock.verify(session, connection, rc, executor, pd, handler);
       EasyMock.verify(msgs.toArray());   
    }
    
@@ -274,12 +259,8 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
-      
-      EasyMock.expect(session.getExecutorService()).andStubReturn(executor);
-      EasyMock.expect(session.getConnection()).andStubReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andStubReturn(rc);
-      
-      
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);  
+       
       final int numMessages = 10;
       
       List<ClientMessage> msgs = new ArrayList<ClientMessage>();
@@ -301,11 +282,11 @@
          EasyMock.expect(msg.getEncodeSize()).andReturn(1);
       }
       
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd);
       EasyMock.replay(msgs.toArray());
             
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, false);
+         new ClientConsumerImpl(session, 675765, 67565, 787, false, rc, pd, executor, 878787);
       
       for (ClientMessage msg: msgs)
       {
@@ -321,7 +302,10 @@
          assertTrue(msg == msgs.get(i));
       }
 
-      assertNull(consumer.receiveImmediate());      
+      assertNull(consumer.receiveImmediate());  
+      
+      EasyMock.verify(session, connection, rc, executor, pd);
+      EasyMock.verify(msgs.toArray());
    }
    
    public void testReceiveWithTimeout() throws Exception
@@ -330,12 +314,8 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
-      
-      EasyMock.expect(session.getExecutorService()).andStubReturn(executor);
-      EasyMock.expect(session.getConnection()).andStubReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andStubReturn(rc);
-      
-      
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);  
+            
       final int numMessages = 10;
       
       List<ClientMessage> msgs = new ArrayList<ClientMessage>();
@@ -357,11 +337,11 @@
          EasyMock.expect(msg.getEncodeSize()).andReturn(1);
       }
       
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd);
       EasyMock.replay(msgs.toArray());
             
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, false);
+         new ClientConsumerImpl(session, 675765, 67565, 787, false, rc, pd, executor, 878787);
       
       for (ClientMessage msg: msgs)
       {
@@ -378,6 +358,9 @@
       }
 
       assertNull(consumer.receiveImmediate());           
+      
+      EasyMock.verify(session, connection, rc, executor, pd);
+      EasyMock.verify(msgs.toArray());
    }
    
    public void testReceiveImmediate() throws Exception
@@ -386,12 +369,8 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
-      
-      EasyMock.expect(session.getExecutorService()).andStubReturn(executor);
-      EasyMock.expect(session.getConnection()).andStubReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andStubReturn(rc);
-      
-      
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+            
       final int numMessages = 10;
       
       List<ClientMessage> msgs = new ArrayList<ClientMessage>();
@@ -413,11 +392,11 @@
          EasyMock.expect(msg.getEncodeSize()).andReturn(1);
       }
       
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd);
       EasyMock.replay(msgs.toArray());
             
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, false);
+         new ClientConsumerImpl(session, 675765, 67565, 787, false, rc, pd, executor, 878787);
       
       for (ClientMessage msg: msgs)
       {
@@ -433,7 +412,10 @@
          assertTrue(msg == msgs.get(i));
       }
 
-      assertNull(consumer.receiveImmediate());           
+      assertNull(consumer.receiveImmediate());      
+      
+      EasyMock.verify(session, connection, rc, executor, pd);
+      EasyMock.verify(msgs.toArray());
    }
    
    public void testReceiveExpired() throws Exception
@@ -442,10 +424,7 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
-      
-      EasyMock.expect(session.getExecutorService()).andStubReturn(executor);
-      EasyMock.expect(session.getConnection()).andStubReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andStubReturn(rc);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
             
       final int numMessages = 10;
       
@@ -468,11 +447,11 @@
          EasyMock.expect(msg.getEncodeSize()).andReturn(1);
       }
       
-      EasyMock.replay(session, connection, rc, executor);
+      EasyMock.replay(session, connection, rc, executor, pd);
       EasyMock.replay(msgs.toArray());
             
       ClientConsumerInternal consumer =
-         new ClientConsumerImpl(session, 54545, 54544, 545454, false);
+         new ClientConsumerImpl(session, 675765, 67565, 787, false, rc, pd, executor, 878787);
       
       for (ClientMessage msg: msgs)
       {
@@ -481,7 +460,13 @@
 
       assertEquals(numMessages, consumer.getBufferSize());         
 
-      assertNull(consumer.receiveImmediate());           
+      for (ClientMessage msg: msgs)
+      {
+         assertNull(consumer.receiveImmediate());
+      }
+      
+      EasyMock.verify(session, connection, rc, executor, pd);
+      EasyMock.verify(msgs.toArray());
    }
 
    public void testCleanUp() throws Exception
@@ -490,48 +475,37 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
-      EasyMock.expect(session.getExecutorService()).andReturn(executor);
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-
-      EasyMock.replay(session, connection, rc);
-
+      final long clientTargetID = 120912;
       ClientConsumerInternal consumer =
-      new ClientConsumerImpl(session, 1, 2, 3, true);
+         new ClientConsumerImpl(session, 675765, clientTargetID, 787, false, rc, pd, executor, 878787);
 
-      EasyMock.verify(session, connection, rc);
-
-      EasyMock.reset(session, connection, rc);
-      PacketDispatcher packetDispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(packetDispatcher);
-      packetDispatcher.unregister(2);
+      pd.unregister(clientTargetID);
       session.removeConsumer(consumer);
-      EasyMock.replay(session, connection, rc, packetDispatcher);
+      EasyMock.replay(session, connection, rc, executor, pd);
       consumer.cleanUp();
-      EasyMock.verify(session, connection, rc, packetDispatcher);
+      EasyMock.verify(session, connection, rc, executor, pd);
    }
    // Private -----------------------------------------------------------------------------------------------------------
 
    
    private void testConstructor(final long targetID, final long clientTargetID,
-         final int windowSize, final boolean direct) throws Exception
+                                final int windowSize, final boolean direct) throws Exception
    {
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       ExecutorService executor = EasyMock.createStrictMock(ExecutorService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);      
+      final long sessionTargetID = 102912;
       
-      EasyMock.expect(session.getExecutorService()).andReturn(executor);
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
+      EasyMock.replay(session, connection, rc, executor, pd);
       
-      EasyMock.replay(session, connection, rc);
-      
       ClientConsumerInternal consumer =
-      new ClientConsumerImpl(session, targetID, clientTargetID, windowSize, direct);
+         new ClientConsumerImpl(session, targetID, clientTargetID, windowSize, direct, rc, pd, executor, sessionTargetID);
       
-      EasyMock.verify(session, connection, rc);
+      EasyMock.verify(session, connection, rc, executor, pd);
       
       assertEquals(direct, consumer.isDirect());
       assertFalse(consumer.isClosed());

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientProducerImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientProducerImplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientProducerImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -124,20 +124,17 @@
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
       final int initialCredits = 7612672;
 
-      EasyMock.replay(session, connection, rc);
+      EasyMock.replay(session, connection, rc, pd);
       
       ClientProducerInternal producer =
          new ClientProducerImpl(session, 7876L, 76767L, new SimpleString("uhasuuhs"), null,
-                                false, false, initialCredits);
-      
-      EasyMock.verify(session, connection, rc);
-      
+                                false, false, initialCredits,
+                                rc, pd, 871872L);
+       
       assertEquals(initialCredits, producer.getAvailableCredits());
       
       final int credits1 = 1928;
@@ -149,6 +146,8 @@
       assertEquals(initialCredits + credits1 + credits2, producer.getAvailableCredits());
       producer.receiveCredits(credits3);
       assertEquals(initialCredits + credits1 + credits2 + credits3, producer.getAvailableCredits());
+      
+      EasyMock.verify(session, connection, rc, pd);      
    }
    
    public void testClose() throws Exception
@@ -157,28 +156,22 @@
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+
+      final long clientTargetID = 121212;  
       
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
+      EasyMock.replay(session, connection, rc, pd);
       
-      EasyMock.replay(session, connection, rc);
-      
-      final int initialCredits = 7612672;
-      
-      final long clientTargetID = 121212;      
-      
       ClientProducerInternal producer =
          new ClientProducerImpl(session, 7876L, clientTargetID, new SimpleString("uhasuuhs"), null,
-                                false, false, initialCredits);
+                                false, false, 8767878,
+                                rc, pd, 871872L);
       
       assertFalse(producer.isClosed());
       
-      EasyMock.verify(session, connection, rc);
-      EasyMock.reset(session, connection, rc);
-      
-      
+      EasyMock.verify(session, connection, rc, pd);
+      EasyMock.reset(session, connection, rc, pd);
+            
       session.removeProducer(producer);
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
       pd.unregister(clientTargetID);
       
       EasyMock.replay(session, connection, rc, pd);
@@ -205,29 +198,30 @@
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-
-      SimpleString address = new SimpleString("uhasuuhs");
-
-      EasyMock.replay(session, connection, rc);
-
+      EasyMock.replay(session, connection, rc, pd);
+      
+      final long clientTargetID = 121212;
+      
       ClientProducerInternal producer =
-         new ClientProducerImpl(session, 7876L, 76767L, address, null,
-                                true, true, 1);
+         new ClientProducerImpl(session, 7876L, clientTargetID, new SimpleString("uhasuuhs"), null,
+                                false, false, 8767878,
+                                rc, pd, 871872L);
 
-      EasyMock.verify(session, connection, rc);
+      EasyMock.verify(session, connection, rc, pd);
 
-      EasyMock.reset(session, connection, rc);
-      PacketDispatcher packetDispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.reset(session, connection, rc, pd);
+      
       session.removeProducer(producer);
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(packetDispatcher);
-      packetDispatcher.unregister(76767L);
-      EasyMock.replay(session, connection, rc, packetDispatcher);
+      
+      pd.unregister(clientTargetID);
+      
+      EasyMock.replay(session, connection, rc, pd);
+      
       producer.cleanUp();
 
-      EasyMock.verify(session, connection, rc, packetDispatcher);
+      EasyMock.verify(session, connection, rc, pd);
    }
    
    // Private ----------------------------------------------------------------------------------------
@@ -237,31 +231,29 @@
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+       
       SimpleString address = new SimpleString("uhasuuhs");
       
       final int initialCredits = 7612672;
 
-      EasyMock.replay(session, connection, rc);
+      EasyMock.replay(session, connection, rc, pd);
       
       TokenBucketLimiter limiter = maxRate != -1 ? new TokenBucketLimiterImpl(maxRate, false) : null;
       
       ClientProducerInternal producer =
          new ClientProducerImpl(session, 7876L, 76767L, address, limiter,
-                                blockOnNP, blockOnP, initialCredits);
+                                blockOnNP, blockOnP, initialCredits,
+                                rc, pd, 871872L);
       
-      EasyMock.verify(session, connection, rc);
+      EasyMock.verify(session, connection, rc, pd);
       
       assertEquals(address, producer.getAddress());
       assertEquals(initialCredits, producer.getInitialWindowSize());
       assertEquals(maxRate, producer.getMaxRate());
       assertEquals(blockOnNP, producer.isBlockOnNonPersistentSend());
       assertEquals(blockOnP, producer.isBlockOnPersistentSend());
-      assertFalse(producer.isClosed());
-      
+      assertFalse(producer.isClosed());      
    }
    
    private void testSend(final int maxRate, final int windowSize,
@@ -273,11 +265,9 @@
       ClientSessionInternal session = EasyMock.createStrictMock(ClientSessionInternal.class);
       ClientConnectionInternal connection = EasyMock.createStrictMock(ClientConnectionInternal.class);
       RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       ClientMessage message = EasyMock.createStrictMock(ClientMessage.class);
             
-      EasyMock.expect(session.getConnection()).andReturn(connection);
-      EasyMock.expect(connection.getRemotingConnection()).andReturn(rc);
-      
       if (sendAddress != null)
       {
          message.setDestination(sendAddress);
@@ -302,8 +292,6 @@
             
       final long sessionTargetID = 18726178;
       
-      EasyMock.expect(session.getServerTargetID()).andReturn(sessionTargetID);
-      
       if (sendBlocking)
       {
          EasyMock.expect(rc.sendBlocking(targetID, sessionTargetID, new ProducerSendMessage(message))).andReturn(null);
@@ -320,11 +308,12 @@
          EasyMock.expect(message.getEncodeSize()).andReturn(messageSize);
       }
       
-      EasyMock.replay(session, connection, rc, message);
+      EasyMock.replay(session, connection, rc, message, pd);
             
       ClientProducerInternal producer =
-         new ClientProducerImpl(session, targetID, 76767L, prodAddress, limiter, blockOnNonPersistentSend,
-               blockOnPersistentSend, windowSize);
+         new ClientProducerImpl(session, targetID, 76767L, prodAddress, limiter,
+               blockOnNonPersistentSend, blockOnPersistentSend, windowSize,
+                                rc, pd, sessionTargetID);
       
       if (sendAddress != null)
       {
@@ -335,7 +324,7 @@
          producer.send(message);
       }
       
-      EasyMock.verify(session, connection, rc, message);
+      EasyMock.verify(session, connection, rc, message, pd);
       
       if (sendAddress == null && windowSize != -1)
       {

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	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -22,28 +22,67 @@
 
 package org.jboss.messaging.tests.unit.core.client.impl;
 
+import static org.jboss.messaging.tests.util.RandomUtil.randomXid;
+
+import java.util.Arrays;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
 import org.easymock.EasyMock;
 import org.jboss.messaging.core.client.ClientBrowser;
 import org.jboss.messaging.core.client.ClientConnectionFactory;
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.Location;
-import org.jboss.messaging.core.client.impl.*;
+import org.jboss.messaging.core.client.impl.ClientConnectionInternal;
+import org.jboss.messaging.core.client.impl.ClientConsumerInternal;
+import org.jboss.messaging.core.client.impl.ClientConsumerPacketHandler;
+import org.jboss.messaging.core.client.impl.ClientProducerInternal;
+import org.jboss.messaging.core.client.impl.ClientProducerPacketHandler;
+import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
+import org.jboss.messaging.core.client.impl.LocationImpl;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.Packet;
 import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.TransportType;
-import org.jboss.messaging.core.remoting.impl.wireformat.*;
-import static org.jboss.messaging.tests.util.RandomUtil.randomXid;
+import org.jboss.messaging.core.remoting.impl.wireformat.ConsumerFlowCreditMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCancelMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateQueueMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionDeleteQueueMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
+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;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetInDoubtXidsResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetTimeoutResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAJoinMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAPrepareMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResumeMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXARollbackMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutResponseMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
 import org.jboss.messaging.tests.util.UnitTestCase;
 import org.jboss.messaging.util.SimpleString;
 
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
-import java.util.Arrays;
-
 /**
  * 
  * A ClientSessionImplTest
@@ -66,10 +105,13 @@
    public void testConstructorInvalidArgs() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
       try
       {
-         new ClientSessionImpl(conn, 1, false, -2, false, false, false, false);
+         new ClientSessionImpl(conn, 1, false, -2, false, false, false, false, rc, cf, pd);
          fail("Should throw exception");
       }
       catch (IllegalArgumentException e)
@@ -79,7 +121,7 @@
 
       try
       {
-         new ClientSessionImpl(conn, 1, false, -10, false, false, false, false);
+         new ClientSessionImpl(conn, 1, false, -10, false, false, false, false, rc, cf, pd);
          fail("Should throw exception");
       }
       catch (IllegalArgumentException e)
@@ -89,7 +131,7 @@
 
       try
       {
-         new ClientSessionImpl(conn, 1, false, 0, false, false, false, false);
+         new ClientSessionImpl(conn, 1, false, 0, false, false, false, false, rc, cf, pd);
          fail("Should throw exception");
       }
       catch (IllegalArgumentException e)
@@ -101,11 +143,10 @@
    public void testCreateQueue() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-      
       SessionCreateQueueMessage request = new SessionCreateQueueMessage(new SimpleString("blah"), new SimpleString("hagshg"),
             new SimpleString("jhjhs"), false, false);
       
@@ -113,22 +154,21 @@
       
       EasyMock.expect(rc.sendBlocking(targetID, targetID, request)).andReturn(null);
       
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
 
-      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false, rc, cf, pd);
                   
       session.createQueue(request.getAddress(), request.getQueueName(), request.getFilterString(), request.isDurable(), request.isTemporary());
       
-      EasyMock.verify(conn, rc);     
+      EasyMock.verify(conn, rc, cf, pd);     
    }
    
    public void testDeleteQueue() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
       SessionDeleteQueueMessage request = new SessionDeleteQueueMessage(new SimpleString("blah"));
       
@@ -136,22 +176,21 @@
       
       EasyMock.expect(rc.sendBlocking(targetID, targetID, request)).andReturn(null);
       
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
                   
-      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false, rc, cf, pd);
                   
       session.deleteQueue(request.getQueueName());
       
-      EasyMock.verify(conn, rc);     
+      EasyMock.verify(conn, rc, cf, pd);     
    }
    
    public void testQueueQuery() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
       SessionQueueQueryMessage request = new SessionQueueQueryMessage(new SimpleString("blah"));
       
@@ -161,13 +200,13 @@
       
       EasyMock.expect(rc.sendBlocking(targetID, targetID, request)).andReturn(resp);
       
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
                   
-      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false, rc, cf, pd);
                   
       SessionQueueQueryResponseMessage resp2 = session.queueQuery(request.getQueueName());
       
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, rc, cf, pd);
       
       assertTrue(resp == resp2);
    }
@@ -175,11 +214,10 @@
    public void testBindingQuery() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-      
       SessionBindingQueryMessage request = new SessionBindingQueryMessage(new SimpleString("blah"));
       
       SessionBindingQueryResponseMessage resp = new SessionBindingQueryResponseMessage();
@@ -188,13 +226,13 @@
       
       EasyMock.expect(rc.sendBlocking(targetID, targetID, request)).andReturn(resp);
       
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
                   
-      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false, rc, cf, pd);
                   
       SessionBindingQueryResponseMessage resp2 = session.bindingQuery(request.getAddress());
       
-      EasyMock.verify(conn, rc); 
+      EasyMock.verify(conn, rc, cf, pd); 
       
       assertTrue(resp == resp2);
    }
@@ -202,10 +240,9 @@
    public void testAddDestination() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
       SessionAddDestinationMessage request = new SessionAddDestinationMessage(new SimpleString("blah"), true);
       
@@ -213,22 +250,21 @@
       
       EasyMock.expect(rc.sendBlocking(targetID, targetID, request)).andReturn(null);
       
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false, rc, cf, pd);
                   
       session.addDestination(request.getAddress(), request.isTemporary());
       
-      EasyMock.verify(conn, rc); 
+      EasyMock.verify(conn, rc, cf, pd); 
    }
    
    public void testRemoveDestination() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
       SessionRemoveDestinationMessage request = new SessionRemoveDestinationMessage(new SimpleString("blah"), true);
       
@@ -236,13 +272,13 @@
       
       EasyMock.expect(rc.sendBlocking(targetID, targetID, request)).andReturn(null);
       
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
                   
-      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false, rc, cf, pd);
                   
       session.removeDestination(request.getAddress(), true);
       
-      EasyMock.verify(conn, rc); 
+      EasyMock.verify(conn, rc, cf, pd); 
    }
    
    public void testCreateConsumer() throws Exception
@@ -374,13 +410,9 @@
    public void testProducerCaching() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
         
       final long sessionTargetID = 9121892;
       
@@ -392,8 +424,6 @@
       //In create producer method
             
       {
-         EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-         
          final long clientTargetID = 7676876;
          
          EasyMock.expect(pd.generateID()).andReturn(clientTargetID);
@@ -405,17 +435,11 @@
             new SessionCreateProducerResponseMessage(67765765, windowSize, maxRate);
          
          EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
-         
-         EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-         
-         EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-                  
+               
          pd.register(new ClientProducerPacketHandler(null, clientTargetID));
       }
       
-      {
-         EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-         
+      {  
          final long clientTargetID = 54654654;
          
          EasyMock.expect(pd.generateID()).andReturn(clientTargetID);
@@ -428,18 +452,14 @@
          
          EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
          
-         EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-         
-         EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-                  
          pd.register(new ClientProducerPacketHandler(null, clientTargetID));
       }
       
-      EasyMock.replay(conn, rc, pd);
+      EasyMock.replay(conn, rc, cf, pd);
       
       //Create three with address1 - only one should be actually created
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, true, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, true, false, false, false, rc, cf, pd);
       
       assertEquals(0, session.getProducerCache().size());
       
@@ -481,7 +501,7 @@
       
       assertEquals(2, session.getProducerCache().size());
             
-      EasyMock.verify(conn, rc, pd);     
+      EasyMock.verify(conn, rc, cf, pd);
       
       assertTrue(producer1 == producer2);
       assertTrue(producer2 == producer3);
@@ -493,13 +513,9 @@
    public void testProducerNoCaching() throws Exception
    { 
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
           
       final long sessionTargetID = 7617622;      
       final SimpleString address = new SimpleString("gyugg");
@@ -509,14 +525,11 @@
       for (int i = 0; i < 3; i++)
       {
          //In create producer method
-         
-         EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-         
+          
          final long clientTargetID = i + 65655;
          
-         EasyMock.expect(pd.generateID()).andReturn(clientTargetID);
+         EasyMock.expect(pd.generateID()).andReturn(clientTargetID);         
          
-         
          SessionCreateProducerMessage request =
             new SessionCreateProducerMessage(clientTargetID, address, windowSize, maxRate);             
          
@@ -524,17 +537,13 @@
             new SessionCreateProducerResponseMessage(i + 273263, windowSize, maxRate);
          
          EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
-         
-         EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-         
-         EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-                  
+                    
          pd.register(new ClientProducerPacketHandler(null, clientTargetID));      
       }
 
-      EasyMock.replay(conn, rc, pd);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
 
       ClientProducerInternal producer1 = (ClientProducerInternal)session.createProducer(address, windowSize, maxRate,
                                                                                         false, false);
@@ -548,7 +557,7 @@
                                                                                         false, false);
       session.removeProducer(producer3);
       
-      EasyMock.verify(conn, rc, pd);
+      EasyMock.verify(conn, rc, cf, pd);
       
       assertFalse(producer1 == producer2);
       assertFalse(producer2 == producer3);
@@ -564,8 +573,11 @@
    public void testGetXAResource() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
-      ClientSession session = new ClientSessionImpl(conn, 5465, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, 5465, false, -1, false, false, false, false, rc, cf, pd);
       
       XAResource res = session.getXAResource();
       
@@ -575,12 +587,9 @@
    public void testTransactedSessionAcknowledgeNotBroken() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
       
       final int numMessages = 100;
       
@@ -606,9 +615,9 @@
 
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_ROLLBACK))).andReturn(null);
                   
-      EasyMock.replay(conn, rc, pd, cons1, cons2);
+      EasyMock.replay(conn, rc, cf, pd, cons1, cons2);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
       session.addConsumer(cons1);
       session.addConsumer(cons2);
@@ -635,7 +644,7 @@
       
       session.rollback();
       
-      EasyMock.verify(conn, rc, pd, cons1, cons2);
+      EasyMock.verify(conn, rc, cf, pd, cons1, cons2);
    }
    
    public void testAutoCommitSessionAcknowledge() throws Exception
@@ -653,12 +662,9 @@
    public void testTransactedSessionAcknowledgeNotBrokenExpired() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
       
       final int[] messages = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
       
@@ -673,12 +679,10 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_COMMIT))).andReturn(null);
                   
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(conn, rc, cf, pd);
+
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
-      
       //Simulate some messages being delivered in a non broken sequence (i.e. what would happen with a single consumer
       //on the session)
             
@@ -692,20 +696,15 @@
       //Then commit
       session.commit();
       
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd); 
+      EasyMock.verify(conn, rc, cf, pd);
    }
    
    public void testTransactedSessionAcknowledgeBrokenExpired() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
       
       final int[] messages = new int[] { 1, 3, 5, 7, 9, 2, 4, 10, 20, 21, 22, 23, 19, 18, 15, 30, 31, 32, 40, 35 };
       
@@ -720,11 +719,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_COMMIT))).andReturn(null);
                   
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
       //Simulate some messages being delivered in a broken sequence (i.e. what would happen with a single consumer
       //on the session)
@@ -739,9 +736,7 @@
       //Then commit
       session.commit();
       
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd); 
+      EasyMock.verify(conn, rc, cf, pd);; 
    }
    
    public void testClose() throws Exception   
@@ -759,21 +754,19 @@
    public void testAddRemoveProducer() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
                   
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
       
-      EasyMock.reset(conn, rc);
+      EasyMock.reset(conn, rc, cf, pd);
                                       
       ClientProducerInternal prod1 = EasyMock.createStrictMock(ClientProducerInternal.class);
       ClientProducerInternal prod2 = EasyMock.createStrictMock(ClientProducerInternal.class);
@@ -798,21 +791,19 @@
    public void testAddRemoveBrowser() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
                   
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
       
-      EasyMock.reset(conn, rc);
+      EasyMock.reset(conn, rc, cf, pd);
                                       
       ClientBrowser browser1 = EasyMock.createStrictMock(ClientBrowser.class);
       ClientBrowser browser2 = EasyMock.createStrictMock(ClientBrowser.class);
@@ -861,11 +852,9 @@
    public void testGetTransactionTimeout() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
       
@@ -877,72 +866,44 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       int timeout2 = session.getTransactionTimeout();
             
-      EasyMock.verify(conn, rc);  
+      EasyMock.verify(conn, rc, cf, pd);  
       
       assertEquals(timeout, timeout2);
    }
    
    public void testIsSameRM() throws Exception
    {
+      ClientConnectionInternal conn1 = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      ClientConnectionInternal conn2 = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      ClientConnectionInternal conn3 = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc1 = EasyMock.createStrictMock(RemotingConnection.class);
+      RemotingConnection rc2 = EasyMock.createStrictMock(RemotingConnection.class);
+      RemotingConnection rc3 = EasyMock.createStrictMock(RemotingConnection.class);
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+            
       Location location1 = new LocationImpl(TransportType.TCP, "blah1");      
+      
       Location location2 = new LocationImpl(TransportType.TCP, "blah2");
       
-      ClientConnectionInternal conn1 = EasyMock.createStrictMock(ClientConnectionInternal.class);      
-      RemotingConnection rc1 = EasyMock.createStrictMock(RemotingConnection.class);          
-      EasyMock.expect(conn1.getRemotingConnection()).andReturn(rc1);
+      EasyMock.expect(rc1.getLocation()).andStubReturn(location1);
+      EasyMock.expect(rc2.getLocation()).andStubReturn(location1);
+      EasyMock.expect(rc3.getLocation()).andStubReturn(location2);
+                    
+      EasyMock.replay(conn1, conn2, conn3, rc1, rc2, rc3, cf, pd);
       
-      ClientConnectionInternal conn2 = EasyMock.createStrictMock(ClientConnectionInternal.class);      
-      RemotingConnection rc2 = EasyMock.createStrictMock(RemotingConnection.class);          
-      EasyMock.expect(conn2.getRemotingConnection()).andReturn(rc2);
+      ClientSessionInternal session1 = new ClientSessionImpl(conn1, 4343, true, -1, false, false, false, false, rc1, cf, pd);
       
-      ClientConnectionInternal conn3 = EasyMock.createStrictMock(ClientConnectionInternal.class);      
-      RemotingConnection rc3 = EasyMock.createStrictMock(RemotingConnection.class);          
-      EasyMock.expect(conn3.getRemotingConnection()).andReturn(rc3);
-       
-      EasyMock.expect(conn1.getRemotingConnection()).andReturn(rc1);      
-      EasyMock.expect(rc1.getLocation()).andReturn(location1);      
-      EasyMock.expect(conn2.getRemotingConnection()).andReturn(rc2);      
-      EasyMock.expect(rc2.getLocation()).andReturn(location1);
+      ClientSessionInternal session2 = new ClientSessionImpl(conn2, 4343, true, -1, false, false, false, false, rc2, cf, pd);
       
-      EasyMock.expect(conn2.getRemotingConnection()).andReturn(rc2);      
-      EasyMock.expect(rc2.getLocation()).andReturn(location1);
-      EasyMock.expect(conn1.getRemotingConnection()).andReturn(rc1);      
-      EasyMock.expect(rc1.getLocation()).andReturn(location1);      
-            
-      EasyMock.expect(conn1.getRemotingConnection()).andReturn(rc1);      
-      EasyMock.expect(rc1.getLocation()).andReturn(location1);      
-      EasyMock.expect(conn3.getRemotingConnection()).andReturn(rc3);      
-      EasyMock.expect(rc3.getLocation()).andReturn(location2);
+      ClientSessionInternal session3 = new ClientSessionImpl(conn3, 4343, true, -1, false, false, false, false, rc3, cf, pd);
       
-      EasyMock.expect(conn3.getRemotingConnection()).andReturn(rc3);      
-      EasyMock.expect(rc3.getLocation()).andReturn(location2);
-      EasyMock.expect(conn1.getRemotingConnection()).andReturn(rc1);      
-      EasyMock.expect(rc1.getLocation()).andReturn(location1);      
-            
-      EasyMock.expect(conn2.getRemotingConnection()).andReturn(rc2);      
-      EasyMock.expect(rc2.getLocation()).andReturn(location1);      
-      EasyMock.expect(conn3.getRemotingConnection()).andReturn(rc3);      
-      EasyMock.expect(rc3.getLocation()).andReturn(location2);
-      
-      EasyMock.expect(conn3.getRemotingConnection()).andReturn(rc3);      
-      EasyMock.expect(rc3.getLocation()).andReturn(location2);
-      EasyMock.expect(conn2.getRemotingConnection()).andReturn(rc2);      
-      EasyMock.expect(rc2.getLocation()).andReturn(location1);      
-          
-      EasyMock.replay(conn1, conn2, conn3, rc1, rc2, rc3);
-      
-      ClientSessionInternal session1 = new ClientSessionImpl(conn1, 4343, true, -1, false, false, false, false);
-      
-      ClientSessionInternal session2 = new ClientSessionImpl(conn2, 4343, true, -1, false, false, false, false);
-      
-      ClientSessionInternal session3 = new ClientSessionImpl(conn3, 4343, true, -1, false, false, false, false);
-      
       assertTrue(session1.isSameRM(session2));
       assertTrue(session2.isSameRM(session1));
       
@@ -996,11 +957,10 @@
    public void testCleanUp() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-
       SessionCreateQueueMessage request = new SessionCreateQueueMessage(new SimpleString("blah"), new SimpleString("hagshg"),
             new SimpleString("jhjhs"), false, false);
 
@@ -1008,39 +968,37 @@
 
       EasyMock.expect(rc.sendBlocking(targetID, targetID, request)).andReturn(null);
 
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
 
-      ClientSessionInternal session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, targetID, false, -1, false, false, false, false, rc, cf, pd);
 
       session.createQueue(request.getAddress(), request.getQueueName(), request.getFilterString(), request.isDurable(), request.isTemporary());
 
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
 
-      EasyMock.reset(conn, rc);
+      EasyMock.reset(conn, rc, cf, pd);
       conn.removeSession(session);
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       session.cleanUp();
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
    }
 
    public void notXA() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
               
       final long sessionTargetID = 9121892;
                   
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
       
-      EasyMock.reset(conn, rc);      
+      EasyMock.reset(conn, rc, cf, pd);      
       try
       {
          session.commit(randomXid(), false);
@@ -1147,21 +1105,19 @@
    private void testClose(boolean delivered) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-          
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
                   
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
       
-      EasyMock.reset(conn, rc);
+      EasyMock.reset(conn, rc, cf, pd);
       
       ClientProducerInternal prod1 = EasyMock.createStrictMock(ClientProducerInternal.class);
       ClientProducerInternal prod2 = EasyMock.createStrictMock(ClientProducerInternal.class);
@@ -1192,7 +1148,7 @@
       
       conn.removeSession(session);      
             
-      EasyMock.replay(conn, rc, prod1, prod2, cons1, cons2, browser1, browser2);
+      EasyMock.replay(conn, rc, cf, pd, prod1, prod2, cons1, cons2, browser1, browser2);
                  
       session.addProducer(prod1);
       session.addProducer(prod2);
@@ -1217,19 +1173,19 @@
             
       session.close();
       
-      EasyMock.verify(conn, rc, prod1, prod2, cons1, cons2, browser1, browser2);
+      EasyMock.verify(conn, rc, cf, pd, prod1, prod2, cons1, cons2, browser1, browser2);
       
       assertTrue(session.isClosed());  
       
-      EasyMock.reset(conn, rc, prod1, prod2, cons1, cons2, browser1, browser2);
+      EasyMock.reset(conn, rc, cf, pd, prod1, prod2, cons1, cons2, browser1, browser2);
       
-      EasyMock.replay(conn, rc, prod1, prod2, cons1, cons2, browser1, browser2);
+      EasyMock.replay(conn, rc, cf, pd, prod1, prod2, cons1, cons2, browser1, browser2);
       
       //Close again should do nothing
       
       session.close();
       
-      EasyMock.verify(conn, rc, prod1, prod2, cons1, cons2, browser1, browser2);
+      EasyMock.verify(conn, rc, cf, pd, prod1, prod2, cons1, cons2, browser1, browser2);
       
       try
       {
@@ -1416,11 +1372,9 @@
    private void testXAStart(int flags, boolean error) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
       
@@ -1453,9 +1407,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       //Simulate some unflushed messages
       
@@ -1482,17 +1436,15 @@
          session.start(xid, flags);
       }
       
-      EasyMock.verify(conn, rc);          
+      EasyMock.verify(conn, rc, cf, pd);          
    }
    
    private void testXASetTransactionTimeout(boolean error) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
       
@@ -1504,26 +1456,24 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       boolean ok = session.setTransactionTimeout(timeout);
       
       assertTrue(ok == !error);
       
-      EasyMock.verify(conn, rc);  
+      EasyMock.verify(conn, rc, cf, pd);  
    }
    
    private void testXARollback(boolean error) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-        
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+           
       final long sessionTargetID = 9121892;
       
       Xid xid = randomXid();
@@ -1534,9 +1484,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       if (error)
       {
@@ -1555,18 +1505,16 @@
          session.rollback(xid);
       }
       
-      EasyMock.verify(conn, rc);  
+      EasyMock.verify(conn, rc, cf, pd);  
    }
    
    private void testXARecover(final int flags) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-        
       final long sessionTargetID = 9121892;
       
       final Xid[] xids = new Xid[] { randomXid(), randomXid(), randomXid() } ;
@@ -1580,9 +1528,9 @@
          EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
       }
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       Xid[] xids2 = session.recover(flags);
       
@@ -1600,17 +1548,15 @@
          assertTrue(xids2.length == 0);
       }
       
-      EasyMock.verify(conn, rc);  
+      EasyMock.verify(conn, rc, cf, pd);  
    }
    
    private void testXAPrepare(boolean error, boolean readOnly) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
       
@@ -1622,9 +1568,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       if (error)
       {
@@ -1652,17 +1598,15 @@
          }
       }
       
-      EasyMock.verify(conn, rc);  
+      EasyMock.verify(conn, rc, cf, pd);  
    }
    
    private void testXAForget(final boolean error) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
       
@@ -1680,9 +1624,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       //Simulate some unflushed messages
       
@@ -1709,17 +1653,15 @@
          session.forget(xid);
       }
       
-      EasyMock.verify(conn, rc);           
+      EasyMock.verify(conn, rc, cf, pd);           
    }
    
    private void testXAEnd(int flags, boolean error) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
       
@@ -1749,9 +1691,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       //Simulate some unflushed messages
       
@@ -1778,17 +1720,15 @@
          session.end(xid, flags);
       }
       
-      EasyMock.verify(conn, rc);          
+      EasyMock.verify(conn, rc, cf, pd);          
    }
    
    private void testXACommit(boolean onePhase, boolean error) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
       
@@ -1800,9 +1740,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, packet)).andReturn(resp);
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, true, -1, false, false, false, false, rc, cf, pd);
       
       if (error)
       {
@@ -1821,27 +1761,25 @@
          session.commit(xid, onePhase);
       }
       
-      EasyMock.verify(conn, rc);  
+      EasyMock.verify(conn, rc, cf, pd);  
    }
    
    private void testAddRemoveConsumer(boolean delivered) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-          
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
         
       final long sessionTargetID = 9121892;
                   
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
       
-      EasyMock.reset(conn, rc);
+      EasyMock.reset(conn, rc, cf, pd);
          
       final int numDeliveries = 10;
       
@@ -1856,7 +1794,7 @@
       
       rc.sendOneWay(sessionTargetID, sessionTargetID, new SessionCancelMessage(-1, false));
                        
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
                        
       ClientConsumerInternal cons1 = EasyMock.createStrictMock(ClientConsumerInternal.class);
       ClientConsumerInternal cons2 = EasyMock.createStrictMock(ClientConsumerInternal.class);
@@ -1886,18 +1824,15 @@
       session.removeConsumer(cons2);
       assertEquals(0, session.getConsumers().size());
       
-      EasyMock.verify(conn, rc);          
+      EasyMock.verify(conn, rc, cf, pd);          
    }
    
    private void testAutoCommitSessionAcknowledge(boolean blockOnAcknowledge) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
       
       final int numMessages = 100;
       
@@ -1943,9 +1878,10 @@
             
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_ROLLBACK))).andReturn(null);
                                      
-      EasyMock.replay(conn, rc, pd, cons1, cons2);
+      EasyMock.replay(conn, rc, cf, pd, cons1, cons2);
             
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, batchSize, false, false, true, blockOnAcknowledge);
+      ClientSessionInternal session =
+         new ClientSessionImpl(conn, sessionTargetID, false, batchSize, false, false, true, blockOnAcknowledge, rc, cf, pd);
       
       session.addConsumer(cons1);
       
@@ -1973,18 +1909,15 @@
       
       session.rollback();
       
-      EasyMock.verify(conn, rc, pd, cons1, cons2);
+      EasyMock.verify(conn, rc, cf, pd, cons1, cons2);
    }
    
    private void testTransactedSessionAcknowledgeBroken(boolean blockOnAcknowledge) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
       
       final int[] messages = new int[] { 1, 3, 5, 7, 9, 2, 4, 10, 20, 21, 22, 23, 19, 18, 15, 30, 31, 32, 40, 35 };
       
@@ -2031,9 +1964,10 @@
             
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, new PacketImpl(PacketImpl.SESS_ROLLBACK))).andReturn(null);
                         
-      EasyMock.replay(conn, rc, pd, cons1, cons2);
+      EasyMock.replay(conn, rc, cf, pd, cons1, cons2);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, blockOnAcknowledge);
+      ClientSessionInternal session =
+         new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, blockOnAcknowledge, rc, cf, pd);
       
       session.addConsumer(cons1);
       session.addConsumer(cons2);
@@ -2060,17 +1994,15 @@
       
       session.rollback();
       
-      EasyMock.verify(conn, rc, pd, cons1, cons2); 
+      EasyMock.verify(conn, rc, cf, pd, cons1, cons2); 
    }
    
    private void testCreateBrowser(boolean filter) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-      
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-            
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andStubReturn(rc);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
           
       final long sessionTargetID = 7617622;      
       final SimpleString queueName = new SimpleString("gyugg");
@@ -2084,9 +2016,9 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
       
-      EasyMock.replay(conn, rc);
+      EasyMock.replay(conn, rc, cf, pd);
       
-      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSessionInternal session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
       if (filter)
       {
@@ -2097,7 +2029,7 @@
          ClientBrowser browser = session.createBrowser(queueName);
       }
       
-      EasyMock.verify(conn, rc);
+      EasyMock.verify(conn, rc, cf, pd);
    }
    
    private void testCreateProducerWithWindowSizeMethod(final SimpleString address,
@@ -2107,27 +2039,15 @@
          final boolean blockOnPSend,
          final boolean autoCommitSends) throws Exception
    {
-      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
-
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
-      // In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-
       // Defaults from cf
 
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-
       EasyMock.expect(cf.isDefaultBlockOnNonPersistentSend()).andReturn(blockOnNPSend);
 
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-
       EasyMock.expect(cf.isDefaultBlockOnPersistentSend()).andReturn(blockOnPSend);   
 
       final long clientTargetID = 7676876;
@@ -2144,25 +2064,16 @@
 
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
 
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
 
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);      
-      
       pd.register(new ClientProducerPacketHandler(null, clientTargetID));
 
-      EasyMock.replay(cf);
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(cf, conn, rc, pd);
 
-      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false);
+      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false, rc, cf, pd);
 
       ClientProducerInternal producer = (ClientProducerInternal)session.createProducerWithWindowSize(address, windowSize);
 
-      EasyMock.verify(cf);
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd);
+      EasyMock.verify(cf, conn, rc, pd);   
 
       assertEquals(address, producer.getAddress());
       assertEquals(autoCommitSends && blockOnNPSend, producer.isBlockOnNonPersistentSend());
@@ -2178,27 +2089,15 @@
                                                     final boolean blockOnPSend,
                                                     final boolean autoCommitSends) throws Exception
    {
-      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
-
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-
-      // In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
       
       // Defaults from cf
         
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.isDefaultBlockOnNonPersistentSend()).andReturn(blockOnNPSend);
       
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.isDefaultBlockOnPersistentSend()).andReturn(blockOnPSend);   
 
       final long clientTargetID = 7676876;
@@ -2214,26 +2113,16 @@
          new SessionCreateProducerResponseMessage(67765765, initialCredits, serverMaxRate);
 
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
-
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-            
+        
       pd.register(new ClientProducerPacketHandler(null, clientTargetID));
 
-      EasyMock.replay(cf);
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(cf, conn, rc, pd);
 
-      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false);
+      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false, rc, cf, pd);
 
       ClientProducerInternal producer = (ClientProducerInternal)session.createRateLimitedProducer(address, maxRate);
 
-      EasyMock.verify(cf);
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd);
+      EasyMock.verify(cf, conn, rc, pd);
 
       assertEquals(address, producer.getAddress());
       assertEquals(autoCommitSends && blockOnNPSend, producer.isBlockOnNonPersistentSend());
@@ -2249,35 +2138,19 @@
          final boolean blockOnPSend,
          final boolean autoCommitSends) throws Exception
    {
-      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
-
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-
-      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-
-      // In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);;
       
       // Defaults from cf
       
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.getDefaultProducerWindowSize()).andReturn(windowSize);
       
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.getDefaultProducerMaxRate()).andReturn(maxRate);   
       
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.isDefaultBlockOnNonPersistentSend()).andReturn(blockOnNPSend);
-      
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
+        
       EasyMock.expect(cf.isDefaultBlockOnPersistentSend()).andReturn(blockOnPSend);   
 
       final long clientTargetID = 7676876;
@@ -2293,26 +2166,16 @@
          new SessionCreateProducerResponseMessage(67765765, initialCredits, serverMaxRate);
 
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
-
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-      
+  
       pd.register(new ClientProducerPacketHandler(null, clientTargetID));
 
-      EasyMock.replay(cf);
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(cf, conn, rc, pd);
 
-      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false);
+      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false, rc, cf, pd);
 
       ClientProducerInternal producer = (ClientProducerInternal)session.createProducer(address);
 
-      EasyMock.verify(cf);
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd);
+      EasyMock.verify(cf, conn, rc, pd);
 
       assertEquals(address, producer.getAddress());
       assertEquals(autoCommitSends && blockOnNPSend, producer.isBlockOnNonPersistentSend());
@@ -2328,19 +2191,11 @@
                                              final boolean blockOnPSend,
                                              final boolean autoCommitSends) throws Exception
    {
-      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
-      
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      //In ClientSessionImpl constructor
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
                         
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
       final long clientTargetID = 7676876;
       
       EasyMock.expect(pd.generateID()).andReturn(clientTargetID);
@@ -2355,25 +2210,15 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
       
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-      
       pd.register(new ClientProducerPacketHandler(null, clientTargetID));
       
-      EasyMock.replay(cf);
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(cf, conn, rc, pd);
       
-      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false);
+      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, autoCommitSends, false, false, rc, cf, pd);
 
       ClientProducerInternal producer = (ClientProducerInternal)session.createProducer(address, windowSize, maxRate, blockOnNPSend, blockOnPSend);
       
-      EasyMock.verify(cf);
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd);
+      EasyMock.verify(cf, conn, rc, pd);
       
       assertEquals(address, producer.getAddress());
       assertEquals(autoCommitSends && blockOnNPSend, producer.isBlockOnNonPersistentSend());
@@ -2386,26 +2231,15 @@
          final boolean autoDeleteQueue, final boolean direct,
          final int windowSize, final int maxRate, final int serverWindowSize) throws Exception
    {
-      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
-      
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andStubReturn(rc);
-      
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
          
       EasyMock.expect(cf.getDefaultConsumerWindowSize()).andReturn(windowSize);
       
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.getDefaultConsumerMaxRate()).andReturn(maxRate);      
                   
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
       final long clientTargetID = 87126716;
       
       EasyMock.expect(pd.generateID()).andReturn(clientTargetID);
@@ -2421,26 +2255,17 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
       
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
       pd.register(new ClientConsumerPacketHandler(null, clientTargetID));
       
       rc.sendOneWay(resp.getConsumerTargetID(), sessionTargetID,
                     new ConsumerFlowCreditMessage(resp.getWindowSize()));
       
-      EasyMock.replay(cf);
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(cf, conn, rc, pd);
+      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
-      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
-      
       ClientConsumerInternal consumer = (ClientConsumerInternal)session.createConsumer(queueName, filterString, noLocal, autoDeleteQueue,
                                                                    direct);              
-      EasyMock.verify(cf);
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd); 
+      EasyMock.verify(cf, conn, rc, pd);
       
       assertEquals(clientTargetID, consumer.getClientTargetID());
       
@@ -2462,17 +2287,10 @@
          final boolean autoDeleteQueue, final boolean direct,
          final int windowSize, final int maxRate, final int serverWindowSize) throws Exception
    {
-      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
-      
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andStubReturn(rc);
-       
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
       
       final long clientTargetID = 87126716;
       
@@ -2489,26 +2307,18 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
           
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
       pd.register(new ClientConsumerPacketHandler(null, clientTargetID));
       
       rc.sendOneWay(resp.getConsumerTargetID(), sessionTargetID,
                     new ConsumerFlowCreditMessage(resp.getWindowSize()));
       
-      EasyMock.replay(cf);
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(cf, conn, rc, pd);
       
-      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
       ClientConsumerInternal consumer = (ClientConsumerInternal)session.createConsumer(queueName, filterString, noLocal, autoDeleteQueue,
                                                                    direct, windowSize, maxRate);    
-      EasyMock.verify(cf);
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd); 
+      EasyMock.verify(cf, conn, rc, pd); 
       
       assertEquals(clientTargetID, consumer.getClientTargetID());
       
@@ -2529,26 +2339,15 @@
    private void testCreateConsumerBasicMethod(final SimpleString queueName, final int windowSize,
          final int maxRate, final int serverWindowSize) throws Exception
    {
-      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
-      
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
-           
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
-      
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
       PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-           
-      EasyMock.expect(conn.getRemotingConnection()).andStubReturn(rc);
       
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.getDefaultConsumerWindowSize()).andReturn(windowSize);
       
-      EasyMock.expect(conn.getConnectionFactory()).andReturn(cf);
-      
       EasyMock.expect(cf.getDefaultConsumerMaxRate()).andReturn(maxRate);   
        
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
       final long clientTargetID = 87126716;
       
       EasyMock.expect(pd.generateID()).andReturn(clientTargetID);
@@ -2564,25 +2363,17 @@
       
       EasyMock.expect(rc.sendBlocking(sessionTargetID, sessionTargetID, request)).andReturn(resp);
       
-      EasyMock.expect(rc.getPacketDispatcher()).andReturn(pd);
-      
       pd.register(new ClientConsumerPacketHandler(null, clientTargetID));
       
       rc.sendOneWay(resp.getConsumerTargetID(), sessionTargetID,
                     new ConsumerFlowCreditMessage(resp.getWindowSize()));
       
-      EasyMock.replay(cf);
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-      EasyMock.replay(pd);
+      EasyMock.replay(cf, conn, rc, pd);
       
-      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false);
+      ClientSession session = new ClientSessionImpl(conn, sessionTargetID, false, -1, false, false, false, false, rc, cf, pd);
       
       ClientConsumerInternal consumer = (ClientConsumerInternal)session.createConsumer(queueName);    
-      EasyMock.verify(cf);
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);
-      EasyMock.verify(pd); 
+      EasyMock.verify(cf, conn, rc, pd);
       
       assertEquals(clientTargetID, consumer.getClientTargetID());
       
@@ -2607,19 +2398,17 @@
          final boolean blockOnAcknowledge) throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);      
+      ClientConnectionFactory cf = EasyMock.createStrictMock(ClientConnectionFactory.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
 
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
+      EasyMock.replay(conn, rc, cf, pd);
 
-      EasyMock.expect(conn.getRemotingConnection()).andReturn(rc);
-
-      EasyMock.replay(conn);
-      EasyMock.replay(rc);
-
       ClientSessionInternal session = new ClientSessionImpl(conn, serverTargetID, xa,
-            lazyAckBatchSize, cacheProducers, autoCommitSends, autoCommitAcks, blockOnAcknowledge);
+            lazyAckBatchSize, cacheProducers, autoCommitSends, autoCommitAcks, blockOnAcknowledge,
+            rc, cf, pd);
 
-      EasyMock.verify(conn);
-      EasyMock.verify(rc);      
+      EasyMock.verify(conn, rc, cf, pd);
 
       assertTrue(conn == session.getConnection());
       assertEquals(xa, session.isXA());

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/ConnectionManagerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/ConnectionManagerTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/ConnectionManagerTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -74,8 +74,6 @@
       }
    }
 
-
-
    // TestCase overrides -------------------------------------------
 
    // Public --------------------------------------------------------
@@ -105,11 +103,9 @@
       assertActiveConnectionsOnTheServer(0);
    }
 
-   private void assertActiveConnectionsOnTheServer(int expectedSize)
-   throws Exception
-   {
-      ConnectionManager cm = messagingService.getServer().getConnectionManager();
-      assertEquals(expectedSize, cm.getActiveConnections().size());
+   private void assertActiveConnectionsOnTheServer(int expectedSize) throws Exception
+   {      
+      assertEquals(expectedSize, messagingService.getServer().getServerManagement().getConnectionCount());
    }
 
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/INVMServerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/INVMServerTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/INVMServerTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -55,12 +55,10 @@
 
    public void testConnectionsToTwoINVMServers() throws Exception
    {
-      ClientConnectionFactory cf_1 = new ClientConnectionFactoryImpl(
-            new LocationImpl(0));
+      ClientConnectionFactory cf_1 = new ClientConnectionFactoryImpl(new LocationImpl(0));
       ClientConnectionInternal conn_1 = (ClientConnectionInternal) cf_1.createConnection();
 
-      ClientConnectionFactory cf_2 = new ClientConnectionFactoryImpl(
-            new LocationImpl(1));
+      ClientConnectionFactory cf_2 = new ClientConnectionFactoryImpl(new LocationImpl(1));
       ClientConnectionInternal conn_2 = (ClientConnectionInternal) cf_2.createConnection();
       
       assertNotSame(conn_1.getRemotingConnection().getSessionID(), conn_2.getRemotingConnection().getSessionID());

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaAcceptorTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaAcceptorTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaAcceptorTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -105,8 +105,8 @@
          connectionParams.setTrustStorePassword("secureexample");
          MinaConnector minaConnector = new MinaConnector(conf.getLocation(), connectionParams, new PacketDispatcherImpl(null));
          minaConnector.connect();
-         // TODO investigate why we need to wait a little bit before disconnecting to avoid a SSL exception
-         Thread.sleep(1000);
+         //Please don't add Thread.sleeps to fudge the problem so the test passes!
+         //Instead - fix the underlying issue
          minaConnector.disconnect();
          EasyMock.verify(remotingService, cleanUpNotifier);
       }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/network/ClientNetworkFailureTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/network/ClientNetworkFailureTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/network/ClientNetworkFailureTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -209,7 +209,6 @@
    private void assertActiveConnectionsOnTheServer(int expectedSize)
            throws Exception
    {
-      ConnectionManager cm = messagingService.getServer().getConnectionManager();
-      assertEquals(expectedSize, cm.getActiveConnections().size());
+      assertEquals(expectedSize, messagingService.getServer().getServerManagement().getConnectionCount());
    }
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -1,6 +1,6 @@
 /*
  * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * 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.
  *
@@ -18,11 +18,10 @@
  * 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.server.impl;
 
 import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -40,9 +39,7 @@
 import org.jboss.messaging.core.security.CheckType;
 import org.jboss.messaging.core.security.JBMSecurityManager;
 import org.jboss.messaging.core.security.Role;
-import org.jboss.messaging.core.server.ConnectionManager;
 import org.jboss.messaging.core.server.MessagingServer;
-import org.jboss.messaging.core.server.ServerConnection;
 import org.jboss.messaging.core.server.impl.ConnectionManagerImpl;
 import org.jboss.messaging.core.server.impl.MessagingServerImpl;
 import org.jboss.messaging.core.server.impl.MessagingServerPacketHandler;
@@ -62,7 +59,6 @@
 public class MessagingServerImplTest extends UnitTestCase
 {
    private static final Logger log = Logger.getLogger(MessagingServerImplTest.class);
-
    
    // Private -----------------------------------------------------------------------------------------------------------
    
@@ -70,20 +66,11 @@
    {
       MessagingServer server = new MessagingServerImpl();
       
-      Version version = VersionLoader.load();
-      
-      assertEquals(version, server.getVersion());
-      
-      assertNull(server.getConfiguration());
-      assertNull(server.getConnectionManager());
-      assertNull(server.getExecutorFactory());
-      assertNull(server.getPostOffice());
-      assertNull(server.getQueueSettingsRepository());
-      assertNull(server.getRemotingService());
-      assertNull(server.getResourceManager());
-      assertNull(server.getSecurityManager());
-      assertNull(server.getSecurityRepository());
-      assertNull(server.getSecurityStore());
+      Version version = VersionLoader.load();      
+      assertEquals(version, server.getVersion());      
+      assertNull(server.getConfiguration());     
+      assertNull(server.getRemotingService());      
+      assertNull(server.getSecurityManager());     
       assertNull(server.getStorageManager());      
    }
    
@@ -195,13 +182,14 @@
       
       EasyMock.reset(sm, rs);
       
+      PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
       EasyMock.expect(sm.isStarted()).andStubReturn(true);
       EasyMock.expect(rs.isStarted()).andStubReturn(true);
       rs.addRemotingSessionListener(EasyMock.isA(ConnectionManagerImpl.class));
       sm.loadBindings(EasyMock.isA(QueueFactoryImpl.class), EasyMock.isA(ArrayList.class), EasyMock.isA(ArrayList.class));
       sm.loadMessages(EasyMock.isA(PostOfficeImpl.class), EasyMock.isA(Map.class));
-      PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);
-      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+            
       pd.register(EasyMock.isA(MessagingServerPacketHandler.class));
       
       EasyMock.replay(sm, rs, pd);
@@ -270,7 +258,6 @@
          //Ok
       }
       
-      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
       pd.unregister(0);
       rs.removeRemotingSessionListener(EasyMock.isA(ConnectionManagerImpl.class));
       
@@ -370,16 +357,11 @@
    
    public void testCreateConnectionOK() throws Exception
    {      
-      MessagingServer server = new MessagingServerImpl();
-          
-      server.setConfiguration(new ConfigurationImpl());
-            
-      StorageManager sm = EasyMock.createMock(StorageManager.class);
-      
-      server.setStorageManager(sm);
-      
-      RemotingService rs = EasyMock.createMock(RemotingService.class);
-      
+      MessagingServer server = new MessagingServerImpl();          
+      server.setConfiguration(new ConfigurationImpl());            
+      StorageManager sm = EasyMock.createMock(StorageManager.class);      
+      server.setStorageManager(sm);      
+      RemotingService rs = EasyMock.createMock(RemotingService.class);      
       server.setRemotingService(rs);
       
       JBMSecurityManager sem = new JBMSecurityManager()
@@ -397,20 +379,21 @@
       
       server.setSecurityManager(sem);
       
+      PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      
       rs.addRemotingSessionListener(EasyMock.isA(ConnectionManagerImpl.class));
       sm.loadBindings(EasyMock.isA(QueueFactoryImpl.class), EasyMock.isA(ArrayList.class), EasyMock.isA(ArrayList.class));
       sm.loadMessages(EasyMock.isA(PostOfficeImpl.class), EasyMock.isA(Map.class));
-      PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);
-      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      
       pd.register(EasyMock.isA(MessagingServerPacketHandler.class));      
       EasyMock.expect(sm.isStarted()).andStubReturn(true);
       EasyMock.expect(rs.isStarted()).andStubReturn(true);
       
       
-      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
       final long id = 129812;
       EasyMock.expect(pd.generateID()).andReturn(id);
-      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+
       pd.register(EasyMock.isA(ServerConnectionPacketHandler.class));
       
       PacketReturner returner = EasyMock.createStrictMock(PacketReturner.class);
@@ -430,16 +413,7 @@
       assertEquals(VersionLoader.load(), resp.getServerVersion());
       assertEquals(id, resp.getConnectionTargetID());     
       
-      ConnectionManager cm = server.getConnectionManager();
-      
-      List<ServerConnection> conns = cm.getActiveConnections();
-      assertEquals(1, conns.size());
-      ServerConnection conn = conns.get(0);
-      assertEquals(id, conn.getID());
-      assertTrue(server == conn.getServer());
-      assertEquals(username, conn.getUsername());
-      assertEquals(password, conn.getPassword());
-      assertEquals(sessionID, conn.getClientSessionID());
+      assertEquals(1, server.getServerManagement().getConnectionCount());
    }
    
   

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java	2008-06-18 18:43:49 UTC (rev 4519)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java	2008-06-19 13:27:17 UTC (rev 4520)
@@ -1,6 +1,6 @@
 /*
  * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * 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.
  *
@@ -18,24 +18,30 @@
  * 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.server.impl;
 
+import java.util.concurrent.Executor;
+
 import org.easymock.EasyMock;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.Binding;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.PacketReturner;
-import org.jboss.messaging.core.remoting.RemotingService;
 import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionResponseMessage;
+import org.jboss.messaging.core.security.SecurityStore;
 import org.jboss.messaging.core.server.ConnectionManager;
-import org.jboss.messaging.core.server.MessagingServer;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.core.server.ServerSession;
 import org.jboss.messaging.core.server.impl.ServerConnectionImpl;
 import org.jboss.messaging.core.server.impl.ServerSessionPacketHandler;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
+import org.jboss.messaging.core.transaction.ResourceManager;
 import org.jboss.messaging.tests.util.UnitTestCase;
+import org.jboss.messaging.util.ExecutorFactory;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -188,30 +194,30 @@
    }
    
    public void testStartStop() throws Exception
-   {
-      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
-      
-      ServerSession session1 = EasyMock.createStrictMock(ServerSession.class);
-      ServerSession session2 = EasyMock.createStrictMock(ServerSession.class);
-      ServerSession session3 = EasyMock.createStrictMock(ServerSession.class);
-      
-      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
-      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+   {      
       PostOffice po = EasyMock.createStrictMock(PostOffice.class);
       ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> qs = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ResourceManager rm = EasyMock.createStrictMock(ResourceManager.class);
+      SecurityStore ss = EasyMock.createStrictMock(SecurityStore.class);
+      ExecutorFactory ef = EasyMock.createStrictMock(ExecutorFactory.class);
       
-      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
-      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
-      final long id = 91829182;
+      final long id = 120912;
+      
       EasyMock.expect(pd.generateID()).andReturn(id);
-      EasyMock.expect(server.getPostOffice()).andReturn(po);
-      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
       
-      EasyMock.replay(server, remoting, pd, po, cm);
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef);
+       
+      ServerConnectionImpl conn = new ServerConnectionImpl("huihuh", "ookkok",
+                     192818, po, cm, pd, sm, qs, rm, ss, ef);
       
-      ServerConnectionImpl conn = new ServerConnectionImpl(server, "uyuiiu", "iuiui", 87788778);
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef);
       
-      EasyMock.verify(server, remoting, pd, po, cm);
+      ServerSession session1 = EasyMock.createStrictMock(ServerSession.class);
+      ServerSession session2 = EasyMock.createStrictMock(ServerSession.class);
+      ServerSession session3 = EasyMock.createStrictMock(ServerSession.class);
       
       conn.addSession(session1);
       conn.addSession(session2);
@@ -221,62 +227,61 @@
       
       assertFalse(conn.isStarted());
       
-      EasyMock.reset(server, remoting, pd, po, cm);
+      EasyMock.reset(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
       session1.setStarted(true);
       session2.setStarted(true);
       session3.setStarted(true);
       
-      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3);
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
       conn.start();
       
       assertTrue(conn.isStarted());
       
-      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3);
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
-      EasyMock.reset(server, remoting, pd, po, cm, session1, session2, session3);
+      EasyMock.reset(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
       session1.setStarted(false);
       session2.setStarted(false);
       session3.setStarted(false);
       
-      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3);
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
             
       conn.stop();
       
-      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3);
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
       assertFalse(conn.isStarted());      
    }
    
    public void testClose() throws Exception
    {
-      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> qs = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ResourceManager rm = EasyMock.createStrictMock(ResourceManager.class);
+      SecurityStore ss = EasyMock.createStrictMock(SecurityStore.class);
+      ExecutorFactory ef = EasyMock.createStrictMock(ExecutorFactory.class);
       
       ServerSession session1 = EasyMock.createStrictMock(ServerSession.class);
       ServerSession session2 = EasyMock.createStrictMock(ServerSession.class);
       ServerSession session3 = EasyMock.createStrictMock(ServerSession.class);
       
-      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
-      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
-      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
-      ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
-      
-      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
-      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
       final long id = 91829182;
       EasyMock.expect(pd.generateID()).andReturn(id);
-      EasyMock.expect(server.getPostOffice()).andReturn(po);
-      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
       
-      EasyMock.replay(server, remoting, pd, po, cm);
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
       final long remotingClientSessionID = 81728172;
       
-      ServerConnectionImpl conn = new ServerConnectionImpl(server, "uyuiiu", "iuiui", remotingClientSessionID);
+      ServerConnectionImpl conn = new ServerConnectionImpl("huihuh", "ookkok",
+            remotingClientSessionID, po, cm, pd, sm, qs, rm, ss, ef);
       
-      EasyMock.verify(server, remoting, pd, po, cm);
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
       conn.addSession(session1);
       conn.addSession(session2);
@@ -302,7 +307,7 @@
       
       assertFalse(conn.isClosed());
       
-      EasyMock.reset(server, remoting, pd, po, cm);
+      EasyMock.reset(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3);
       
       session1.close();
       session2.close();
@@ -342,107 +347,96 @@
       
       pd.unregister(id);
       
-      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
-                      binding1, binding2, binding3);
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3, queue1, queue2, queue3,
+            binding1, binding2, binding3);
       
       conn.close();
       
       assertTrue(conn.isClosed());
       
-      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3, queue1, queue2, queue3,
             binding1, binding2, binding3);
       
-      EasyMock.reset(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
-            binding1, binding2, binding3);   
+      EasyMock.reset(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3, queue1, queue2, queue3,
+            binding1, binding2, binding3);  
       
       //Closing again should do nothing
       
-      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3, queue1, queue2, queue3,
             binding1, binding2, binding3);
       
       conn.close();
       
       assertTrue(conn.isClosed());
       
-      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
-            binding1, binding2, binding3);   
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef, session1, session2, session3, queue1, queue2, queue3,
+            binding1, binding2, binding3);
    }
    
    // Private ----------------------------------------------------------------------------------------
    
    private void testCreateSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks) throws Exception
    {
-      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
-                  
-      final ServerSession session = EasyMock.createStrictMock(ServerSession.class);
-                  
-      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
-      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       PostOffice po = EasyMock.createStrictMock(PostOffice.class);
       ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> qs = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ResourceManager rm = EasyMock.createStrictMock(ResourceManager.class);
+      SecurityStore ss = EasyMock.createStrictMock(SecurityStore.class);
+      ExecutorFactory ef = EasyMock.createStrictMock(ExecutorFactory.class);
       
-      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
-      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
       final long id = 91829182;
+      
       EasyMock.expect(pd.generateID()).andReturn(id);
-      EasyMock.expect(server.getPostOffice()).andReturn(po);
-      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
+                 
+      EasyMock.expect(ef.getExecutor()).andReturn(EasyMock.createMock(Executor.class));
       
-      pd.register(EasyMock.isA(ServerSessionPacketHandler.class));
-      
       final long sessionID = 18927;
-      EasyMock.expect(session.getID()).andReturn(sessionID);
       
-      EasyMock.replay(server, remoting, pd, po, cm, session);
+      EasyMock.expect(pd.generateID()).andReturn(sessionID);
+      
+      EasyMock.expect(sm.generateTransactionID()).andReturn(8172L);
+      
+      pd.register(EasyMock.isA(ServerSessionPacketHandler.class));
+      
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef);
     
-      ServerConnectionImpl conn = new ServerConnectionImpl(server, "uyuiiu", "iuiui", 87788778)
-      {
-         protected ServerSession doCreateSession(final boolean p_autoCommitSends, final boolean p_autoCommitAcks,
-               final boolean p_xa, final PacketReturner p_returner)
-         throws Exception
-         {            
-            assertEquals(autoCommitSends, p_autoCommitSends);
-            assertEquals(autoCommitAcks, p_autoCommitAcks);
-            assertEquals(xa, p_xa);
-            return session;
-         }
-      };
+      ServerConnectionImpl conn = new ServerConnectionImpl("huihuh", "ookkok",
+            8172718, po, cm, pd, sm, qs, rm, ss, ef);
       
       PacketReturner returner = EasyMock.createStrictMock(PacketReturner.class);
     
       ConnectionCreateSessionResponseMessage resp = conn.createSession(xa, autoCommitSends, autoCommitAcks, returner);
       
-      EasyMock.verify(server, remoting, pd, po, cm, session);      
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef);      
       
       assertEquals(sessionID, resp.getSessionID());
       
-      assertEquals(1, conn.getSessions().size());
-      assertTrue(session == conn.getSessions().iterator().next());
+      assertEquals(1, conn.getSessions().size());     
    }
    
    private ServerConnectionImpl createConnection(final long id, final String username, final String password,
          final long clientSessionID)
    {
-      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
-      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
-      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
       PostOffice po = EasyMock.createStrictMock(PostOffice.class);
       ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> qs = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ResourceManager rm = EasyMock.createStrictMock(ResourceManager.class);
+      SecurityStore ss = EasyMock.createStrictMock(SecurityStore.class);
+      ExecutorFactory ef = EasyMock.createStrictMock(ExecutorFactory.class);
       
-      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
-      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
       EasyMock.expect(pd.generateID()).andReturn(id);
-      EasyMock.expect(server.getPostOffice()).andReturn(po);
-      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
       
-      EasyMock.replay(server, remoting, pd, po, cm);
+      EasyMock.replay(po, cm, pd, sm, qs, rm, ss, ef);
+       
+      ServerConnectionImpl conn = new ServerConnectionImpl(username, password,
+                     clientSessionID, po, cm, pd, sm, qs, rm, ss, ef);
       
-      ServerConnectionImpl conn = new ServerConnectionImpl(server, username, password,
-                     clientSessionID);
+      EasyMock.verify(po, cm, pd, sm, qs, rm, ss, ef);
       
-      EasyMock.verify(server, remoting, pd, po, cm);
-      
-      assertTrue(server == conn.getServer());
       assertEquals(username, conn.getUsername());
       assertEquals(password, conn.getPassword());
       assertEquals(clientSessionID, conn.getClientSessionID());




More information about the jboss-cvs-commits mailing list