[jboss-cvs] JBoss Messaging SVN: r4802 - in trunk: src/main/org/jboss/messaging/core/management and 11 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Aug 14 09:04:40 EDT 2008


Author: jmesnil
Date: 2008-08-14 09:04:40 -0400 (Thu, 14 Aug 2008)
New Revision: 4802

Removed:
   trunk/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java
   trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java
Modified:
   trunk/src/config/jbm-beans.xml
   trunk/src/config/jbm-standalone-beans.xml
   trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
   trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java
   trunk/src/main/org/jboss/messaging/core/management/impl/AddressControl.java
   trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
   trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
   trunk/src/main/org/jboss/messaging/core/server/MessageReference.java
   trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
   trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/JMSServerManager.java
   trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java
   trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/AddressControlTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/TopicControlTest.java
Log:
JBMESSAGING-1303: Revisit management interfaces

* tidy up by merging MessagingServerManagement with MessagingServerControlMBean

Modified: trunk/src/config/jbm-beans.xml
===================================================================
--- trunk/src/config/jbm-beans.xml	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/config/jbm-beans.xml	2008-08-14 13:04:40 UTC (rev 4802)
@@ -28,13 +28,6 @@
       </property>
    </bean>-->
 
-   <bean name="MessagingServerManagement"
-         class="org.jboss.messaging.core.management.impl.MessagingServerManagementImpl">
-      <constructor factoryMethod="getServerManagement">
-         <factory bean="MessagingServer"/>
-      </constructor>
-   </bean>
-
    <bean name="MessagingServer" class="org.jboss.messaging.core.server.impl.MessagingServerImpl">
       <property name="storageManager">
          <inject bean="StorageManager"/>
@@ -75,6 +68,15 @@
             <inject bean="MessagingServer" property="serverManagement"/>
          </parameter>
          <parameter>
+            <inject bean="MessagingServer" property="postOffice"/>
+         </parameter>
+         <parameter>
+            <inject bean="MessagingServer" property="storageManager"/>
+         </parameter>
+         <parameter>
+            <inject bean="MessagingServer" property="queueSettingsRepository"/>
+         </parameter>
+         <parameter>
             <inject bean="JMSManagementService"/>
          </parameter>
       </constructor>

Modified: trunk/src/config/jbm-standalone-beans.xml
===================================================================
--- trunk/src/config/jbm-standalone-beans.xml	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/config/jbm-standalone-beans.xml	2008-08-14 13:04:40 UTC (rev 4802)
@@ -46,13 +46,6 @@
       </property>
    </bean>
 
-   <bean name="MessagingServerManagement"
-         class="org.jboss.messaging.core.management.impl.MessagingServerManagementImpl">
-      <constructor factoryMethod="getServerManagement">
-         <factory bean="MessagingServer"/>
-      </constructor>
-   </bean>
-
    <bean name="MessagingServer" class="org.jboss.messaging.core.server.impl.MessagingServerImpl">
       <depends>QueueSettingsDeployer</depends>
       <property name="storageManager">
@@ -94,6 +87,15 @@
             <inject bean="MessagingServer" property="serverManagement"/>
          </parameter>
          <parameter>
+            <inject bean="MessagingServer" property="postOffice"/>
+         </parameter>
+         <parameter>
+            <inject bean="MessagingServer" property="storageManager"/>
+         </parameter>
+         <parameter>
+            <inject bean="MessagingServer" property="queueSettingsRepository"/>
+         </parameter>
+         <parameter>
             <inject bean="JMSManagementService"/>
          </parameter>
       </constructor>

Modified: trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/ManagementService.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/management/ManagementService.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -22,8 +22,13 @@
 
 package org.jboss.messaging.core.management;
 
+import java.util.Set;
+
+import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.security.Role;
+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;
@@ -37,23 +42,22 @@
  */
 public interface ManagementService
 {
-   void setPostOffice(PostOffice postOffice);
+   MessagingServerControlMBean registerServer(PostOffice postOffice, StorageManager storageManager,
+         Configuration configuration,
+         HierarchicalRepository<Set<Role>> securityRepository,
+         HierarchicalRepository<QueueSettings> queueSettingsRepository,
+         MessagingServer messagingServer) throws Exception;
 
-   void setQueueSettingsRepository(
-         HierarchicalRepository<QueueSettings> queueSettingsRepository);
-
-   void registerServer(MessagingServerManagement server)
-         throws Exception;
-
    void unregisterServer() throws Exception;
 
    void registerAddress(SimpleString address) throws Exception;
 
    void unregisterAddress(SimpleString address) throws Exception;
 
-   void registerQueue(Queue queue, SimpleString address, StorageManager storageManager)
-         throws Exception;
+   void registerQueue(Queue queue, SimpleString address,
+         StorageManager storageManager) throws Exception;
 
    void unregisterQueue(SimpleString name, SimpleString address)
          throws Exception;
+
 }

Modified: trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -26,6 +26,8 @@
 
 import java.util.List;
 
+import org.jboss.messaging.core.config.Configuration;
+
 /**
  * This interface describes the core management interface exposed by the server
  */
@@ -79,6 +81,8 @@
 
    boolean isCreateJournalDir();
 
+   Configuration getConfiguration();
+   
    // Operations ----------------------------------------------------
 
    @Operation(desc = "Create a queue with the specified address", impact = ACTION)

Deleted: trunk/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -1,150 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */ 
-
-package org.jboss.messaging.core.management;
-
-import java.util.List;
-import java.util.Set;
-
-import org.jboss.messaging.core.config.Configuration;
-import org.jboss.messaging.core.filter.Filter;
-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;
-
-/**
- * This interface describes the core management interface exposed by the server
- * 
- * @author <a href="ataylor at redhat.com">Andy Taylor</a>
- * @author <a href="tim.fox at jboss.com">Tim Fox</a>
- * @author <a href="jmesnil at redhat.com">Jeff Mesnil</a>
- */
-public interface MessagingServerManagement
-{
-   int getConnectionCount();
-   
-   /**
-    * is the server started
-    * @return true if the server is running
-    */
-   boolean isStarted();
-
-   /**
-    * creates a queue with the specified address
-    * @param address the address
-    * @param name the name of the queue
-    * @throws Exception if a problem occurred
-    */
-   void createQueue(SimpleString address, SimpleString name) throws Exception;
-
-   /**
-    * @param address
-    * @param name
-    * @param filter
-    * @param durable
-    * @param temporary
-    * @throws Exception
-    */
-   void createQueue(SimpleString address, SimpleString name, SimpleString filter,
-         boolean durable, boolean temporary) throws Exception;
-
-   /**
-    * destroy a particular queue
-    * @param name the name of the queue
-    * @throws Exception if a problem occurred
-    */
-   void destroyQueue(SimpleString name) throws Exception;
-
-   /**
-    * add an address to the post office
-    * @param address the address to add
-    * @return true if the address was added
-    * @throws Exception if a problem occurred
-    */
-   boolean addDestination(SimpleString address) throws Exception;
-
-   /**
-    * remove an address from the post office
-    * @param address the address to remove
-    * @return true if the address was removed
-    * @throws Exception if a problem occurred
-    */
-   boolean removeDestination(SimpleString address) throws Exception;
-
-   /**
-    * returns all the queues for a specific address
-    * @param address the address
-    * @return the queues
-    * @throws Exception if a problem occurred
-    */
-   List<Queue> getQueuesForAddress(SimpleString address) throws Exception;
-
-   boolean removeMessageFromQueue(long messageID, SimpleString queueName) throws Exception;
-
-   /**
-    * remove all the messages for a specific address
-    * @param address the address
-    * @throws Exception if a problem occurred
-    */
-   void removeAllMessagesForAddress(SimpleString address) throws Exception;
-
-   void setSecurityForAddress(SimpleString address, Set<Role> roles) throws Exception;
-   
-   void removeSecurityForAddress(SimpleString address) throws Exception;
-   
-   Set<Role> getSecurityForAddress(SimpleString address) throws Exception;
-   
-   void setQueueAttributes(SimpleString queueName, QueueSettings settings) throws Exception;
-   
-   Configuration getConfiguration();
-
-   /**
-    * @param queueName
-    * @return
-    * @throws Exception 
-    */
-   Queue getQueue(SimpleString queueName) throws Exception;
-
-   /**
-    * @return
-    */
-   String getVersion();
-
-   boolean expireMessage(long messageID, SimpleString queueName) throws Exception;
-
-
-   int expireMessages(Filter filter,
-         SimpleString queueName) throws Exception;
-
-   /**
-    * @param simpleAddress
-    * @return
-    */
-   QueueSettings getQueueSettings(SimpleString simpleAddress);
-
-   int sendMessagesToDLQ(Filter filter,
-         SimpleString queueName) throws Exception;
-
-   int changeMessagesPriority(Filter filter,
-         byte newPriority, SimpleString queueName) throws Exception;
-}

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/AddressControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/AddressControl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/AddressControl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -32,11 +32,12 @@
 import javax.management.openmbean.TabularData;
 
 import org.jboss.messaging.core.management.AddressControlMBean;
-import org.jboss.messaging.core.management.MessagingServerManagement;
 import org.jboss.messaging.core.management.RoleInfo;
+import org.jboss.messaging.core.postoffice.Binding;
+import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.security.CheckType;
 import org.jboss.messaging.core.security.Role;
-import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -54,19 +55,22 @@
    // Attributes ----------------------------------------------------
 
    private final SimpleString address;
-   private MessagingServerManagement server;
+   private final PostOffice postOffice;
+   private final HierarchicalRepository<Set<Role>> securityRepository;
 
    // Static --------------------------------------------------------
 
    // Constructors --------------------------------------------------
 
    public AddressControl(final SimpleString address,
-         final MessagingServerManagement server)
+         final PostOffice postOffice,
+         final HierarchicalRepository<Set<Role>> securityRepository)
          throws NotCompliantMBeanException
    {
       super(AddressControlMBean.class);
       this.address = address;
-      this.server = server;
+      this.postOffice = postOffice;
+      this.securityRepository = securityRepository;
    }
 
    // Public --------------------------------------------------------
@@ -82,11 +86,12 @@
    {
       try
       {
-         List<Queue> queues = server.getQueuesForAddress(address);
-         String[] queueNames = new String[queues.size()];
-         for (int i = 0; i < queues.size(); i++)
+         List<Binding> bindings = postOffice.getBindingsForAddress(address);
+         String[] queueNames = new String[bindings.size()];
+         for (int i = 0; i < bindings.size(); i++)
          {
-            queueNames[i] = queues.get(i).getName().toString();
+            Binding binding = bindings.get(i);
+            queueNames[i] = binding.getQueue().getName().toString();
          }
          return queueNames;
       } catch (Throwable t)
@@ -102,7 +107,7 @@
 
    public RoleInfo[] getRoleInfos() throws Exception
    {
-      Set<Role> roles = server.getSecurityForAddress(address);
+      Set<Role> roles = securityRepository.getMatch(address.toString());
       RoleInfo[] roleInfos = new RoleInfo[roles.size()];
       int i = 0;
       for (Role role : roles)
@@ -118,19 +123,19 @@
    public void addRole(final String name, final boolean create,
          final boolean read, final boolean write) throws Exception
    {
-      Set<Role> roles = server.getSecurityForAddress(address);
+      Set<Role> roles = securityRepository.getMatch(address.toString());
       Role newRole = new Role(name, read, write, create);
       boolean added = roles.add(newRole);
       if (!added)
       {
          throw new IllegalArgumentException("Role " + name + " already exists");
       }
-      server.setSecurityForAddress(address, roles);
+      securityRepository.addMatch(address.toString(), roles);
    }
 
    public void removeRole(final String role) throws Exception
    {
-      Set<Role> roles = server.getSecurityForAddress(address);
+      Set<Role> roles = securityRepository.getMatch(address.toString());
       Iterator<Role> it = roles.iterator();
       boolean removed = false;
       while (it.hasNext())
@@ -147,7 +152,7 @@
       {
          throw new IllegalArgumentException("Role " + role + " does not exist");
       }
-      server.setSecurityForAddress(address, roles);
+      securityRepository.addMatch(address.toString(), roles);
    }
 
    // StandardMBean overrides ---------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -22,16 +22,21 @@
 
 package org.jboss.messaging.core.management.impl;
 
+import java.util.Set;
+
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
+import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.management.AddressControlMBean;
 import org.jboss.messaging.core.management.ManagementService;
-import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.management.MessagingServerControlMBean;
 import org.jboss.messaging.core.management.QueueControlMBean;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.security.Role;
+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;
@@ -54,10 +59,11 @@
    // Attributes ----------------------------------------------------
 
    private final MBeanServer mbeanServer;
-   private MessagingServerManagement server;
+   private final boolean jmxManagementEnabled;
+
    private PostOffice postOffice;
+   private HierarchicalRepository<Set<Role>> securityRepository;
    private HierarchicalRepository<QueueSettings> queueSettingsRepository;
-   private boolean jmxManagementEnabled;
 
    // Static --------------------------------------------------------
 
@@ -94,31 +100,28 @@
 
    // ManagementRegistration implementation -------------------------
 
-   public void setPostOffice(final PostOffice postOffice)
+   public MessagingServerControlMBean registerServer(PostOffice postOffice,
+         StorageManager storageManager, Configuration configuration,
+         HierarchicalRepository<Set<Role>> securityRepository,
+         HierarchicalRepository<QueueSettings> queueSettingsRepository,
+         MessagingServer messagingServer) throws Exception
    {
       this.postOffice = postOffice;
-   }
-
-   public void setQueueSettingsRepository(
-         final HierarchicalRepository<QueueSettings> queueSettingsRepository)
-   {
+      this.securityRepository = securityRepository;
       this.queueSettingsRepository = queueSettingsRepository;
-   }
-
-   public void registerServer(final MessagingServerManagement server)
-         throws Exception
-   {
+      MessagingServerControlMBean managedServer = new MessagingServerControl(
+            postOffice, storageManager, configuration, securityRepository,
+            queueSettingsRepository, messagingServer);
       if (!jmxManagementEnabled)
       {
-         return;
+         return managedServer;
       }
       unregisterServer();
       ObjectName objectName = getMessagingServerObjectName();
-      MessagingServerControl managedServer = new MessagingServerControl(server,
-            server.getConfiguration());
       mbeanServer.registerMBean(managedServer, objectName);
-      this.server = server;
       log.info("registered core server under " + objectName);
+      return managedServer;
+
    }
 
    public void unregisterServer() throws Exception
@@ -131,7 +134,6 @@
       if (mbeanServer.isRegistered(objectName))
       {
          mbeanServer.unregisterMBean(getMessagingServerObjectName());
-         this.server = null;
       }
    }
 
@@ -143,7 +145,8 @@
       }
       unregisterAddress(address);
       ObjectName objectName = getAddressObjectName(address);
-      AddressControlMBean addressControl = new AddressControl(address, server);
+      AddressControlMBean addressControl = new AddressControl(address,
+            postOffice, securityRepository);
       mbeanServer.registerMBean(addressControl, objectName);
       if (log.isDebugEnabled())
       {

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -23,12 +23,12 @@
 package org.jboss.messaging.core.management.impl;
 
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
 import javax.management.ListenerNotFoundException;
 import javax.management.MBeanInfo;
 import javax.management.MBeanNotificationInfo;
-import javax.management.NotCompliantMBeanException;
 import javax.management.Notification;
 import javax.management.NotificationBroadcasterSupport;
 import javax.management.NotificationEmitter;
@@ -37,8 +37,18 @@
 import javax.management.StandardMBean;
 
 import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.filter.Filter;
+import org.jboss.messaging.core.filter.impl.FilterImpl;
 import org.jboss.messaging.core.management.MessagingServerControlMBean;
-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.postoffice.PostOffice;
+import org.jboss.messaging.core.security.Role;
+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.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -55,8 +65,12 @@
 
    // Attributes ----------------------------------------------------
 
-   private final MessagingServerManagement server;
+   private final PostOffice postOffice;
+   private final StorageManager storageManager;
    private final Configuration configuration;
+   private final HierarchicalRepository<Set<Role>> securityRepository;
+   private final HierarchicalRepository<QueueSettings> queueSettingsRepository;
+   private final MessagingServer server;
 
    private final NotificationBroadcasterSupport broadcaster;
    private AtomicLong notifSeq = new AtomicLong(0);
@@ -65,17 +79,107 @@
 
    // Constructors --------------------------------------------------
 
-   public MessagingServerControl(final MessagingServerManagement server,
-         final Configuration configuration) throws NotCompliantMBeanException
+   public MessagingServerControl(PostOffice postOffice,
+         StorageManager storageManager, Configuration configuration,
+         HierarchicalRepository<Set<Role>> securityRepository,
+         HierarchicalRepository<QueueSettings> queueSettingsRepository,
+         MessagingServer messagingServer) throws Exception
    {
       super(MessagingServerControlMBean.class);
-      this.server = server;
+      this.postOffice = postOffice;
+      this.storageManager = storageManager;
       this.configuration = configuration;
+      this.securityRepository = securityRepository;
+      this.queueSettingsRepository = queueSettingsRepository;
+      this.server = messagingServer;
+
       broadcaster = new NotificationBroadcasterSupport();
    }
 
    // Public --------------------------------------------------------
 
+   public void addDestination(SimpleString simpleAddress) throws Exception
+   {
+      postOffice.addDestination(simpleAddress, false);
+   }
+
+   public void removeDestination(SimpleString simpleAddress) throws Exception
+   {
+      postOffice.removeDestination(simpleAddress, false);
+   }
+
+   public Queue getQueue(String address) throws Exception
+   {
+      SimpleString sAddress = new SimpleString(address);
+      Binding binding = postOffice.getBinding(sAddress);
+      if (binding == null)
+      {
+         throw new IllegalArgumentException("No queue with name " + sAddress);
+      }
+
+      return binding.getQueue();
+   }
+
+   public Configuration getConfiguration()
+   {
+      return configuration;
+   }
+
+   public int expireMessages(Filter filter, SimpleString simpleAddress)
+         throws Exception
+   {
+      Binding binding = postOffice.getBinding(simpleAddress);
+      if (binding != null)
+      {
+         Queue queue = binding.getQueue();
+         List<MessageReference> refs = queue.list(filter);
+         for (MessageReference ref : refs)
+         {
+            queue.expireMessage(ref.getMessage().getMessageID(),
+                  storageManager, postOffice, queueSettingsRepository);
+         }
+         return refs.size();
+      }
+      return 0;
+   }
+
+   public int sendMessagesToDLQ(Filter filter, SimpleString simpleAddress)
+         throws Exception
+   {
+      Binding binding = postOffice.getBinding(simpleAddress);
+      if (binding != null)
+      {
+         Queue queue = binding.getQueue();
+         List<MessageReference> refs = queue.list(filter);
+         for (MessageReference ref : refs)
+         {
+            queue.sendMessageToDLQ(ref.getMessage().getMessageID(),
+                  storageManager, postOffice, queueSettingsRepository);
+         }
+         return refs.size();
+      }
+      return 0;
+   }
+
+   public int changeMessagesPriority(Filter filter, byte newPriority,
+         SimpleString simpleAddress) throws Exception
+   {
+      Binding binding = postOffice.getBinding(simpleAddress);
+      if (binding != null)
+      {
+         Queue queue = binding.getQueue();
+         List<MessageReference> refs = queue.list(filter);
+         for (MessageReference ref : refs)
+         {
+            queue.changeMessagePriority(ref.getMessage().getMessageID(),
+                  newPriority, storageManager, postOffice,
+                  queueSettingsRepository);
+         }
+         return refs.size();
+      }
+      return 0;
+   }
+
    // StandardMBean overrides ---------------------------------------
 
    @Override
@@ -97,7 +201,7 @@
 
    public String getVersion()
    {
-      return server.getVersion();
+      return server.getVersion().getFullVersion();
    }
 
    public String getBindingsDirectory()
@@ -203,19 +307,24 @@
    public boolean addAddress(final String address) throws Exception
    {
       sendNotification(NotificationType.ADDRESS_ADDED, address);
-      return server.addDestination(new SimpleString(address));
+      return postOffice.addDestination(new SimpleString(address), false);
    }
 
    public void createQueue(final String address, final String name)
          throws Exception
    {
-      server.createQueue(new SimpleString(address), new SimpleString(name));
+      SimpleString sAddress = new SimpleString(address);
+      SimpleString sName = new SimpleString(name);
+      if (postOffice.getBinding(sAddress) == null)
+      {
+         postOffice.addBinding(sAddress, sName, null, true, false);
+      }
       sendNotification(NotificationType.ADDRESS_ADDED, address);
       sendNotification(NotificationType.QUEUE_CREATED, name);
    }
 
    public void createQueue(final String address, final String name,
-         final String filter, final boolean durable, final boolean temporary)
+         final String filterStr, final boolean durable, final boolean temporary)
          throws Exception
    {
       if (temporary && durable)
@@ -224,17 +333,36 @@
                "A queue can not be both temporary and durable");
       }
 
-      SimpleString simpleFilter = (filter == null || filter.length() == 0) ? null
-            : new SimpleString(filter);
-      server.createQueue(new SimpleString(address), new SimpleString(name),
-            simpleFilter, durable, temporary);
+      SimpleString sAddress = new SimpleString(address);
+      SimpleString sName = new SimpleString(name);
+      SimpleString sFilter = (filterStr == null || filterStr.length() == 0) ? null
+            : new SimpleString(filterStr);
+      Filter filter = null;
+      if (sFilter != null)
+      {
+         filter = new FilterImpl(sFilter);
+      }
+      if (postOffice.getBinding(sAddress) == null)
+      {
+         postOffice.addBinding(sAddress, sName, filter, durable, temporary);
+      }
       sendNotification(NotificationType.ADDRESS_ADDED, address);
       sendNotification(NotificationType.QUEUE_CREATED, name);
    }
 
    public void destroyQueue(final String name) throws Exception
    {
-      server.destroyQueue(new SimpleString(name));
+      SimpleString sName = new SimpleString(name);
+      Binding binding = postOffice.getBinding(sName);
+
+      if (binding != null)
+      {
+         Queue queue = binding.getQueue();
+
+         queue.deleteAllReferences(storageManager);
+
+         postOffice.removeBinding(queue.getName());
+      }
       sendNotification(NotificationType.QUEUE_DESTROYED, name);
    }
 
@@ -246,7 +374,7 @@
    public boolean removeAddress(final String address) throws Exception
    {
       sendNotification(NotificationType.ADDRESS_REMOVED, address);
-      return server.removeDestination(new SimpleString(address));
+      return postOffice.removeDestination(new SimpleString(address), false);
    }
 
    // NotificationEmitter implementation ----------------------------

Deleted: trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerManagementImpl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -1,315 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.management.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.jboss.messaging.core.config.Configuration;
-import org.jboss.messaging.core.filter.Filter;
-import org.jboss.messaging.core.filter.impl.FilterImpl;
-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.postoffice.PostOffice;
-import org.jboss.messaging.core.security.Role;
-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.settings.HierarchicalRepository;
-import org.jboss.messaging.core.settings.impl.QueueSettings;
-import org.jboss.messaging.util.SimpleString;
-
-/**
- * This interface describes the properties and operations that comprise the
- * management interface of the Messaging Server. <p/> It includes operations to
- * create and destroy queues and provides various statistics measures such as
- * message count for queues and topics.
- * 
- * @author <a href="mailto:ataylor at redhat.com>Andy Taylor</a>
- * @author <a href="jmesnil at redhat.com">Jeff Mesnil</a>
- */
-public class MessagingServerManagementImpl implements MessagingServerManagement
-{
-
-   // Constants -----------------------------------------------------
-
-   // Attributes ----------------------------------------------------
-
-   private final PostOffice postOffice;
-
-   private final StorageManager storageManager;
-
-   private final Configuration configuration;
-
-   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 HierarchicalRepository<Set<Role>> securityRepository,
-                                        final HierarchicalRepository<QueueSettings> queueSettingsRepository,
-                                        final MessagingServer server)
-   {
-      this.postOffice = postOffice;
-
-      this.storageManager = storageManager;
-
-      this.configuration = configuration;
-
-      this.server = server;
-
-      this.securityRepository = securityRepository;
-
-      this.queueSettingsRepository = queueSettingsRepository;
-   }
-
-   // MessagingServerManagement implementation ----------------------
-
-   public boolean isStarted()
-   {
-      return server.isStarted();
-   }
-
-   public String getVersion()
-   {
-      return server.getVersion().getFullVersion();
-   }
-
-   public void createQueue(final SimpleString address, final SimpleString name)
-         throws Exception
-   {
-      if (postOffice.getBinding(name) == null)
-      {
-         postOffice.addBinding(address, name, null, true, false);
-      }
-   }
-
-   public void createQueue(final SimpleString address, final SimpleString name,
-         final SimpleString filterStr, final boolean durable,
-         final boolean temporary) throws Exception
-   {
-      if (postOffice.getBinding(name) == null)
-      {
-         Filter filter = null;
-         if (filterStr != null)
-         {
-            filter = new FilterImpl(filterStr);
-         }
-         postOffice.addBinding(address, name, filter, durable, temporary);
-      }
-   }
-
-   public int getConnectionCount()
-   {
-      return server.getConnectionCount();
-   }
-
-   public void destroyQueue(final SimpleString queueName) throws Exception
-   {
-      Binding binding = postOffice.getBinding(queueName);
-
-      if (binding != null)
-      {
-         Queue queue = binding.getQueue();
-
-         queue.deleteAllReferences(storageManager);
-
-         postOffice.removeBinding(queue.getName());
-      }
-   }
-
-   public boolean addDestination(final SimpleString address) throws Exception
-   {
-      return postOffice.addDestination(address, false);
-   }
-
-   public boolean removeDestination(final SimpleString address)
-         throws Exception
-   {
-      return postOffice.removeDestination(address, false);
-   }
-
-   public void removeAllMessagesForAddress(final SimpleString address)
-         throws Exception
-   {
-      List<Binding> bindings = postOffice.getBindingsForAddress(address);
-
-      for (Binding binding : bindings)
-      {
-         Queue queue = binding.getQueue();
-
-         queue.deleteAllReferences(storageManager);
-      }
-   }
-
-   public boolean removeMessageFromQueue(final long messageID,
-         SimpleString queueName) throws Exception
-   {
-      Binding binding = postOffice.getBinding(queueName);
-      if (binding != null)
-      {
-         Queue queue = binding.getQueue();
-         return queue.deleteReference(messageID, storageManager);
-      }
-      return false;
-   }
-
-   public boolean expireMessage(final long messageID, final SimpleString queueName)
-         throws Exception
-   {
-      Binding binding = postOffice.getBinding(queueName);
-      if (binding != null)
-      {
-         Queue queue = binding.getQueue();
-         return queue.expireMessage(messageID, storageManager, postOffice,
-               queueSettingsRepository);
-      }
-      return false;
-   }
-
-   public int expireMessages(final Filter filter,
-         final SimpleString queueName) throws Exception
-   {
-      Binding binding = postOffice.getBinding(queueName);
-      if (binding != null)
-      {
-         Queue queue = binding.getQueue();
-         List<MessageReference> refs = queue.list(filter);
-         for (MessageReference ref : refs)
-         {
-            queue.expireMessage(ref.getMessage().getMessageID(),
-                  storageManager, postOffice, queueSettingsRepository);
-         }
-         return refs.size();
-      }
-      return 0;
-   }
-
-   public int sendMessagesToDLQ(final Filter filter,
-         final SimpleString queueName) throws Exception
-   {
-      Binding binding = postOffice.getBinding(queueName);
-      if (binding != null)
-      {
-         Queue queue = binding.getQueue();
-         List<MessageReference> refs = queue.list(filter);
-         for (MessageReference ref : refs)
-         {
-            queue.sendMessageToDLQ(ref.getMessage().getMessageID(),
-                  storageManager, postOffice, queueSettingsRepository);
-         }
-         return refs.size();
-      }
-      return 0;
-   }
-
-   public int changeMessagesPriority(final Filter filter,
-         final byte newPriority, final SimpleString queueName) throws Exception
-   {
-      Binding binding = postOffice.getBinding(queueName);
-      if (binding != null)
-      {
-         Queue queue = binding.getQueue();
-         List<MessageReference> refs = queue.list(filter);
-         for (MessageReference ref : refs)
-         {
-            queue.changeMessagePriority(ref.getMessage().getMessageID(),
-                  newPriority, storageManager, postOffice,
-                  queueSettingsRepository);
-         }
-         return refs.size();
-      }
-      return 0;
-   }
-
-   public QueueSettings getQueueSettings(final SimpleString simpleAddress)
-   {
-      return queueSettingsRepository.getMatch(simpleAddress.toString());
-   }
-
-   public List<Queue> getQueuesForAddress(final SimpleString address)
-         throws Exception
-   {
-      List<Queue> queues = new ArrayList<Queue>();
-      List<Binding> bindings = postOffice.getBindingsForAddress(address);
-
-      for (Binding binding : bindings)
-      {
-         Queue queue = binding.getQueue();
-         queues.add(queue);
-      }
-      return queues;
-   }
-
-   public void setSecurityForAddress(final SimpleString address, final Set<Role> roles)
-         throws Exception
-   {
-      this.securityRepository.addMatch(address.toString(), roles);
-   }
-
-   public void removeSecurityForAddress(final SimpleString address) throws Exception
-   {
-      this.securityRepository.removeMatch(address.toString());
-   }
-
-   public Set<Role> getSecurityForAddress(final SimpleString address)
-         throws Exception
-   {
-      return this.securityRepository.getMatch(address.toString());
-   }
-
-   public void setQueueAttributes(final SimpleString queueName,
-         final QueueSettings settings) throws Exception
-   {
-      this.queueSettingsRepository.addMatch(queueName.toString(), settings);
-   }
-
-   public Configuration getConfiguration()
-   {
-      return configuration;
-   }
-
-   public Queue getQueue(final SimpleString queueName) throws Exception
-   {
-      Binding binding = postOffice.getBinding(queueName);
-      if (binding == null)
-      {
-         throw new IllegalArgumentException("No queue with name " + queueName);
-      }
-
-      return binding.getQueue();
-   }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   // Inner classes -------------------------------------------------
-}

Modified: trunk/src/main/org/jboss/messaging/core/server/MessageReference.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/MessageReference.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/server/MessageReference.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -70,7 +70,7 @@
                   HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception;
    
    void expire(StorageManager persistenceManager, PostOffice postOffice,
-   		      HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception;
+         HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception;
    
    void move(Binding otherBinding, StorageManager persistenceManager, PostOffice postOffice) throws Exception;
 

Modified: trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -26,8 +26,9 @@
 
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.management.ManagementService;
-import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.management.MessagingServerControlMBean;
 import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.remoting.RemotingConnection;
 import org.jboss.messaging.core.remoting.RemotingService;
 import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionResponse;
@@ -79,11 +80,13 @@
         
    boolean isStarted();
    
-   MessagingServerManagement getServerManagement();  
+   MessagingServerControlMBean getServerManagement();  
    
    HierarchicalRepository<Set<Role>> getSecurityRepository();
    
    HierarchicalRepository<QueueSettings> getQueueSettingsRepository();
    
    int getConnectionCount();
+   
+   PostOffice getPostOffice();
 }

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -32,8 +32,7 @@
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.management.ManagementService;
-import org.jboss.messaging.core.management.MessagingServerManagement;
-import org.jboss.messaging.core.management.impl.MessagingServerManagementImpl;
+import org.jboss.messaging.core.management.MessagingServerControlMBean;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.postoffice.impl.PostOfficeImpl;
@@ -93,7 +92,7 @@
    private HierarchicalRepository<Set<Role>> securityRepository;
    private ResourceManager resourceManager;   
    private MessagingServerPacketHandler serverPacketHandler;
-   private MessagingServerManagement serverManagement;
+   private MessagingServerControlMBean serverManagement;
    private PacketDispatcher dispatcher;
 
    // plugins
@@ -170,11 +169,9 @@
 
       securityStore = new SecurityStoreImpl(configuration.getSecurityInvalidationInterval(), configuration.isSecurityEnabled());  
       queueSettingsRepository.setDefault(new QueueSettings());
-      managementService.setQueueSettingsRepository(queueSettingsRepository);
       scheduledExecutor = new ScheduledThreadPoolExecutor(configuration.getScheduledThreadPoolMaxSize(), new JBMThreadFactory("JBM-scheduled-threads"));                  
       queueFactory = new QueueFactoryImpl(scheduledExecutor, queueSettingsRepository);      
       postOffice = new PostOfficeImpl(storageManager, queueFactory, managementService, configuration.isRequireDestinations());
-      managementService.setPostOffice(postOffice);
                        
       securityRepository = new HierarchicalObjectRepository<Set<Role>>();
       securityRepository.setDefault(new HashSet<Role>());
@@ -182,10 +179,9 @@
       securityStore.setSecurityManager(securityManager);                       
       resourceManager = new ResourceManagerImpl(0);                           
       dispatcher = remotingService.getDispatcher();
-      serverManagement = new MessagingServerManagementImpl(postOffice, storageManager, configuration,
-                                                           securityRepository,
-                                                           queueSettingsRepository, this);
-      managementService.registerServer(serverManagement);
+      serverManagement = managementService.registerServer(postOffice, storageManager, configuration,
+            securityRepository,
+            queueSettingsRepository, this);
 
       postOffice.start();
       serverPacketHandler = new MessagingServerPacketHandler(this, remotingService);          
@@ -349,7 +345,7 @@
       return new CreateConnectionResponse(connection.getID(), version);
    }
          
-   public MessagingServerManagement getServerManagement()
+   public MessagingServerControlMBean getServerManagement()
    {
       return serverManagement;
    }
@@ -358,6 +354,11 @@
    {
       return this.remotingService.getConnections().size();
    }
+   
+   public PostOffice getPostOffice()
+   {
+      return postOffice;
+   }
 
    // Public ---------------------------------------------------------------------------------------
 

Modified: trunk/src/main/org/jboss/messaging/jms/server/JMSServerManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/JMSServerManager.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/jms/server/JMSServerManager.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -24,10 +24,6 @@
 
 import java.util.List;
 
-import org.jboss.messaging.core.filter.Filter;
-import org.jboss.messaging.core.settings.impl.QueueSettings;
-import org.jboss.messaging.jms.JBossDestination;
-
 /**
  * The JMS Management interface.
  * 
@@ -169,27 +165,4 @@
     */
    boolean destroyConnectionFactory(String name) throws Exception;
 
-   /**
-    * removes all messages from a particular destination
-    * 
-    * @param queue
-    *           the destination
-    * @throws Exception
-    *            if a problem occurred
-    */
-   void removeAllMessages(JBossDestination destination) throws Exception;
-
-   boolean removeMessage(long messageID, JBossDestination destination)
-         throws Exception;
-
-   int expireMessages(Filter filter, JBossDestination destination)
-         throws Exception;
-
-   public QueueSettings getSettings(JBossDestination destination);
-
-   int sendMessagesToDLQ(Filter filter, JBossDestination destination)
-         throws Exception;
-
-   int changeMessagesPriority(Filter filter, byte newPriority,
-         JBossDestination destination) throws Exception;
 }

Modified: trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -31,11 +31,13 @@
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
-import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.logging.Logger;
-import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.management.MessagingServerControlMBean;
+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.settings.HierarchicalRepository;
 import org.jboss.messaging.core.settings.impl.QueueSettings;
-import org.jboss.messaging.jms.JBossDestination;
 import org.jboss.messaging.jms.JBossQueue;
 import org.jboss.messaging.jms.JBossTopic;
 import org.jboss.messaging.jms.client.JBossConnectionFactory;
@@ -66,13 +68,25 @@
 
    private final Map<String, List<String>> connectionFactoryBindings = new HashMap<String, List<String>>();
 
-   private final MessagingServerManagement messagingServerManagement;
+   private final MessagingServerControlMBean messagingServer;
 
-   private JMSManagementService managementService;
+   private final PostOffice postOffice;
 
-   public JMSServerManagerImpl(final MessagingServerManagement serverManager, final JMSManagementService managementService)
+   private final StorageManager storageManager;
+
+   private final HierarchicalRepository<QueueSettings> queueSettingsRepository;
+
+   private final JMSManagementService managementService;
+
+   public JMSServerManagerImpl(final MessagingServerControlMBean server,
+         final PostOffice postOffice, final StorageManager storageManager,
+         final HierarchicalRepository<QueueSettings> queueSettingsRepository,
+         final JMSManagementService managementService)
    {
-      messagingServerManagement = serverManager;
+      this.messagingServer = server;
+      this.postOffice = postOffice;
+      this.storageManager = storageManager;
+      this.queueSettingsRepository = queueSettingsRepository;
       this.managementService = managementService;
    }
 
@@ -92,29 +106,28 @@
 
    public boolean isStarted()
    {
-      return messagingServerManagement.isStarted();
+      return messagingServer.isStarted();
    }
 
    public String getVersion()
    {
-      return messagingServerManagement.getVersion();
+      return messagingServer.getVersion();
    }
 
    public boolean createQueue(final String queueName, final String jndiBinding)
          throws Exception
    {
       JBossQueue jBossQueue = new JBossQueue(queueName);
-      messagingServerManagement.addDestination(jBossQueue.getSimpleAddress());
-      messagingServerManagement.createQueue(jBossQueue.getSimpleAddress(),
-            jBossQueue.getSimpleAddress());
+      postOffice.addDestination(jBossQueue.getSimpleAddress(), false);
+      messagingServer.createQueue(jBossQueue.getAddress(), jBossQueue.getAddress());
       boolean added = bindToJndi(jndiBinding, jBossQueue);
       if (added)
       {
          addToDestinationBindings(queueName, jndiBinding);
       }
-      managementService.registerQueue(jBossQueue,
-            messagingServerManagement.getQueue(jBossQueue.getSimpleAddress()),
-            jndiBinding, this);
+      Binding binding = postOffice.getBinding(jBossQueue.getSimpleAddress());
+      managementService.registerQueue(jBossQueue, binding.getQueue(),
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       return added;
    }
 
@@ -122,14 +135,14 @@
          throws Exception
    {
       JBossTopic jBossTopic = new JBossTopic(topicName);
-      messagingServerManagement.addDestination(jBossTopic.getSimpleAddress());
+      postOffice.addDestination(jBossTopic.getSimpleAddress(), false);
       boolean added = bindToJndi(jndiBinding, jBossTopic);
       if (added)
       {
          addToDestinationBindings(topicName, jndiBinding);
       }
-      managementService.registerTopic(jBossTopic,
-            messagingServerManagement, jndiBinding);
+      managementService.registerTopic(jBossTopic, jndiBinding, postOffice,
+            storageManager);
       return added;
    }
 
@@ -146,10 +159,10 @@
       }
       destinations.remove(name);
       managementService.unregisterQueue(name);
-      messagingServerManagement.removeDestination(JBossQueue
-            .createAddressFromName(name));
-      messagingServerManagement.destroyQueue(JBossQueue
-            .createAddressFromName(name));
+      postOffice.removeDestination(JBossQueue.createAddressFromName(name),
+            false);
+      messagingServer.destroyQueue(JBossQueue.createAddressFromName(name)
+            .toString());
 
       return true;
    }
@@ -167,18 +180,12 @@
       }
       destinations.remove(name);
       managementService.unregisterTopic(name);
-      messagingServerManagement.removeDestination(JBossTopic
-            .createAddressFromName(name));
+      postOffice.removeDestination(JBossTopic.createAddressFromName(name),
+            false);
 
       return true;
    }
 
-   public QueueSettings getSettings(final JBossDestination destination)
-   {
-      return messagingServerManagement.getQueueSettings(destination
-            .getSimpleAddress());
-   }
-
    public boolean createConnectionFactory(final String name,
          final String clientID, final int dupsOKBatchSize,
          final int consumerWindowSize, final int consumerMaxRate,
@@ -192,11 +199,11 @@
       if (cf == null)
       {
          cf = new JBossConnectionFactory(clientID, dupsOKBatchSize,
-               messagingServerManagement.getConfiguration().getLocation(),
-               messagingServerManagement.getConfiguration()
-                     .getConnectionParams(), consumerWindowSize,
-               consumerMaxRate, producerWindowSize, producerMaxRate,
-               blockOnAcknowledge, defaultSendNonPersistentMessagesBlocking,
+               messagingServer.getConfiguration().getLocation(),
+               messagingServer.getConfiguration().getConnectionParams(),
+               consumerWindowSize, consumerMaxRate, producerWindowSize,
+               producerMaxRate, blockOnAcknowledge,
+               defaultSendNonPersistentMessagesBlocking,
                defaultSendPersistentMessagesBlocking);
          connectionFactories.put(name, cf);
       }
@@ -230,11 +237,11 @@
       if (cf == null)
       {
          cf = new JBossConnectionFactory(clientID, dupsOKBatchSize,
-               messagingServerManagement.getConfiguration().getLocation(),
-               messagingServerManagement.getConfiguration()
-                     .getConnectionParams(), consumerWindowSize,
-               consumerMaxRate, producerWindowSize, producerMaxRate,
-               blockOnAcknowledge, defaultSendNonPersistentMessagesBlocking,
+               messagingServer.getConfiguration().getLocation(),
+               messagingServer.getConfiguration().getConnectionParams(),
+               consumerWindowSize, consumerMaxRate, producerWindowSize,
+               producerMaxRate, blockOnAcknowledge,
+               defaultSendNonPersistentMessagesBlocking,
                defaultSendPersistentMessagesBlocking);
       }
       for (String jndiBinding : jndiBindings)
@@ -271,42 +278,6 @@
       return true;
    }
 
-   public void removeAllMessages(final JBossDestination destination)
-         throws Exception
-   {
-      messagingServerManagement.removeAllMessagesForAddress(destination
-            .getSimpleAddress());
-   }
-
-   public boolean removeMessage(final long messageID,
-         final JBossDestination destination) throws Exception
-   {
-      return messagingServerManagement.removeMessageFromQueue(messageID,
-            destination.getSimpleAddress());
-   }
-
-   public int expireMessages(final Filter filter,
-         final JBossDestination destination) throws Exception
-   {
-      return messagingServerManagement.expireMessages(filter, destination
-            .getSimpleAddress());
-   }
-
-   public int sendMessagesToDLQ(final Filter filter,
-         final JBossDestination destination) throws Exception
-   {
-      return messagingServerManagement.sendMessagesToDLQ(filter, destination
-            .getSimpleAddress());
-   }
-
-   public int changeMessagesPriority(final Filter filter,
-         final byte newPriority, final JBossDestination destination)
-         throws Exception
-   {
-      return messagingServerManagement.changeMessagesPriority(filter,
-            newPriority, destination.getSimpleAddress());
-   }
-
    // Public --------------------------------------------------------
 
    public void setInitialContext(final InitialContext initialContext)

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/JMSManagementService.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -18,14 +18,17 @@
  * 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.jms.server.management;
 
 import java.util.List;
 
-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.server.Queue;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.jms.JBossQueue;
 import org.jboss.messaging.jms.JBossTopic;
 import org.jboss.messaging.jms.client.JBossConnectionFactory;
@@ -33,25 +36,31 @@
 
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
- *
+ * 
  * @version <tt>$Revision$</tt>
- *
+ * 
  */
 public interface JMSManagementService
 {
    void registerJMSServer(JMSServerManager server) throws Exception;
-   
+
    void unregisterJMSServer() throws Exception;
 
-   void registerQueue(JBossQueue queue, Queue coreQueue, String jndiBinding, JMSServerManager server) throws Exception;
+   void registerQueue(JBossQueue queue, Queue coreQueue, String jndiBinding,
+         PostOffice postOffice, StorageManager storageManager,
+         HierarchicalRepository<QueueSettings> queueSettingsRepository)
+         throws Exception;
 
    void unregisterQueue(String name) throws Exception;
 
-   void registerTopic(JBossTopic topic, MessagingServerManagement serverManagement, String jndiBinding) throws Exception;
+   void registerTopic(JBossTopic topic, String jndiBinding,
+         PostOffice postOffice, StorageManager storageManager) throws Exception;
 
    void unregisterTopic(String name) throws Exception;
 
-   void registerConnectionFactory(String name, JBossConnectionFactory connectionFactory, List<String> bindings) throws Exception;
+   void registerConnectionFactory(String name,
+         JBossConnectionFactory connectionFactory, List<String> bindings)
+         throws Exception;
 
    void unregisterConnectionFactory(String name) throws Exception;
 }

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -95,7 +95,7 @@
          throws Exception;
    
    @Operation(desc = "Send the message corresponding to the given messageID to the queue's Dead Letter Queue", impact = ACTION)
-   boolean sendMessageTDLQ(
+   boolean sendMessageToDLQ(
          @Parameter(name = "messageID", desc = "A message ID") String messageID)
          throws Exception;
    

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -27,9 +27,12 @@
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
-import org.jboss.messaging.core.management.MessagingServerManagement;
 import org.jboss.messaging.core.management.impl.ManagementServiceImpl;
+import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.PostOffice;
 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.jms.JBossQueue;
 import org.jboss.messaging.jms.JBossTopic;
 import org.jboss.messaging.jms.client.JBossConnectionFactory;
@@ -116,7 +119,9 @@
    }
 
    public void registerQueue(final JBossQueue queue, final Queue coreQueue,
-         final String jndiBinding, final JMSServerManager server)
+         final String jndiBinding, final PostOffice postOffice,
+         final StorageManager storageManager,
+         HierarchicalRepository<QueueSettings> queueSettingsRepository)
          throws Exception
    {
       if (!jmxManagementEnabled)
@@ -126,7 +131,8 @@
       ObjectName objectName = getJMSQueueObjectName(queue.getQueueName());
       unregisterQueue(queue.getQueueName());
       mbeanServer.registerMBean(new JMSQueueControl(queue, coreQueue,
-            jndiBinding, server), objectName);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository),
+            objectName);
    }
 
    public void unregisterQueue(final String name) throws Exception
@@ -142,9 +148,9 @@
       }
    }
 
-   public void registerTopic(final JBossTopic topic,
-         final MessagingServerManagement serverManagement,
-         final String jndiBinding) throws Exception
+   public void registerTopic(final JBossTopic topic, final String jndiBinding,
+         final PostOffice postOffice, final StorageManager storageManager)
+         throws Exception
    {
       if (!jmxManagementEnabled)
       {
@@ -152,8 +158,8 @@
       }
       ObjectName objectName = getJMSTopicObjectName(topic.getTopicName());
       unregisterTopic(topic.getTopicName());
-      mbeanServer.registerMBean(new TopicControl(topic, serverManagement,
-            jndiBinding), objectName);
+      mbeanServer.registerMBean(new TopicControl(topic, jndiBinding,
+            postOffice, storageManager), objectName);
    }
 
    public void unregisterTopic(final String name) throws Exception

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -34,15 +34,18 @@
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.filter.impl.FilterImpl;
 import org.jboss.messaging.core.management.impl.MBeanInfoHelper;
+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.server.MessageReference;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.core.server.ServerMessage;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
 import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.jms.JBossDestination;
 import org.jboss.messaging.jms.JBossQueue;
 import org.jboss.messaging.jms.client.JBossMessage;
 import org.jboss.messaging.jms.client.SelectorTranslator;
-import org.jboss.messaging.jms.server.JMSServerManager;
 import org.jboss.messaging.jms.server.management.JMSMessageInfo;
 import org.jboss.messaging.jms.server.management.JMSQueueControlMBean;
 import org.jboss.messaging.util.SimpleString;
@@ -63,7 +66,9 @@
    private final JBossQueue managedQueue;
    private Queue coreQueue;
    private final String binding;
-   private JMSServerManager server;
+   private final PostOffice postOffice;
+   private final StorageManager storageManager;
+   private final HierarchicalRepository<QueueSettings> queueSettingsRepository;
 
    // Static --------------------------------------------------------
 
@@ -77,14 +82,18 @@
    // Constructors --------------------------------------------------
 
    public JMSQueueControl(final JBossQueue queue, final Queue coreQueue,
-         final String jndiBinding, final JMSServerManager server)
+         final String jndiBinding, final PostOffice postOffice,
+         final StorageManager storageManager,
+         HierarchicalRepository<QueueSettings> queueSettingsRepository)
          throws NotCompliantMBeanException
    {
       super(JMSQueueControlMBean.class);
       this.managedQueue = queue;
       this.coreQueue = coreQueue;
       this.binding = jndiBinding;
-      this.server = server;
+      this.postOffice = postOffice;
+      this.storageManager = storageManager;
+      this.queueSettingsRepository = queueSettingsRepository;
    }
 
    // Public --------------------------------------------------------
@@ -120,37 +129,37 @@
    {
       return coreQueue.getConsumerCount();
    }
-   
+
    public int getDeliveringCount()
    {
       return coreQueue.getDeliveringCount();
    }
-   
+
    public int getMaxSizeBytes()
    {
       return coreQueue.getMaxSizeBytes();
    }
-   
+
    public long getScheduledCount()
    {
       return coreQueue.getScheduledCount();
    }
-   
+
    public long getSizeBytes()
    {
       return coreQueue.getSizeBytes();
    }
-   
+
    public boolean isClustered()
    {
       return coreQueue.isClustered();
    }
-   
+
    public boolean isDurable()
    {
       return coreQueue.isDurable();
    }
-   
+
    public String getJNDIBinding()
    {
       return binding;
@@ -158,10 +167,10 @@
 
    public String getDLQ()
    {
-      QueueSettings settings = server.getSettings(managedQueue);
-      if (settings != null && settings.getDLQ() != null)
+      QueueSettings queueSettings = queueSettingsRepository.getMatch(getName());
+      if (queueSettings != null && queueSettings.getDLQ() != null)
       {
-         return JBossDestination.fromAddress(settings.getDLQ().toString())
+         return JBossDestination.fromAddress(queueSettings.getDLQ().toString())
                .getName();
       } else
       {
@@ -171,11 +180,11 @@
 
    public String getExpiryQueue()
    {
-      QueueSettings settings = server.getSettings(managedQueue);
-      if (settings != null && settings.getExpiryQueue() != null)
+      QueueSettings queueSettings = queueSettingsRepository.getMatch(getName());
+      if (queueSettings != null && queueSettings.getExpiryQueue() != null)
       {
          return JBossDestination.fromAddress(
-               settings.getExpiryQueue().toString()).getName();
+               queueSettings.getExpiryQueue().toString()).getName();
       } else
       {
          return null;
@@ -191,13 +200,13 @@
          throw new IllegalArgumentException(
                "No message found for JMSMessageID: " + messageID);
       }
-      return server.removeMessage(refs.get(0).getMessage().getMessageID(),
-            managedQueue);
+      return coreQueue.deleteReference(refs.get(0).getMessage().getMessageID(),
+            storageManager);
    }
 
    public void removeAllMessages() throws Exception
    {
-      server.removeAllMessages(managedQueue);
+      coreQueue.deleteAllReferences(storageManager);
    }
 
    public TabularData listAllMessages() throws Exception
@@ -238,7 +247,8 @@
          throw new IllegalArgumentException(
                "No message found for JMSMessageID: " + messageID);
       }
-      return server.expireMessages(filter, managedQueue) == 1;
+      return coreQueue.expireMessage(refs.get(0).getMessage().getMessageID(),
+            storageManager, postOffice, queueSettingsRepository);
    }
 
    public int expireMessages(final String filterStr) throws Exception
@@ -248,14 +258,21 @@
          Filter filter = filterStr == null ? null : new FilterImpl(
                new SimpleString(SelectorTranslator
                      .convertToJBMFilterString(filterStr)));
-         return server.expireMessages(filter, managedQueue);
+
+         List<MessageReference> refs = coreQueue.list(filter);
+         for (MessageReference ref : refs)
+         {
+            coreQueue.expireMessage(ref.getMessage().getMessageID(),
+                  storageManager, postOffice, queueSettingsRepository);
+         }
+         return refs.size();
       } catch (MessagingException e)
       {
          throw new IllegalStateException(e.getMessage());
       }
    }
 
-   public boolean sendMessageTDLQ(final String messageID) throws Exception
+   public boolean sendMessageToDLQ(final String messageID) throws Exception
    {
       Filter filter = createFilterForJMSMessageID(messageID);
       List<MessageReference> refs = coreQueue.list(filter);
@@ -264,7 +281,9 @@
          throw new IllegalArgumentException(
                "No message found for JMSMessageID: " + messageID);
       }
-      return server.sendMessagesToDLQ(filter, managedQueue) == 1;
+      return coreQueue.sendMessageToDLQ(
+            refs.get(0).getMessage().getMessageID(), storageManager,
+            postOffice, queueSettingsRepository);
    }
 
    public boolean changeMessagePriority(final String messageID,
@@ -282,8 +301,9 @@
          throw new IllegalArgumentException(
                "No message found for JMSMessageID: " + messageID);
       }
-      return server.changeMessagesPriority(filter, (byte) newPriority,
-            managedQueue) == 1;
+      return coreQueue.changeMessagePriority(refs.get(0).getMessage()
+            .getMessageID(), (byte) newPriority, storageManager, postOffice,
+            queueSettingsRepository);
    }
 
    // StandardMBean overrides ---------------------------------------

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -31,10 +31,12 @@
 import javax.management.StandardMBean;
 import javax.management.openmbean.TabularData;
 
-import org.jboss.messaging.core.management.MessagingServerManagement;
 import org.jboss.messaging.core.management.Operation;
 import org.jboss.messaging.core.management.Parameter;
 import org.jboss.messaging.core.management.impl.MBeanInfoHelper;
+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.server.MessageReference;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.core.server.ServerMessage;
@@ -58,21 +60,23 @@
    // Attributes ----------------------------------------------------
 
    private final JBossTopic managedTopic;
-   private final MessagingServerManagement server;
    private final String binding;
+   private final PostOffice postOffice;
+   private final StorageManager storageManager;
 
    // Static --------------------------------------------------------
 
    // Constructors --------------------------------------------------
 
-   public TopicControl(final JBossTopic topic,
-         final MessagingServerManagement server, final String jndiBinding)
+   public TopicControl(final JBossTopic topic, final String jndiBinding,
+         final PostOffice postOffice, final StorageManager storageManager)
          throws NotCompliantMBeanException
    {
       super(TopicControlMBean.class);
       this.managedTopic = topic;
-      this.server = server;
       this.binding = jndiBinding;
+      this.postOffice = postOffice;
+      this.storageManager = storageManager;
    }
 
    // Public --------------------------------------------------------
@@ -180,7 +184,13 @@
    public TabularData listMessagesForSubscriber(final String subscriberID)
          throws Exception
    {
-      Queue queue = server.getQueue(new SimpleString(subscriberID));
+      SimpleString sAddress = new SimpleString(subscriberID);
+      Binding binding = postOffice.getBinding(sAddress);
+      if (binding == null)
+      {
+         throw new IllegalArgumentException("No queue with name " + sAddress);
+      }
+      Queue queue = binding.getQueue();
       List<MessageReference> messageRefs = queue.list(null);
       List<JMSMessageInfo> infos = new ArrayList<JMSMessageInfo>(messageRefs
             .size());
@@ -196,7 +206,14 @@
 
    public void removeAllMessages() throws Exception
    {
-      server.removeAllMessagesForAddress(managedTopic.getSimpleAddress());
+      List<Binding> bindings = postOffice.getBindingsForAddress(managedTopic
+            .getSimpleAddress());
+
+      for (Binding binding : bindings)
+      {
+         Queue queue = binding.getQueue();
+         queue.deleteAllReferences(storageManager);
+      }
    }
 
    // Package protected ---------------------------------------------
@@ -250,11 +267,13 @@
    {
       try
       {
-         List<Queue> queues = server.getQueuesForAddress(managedTopic
+         List<Binding> bindings = postOffice.getBindingsForAddress(managedTopic
                .getSimpleAddress());
          List<Queue> matchingQueues = new ArrayList<Queue>();
-         for (Queue queue : queues)
+
+         for (Binding binding : bindings)
          {
+            Queue queue = binding.getQueue();
             if (durability == DurabilityType.ALL
                   || (durability == DurabilityType.DURABLE && queue.isDurable())
                   || (durability == DurabilityType.NON_DURABLE && !queue

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-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -43,6 +43,7 @@
 
 import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.postoffice.Binding;
 import org.jboss.messaging.core.security.Role;
 import org.jboss.messaging.core.server.MessagingServer;
 import org.jboss.messaging.core.settings.impl.QueueSettings;
@@ -537,14 +538,14 @@
 
    public void configureSecurityForDestination(String destName, boolean isQueue, Set<Role> roles) throws Exception
    {
-      SimpleString destination = new SimpleString((isQueue ? "queuejms." : "topicjms.") + destName);
+      String destination = (isQueue ? "queuejms." : "topicjms.") + destName;
       if (roles != null)
       {
-         getMessagingServer().getServerManagement().setSecurityForAddress(destination, roles);
+         getMessagingServer().getSecurityRepository().addMatch(destination, roles);
       }
       else
       {
-         getMessagingServer().getServerManagement().removeSecurityForAddress(destination);
+         getMessagingServer().getSecurityRepository().removeMatch(destination);
       }
    }
 
@@ -646,7 +647,11 @@
 
    public void removeAllMessages(JBossDestination destination) throws Exception
    {
-      getJMSServerManager().removeAllMessages(destination);
+      Binding binding = getMessagingServer().getPostOffice().getBinding(destination.getSimpleAddress());
+      if (binding != null)
+      {
+         binding.getQueue().deleteAllReferences(getMessagingServer().getStorageManager());
+      }
    }
 
    public List<SubscriberInfo> listAllSubscribersForTopic(String s) throws Exception
@@ -660,13 +665,13 @@
 
    public Set<Role> getSecurityConfig() throws Exception
    {
-      return getMessagingServer().getServerManagement().getSecurityForAddress(new SimpleString("*"));
+      return getMessagingServer().getSecurityRepository().getMatch("*");
    }
 
    public void setSecurityConfig(Set<Role> defConfig) throws Exception
    {
-      getMessagingServer().getServerManagement().removeSecurityForAddress(new SimpleString("*"));
-      getMessagingServer().getServerManagement().setSecurityForAddress(new SimpleString("*"), defConfig);      
+      getMessagingServer().getSecurityRepository().removeMatch("*");
+      getMessagingServer().getSecurityRepository().addMatch("*", defConfig);      
    }
 
    public void setRedeliveryDelayOnDestination(String dest, boolean queue, long delay) throws Exception
@@ -674,7 +679,8 @@
       SimpleString condition = new SimpleString((queue ? "queuejms." : "topicjms.") + dest);
       QueueSettings queueSettings = new QueueSettings();
       queueSettings.setRedeliveryDelay(delay);
-      getMessagingServer().getServerManagement().setQueueAttributes(condition, queueSettings);      
+      //FIXME we need to expose queue attributes in another way
+//      getMessagingServer().getServerManagement().setQueueAttributes(condition, queueSettings);      
    }
 
 

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/AddressControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/AddressControlTest.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/AddressControlTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -42,12 +42,14 @@
 
 import junit.framework.TestCase;
 
-import org.jboss.messaging.core.management.MessagingServerManagement;
 import org.jboss.messaging.core.management.RoleInfo;
 import org.jboss.messaging.core.management.impl.AddressControl;
+import org.jboss.messaging.core.postoffice.Binding;
+import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.security.CheckType;
 import org.jboss.messaging.core.security.Role;
 import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -89,44 +91,55 @@
    public void testGetAddress() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+      replay(postOffice, securityRepository);
 
-      replay(server);
-
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       assertEquals(address.toString(), control.getAddress());
 
-      verify(server);
+      verify(postOffice, securityRepository);
    }
 
    public void testGetQueueNames() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      List<Queue> queues = new ArrayList<Queue>();
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+      List<Binding> bindings = new ArrayList<Binding>();
       Queue queue_1 = createMock(Queue.class);
       expect(queue_1.getName()).andStubReturn(randomSimpleString());
+      Binding binding_1 = createMock(Binding.class);
+      expect(binding_1.getQueue()).andReturn(queue_1);
       Queue queue_2 = createMock(Queue.class);
       expect(queue_2.getName()).andStubReturn(randomSimpleString());
-      queues.add(queue_1);
-      queues.add(queue_2);
-      expect(server.getQueuesForAddress(address)).andReturn(queues);
+      Binding binding_2 = createMock(Binding.class);
+      expect(binding_2.getQueue()).andReturn(queue_2);
+      bindings.add(binding_1);
+      bindings.add(binding_2);
+      expect(postOffice.getBindingsForAddress(address)).andReturn(bindings);
 
-      replay(server, queue_1, queue_2);
+      replay(binding_1, queue_1, binding_2, queue_2);
+      replay(postOffice, securityRepository);
 
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       String[] queueNames = control.getQueueNames();
       assertEquals(2, queueNames.length);
       assertEquals(queue_1.getName().toString(), queueNames[0]);
       assertEquals(queue_2.getName().toString(), queueNames[1]);
 
-      verify(server, queue_1, queue_2);
+      verify(binding_1, queue_1, binding_2, queue_2);
+      verify(postOffice, securityRepository);
    }
 
    public void testGetRoleInfos() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+
       Set<Role> roles = new HashSet<Role>();
       Role role_1 = new Role(randomString(), randomBoolean(), randomBoolean(),
             randomBoolean());
@@ -134,11 +147,12 @@
             randomBoolean());
       roles.add(role_1);
       roles.add(role_2);
-      expect(server.getSecurityForAddress(address)).andReturn(roles);
+      expect(securityRepository.getMatch(address.toString())).andReturn(roles);
 
-      replay(server);
+      replay(postOffice, securityRepository);
 
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       RoleInfo[] infos = control.getRoleInfos();
       assertEquals(2, infos.length);
       if (infos[0].getName().equals(role_1.getName()))
@@ -151,13 +165,15 @@
          assertRoleEquals(role_1, infos[1]);
       }
 
-      verify(server);
+      verify(postOffice, securityRepository);
    }
 
    public void testGetRoles() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+
       Set<Role> roles = new HashSet<Role>();
       Role role_1 = new Role(randomString(), randomBoolean(), randomBoolean(),
             randomBoolean());
@@ -165,11 +181,12 @@
             randomBoolean());
       roles.add(role_1);
       roles.add(role_2);
-      expect(server.getSecurityForAddress(address)).andReturn(roles);
+      expect(securityRepository.getMatch(address.toString())).andReturn(roles);
 
-      replay(server);
+      replay(postOffice, securityRepository);
 
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       TabularData data = control.getRoles();
       assertEquals(2, data.size());
       CompositeData roleData_1 = data.get(new Object[] { role_1.getName() });
@@ -177,38 +194,44 @@
       assertRoleEquals(role_1, roleData_1);
       assertRoleEquals(role_2, roleData_2);
 
-      verify(server);
+      verify(postOffice, securityRepository);
    }
 
    public void testAddRole() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      expect(server.getSecurityForAddress(address)).andReturn(
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+
+      expect(securityRepository.getMatch(address.toString())).andReturn(
             new HashSet<Role>());
-      server.setSecurityForAddress(eq(address), isA(Set.class));
-      replay(server);
+      securityRepository.addMatch(eq(address.toString()), isA(Set.class));
+      replay(postOffice, securityRepository);
 
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       control.addRole(randomString(), randomBoolean(), randomBoolean(),
             randomBoolean());
 
-      verify(server);
+      verify(postOffice, securityRepository);
    }
 
    public void testAddRoleWhichAlreadExists() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+
       Set<Role> roles = new HashSet<Role>();
       Role role = new Role(randomString(), randomBoolean(), randomBoolean(),
             randomBoolean());
       roles.add(role);
-      expect(server.getSecurityForAddress(address)).andReturn(roles);
+      expect(securityRepository.getMatch(address.toString())).andReturn(roles);
 
-      replay(server);
+      replay(postOffice, securityRepository);
 
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       try
       {
          control.addRole(role.getName(), role.isCheckType(CheckType.CREATE),
@@ -219,36 +242,42 @@
       {
       }
 
-      verify(server);
+      verify(postOffice, securityRepository);
    }
 
    public void testRemoveRole() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+
       Set<Role> roles = new HashSet<Role>();
       Role role = new Role(randomString(), randomBoolean(), randomBoolean(),
             randomBoolean());
       roles.add(role);
-      expect(server.getSecurityForAddress(address)).andReturn(roles);
-      server.setSecurityForAddress(eq(address), isA(Set.class));
-      replay(server);
+      expect(securityRepository.getMatch(address.toString())).andReturn(roles);
+      securityRepository.addMatch(eq(address.toString()), isA(Set.class));
+      replay(postOffice, securityRepository);
 
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       control.removeRole(role.getName());
 
-      verify(server);
+      verify(postOffice, securityRepository);
    }
 
    public void testRemoveRoleFromEmptySet() throws Exception
    {
       SimpleString address = randomSimpleString();
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      expect(server.getSecurityForAddress(address)).andReturn(
+      PostOffice postOffice = createMock(PostOffice.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+
+      expect(securityRepository.getMatch(address.toString())).andReturn(
             new HashSet<Role>());
-      replay(server);
+      replay(postOffice, securityRepository);
 
-      AddressControl control = new AddressControl(address, server);
+      AddressControl control = new AddressControl(address, postOffice,
+            securityRepository);
       try
       {
          control.removeRole(randomString());
@@ -257,7 +286,7 @@
       {
       }
 
-      verify(server);
+      verify(postOffice, securityRepository);
    }
 
    // Package protected ---------------------------------------------

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -30,6 +30,8 @@
 import static org.easymock.EasyMock.verify;
 import static org.jboss.messaging.tests.util.RandomUtil.randomSimpleString;
 
+import java.util.Set;
+
 import javax.management.MBeanServer;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
@@ -40,14 +42,18 @@
 import org.jboss.messaging.core.management.AddressControlMBean;
 import org.jboss.messaging.core.management.ManagementService;
 import org.jboss.messaging.core.management.MessagingServerControlMBean;
-import org.jboss.messaging.core.management.MessagingServerManagement;
 import org.jboss.messaging.core.management.QueueControlMBean;
 import org.jboss.messaging.core.management.impl.AddressControl;
 import org.jboss.messaging.core.management.impl.ManagementServiceImpl;
 import org.jboss.messaging.core.management.impl.MessagingServerControl;
 import org.jboss.messaging.core.management.impl.QueueControl;
 import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.security.Role;
+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;
 
 /**
@@ -75,21 +81,24 @@
       ObjectInstance objectInstance = new ObjectInstance(objectName,
             MessagingServerControl.class.getName());
 
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      Configuration configuration = createMock(Configuration.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      MessagingServer messagingServer = createMock(MessagingServer.class);
       MBeanServer mbeanServer = createMock(MBeanServer.class);
-      Configuration configuration = createMock(Configuration.class);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      expect(server.getConfiguration()).andReturn(configuration);
       expect(mbeanServer.isRegistered(objectName)).andReturn(false);
       expect(
-            mbeanServer.registerMBean(isA(MessagingServerControlMBean.class),
+            mbeanServer.registerMBean(isA(MessagingServerControl.class),
                   eq(objectName))).andReturn(objectInstance);
 
-      replay(mbeanServer, server);
+      replay(mbeanServer, postOffice, storageManager, configuration, securityRepository, queueSettingsRepository, messagingServer);
 
       ManagementService service = new ManagementServiceImpl(mbeanServer, true);
-      service.registerServer(server);
+      service.registerServer(postOffice, storageManager, configuration, securityRepository, queueSettingsRepository, messagingServer);
 
-      verify(mbeanServer, server);
+      verify(mbeanServer, postOffice, storageManager, configuration, securityRepository, queueSettingsRepository, messagingServer);
    }
 
    public void testRegisterAlreadyRegisteredMessagingServer() throws Exception
@@ -99,22 +108,25 @@
       ObjectInstance objectInstance = new ObjectInstance(objectName,
             MessagingServerControl.class.getName());
 
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      Configuration configuration = createMock(Configuration.class);
+      HierarchicalRepository<Set<Role>> securityRepository = createMock(HierarchicalRepository.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      MessagingServer messagingServer = createMock(MessagingServer.class);
       MBeanServer mbeanServer = createMock(MBeanServer.class);
-      Configuration configuration = createMock(Configuration.class);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      expect(server.getConfiguration()).andReturn(configuration);
       expect(mbeanServer.isRegistered(objectName)).andReturn(true);
       mbeanServer.unregisterMBean(objectName);
       expect(
             mbeanServer.registerMBean(isA(MessagingServerControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
 
-      replay(mbeanServer, server);
+      replay(mbeanServer, postOffice, storageManager, configuration, securityRepository, queueSettingsRepository, messagingServer);
 
       ManagementService service = new ManagementServiceImpl(mbeanServer, true);
-      service.registerServer(server);
+      service.registerServer(postOffice, storageManager, configuration, securityRepository, queueSettingsRepository, messagingServer);
 
-      verify(mbeanServer, server);
+      verify(mbeanServer, postOffice, storageManager, configuration, securityRepository, queueSettingsRepository, messagingServer);
    }
 
    public void testUnregisterMessagingServer() throws Exception

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerControlTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -24,7 +24,9 @@
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
 import static org.jboss.messaging.tests.util.RandomUtil.randomBoolean;
@@ -35,6 +37,7 @@
 import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 
 import javax.management.MBeanServer;
@@ -47,12 +50,21 @@
 import org.jboss.messaging.core.client.Location;
 import org.jboss.messaging.core.client.impl.LocationImpl;
 import org.jboss.messaging.core.config.Configuration;
-import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.management.impl.ManagementServiceImpl;
 import org.jboss.messaging.core.management.impl.MessagingServerControl;
 import org.jboss.messaging.core.management.impl.MessagingServerControl.NotificationType;
+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.TransportType;
+import org.jboss.messaging.core.security.Role;
 import org.jboss.messaging.core.server.JournalType;
+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.core.version.Version;
 import org.jboss.messaging.util.SimpleString;
 
 /**
@@ -67,6 +79,12 @@
 {
    private MBeanServer mbeanServer;
    private ObjectName serverON;
+   private PostOffice postOffice;
+   private StorageManager storageManager;
+   private Configuration configuration;
+   private HierarchicalRepository<Set<Role>> securityRepository;
+   private HierarchicalRepository<QueueSettings> queueSettingsRepository;
+   private MessagingServer server;
 
    // Constants -----------------------------------------------------
 
@@ -93,48 +111,49 @@
    {
       boolean started = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
       expect(server.isStarted()).andStubReturn(started);
-      Configuration configuration = createMock(Configuration.class);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(started, control.isStarted());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetVersion() throws Exception
    {
-      String version = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      String fullVersion = randomString();
+      Version version = createMock(Version.class);
+      expect(version.getFullVersion()).andReturn(fullVersion);
       expect(server.getVersion()).andStubReturn(version);
-      Configuration configuration = createMock(Configuration.class);
-      replay(server, configuration);
+      replayMocks();
+      replay(version);
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
-      assertEquals(version, control.getVersion());
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
+      assertEquals(fullVersion, control.getVersion());
 
-      verify(server, configuration);
+      verify(version);
+      verifyMocks();
    }
 
    public void testGetBindingsDirectory() throws Exception
    {
       String dir = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getBindingsDirectory()).andReturn(dir);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(dir, control.getBindingsDirectory());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetInterceptorClassNames() throws Exception
@@ -142,308 +161,289 @@
       List<String> list = new ArrayList<String>();
       list.add(randomString());
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getInterceptorClassNames()).andReturn(list);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(list, control.getInterceptorClassNames());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetJournalDirectory() throws Exception
    {
       String dir = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getJournalDirectory()).andReturn(dir);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(dir, control.getJournalDirectory());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetJournalFileSize() throws Exception
    {
       int size = randomInt();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getJournalFileSize()).andReturn(size);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(size, control.getJournalFileSize());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetJournalMaxAIO() throws Exception
    {
       int max = randomInt();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getJournalMaxAIO()).andReturn(max);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(max, control.getJournalMaxAIO());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetJournalMinFiles() throws Exception
    {
       int minFiles = randomInt();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getJournalMinFiles()).andReturn(minFiles);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(minFiles, control.getJournalMinFiles());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetJournalType() throws Exception
    {
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getJournalType()).andReturn(JournalType.ASYNCIO);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(JournalType.ASYNCIO.toString(), control.getJournalType());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetKeyStorePath() throws Exception
    {
       String path = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getKeyStorePath()).andReturn(path);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(path, control.getKeyStorePath());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetLocation() throws Exception
    {
       Location location = new LocationImpl(TransportType.TCP, "localhost");
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getLocation()).andReturn(location);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(location.toString(), control.getLocation());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetScheduledThreadPoolMaxSize() throws Exception
    {
       int size = randomInt();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getScheduledThreadPoolMaxSize()).andReturn(size);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(size, control.getScheduledThreadPoolMaxSize());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetSecurityInvalidationInterval() throws Exception
    {
       long interval = randomLong();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getSecurityInvalidationInterval()).andReturn(
             interval);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(interval, control.getSecurityInvalidationInterval());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testGetTrustStorePath() throws Exception
    {
       String path = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.getTrustStorePath()).andReturn(path);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(path, control.getTrustStorePath());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsClustered() throws Exception
    {
       boolean clustered = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isClustered()).andReturn(clustered);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(clustered, control.isClustered());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsCreateBindingsDir() throws Exception
    {
       boolean createBindingsDir = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isCreateBindingsDir()).andReturn(createBindingsDir);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(createBindingsDir, control.isCreateBindingsDir());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsCreateJournalDir() throws Exception
    {
       boolean createJournalDir = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isCreateJournalDir()).andReturn(createJournalDir);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(createJournalDir, control.isCreateJournalDir());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsJournalSyncNonTransactional() throws Exception
    {
       boolean journalSyncNonTransactional = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isJournalSyncNonTransactional()).andReturn(
             journalSyncNonTransactional);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(journalSyncNonTransactional, control
             .isJournalSyncNonTransactional());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsJournalSyncTransactional() throws Exception
    {
       boolean journalSyncTransactional = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isJournalSyncTransactional()).andReturn(
             journalSyncTransactional);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(journalSyncTransactional, control
             .isJournalSyncTransactional());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsRequireDestinations() throws Exception
    {
       boolean requireDestinations = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isRequireDestinations()).andReturn(
             requireDestinations);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(requireDestinations, control.isRequireDestinations());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsSSLEnabled() throws Exception
    {
       boolean sslEnabled = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isSSLEnabled()).andReturn(sslEnabled);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(sslEnabled, control.isSSLEnabled());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testIsSecurityEnabled() throws Exception
    {
       boolean securityEnabled = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(configuration.isSecurityEnabled()).andReturn(securityEnabled);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(securityEnabled, control.isSecurityEnabled());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testAddDestination() throws Exception
@@ -451,13 +451,13 @@
       String address = randomString();
       boolean added = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      expect(server.addDestination(new SimpleString(address))).andReturn(added);
-      Configuration configuration = createMock(Configuration.class);
-      replay(server, configuration);
+      expect(postOffice.addDestination(new SimpleString(address), false))
+            .andReturn(added);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       mbeanServer.registerMBean(control, serverON);
 
       final CountDownLatch latch = new CountDownLatch(1);
@@ -471,11 +471,9 @@
             MessagingServerControl.NotificationType.ADDRESS_ADDED, listener,
             latch);
 
-      verify(server, configuration);
+      verifyMocks();
 
       mbeanServer.removeNotificationListener(serverON, listener);
-
-      verify(server, configuration);
    }
 
    public void testRemoveAddress() throws Exception
@@ -483,14 +481,13 @@
       String address = randomString();
       boolean removed = randomBoolean();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      expect(server.removeDestination(new SimpleString(address))).andReturn(
-            removed);
-      Configuration configuration = createMock(Configuration.class);
-      replay(server, configuration);
+      expect(postOffice.removeDestination(new SimpleString(address), false))
+            .andReturn(removed);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       mbeanServer.registerMBean(control, serverON);
 
       final CountDownLatch latch = new CountDownLatch(1);
@@ -504,7 +501,7 @@
             MessagingServerControl.NotificationType.ADDRESS_REMOVED, listener,
             latch);
 
-      verify(server, configuration);
+      verifyMocks();
 
       mbeanServer.removeNotificationListener(serverON, listener);
    }
@@ -514,16 +511,21 @@
       String address = randomString();
       String name = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
-      server.createQueue(new SimpleString(address), new SimpleString(name));
-      replay(server, configuration);
+      expect(postOffice.getBinding(new SimpleString(address))).andReturn(null);
+      Binding newBinding = createMock(Binding.class);
+      expect(
+            postOffice.addBinding(new SimpleString(address), new SimpleString(
+                  name), null, true, false)).andReturn(newBinding);
+      replayMocks();
+      replay(newBinding);
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       control.createQueue(address, name);
 
-      verify(server, configuration);
+      verifyMocks();
+      verify(newBinding);
    }
 
    public void testCreateQueueAndReceiveNotification() throws Exception
@@ -531,13 +533,17 @@
       String address = randomString();
       String name = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
-      server.createQueue(new SimpleString(address), new SimpleString(name));
-      replay(server, configuration);
+      expect(postOffice.getBinding(new SimpleString(address))).andReturn(null);
+      Binding newBinding = createMock(Binding.class);
+      expect(
+            postOffice.addBinding(new SimpleString(address), new SimpleString(
+                  name), null, true, false)).andReturn(newBinding);
+      replayMocks();
+      replay(newBinding);
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       mbeanServer.registerMBean(control, serverON);
 
       final CountDownLatch latch = new CountDownLatch(1);
@@ -551,9 +557,10 @@
             MessagingServerControl.NotificationType.QUEUE_CREATED, listener,
             latch);
 
-      verify(server, configuration);
+      mbeanServer.removeNotificationListener(serverON, listener);
 
-      mbeanServer.removeNotificationListener(serverON, listener);
+      verify(newBinding);
+      verifyMocks();
    }
 
    public void testCreateQueueWithAllParameters() throws Exception
@@ -564,17 +571,22 @@
       boolean durable = true;
       boolean temporary = false;
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
-      server.createQueue(new SimpleString(address), new SimpleString(name),
-            new SimpleString(filter), durable, temporary);
-      replay(server, configuration);
+      expect(postOffice.getBinding(new SimpleString(address))).andReturn(null);
+      Binding newBinding = createMock(Binding.class);
+      expect(
+            postOffice.addBinding(eq(new SimpleString(address)),
+                  eq(new SimpleString(name)), isA(Filter.class), eq(durable),
+                  eq(temporary))).andReturn(newBinding);
+      replayMocks();
+      replay(newBinding);
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       control.createQueue(address, name, filter, durable, temporary);
 
-      verify(server, configuration);
+      verify(newBinding);
+      verifyMocks();
    }
 
    public void testCreateQueueWithEmptyFilter() throws Exception
@@ -585,17 +597,21 @@
       boolean durable = true;
       boolean temporary = false;
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
-      server.createQueue(new SimpleString(address), new SimpleString(name),
-            null, durable, temporary);
-      replay(server, configuration);
+      expect(postOffice.getBinding(new SimpleString(address))).andReturn(null);
+      Binding newBinding = createMock(Binding.class);
+      expect(
+            postOffice.addBinding(new SimpleString(address), new SimpleString(
+                  name), null, durable, temporary)).andReturn(newBinding);
+      replay(newBinding);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       control.createQueue(address, name, filter, durable, temporary);
 
-      verify(server, configuration);
+      verify(newBinding);
+      verifyMocks();
    }
 
    public void testCreateQueueWithNullFilter() throws Exception
@@ -606,17 +622,21 @@
       boolean durable = true;
       boolean temporary = false;
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
-      server.createQueue(new SimpleString(address), new SimpleString(name),
-            null, durable, temporary);
-      replay(server, configuration);
+      expect(postOffice.getBinding(new SimpleString(address))).andReturn(null);
+      Binding newBinding = createMock(Binding.class);
+      expect(
+            postOffice.addBinding(new SimpleString(address), new SimpleString(
+                  name), null, durable, temporary)).andReturn(newBinding);
+      replay(newBinding);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       control.createQueue(address, name, filter, durable, temporary);
 
-      verify(server, configuration);
+      verify(newBinding);
+      verifyMocks();
    }
 
    public void testCreateQueueWithBothDurableAndTemporarySetToTrueFails()
@@ -627,12 +647,11 @@
       boolean durable = true;
       boolean temporary = true;
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       try
       {
          control.createQueue(address, name, null, durable, temporary);
@@ -641,20 +660,27 @@
       {
       }
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    public void testDestroyQueueAndReceiveNotification() throws Exception
    {
       String name = randomString();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
-      server.destroyQueue(new SimpleString(name));
-      replay(server, configuration);
+      Binding binding = createMock(Binding.class);
+      Queue queue = createMock(Queue.class);
+      expect(queue.getName()).andReturn(new SimpleString(name));
+      expect(binding.getQueue()).andReturn(queue);
+      expect(postOffice.getBinding(new SimpleString(name))).andReturn(binding);
+      queue.deleteAllReferences(storageManager);
+      expect(postOffice.removeBinding(new SimpleString(name))).andReturn(
+            binding);
+      replayMocks();
+      replay(binding, queue);
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       mbeanServer.registerMBean(control, serverON);
 
       final CountDownLatch latch = new CountDownLatch(1);
@@ -668,7 +694,8 @@
             MessagingServerControl.NotificationType.QUEUE_DESTROYED, listener,
             latch);
 
-      verify(server, configuration);
+      verify(binding, queue);
+      verifyMocks();
 
       mbeanServer.removeNotificationListener(serverON, listener);
    }
@@ -677,16 +704,15 @@
    {
       int count = randomInt();
 
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      Configuration configuration = createMock(Configuration.class);
       expect(server.getConnectionCount()).andReturn(count);
-      replay(server, configuration);
+      replayMocks();
 
-      MessagingServerControl control = new MessagingServerControl(server,
-            configuration);
+      MessagingServerControl control = new MessagingServerControl(postOffice,
+            storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
       assertEquals(count, control.getConnectionCount());
 
-      verify(server, configuration);
+      verifyMocks();
    }
 
    // Package protected ---------------------------------------------
@@ -700,6 +726,13 @@
 
       mbeanServer = ManagementFactory.getPlatformMBeanServer();
       serverON = ManagementServiceImpl.getMessagingServerObjectName();
+
+      postOffice = createMock(PostOffice.class);
+      storageManager = createMock(StorageManager.class);
+      configuration = createMock(Configuration.class);
+      securityRepository = createMock(HierarchicalRepository.class);
+      queueSettingsRepository = createMock(HierarchicalRepository.class);
+      server = createMock(MessagingServer.class);
    }
 
    @Override
@@ -713,11 +746,30 @@
       serverON = null;
       mbeanServer = null;
 
+      postOffice = null;
+      storageManager = null;
+      configuration = null;
+      securityRepository = null;
+      queueSettingsRepository = null;
+      server = null;
+
       super.tearDown();
    }
 
    // Private -------------------------------------------------------
 
+   private void replayMocks()
+   {
+      replay(postOffice, storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
+   }
+
+   private void verifyMocks()
+   {
+      verify(postOffice, storageManager, configuration, securityRepository,
+            queueSettingsRepository, server);
+   }
+
    // Inner classes -------------------------------------------------
 
    private final class NotificationListenerWithLatch implements

Deleted: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -1,736 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.tests.unit.core.management.impl;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.jboss.messaging.tests.util.RandomUtil.randomLong;
-import static org.jboss.messaging.tests.util.RandomUtil.randomSimpleString;
-import static org.jboss.messaging.tests.util.RandomUtil.randomString;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.easymock.EasyMock;
-import org.jboss.messaging.core.config.Configuration;
-import org.jboss.messaging.core.filter.Filter;
-import org.jboss.messaging.core.filter.impl.FilterImpl;
-import org.jboss.messaging.core.management.impl.MessagingServerManagementImpl;
-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.security.Role;
-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.ServerMessage;
-import org.jboss.messaging.core.settings.HierarchicalRepository;
-import org.jboss.messaging.core.settings.impl.QueueSettings;
-import org.jboss.messaging.core.version.Version;
-import org.jboss.messaging.tests.util.RandomUtil;
-import org.jboss.messaging.tests.util.UnitTestCase;
-import org.jboss.messaging.util.SimpleString;
-
-/**
- * 
- * @author <a href="mailto:clebert.suconic at jboss.com">Clebert Suconic</a>
- * 
- */
-public class MessagingServerManagementImplTest extends UnitTestCase
-{
-   // Constants -----------------------------------------------------
-
-   // Attributes ----------------------------------------------------
-
-   private PostOffice mockPostOffice;
-   private StorageManager mockStorageManager;
-   private Configuration mockConfiguration;
-   private HierarchicalRepository<Set<Role>> mockSecurityRepository;
-   private HierarchicalRepository<QueueSettings> mockQueueSettingsRepository;
-   private MessagingServer mockServer;
-
-   // Static --------------------------------------------------------
-
-   // Constructors --------------------------------------------------
-
-   // Public --------------------------------------------------------
-
-   public void setUp() throws Exception
-   {
-      super.setUp();
-
-      mockPostOffice = EasyMock.createNiceMock(PostOffice.class);
-      mockStorageManager = EasyMock.createNiceMock(StorageManager.class);
-      mockConfiguration = EasyMock.createNiceMock(Configuration.class);
-      mockSecurityRepository = EasyMock
-            .createNiceMock(HierarchicalRepository.class);
-      mockQueueSettingsRepository = EasyMock
-            .createNiceMock(HierarchicalRepository.class);
-      mockServer = EasyMock.createNiceMock(MessagingServer.class);
-
-   }
-
-   public void testcreateQueue() throws Exception
-   {
-      SimpleString destination = RandomUtil.randomSimpleString();
-      SimpleString name = RandomUtil.randomSimpleString();
-
-      mockPostOffice = EasyMock.createMock(PostOffice.class);
-
-      EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(null);
-
-      EasyMock.expect(
-            mockPostOffice.addBinding(destination, name, null, true, false))
-            .andReturn(null);
-
-      EasyMock.replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-
-      impl.createQueue(destination, name);
-
-      EasyMock.verify(mockPostOffice);
-
-      EasyMock.reset(mockPostOffice);
-
-      EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(
-            EasyMock.createNiceMock(Binding.class));
-
-      EasyMock.replay(mockPostOffice);
-
-      impl.createQueue(destination, name);
-
-      EasyMock.verify(mockPostOffice);
-
-   }
-
-   public void testCreateQueueWithFullParameters() throws Exception
-   {
-      SimpleString destination = RandomUtil.randomSimpleString();
-      SimpleString name = RandomUtil.randomSimpleString();
-      SimpleString filterStr = new SimpleString("color = 'green'");
-      boolean durable = false;
-      boolean temporary = true;
-
-      mockPostOffice = EasyMock.createMock(PostOffice.class);
-
-      EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(null);
-
-      EasyMock.expect(
-            mockPostOffice.addBinding(eq(destination), eq(name),
-                  isA(Filter.class), eq(durable), eq(temporary))).andReturn(
-            null);
-
-      EasyMock.replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-
-      impl.createQueue(destination, name, filterStr, durable, temporary);
-
-      EasyMock.verify(mockPostOffice);
-
-      EasyMock.reset(mockPostOffice);
-
-      EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(
-            EasyMock.createNiceMock(Binding.class));
-
-      EasyMock.replay(mockPostOffice);
-
-      impl.createQueue(destination, name, filterStr, durable, temporary);
-
-      EasyMock.verify(mockPostOffice);
-
-   }
-
-   public void testConnectionCount() throws Exception
-   {      
-      MessagingServerManagementImpl impl = createImpl();
-
-      assertEquals(impl.getConnectionCount(), 0);      
-   }
-
-   public void testDestroyQueue() throws Exception
-   {
-      SimpleString name = RandomUtil.randomSimpleString();
-
-      mockPostOffice = EasyMock.createMock(PostOffice.class);
-
-      Binding binding = EasyMock.createMock(Binding.class);
-
-      Queue queue = EasyMock.createMock(Queue.class);
-
-      EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(binding);
-      EasyMock.expect(binding.getQueue()).andReturn(queue);
-
-      queue.deleteAllReferences(mockStorageManager);
-
-      EasyMock.expect(queue.getName()).andReturn(name).atLeastOnce();
-
-      EasyMock.expect(mockPostOffice.removeBinding(name)).andReturn(binding);
-
-      EasyMock.replay(mockPostOffice, binding, queue);
-
-      MessagingServerManagementImpl impl = createImpl();
-
-      impl.destroyQueue(name);
-
-      EasyMock.verify(mockPostOffice, binding, queue);
-
-      EasyMock.reset(mockPostOffice, binding, queue);
-
-      EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(null);
-
-      EasyMock.replay(mockPostOffice, binding, queue);
-
-      impl.destroyQueue(name);
-
-      EasyMock.verify(mockPostOffice, binding, queue);
-
-   }
-
-   public void testAddDestination() throws Exception
-   {
-      SimpleString address = RandomUtil.randomSimpleString();
-
-      mockPostOffice = EasyMock.createMock(PostOffice.class);
-
-      EasyMock.expect(mockPostOffice.addDestination(address, false)).andReturn(
-            false);
-
-      EasyMock.replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertFalse(impl.addDestination(address));
-
-      EasyMock.reset(mockPostOffice);
-
-      EasyMock.expect(mockPostOffice.addDestination(address, false)).andReturn(
-            true);
-
-      EasyMock.replay(mockPostOffice);
-
-      assertTrue(impl.addDestination(address));
-
-      EasyMock.verify(mockPostOffice);
-
-   }
-
-   public void testRemoveDestination() throws Exception
-   {
-      SimpleString address = RandomUtil.randomSimpleString();
-
-      mockPostOffice = EasyMock.createMock(PostOffice.class);
-
-      EasyMock.expect(mockPostOffice.removeDestination(address, false))
-            .andReturn(false);
-
-      EasyMock.replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertFalse(impl.removeDestination(address));
-
-      EasyMock.reset(mockPostOffice);
-
-      EasyMock.expect(mockPostOffice.removeDestination(address, false))
-            .andReturn(true);
-
-      EasyMock.replay(mockPostOffice);
-
-      assertTrue(impl.removeDestination(address));
-
-      EasyMock.verify(mockPostOffice);
-
-   }
-
-   public void testRemoveAllMessagesForAddress() throws Exception
-   {
-      SimpleString address = RandomUtil.randomSimpleString();
-
-      int numberOfQueues = 10;
-
-      ArrayList<Queue> queues = new ArrayList<Queue>();
-      ArrayList<Binding> bindings = new ArrayList<Binding>();
-
-      for (int i = 0; i < numberOfQueues; i++)
-      {
-         Queue queue = EasyMock.createMock(Queue.class);
-         queues.add(queue);
-
-         Binding binding = EasyMock.createMock(Binding.class);
-         bindings.add(binding);
-
-         EasyMock.expect(binding.getQueue()).andReturn(queue);
-
-         queue.deleteAllReferences(mockStorageManager);
-      }
-
-      mockPostOffice = EasyMock.createMock(PostOffice.class);
-
-      EasyMock.expect(mockPostOffice.getBindingsForAddress(address)).andReturn(
-            bindings);
-
-      EasyMock.replay(mockPostOffice);
-
-      EasyMock.replay(queues.toArray());
-
-      EasyMock.replay(bindings.toArray());
-
-      MessagingServerManagementImpl impl = createImpl();
-
-      impl.removeAllMessagesForAddress(address);
-
-      EasyMock.verify(mockPostOffice);
-
-      EasyMock.verify(queues.toArray());
-
-      EasyMock.verify(bindings.toArray());
-
-   }
-
-   public void testRemoveMessageFromQueue() throws Exception
-   {
-      SimpleString queueName = randomSimpleString();
-      long messageID = randomLong();
-
-      mockPostOffice = createMock(PostOffice.class);
-      Binding binding = createMock(Binding.class);
-      Queue queue = createMock(Queue.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(binding);
-      expect(binding.getQueue()).andReturn(queue);
-      expect(queue.deleteReference(messageID, mockStorageManager)).andReturn(
-            true);
-
-      replay(mockPostOffice, binding, queue, mockStorageManager);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertTrue(impl.removeMessageFromQueue(messageID, queueName));
-
-      verify(mockPostOffice, binding, queue, mockStorageManager);
-   }
-
-   public void testRemoveMessageForUnkownAddress() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      long messageID = randomLong();
-
-      mockPostOffice = createMock(PostOffice.class);
-      expect(mockPostOffice.getBinding(address)).andReturn(null);
-
-      replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertFalse(impl.removeMessageFromQueue(messageID, address));
-
-      verify(mockPostOffice);
-   }
-
-   public void testExpireMessage() throws Exception
-   {
-      SimpleString queueName = randomSimpleString();
-      long messageID = randomLong();
-
-      mockPostOffice = createMock(PostOffice.class);
-      Binding binding = createMock(Binding.class);
-      Queue queue = createMock(Queue.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(binding);
-      expect(binding.getQueue()).andReturn(queue);
-      expect(
-            queue.expireMessage(messageID, mockStorageManager, mockPostOffice,
-                  mockQueueSettingsRepository)).andReturn(true);
-
-      replay(mockPostOffice, binding, queue, mockStorageManager);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertTrue(impl.expireMessage(messageID, queueName));
-
-      verify(mockPostOffice, binding, queue, mockStorageManager);
-   }
-
-   public void testExpireMessageForUnkownQueueName() throws Exception
-   {
-      SimpleString queueName = randomSimpleString();
-      long messageID = randomLong();
-
-      mockPostOffice = createMock(PostOffice.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(null);
-
-      replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertFalse(impl.expireMessage(messageID, queueName));
-
-      verify(mockPostOffice);
-   }
-
-   public void testExpireMessages() throws Exception
-   {
-      Filter filter = new FilterImpl(new SimpleString("color = 'green'"));
-      SimpleString queueName = randomSimpleString();
-      long messageID = randomLong();
-
-      mockPostOffice = createMock(PostOffice.class);
-      Binding binding = createMock(Binding.class);
-      Queue queue = createMock(Queue.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(binding);
-      expect(binding.getQueue()).andReturn(queue);
-      List<MessageReference> refs = new ArrayList<MessageReference>();
-      MessageReference ref = createMock(MessageReference.class);
-      refs.add(ref);
-      ServerMessage message = createMock(ServerMessage.class);
-      expect(message.getMessageID()).andReturn(messageID);
-      expect(ref.getMessage()).andReturn(message);
-      expect(queue.list(filter)).andReturn(refs);
-      expect(
-            queue.expireMessage(messageID, mockStorageManager, mockPostOffice,
-                  mockQueueSettingsRepository)).andReturn(true);
-
-      replay(mockPostOffice, binding, queue, mockStorageManager, ref, message);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(1, impl.expireMessages(filter, queueName));
-
-      verify(mockPostOffice, binding, queue, mockStorageManager, ref, message);
-   }
-
-   public void testExpireMessagesForUnknownQueueName() throws Exception
-   {
-      Filter filter = new FilterImpl(new SimpleString("color = 'green'"));
-      SimpleString queueName = randomSimpleString();
-
-      mockPostOffice = createMock(PostOffice.class);
-      Binding binding = createMock(Binding.class);
-      Queue queue = createMock(Queue.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(null);
-
-      replay(mockPostOffice, binding, queue, mockStorageManager);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(0, impl.expireMessages(filter, queueName));
-
-      verify(mockPostOffice, binding, queue, mockStorageManager);
-   }
-
-   public void testSendMessagesToDLQ() throws Exception
-   {
-      Filter filter = new FilterImpl(new SimpleString("color = 'green'"));
-      SimpleString queueName = randomSimpleString();
-      long messageID = randomLong();
-
-      mockPostOffice = createMock(PostOffice.class);
-      Binding binding = createMock(Binding.class);
-      Queue queue = createMock(Queue.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(binding);
-      expect(binding.getQueue()).andReturn(queue);
-      List<MessageReference> refs = new ArrayList<MessageReference>();
-      MessageReference ref = createMock(MessageReference.class);
-      refs.add(ref);
-      ServerMessage message = createMock(ServerMessage.class);
-      expect(message.getMessageID()).andReturn(messageID);
-      expect(ref.getMessage()).andReturn(message);
-      expect(queue.list(filter)).andReturn(refs);
-      expect(
-            queue.sendMessageToDLQ(messageID, mockStorageManager,
-                  mockPostOffice, mockQueueSettingsRepository)).andReturn(true);
-
-      replay(mockPostOffice, binding, queue, mockStorageManager, ref, message);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(1, impl.sendMessagesToDLQ(filter, queueName));
-
-      verify(mockPostOffice, binding, queue, mockStorageManager, ref, message);
-   }
-
-   public void testSendMessagesToDLQForUnknownQueueName() throws Exception
-   {
-      Filter filter = new FilterImpl(new SimpleString("color = 'green'"));
-      SimpleString queueName = randomSimpleString();
-
-      mockPostOffice = createMock(PostOffice.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(null);
-
-      replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(0, impl.sendMessagesToDLQ(filter, queueName));
-
-      verify(mockPostOffice);
-   }
-
-   public void testChangeMessagesPriority() throws Exception
-   {
-      Filter filter = new FilterImpl(new SimpleString("color = 'green'"));
-      SimpleString queueName = randomSimpleString();
-      long messageID = randomLong();
-      byte newPriority = (byte) 9;
-
-      mockPostOffice = createMock(PostOffice.class);
-      Binding binding = createMock(Binding.class);
-      Queue queue = createMock(Queue.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(binding);
-      expect(binding.getQueue()).andReturn(queue);
-      List<MessageReference> refs = new ArrayList<MessageReference>();
-      MessageReference ref = createMock(MessageReference.class);
-      refs.add(ref);
-      ServerMessage message = createMock(ServerMessage.class);
-      expect(message.getMessageID()).andReturn(messageID);
-      expect(ref.getMessage()).andReturn(message);
-      expect(queue.list(filter)).andReturn(refs);
-      expect(
-            queue.changeMessagePriority(messageID, newPriority,
-                  mockStorageManager, mockPostOffice,
-                  mockQueueSettingsRepository)).andReturn(true);
-
-      replay(mockPostOffice, binding, queue, mockStorageManager, ref, message);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(1, impl.changeMessagesPriority(filter, newPriority, queueName));
-
-      verify(mockPostOffice, binding, queue, mockStorageManager, ref, message);
-   }
-
-   public void testChangeMessagesPriorityForUnknownQueueName() throws Exception
-   {
-      Filter filter = new FilterImpl(new SimpleString("color = 'green'"));
-      SimpleString queueName = randomSimpleString();
-      byte newPriority = (byte) 9;
-
-      mockPostOffice = createMock(PostOffice.class);
-      expect(mockPostOffice.getBinding(queueName)).andReturn(null);
-
-      replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(0, impl.changeMessagesPriority(filter, newPriority, queueName));
-
-      verify(mockPostOffice);
-   }
-
-   public void testGetQueuesForAddress() throws Exception
-   {
-
-      int numberOfQueues = 10;
-
-      ArrayList<Queue> queues = new ArrayList<Queue>();
-      ArrayList<Binding> bindings = new ArrayList<Binding>();
-
-      for (int i = 0; i < numberOfQueues; i++)
-      {
-         Queue queue = EasyMock.createMock(Queue.class);
-
-         queues.add(queue);
-
-         Binding binding = EasyMock.createMock(Binding.class);
-
-         bindings.add(binding);
-
-         EasyMock.expect(binding.getQueue()).andReturn(queue);
-      }
-
-      SimpleString address = RandomUtil.randomSimpleString();
-
-      EasyMock.expect(mockPostOffice.getBindingsForAddress(address)).andReturn(
-            bindings);
-
-      EasyMock.replay(mockPostOffice);
-      EasyMock.replay(queues.toArray());
-      EasyMock.replay(bindings.toArray());
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(numberOfQueues, impl.getQueuesForAddress(address).size());
-
-      EasyMock.verify(mockPostOffice);
-      EasyMock.verify(queues.toArray());
-      EasyMock.verify(bindings.toArray());
-
-   }
-
-   public void testIsStarted() throws Exception
-   {
-      expect(mockServer.isStarted()).andReturn(true);
-
-      replay(mockServer);
-      MessagingServerManagementImpl impl = createImpl();
-      assertTrue(impl.isStarted());
-
-      verify(mockServer);
-   }
-
-   public void testGetVersion() throws Exception
-   {
-      String fullVersion = randomString();
-      Version version = createMock(Version.class);
-      expect(version.getFullVersion()).andReturn(fullVersion);
-      expect(mockServer.getVersion()).andReturn(version);
-
-      replay(mockServer, version);
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(fullVersion, impl.getVersion());
-
-      verify(mockServer, version);
-   }
-
-   public void testGetConfiguration() throws Exception
-   {
-      replay(mockConfiguration);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(mockConfiguration, impl.getConfiguration());
-
-      verify(mockConfiguration);
-   }
-
-   public void testGetQueueSettings() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      QueueSettings settings = new QueueSettings();
-      expect(mockQueueSettingsRepository.getMatch(address.toString()))
-            .andReturn(settings);
-
-      replay(mockQueueSettingsRepository);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(settings, impl.getQueueSettings(address));
-
-      verify(mockQueueSettingsRepository);
-   }
-
-   public void testSetQueueAttributes() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      QueueSettings settings = new QueueSettings();
-      mockQueueSettingsRepository.addMatch(address.toString(), settings);
-
-      replay(mockQueueSettingsRepository);
-
-      MessagingServerManagementImpl impl = createImpl();
-      impl.setQueueAttributes(address, settings);
-
-      verify(mockQueueSettingsRepository);
-   }
-
-   public void testSetSecurityForAddress() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      Set<Role> roles = new HashSet<Role>();
-      roles.add(new Role(randomString()));
-      mockSecurityRepository.addMatch(address.toString(), roles);
-
-      replay(mockSecurityRepository);
-
-      MessagingServerManagementImpl impl = createImpl();
-      impl.setSecurityForAddress(address, roles);
-
-      verify(mockSecurityRepository);
-   }
-
-   public void testGetSecurityForAddress() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      Set<Role> roles = new HashSet<Role>();
-      Role role = new Role(randomString());
-      roles.add(role);
-      expect(mockSecurityRepository.getMatch(address.toString())).andReturn(
-            roles);
-
-      replay(mockSecurityRepository);
-
-      MessagingServerManagementImpl impl = createImpl();
-      Set<Role> matchedRoles = impl.getSecurityForAddress(address);
-      assertNotNull(matchedRoles);
-      assertEquals(1, matchedRoles.size());
-
-      verify(mockSecurityRepository);
-   }
-
-   public void testRemoveSecurityForAddress() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      Set<Role> roles = new HashSet<Role>();
-      roles.add(new Role(randomString()));
-      mockSecurityRepository.removeMatch(address.toString());
-
-      replay(mockSecurityRepository);
-
-      MessagingServerManagementImpl impl = createImpl();
-      impl.removeSecurityForAddress(address);
-
-      verify(mockSecurityRepository);
-   }
-
-   public void testGetQueue() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      Queue queue = createMock(Queue.class);
-      Binding binding = createMock(Binding.class);
-      expect(binding.getQueue()).andReturn(queue);
-      expect(mockPostOffice.getBinding(address)).andReturn(binding);
-
-      replay(mockPostOffice, binding, queue);
-
-      MessagingServerManagementImpl impl = createImpl();
-      assertEquals(queue, impl.getQueue(address));
-
-      verify(mockPostOffice, binding, queue);
-   }
-
-   public void testGetQueueForUnknownAddress() throws Exception
-   {
-      SimpleString address = randomSimpleString();
-      expect(mockPostOffice.getBinding(address)).andReturn(null);
-
-      replay(mockPostOffice);
-
-      MessagingServerManagementImpl impl = createImpl();
-      try
-      {
-         impl.getQueue(address);
-         fail("IllegalArgumentExcepion");
-      } catch (IllegalArgumentException e)
-      {
-      }
-
-      verify(mockPostOffice);
-   }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   private MessagingServerManagementImpl createImpl()
-   {
-      return new MessagingServerManagementImpl(mockPostOffice,
-            mockStorageManager, mockConfiguration, 
-            mockSecurityRepository, mockQueueSettingsRepository, mockServer);
-   }
-
-   // Inner classes -------------------------------------------------
-
-}

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-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -21,6 +21,10 @@
  */ 
 package org.jboss.messaging.tests.unit.core.server.impl;
 
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
+
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.Set;
@@ -31,7 +35,7 @@
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.management.ManagementService;
-import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.management.MessagingServerControlMBean;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.postoffice.impl.PostOfficeImpl;
@@ -167,10 +171,9 @@
          //Ok
       }
       
-      ManagementService mr = EasyMock.createMock(ManagementService.class);
+      ManagementService ms = EasyMock.createMock(ManagementService.class);
+      server.setManagementService(ms);
       
-      server.setManagementService(mr);
-      
       try
       {
          server.start();
@@ -181,7 +184,7 @@
          //Ok
       }
       
-      EasyMock.reset(sm, rs, mr);
+      EasyMock.reset(sm, rs);
       
       EasyMock.expect(sm.isStarted()).andStubReturn(true);
       EasyMock.expect(rs.isStarted()).andStubReturn(false);
@@ -209,7 +212,12 @@
             
       pd.register(EasyMock.isA(MessagingServerPacketHandler.class));
       
-      EasyMock.replay(sm, rs, pd);
+      MessagingServerControlMBean managedServer = EasyMock.createMock(MessagingServerControlMBean.class);
+      expect(ms.registerServer(isA(PostOffice.class), eq(sm), eq(server
+            .getConfiguration()), isA(HierarchicalRepository.class), eq(server
+            .getQueueSettingsRepository()), eq(server))).andReturn(managedServer);
+
+      EasyMock.replay(sm, rs, pd, ms);
       
       assertFalse(server.isStarted());
       
@@ -217,7 +225,7 @@
       
       assertTrue(server.isStarted());
       
-      EasyMock.verify(sm, rs, pd);
+      EasyMock.verify(sm, rs, pd, ms);
       
       EasyMock.reset(sm, rs, pd);
       
@@ -299,7 +307,7 @@
       
       EasyMock.verify(sm, rs, pd);
       
-      EasyMock.reset(sm, rs, pd);
+      EasyMock.reset(sm, rs, pd, ms);
       
       EasyMock.expect(rs.getDispatcher()).andReturn(pd);
       EasyMock.expect(sm.isStarted()).andStubReturn(true);
@@ -309,12 +317,16 @@
             
       pd.register(EasyMock.isA(MessagingServerPacketHandler.class));
       
-      EasyMock.replay(sm, rs, pd);
+      expect(ms.registerServer(isA(PostOffice.class), eq(sm), eq(server
+            .getConfiguration()), isA(HierarchicalRepository.class), eq(server
+            .getQueueSettingsRepository()), eq(server))).andReturn(managedServer);
+
+      EasyMock.replay(sm, rs, pd, ms);
                  
       //Should be able to start again
       server.start();
       
-      EasyMock.verify(sm, rs, pd);
+      EasyMock.verify(sm, rs, pd, ms);
       
       assertTrue(server.isStarted());
       
@@ -381,13 +393,16 @@
       server.setSecurityManager(sem);
 
       ManagementService mr = EasyMock.createMock(ManagementService.class);
-      mr.setQueueSettingsRepository(EasyMock.isA(HierarchicalRepository.class));
-      mr.setPostOffice(EasyMock.isA(PostOffice.class));
-      mr.registerServer(EasyMock.isA(MessagingServerManagement.class));
+      MessagingServerControlMBean managedServer = EasyMock.createMock(MessagingServerControlMBean.class);
+      expect(mr.registerServer(isA(PostOffice.class), eq(sm), eq(server
+            .getConfiguration()), isA(HierarchicalRepository.class), eq(server
+            .getQueueSettingsRepository()), eq(server))).andReturn(managedServer);
       server.setManagementService(mr);
-      
-      sm.loadBindings(EasyMock.isA(QueueFactoryImpl.class), EasyMock.isA(ArrayList.class), EasyMock.isA(ArrayList.class));
-      sm.loadMessages(EasyMock.isA(PostOfficeImpl.class), EasyMock.isA(Map.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));      
@@ -420,7 +435,6 @@
       server.setStorageManager(sm);      
       RemotingService rs = EasyMock.createMock(RemotingService.class);      
       server.setRemotingService(rs);
-      
       JBMSecurityManager sem = new JBMSecurityManager()
       {
          public boolean validateUser(String user, String password)
@@ -437,9 +451,10 @@
       server.setSecurityManager(sem);
       
       ManagementService mr = EasyMock.createMock(ManagementService.class);
-      mr.setQueueSettingsRepository(EasyMock.isA(HierarchicalRepository.class));
-      mr.setPostOffice(EasyMock.isA(PostOffice.class));
-      mr.registerServer(EasyMock.isA(MessagingServerManagement.class));
+      MessagingServerControlMBean managedServer = EasyMock.createMock(MessagingServerControlMBean.class);
+      expect(mr.registerServer(isA(PostOffice.class), eq(sm), eq(server
+            .getConfiguration()), isA(HierarchicalRepository.class), eq(server
+            .getQueueSettingsRepository()), eq(server))).andReturn(managedServer);
       server.setManagementService(mr);
 
       PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -40,8 +40,12 @@
 import junit.framework.TestCase;
 
 import org.jboss.messaging.core.client.ClientConnectionFactory;
-import org.jboss.messaging.core.management.MessagingServerManagement;
+import org.jboss.messaging.core.management.MessagingServerControlMBean;
+import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.PostOffice;
 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.jms.JBossQueue;
 import org.jboss.messaging.jms.JBossTopic;
 import org.jboss.messaging.jms.client.JBossConnectionFactory;
@@ -134,7 +138,9 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager server = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
       MBeanServer mbeanServer = createMock(MBeanServer.class);
       expect(mbeanServer.isRegistered(objectName)).andReturn(false);
@@ -142,13 +148,13 @@
             mbeanServer.registerMBean(isA(JMSQueueControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
 
-      replay(mbeanServer, coreQueue, server);
+      replay(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
             true);
-      service.registerQueue(queue, coreQueue, jndiBinding, server);
+      service.registerQueue(queue, coreQueue, jndiBinding, postOffice, storageManager, queueSettingsRepository);
 
-      verify(mbeanServer, coreQueue, server);
+      verify(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testRegisterAlreadyRegisteredQueue() throws Exception
@@ -162,7 +168,9 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager server = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
       MBeanServer mbeanServer = createMock(MBeanServer.class);
       expect(mbeanServer.isRegistered(objectName)).andReturn(true);
@@ -171,13 +179,13 @@
             mbeanServer.registerMBean(isA(JMSQueueControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
 
-      replay(mbeanServer, coreQueue, server);
+      replay(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
             true);
-      service.registerQueue(queue, coreQueue, jndiBinding, server);
+      service.registerQueue(queue, coreQueue, jndiBinding, postOffice, storageManager, queueSettingsRepository);
 
-      verify(mbeanServer, coreQueue, server);
+      verify(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testRegisterTopic() throws Exception
@@ -190,7 +198,8 @@
             TopicControl.class.getName());
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement serverManagement = createMock(MessagingServerManagement.class);
+      PostOffice postOffice= createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
 
       MBeanServer mbeanServer = createMock(MBeanServer.class);
       expect(mbeanServer.isRegistered(objectName)).andReturn(false);
@@ -198,13 +207,13 @@
             mbeanServer.registerMBean(isA(TopicControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
 
-      replay(mbeanServer, serverManagement);
+      replay(mbeanServer, postOffice, storageManager);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
             true);
-      service.registerTopic(topic, serverManagement, jndiBinding);
+      service.registerTopic(topic, jndiBinding, postOffice, storageManager);
 
-      verify(mbeanServer, serverManagement);
+      verify(mbeanServer, postOffice, storageManager);
    }
 
    public void testRegisterAlreadyRegisteredTopic() throws Exception
@@ -217,7 +226,8 @@
             TopicControl.class.getName());
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement serverManagement = createMock(MessagingServerManagement.class);
+      PostOffice postOffice= createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
 
       MBeanServer mbeanServer = createMock(MBeanServer.class);
       expect(mbeanServer.isRegistered(objectName)).andReturn(true);
@@ -226,13 +236,13 @@
             mbeanServer.registerMBean(isA(TopicControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
 
-      replay(mbeanServer, serverManagement);
+      replay(mbeanServer, postOffice, storageManager);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
             true);
-      service.registerTopic(topic, serverManagement, jndiBinding);
+      service.registerTopic(topic, jndiBinding, postOffice, storageManager);
 
-      verify(mbeanServer, serverManagement);
+      verify(mbeanServer, postOffice, storageManager);
    }
 
    public void testRegisterConnectionFactory() throws Exception

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -23,7 +23,6 @@
 package org.jboss.messaging.tests.unit.jms.server.management.impl;
 
 import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.isA;
 import static org.easymock.EasyMock.replay;
@@ -36,7 +35,6 @@
 import static org.jboss.messaging.tests.util.RandomUtil.randomString;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 
@@ -47,12 +45,14 @@
 
 import org.easymock.EasyMock;
 import org.jboss.messaging.core.filter.Filter;
+import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.server.MessageReference;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.core.server.ServerMessage;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
 import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.jms.JBossQueue;
-import org.jboss.messaging.jms.server.JMSServerManager;
 import org.jboss.messaging.jms.server.management.impl.JMSQueueControl;
 import org.jboss.messaging.util.SimpleString;
 
@@ -81,15 +81,17 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(name, control.getName());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testGetAddress() throws Exception
@@ -99,15 +101,17 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(queue.getAddress(), control.getAddress());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testGetJNDIBinding() throws Exception
@@ -117,15 +121,17 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(jndiBinding, control.getJNDIBinding());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testIsTemporary() throws Exception
@@ -135,17 +141,19 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(queue.isTemporary(), control.isTemporary());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testIsClustered() throws Exception
    {
       String jndiBinding = randomString();
@@ -155,15 +163,17 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.isClustered()).andReturn(clustered);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(clustered, control.isClustered());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testIsDurabled() throws Exception
@@ -175,15 +185,17 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.isDurable()).andReturn(durable);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(durable, control.isDurable());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testGetMessageCount() throws Exception
@@ -195,17 +207,19 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getMessageCount()).andReturn(count);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(count, control.getMessageCount());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testGetMessagesAdded() throws Exception
    {
       String jndiBinding = randomString();
@@ -215,17 +229,19 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getMessagesAdded()).andReturn(count);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(count, control.getMessagesAdded());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testGetConsumerCount() throws Exception
    {
       String jndiBinding = randomString();
@@ -235,15 +251,17 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getConsumerCount()).andReturn(count);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(count, control.getConsumerCount());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testGetDeliveringCount() throws Exception
@@ -255,15 +273,17 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getDeliveringCount()).andReturn(count);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(count, control.getDeliveringCount());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testGetMaxSizeBytes() throws Exception
@@ -275,17 +295,19 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getMaxSizeBytes()).andReturn(size);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(size, control.getMaxSizeBytes());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testGetSizeBytes() throws Exception
    {
       String jndiBinding = randomString();
@@ -295,17 +317,19 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getSizeBytes()).andReturn(size);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(size, control.getSizeBytes());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testGetScheduledCount() throws Exception
    {
       String jndiBinding = randomString();
@@ -315,17 +339,19 @@
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getScheduledCount()).andReturn(count);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(count, control.getScheduledCount());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testGetDLQ() throws Exception
    {
       String jndiBinding = randomString();
@@ -334,7 +360,10 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+
       QueueSettings settings = new QueueSettings()
       {
          @Override
@@ -343,15 +372,15 @@
             return new SimpleString(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + dlq);
          }
       };
-      expect(serverManager.getSettings(queue)).andReturn(settings);
+      expect(queueSettingsRepository.getMatch(name)).andReturn(settings);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(dlq, control.getDLQ());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testGetExpiryQueue() throws Exception
@@ -362,7 +391,10 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+
       QueueSettings settings = new QueueSettings()
       {
          @Override
@@ -372,15 +404,15 @@
                   + expiryQueue);
          }
       };
-      expect(serverManager.getSettings(queue)).andReturn(settings);
+      expect(queueSettingsRepository.getMatch(name)).andReturn(settings);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertEquals(expiryQueue, control.getExpiryQueue());
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testRemoveMessage() throws Exception
@@ -392,7 +424,10 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
       ServerMessage message = createMock(ServerMessage.class);
@@ -400,15 +435,18 @@
       expect(ref.getMessage()).andReturn(message);
       refs.add(ref);
       expect(coreQueue.list(EasyMock.isA(Filter.class))).andReturn(refs);
-      expect(serverManager.removeMessage(messageID, queue)).andReturn(true);
+      expect(coreQueue.deleteReference(messageID, storageManager)).andReturn(
+            true);
 
-      replay(coreQueue, serverManager, ref, message);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository,
+            ref, message);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertTrue(control.removeMessage(jmsMessageID));
 
-      verify(coreQueue, serverManager, ref, message);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository,
+            ref, message);
    }
 
    public void testRemoveAllMessages() throws Exception
@@ -418,16 +456,18 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
-      serverManager.removeAllMessages(queue);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      coreQueue.deleteAllReferences(storageManager);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       control.removeAllMessages();
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testListMessages() throws Exception
@@ -458,19 +498,23 @@
       refs.add(ref);
       Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(refs);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager, ref, message);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository,
+            ref, message);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       TabularData data = control.listMessages(filterStr);
       assertEquals(1, data.size());
       CompositeData info = data.get(new Object[] { message.getProperty(
             new SimpleString("JMSMessageID")).toString() });
       assertNotNull(info);
 
-      verify(coreQueue, serverManager, ref, message);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository,
+            ref, message);
    }
 
    public void testListMessagesThrowsException() throws Exception
@@ -481,12 +525,14 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       try
       {
          control.listMessages(invalidFilterStr);
@@ -495,7 +541,8 @@
       {
 
       }
-      verify(coreQueue, serverManager);
+
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testExpireMessage() throws Exception
@@ -503,24 +550,34 @@
       String jndiBinding = randomString();
       String name = randomString();
       String jmsMessageID = randomString();
+      long messageID = randomLong();
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
+      ServerMessage serverMessage = createMock(ServerMessage.class);
+      expect(serverMessage.getMessageID()).andReturn(messageID);
+      expect(ref.getMessage()).andReturn(serverMessage);
       refs.add(ref);
       expect(coreQueue.list(EasyMock.isA(Filter.class))).andReturn(refs);
-      expect(serverManager.expireMessages(isA(Filter.class), eq(queue)))
-            .andReturn(1);
+      expect(
+            coreQueue.expireMessage(messageID, storageManager, postOffice,
+                  queueSettingsRepository)).andReturn(true);
 
-      replay(coreQueue, serverManager, ref);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository,
+            ref, serverMessage);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertTrue(control.expireMessage(jmsMessageID));
 
-      verify(coreQueue, serverManager, ref);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository,
+            ref, serverMessage);
    }
 
    public void testExpireMessageWithNoJMSMesageID() throws Exception
@@ -531,14 +588,16 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(
             new ArrayList<MessageReference>());
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       try
       {
          control.expireMessage(jmsMessageID);
@@ -547,28 +606,38 @@
       {
       }
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testExpireMessages() throws Exception
    {
       String jndiBinding = randomString();
       String name = randomString();
-      int expiredMessage = randomInt();
+      long messageID = randomLong();
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
-      expect(serverManager.expireMessages(isA(Filter.class), eq(queue)))
-            .andReturn(expiredMessage);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      List<MessageReference> refs = new ArrayList<MessageReference>();
+      MessageReference ref = createMock(MessageReference.class);
+      ServerMessage serverMessage = createMock(ServerMessage.class);
+      expect(serverMessage.getMessageID()).andReturn(messageID);
+      expect(ref.getMessage()).andReturn(serverMessage);
+      refs.add(ref);
+      expect(coreQueue.list(isA(Filter.class))).andReturn(refs);
+      expect(
+            coreQueue.expireMessage(messageID, storageManager, postOffice,
+                  queueSettingsRepository)).andReturn(true);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
-      assertEquals(expiredMessage, control.expireMessages("color = 'green'"));
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      assertEquals(1, control.expireMessages("color = 'green'"));
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
    }
 
    public void testSendMessageToDLQ() throws Exception
@@ -576,27 +645,32 @@
       String jndiBinding = randomString();
       String name = randomString();
       String jmsMessageID = randomString();
+      long messageID = randomLong();
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
+      ServerMessage serverMessage = createMock(ServerMessage.class);
+      expect(serverMessage.getMessageID()).andReturn(messageID);
+      expect(ref.getMessage()).andReturn(serverMessage);
       refs.add(ref);
       expect(coreQueue.list(isA(Filter.class))).andReturn(refs);
-      expect(serverManager.sendMessagesToDLQ(isA(Filter.class), eq(queue)))
-            .andReturn(1);
+      expect(coreQueue.sendMessageToDLQ(messageID, storageManager, postOffice, queueSettingsRepository)).andReturn(true);
+      
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
 
-      replay(coreQueue, serverManager, ref);
-
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
-      assertTrue(control.sendMessageTDLQ(jmsMessageID));
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      assertTrue(control.sendMessageToDLQ(jmsMessageID));
 
-      verify(coreQueue, serverManager, ref);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
    }
 
-   public void testSendMessageToDLQWithNoJMSMesageID() throws Exception
+   public void testSendMessageToDLQWithNoJMSMessageID() throws Exception
    {
       String jndiBinding = randomString();
       String name = randomString();
@@ -604,50 +678,56 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(
             new ArrayList<MessageReference>());
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       try
       {
-         control.sendMessageTDLQ(jmsMessageID);
+         control.sendMessageToDLQ(jmsMessageID);
          fail("IllegalArgumentException");
       } catch (IllegalArgumentException e)
       {
       }
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    public void testChangeMessagePriority() throws Exception
    {
       String jndiBinding = randomString();
       String name = randomString();
       byte newPriority = 5;
       String jmsMessageID = randomString();
-
+      long messageID = randomLong();
+      
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
+      ServerMessage serverMessage = createMock(ServerMessage.class);
+      expect(serverMessage.getMessageID()).andReturn(messageID);
+      expect(ref.getMessage()).andReturn(serverMessage);
       refs.add(ref);
       expect(coreQueue.list(isA(Filter.class))).andReturn(refs);
-      expect(
-            serverManager.changeMessagesPriority(isA(Filter.class),
-                  eq(newPriority), eq(queue))).andReturn(1);
+      expect(coreQueue.changeMessagePriority(messageID, newPriority, storageManager, postOffice, queueSettingsRepository)).andReturn(true);
 
-      replay(coreQueue, serverManager, ref);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       assertTrue(control.changeMessagePriority(jmsMessageID, newPriority));
 
-      verify(coreQueue, serverManager, ref);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
    }
 
    public void testChangeMessagePriorityWithInvalidPriorityValues()
@@ -659,12 +739,14 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       try
       {
          control.changeMessagePriority(jmsMessageID, -1);
@@ -681,10 +763,10 @@
       {
       }
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
-   public void testChangeMessagePriorityWithNoJMSMesageID() throws Exception
+   public void testChangeMessagePriorityWithNoJMSMessageID() throws Exception
    {
       String jndiBinding = randomString();
       String name = randomString();
@@ -693,14 +775,16 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
-      JMSServerManager serverManager = createMock(JMSServerManager.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(
             new ArrayList<MessageReference>());
 
-      replay(coreQueue, serverManager);
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
 
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, serverManager);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
       try
       {
          control.changeMessagePriority(jmsMessageID, newPriority);
@@ -709,9 +793,9 @@
       {
       }
 
-      verify(coreQueue, serverManager);
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
-   
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/TopicControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/TopicControlTest.java	2008-08-14 09:50:34 UTC (rev 4801)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/TopicControlTest.java	2008-08-14 13:04:40 UTC (rev 4802)
@@ -37,7 +37,9 @@
 
 import junit.framework.TestCase;
 
-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.postoffice.PostOffice;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.jms.JBossTopic;
 import org.jboss.messaging.jms.server.management.SubscriberInfo;
@@ -67,14 +69,16 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
 
-      replay(server);
+      replay(postOffice, storageManager);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       assertEquals(name, control.getName());
 
-      verify(server);
+      verify(postOffice, storageManager);
    }
 
    public void testGetAddress() throws Exception
@@ -83,14 +87,16 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
 
-      replay(server);
+      replay(postOffice, storageManager);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       assertEquals(topic.getAddress(), control.getAddress());
 
-      verify(server);
+      verify(postOffice, storageManager);
    }
 
    public void testGetJNDIBinding() throws Exception
@@ -99,14 +105,16 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
 
-      replay(server);
+      replay(postOffice, storageManager);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       assertEquals(jndiBinding, control.getJNDIBinding());
 
-      verify(server);
+      verify(postOffice, storageManager);
    }
 
    public void testIsTemporary() throws Exception
@@ -115,14 +123,16 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
 
-      replay(server);
+      replay(postOffice, storageManager);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       assertEquals(topic.isTemporary(), control.isTemporary());
 
-      verify(server);
+      verify(postOffice, storageManager);
    }
 
    public void testGetMessageCount() throws Exception
@@ -135,35 +145,52 @@
       int countForDurableQueue_2 = randomInt();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+
       Queue nonDurableQueue = createMock(Queue.class);
       expect(nonDurableQueue.isDurable()).andStubReturn(false);
       expect(nonDurableQueue.getMessageCount()).andStubReturn(
             countForNonDurableQueue);
+      Binding bindingForNonDurableQueue = createMock(Binding.class);
+      expect(bindingForNonDurableQueue.getQueue()).andStubReturn(
+            nonDurableQueue);
+
       Queue durableQueue_1 = createMock(Queue.class);
       expect(durableQueue_1.isDurable()).andStubReturn(true);
       expect(durableQueue_1.getMessageCount()).andStubReturn(
             countForDurableQueue_1);
+      Binding bindingForDurableQueue_1 = createMock(Binding.class);
+      expect(bindingForDurableQueue_1.getQueue()).andStubReturn(durableQueue_1);
+
       Queue durableQueue_2 = createMock(Queue.class);
       expect(durableQueue_2.isDurable()).andStubReturn(true);
       expect(durableQueue_2.getMessageCount()).andStubReturn(
             countForDurableQueue_2);
-      List<Queue> queues = new ArrayList<Queue>();
-      queues.add(nonDurableQueue);
-      queues.add(durableQueue_1);
-      queues.add(durableQueue_2);
-      expect(server.getQueuesForAddress(topic.getSimpleAddress()))
-            .andStubReturn(queues);
-      replay(server, nonDurableQueue, durableQueue_1, durableQueue_2);
+      Binding bindingForDurableQueue_2 = createMock(Binding.class);
+      expect(bindingForDurableQueue_2.getQueue()).andStubReturn(durableQueue_2);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      List<Binding> bindings = new ArrayList<Binding>();
+      bindings.add(bindingForNonDurableQueue);
+      bindings.add(bindingForDurableQueue_1);
+      bindings.add(bindingForDurableQueue_2);
+      expect(postOffice.getBindingsForAddress(topic.getSimpleAddress()))
+            .andStubReturn(bindings);
+      replay(postOffice, storageManager, bindingForNonDurableQueue,
+            nonDurableQueue, bindingForDurableQueue_1, durableQueue_1,
+            bindingForDurableQueue_2, durableQueue_2);
+
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       assertEquals(countForNonDurableQueue + countForDurableQueue_1
             + countForDurableQueue_2, control.getMessageCount());
       assertEquals(countForDurableQueue_1 + countForDurableQueue_2, control
             .getDurableMessageCount());
       assertEquals(countForNonDurableQueue, control.getNonDurableMessageCount());
 
-      verify(server, nonDurableQueue, durableQueue_1, durableQueue_2);
+      verify(postOffice, storageManager, bindingForNonDurableQueue,
+            nonDurableQueue, bindingForDurableQueue_1, durableQueue_1,
+            bindingForDurableQueue_2, durableQueue_2);
    }
 
    public void testGetSubcribersCount() throws Exception
@@ -172,27 +199,44 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+
       Queue nonDurableQueue = createMock(Queue.class);
       expect(nonDurableQueue.isDurable()).andStubReturn(false);
+      Binding bindingForNonDurableQueue = createMock(Binding.class);
+      expect(bindingForNonDurableQueue.getQueue()).andStubReturn(
+            nonDurableQueue);
+
       Queue durableQueue_1 = createMock(Queue.class);
       expect(durableQueue_1.isDurable()).andStubReturn(true);
+      Binding bindingForDurableQueue_1 = createMock(Binding.class);
+      expect(bindingForDurableQueue_1.getQueue()).andStubReturn(durableQueue_1);
+
       Queue durableQueue_2 = createMock(Queue.class);
       expect(durableQueue_2.isDurable()).andStubReturn(true);
-      List<Queue> queues = new ArrayList<Queue>();
-      queues.add(nonDurableQueue);
-      queues.add(durableQueue_1);
-      queues.add(durableQueue_2);
-      expect(server.getQueuesForAddress(topic.getSimpleAddress()))
-            .andStubReturn(queues);
-      replay(server, nonDurableQueue, durableQueue_1, durableQueue_2);
+      Binding bindingForDurableQueue_2 = createMock(Binding.class);
+      expect(bindingForDurableQueue_2.getQueue()).andStubReturn(durableQueue_2);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      List<Binding> bindings = new ArrayList<Binding>();
+      bindings.add(bindingForNonDurableQueue);
+      bindings.add(bindingForDurableQueue_1);
+      bindings.add(bindingForDurableQueue_2);
+      expect(postOffice.getBindingsForAddress(topic.getSimpleAddress()))
+            .andStubReturn(bindings);
+      replay(postOffice, storageManager, bindingForNonDurableQueue,
+            nonDurableQueue, bindingForDurableQueue_1, durableQueue_1,
+            bindingForDurableQueue_2, durableQueue_2);
+
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       assertEquals(3, control.getSubcribersCount());
       assertEquals(2, control.getDurableSubcribersCount());
       assertEquals(1, control.getNonDurableSubcribersCount());
 
-      verify(server, nonDurableQueue, durableQueue_1, durableQueue_2);
+      verify(postOffice, storageManager, bindingForNonDurableQueue,
+            nonDurableQueue, bindingForDurableQueue_1, durableQueue_1,
+            bindingForDurableQueue_2, durableQueue_2);
    }
 
    public void testRemoveAllMessages() throws Exception
@@ -201,14 +245,34 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
-      server.removeAllMessagesForAddress(topic.getSimpleAddress());
-      replay(server);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      Queue queue_1 = createMock(Queue.class);
+      Binding bindingforQueue_1 = createMock(Binding.class);
+      expect(bindingforQueue_1.getQueue()).andStubReturn(queue_1);
+
+      Queue queue_2 = createMock(Queue.class);
+      Binding bindingForQueue_2 = createMock(Binding.class);
+      expect(bindingForQueue_2.getQueue()).andStubReturn(queue_2);
+
+      List<Binding> bindings = new ArrayList<Binding>();
+      bindings.add(bindingforQueue_1);
+      bindings.add(bindingForQueue_2);
+      expect(postOffice.getBindingsForAddress(topic.getSimpleAddress()))
+            .andStubReturn(bindings);
+      queue_1.deleteAllReferences(storageManager);
+      queue_2.deleteAllReferences(storageManager);
+
+      replay(postOffice, storageManager, bindingforQueue_1, queue_1,
+            bindingForQueue_2, queue_2);
+
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       control.removeAllMessages();
 
-      verify(server);
+      verify(postOffice, storageManager, bindingforQueue_1, queue_1,
+            bindingForQueue_2, queue_2);
    }
 
    public void testListSubscriberInfos() throws Exception
@@ -217,7 +281,9 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+
       Queue durableQueue = createMock(Queue.class);
       expect(durableQueue.getName()).andStubReturn(
             JBossTopic.createAddressFromName(randomString()));
@@ -225,6 +291,9 @@
       expect(durableQueue.isDurable()).andStubReturn(true);
       expect(durableQueue.getMessageCount()).andStubReturn(randomInt());
       expect(durableQueue.getMaxSizeBytes()).andStubReturn(randomInt());
+      Binding bindingForDurableQueue = createMock(Binding.class);
+      expect(bindingForDurableQueue.getQueue()).andStubReturn(durableQueue);
+
       Queue nonDurableQueue = createMock(Queue.class);
       expect(nonDurableQueue.getName()).andStubReturn(
             JBossTopic.createAddressFromName(randomString()));
@@ -232,14 +301,18 @@
       expect(nonDurableQueue.isDurable()).andStubReturn(false);
       expect(nonDurableQueue.getMessageCount()).andStubReturn(randomInt());
       expect(nonDurableQueue.getMaxSizeBytes()).andStubReturn(randomInt());
-      List<Queue> queues = new ArrayList<Queue>();
-      queues.add(durableQueue);
-      queues.add(nonDurableQueue);
-      expect(server.getQueuesForAddress(topic.getSimpleAddress()))
-            .andStubReturn(queues);
-      replay(server, durableQueue, nonDurableQueue);
+      Binding bindingForNonDurableQueue = createMock(Binding.class);
+      expect(bindingForNonDurableQueue.getQueue()).andStubReturn(nonDurableQueue);
+      List<Binding> bindings = new ArrayList<Binding>();
+      bindings.add(bindingForDurableQueue);
+      bindings.add(bindingForNonDurableQueue);
+      expect(postOffice.getBindingsForAddress(topic.getSimpleAddress()))
+            .andStubReturn(bindings);
+      replay(postOffice, storageManager, bindingForDurableQueue, durableQueue,
+            bindingForNonDurableQueue, nonDurableQueue);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       SubscriberInfo[] infos = control.listAllSubscriberInfos();
       assertEquals(2, infos.length);
       infos = control.listDurableSubscriberInfos();
@@ -249,7 +322,8 @@
       assertEquals(1, infos.length);
       assertEquals(nonDurableQueue.getName().toString(), infos[0].getID());
 
-      verify(server, durableQueue, nonDurableQueue);
+      verify(postOffice, storageManager, bindingForDurableQueue, durableQueue,
+            bindingForNonDurableQueue, nonDurableQueue);
    }
 
    public void testListSubscribers() throws Exception
@@ -258,7 +332,9 @@
       String name = randomString();
 
       JBossTopic topic = new JBossTopic(name);
-      MessagingServerManagement server = createMock(MessagingServerManagement.class);
+      PostOffice postOffice = createMock(PostOffice.class);
+      StorageManager storageManager = createMock(StorageManager.class);
+
       Queue durableQueue = createMock(Queue.class);
       expect(durableQueue.getName()).andStubReturn(
             JBossTopic.createAddressFromName(randomString()));
@@ -266,6 +342,9 @@
       expect(durableQueue.isDurable()).andStubReturn(true);
       expect(durableQueue.getMessageCount()).andStubReturn(randomInt());
       expect(durableQueue.getMaxSizeBytes()).andStubReturn(randomInt());
+      Binding bindingForDurableQueue = createMock(Binding.class);
+      expect(bindingForDurableQueue.getQueue()).andStubReturn(durableQueue);
+
       Queue nonDurableQueue = createMock(Queue.class);
       expect(nonDurableQueue.getName()).andStubReturn(
             JBossTopic.createAddressFromName(randomString()));
@@ -273,26 +352,33 @@
       expect(nonDurableQueue.isDurable()).andStubReturn(false);
       expect(nonDurableQueue.getMessageCount()).andStubReturn(randomInt());
       expect(nonDurableQueue.getMaxSizeBytes()).andStubReturn(randomInt());
-      List<Queue> queues = new ArrayList<Queue>();
-      queues.add(durableQueue);
-      queues.add(nonDurableQueue);
-      expect(server.getQueuesForAddress(topic.getSimpleAddress()))
-            .andStubReturn(queues);
-      replay(server, durableQueue, nonDurableQueue);
+      Binding bindingForNonDurableQueue = createMock(Binding.class);
+      expect(bindingForNonDurableQueue.getQueue()).andStubReturn(nonDurableQueue);
 
-      TopicControl control = new TopicControl(topic, server, jndiBinding);
+      List<Binding> bindings = new ArrayList<Binding>();
+      bindings.add(bindingForDurableQueue);
+      bindings.add(bindingForNonDurableQueue);
+      expect(postOffice.getBindingsForAddress(topic.getSimpleAddress()))
+            .andStubReturn(bindings);
+      replay(postOffice, storageManager, bindingForDurableQueue, durableQueue,
+            bindingForNonDurableQueue, nonDurableQueue);
+
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
       TabularData data = control.listAllSubscribers();
       assertEquals(2, data.size());
       data = control.listDurableSubscribers();
       assertEquals(1, data.size());
-      CompositeData info = data.get(new String[] { durableQueue.getName().toString() });
+      CompositeData info = data.get(new String[] { durableQueue.getName()
+            .toString() });
       assertNotNull(info);
       data = control.listNonDurableSubscribers();
       assertEquals(1, data.size());
       info = data.get(new String[] { nonDurableQueue.getName().toString() });
       assertNotNull(info);
 
-      verify(server, durableQueue, nonDurableQueue);
+      verify(postOffice, storageManager, bindingForDurableQueue, durableQueue,
+            bindingForNonDurableQueue, nonDurableQueue);
    }
 
    // Package protected ---------------------------------------------




More information about the jboss-cvs-commits mailing list