You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/01/12 01:14:01 UTC

svn commit: r1724145 - in /qpid/java/trunk: bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/ broker-core/src/main/java/org/apache/qpid/server/exchange/ broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/ja...

Author: rgodfrey
Date: Tue Jan 12 00:14:00 2016
New Revision: 1724145

URL: http://svn.apache.org/viewvc?rev=1724145&view=rev
Log:
QPID-6982 : [Java Broker] Refactor VirtualHost

Modified:
    qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecovererTest.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecovererTest.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java
    qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
    qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java
    qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
    qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java
    qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
    qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
    qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_1_0_to_v0_10.java
    qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
    qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueReportServlet.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java

Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java Tue Jan 12 00:14:00 2016
@@ -39,13 +39,11 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Connection;
-import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.ManagedObject;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.VirtualHostAlias;
 import org.apache.qpid.server.model.VirtualHostNode;
 import org.apache.qpid.server.model.port.AmqpPort;
 import org.apache.qpid.server.protocol.LinkRegistry;
@@ -156,28 +154,15 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
-    public Exchange<?> createExchange(final Map<String, Object> attributes)
-    {
-        throwUnsupportedForReplica();
-        return null;
-    }
-
-    @Override
     public MessageDestination getAttainedMessageDestination(final String name)
     {
         return null;
     }
 
     @Override
-    public Exchange<?> getAttainedExchange(final String name)
-    {
-        return null;
-    }
-
-    @Override
-    public Queue<?> createQueue(final Map<String, Object> attributes)
+    public <T extends ConfiguredObject<?>> T getAttainedChildFromAddress(final Class<T> childClass,
+                                                                         final String address)
     {
-        throwUnsupportedForReplica();
         return null;
     }
 
@@ -188,12 +173,6 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
-    public Collection<String> getExchangeTypeNames()
-    {
-        return getObjectFactory().getSupportedTypes(Exchange.class);
-    }
-
-    @Override
     public String getRedirectHost(final AmqpPort<?> port)
     {
         return null;
@@ -302,12 +281,6 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
-    public Collection<VirtualHostAlias> getAliases()
-    {
-        return Collections.emptyList();
-    }
-
-    @Override
     public Collection<Connection<?>> getConnections()
     {
         return Collections.emptyList();
@@ -320,12 +293,6 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
-    public Queue<?> getAttainedQueue(final String name)
-    {
-        return null;
-    }
-
-    @Override
     public MessageSource getAttainedMessageSource(final String name)
     {
         return null;
@@ -338,18 +305,6 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
-    public Collection<Queue<?>> getQueues()
-    {
-        return Collections.emptyList();
-    }
-
-    @Override
-    public Collection<Exchange<?>> getExchanges()
-    {
-        return Collections.emptyList();
-    }
-
-    @Override
     public DurableConfigurationStore getDurableConfigurationStore()
     {
         return null;

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java Tue Jan 12 00:14:00 2016
@@ -59,14 +59,14 @@ public class DefaultDestination implemen
         {
             routingAddress = "";
         }
-        final Queue<?> q = _virtualHost.getAttainedQueue(routingAddress);
+        final Queue<?> q = _virtualHost.getAttainedChildFromAddress(Queue.class, routingAddress);
         if(q == null)
         {
             routingAddress = _virtualHost.getLocalAddress(routingAddress);
             if(routingAddress.contains("/") && !routingAddress.startsWith("/"))
             {
                 String[] parts = routingAddress.split("/",2);
-                Exchange<?> exchange = _virtualHost.getAttainedExchange(parts[0]);
+                Exchange<?> exchange = _virtualHost.getAttainedChildFromAddress(Exchange.class, parts[0]);
                 if(exchange != null)
                 {
                     return exchange.send(message, parts[1], instanceProperties, txn, postEnqueueAction);
@@ -74,7 +74,7 @@ public class DefaultDestination implemen
             }
             else if(!routingAddress.contains("/"))
             {
-                Exchange<?> exchange = _virtualHost.getAttainedExchange(routingAddress);
+                Exchange<?> exchange = _virtualHost.getAttainedChildFromAddress(Exchange.class, routingAddress);
                 if(exchange != null)
                 {
                     return exchange.send(message, "", instanceProperties, txn, postEnqueueAction);

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Tue Jan 12 00:14:00 2016
@@ -73,6 +73,7 @@ import org.apache.qpid.server.security.e
 import org.apache.qpid.server.store.ConfiguredObjectRecord;
 import org.apache.qpid.server.util.Action;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
+import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
 import org.apache.qpid.util.Strings;
 
 public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> implements ConfiguredObject<X>
@@ -2604,6 +2605,34 @@ public abstract class AbstractConfigured
         getSecurityManager().authoriseDelete(object);
     }
 
+    protected final <C extends ConfiguredObject> C awaitChildClassToAttainState(final Class<C> childClass, final String name)
+    {
+        ListenableFuture<C> attainedChildByName = getAttainedChildByName(childClass, name);
+        try
+        {
+            return (C) doSync(attainedChildByName, VirtualHost.DEFAULT_AWAIT_ATTAINMENT_TIMEOUT, TimeUnit.MILLISECONDS);
+        }
+        catch (TimeoutException e)
+        {
+            LOGGER.warn("Gave up waiting for {} '{}' to attain state. Check object's state via Management.", childClass.getSimpleName(), name);
+            return null;
+        }
+    }
+
+    protected final <C extends ConfiguredObject> C awaitChildClassToAttainState(final Class<C> childClass, final UUID id)
+    {
+        ListenableFuture<C> attainedChildByName = getAttainedChildById(childClass, id);
+        try
+        {
+            return (C) doSync(attainedChildByName, VirtualHost.DEFAULT_AWAIT_ATTAINMENT_TIMEOUT, TimeUnit.MILLISECONDS);
+        }
+        catch (TimeoutException e)
+        {
+            LOGGER.warn("Gave up waiting for {} with ID {} to attain state. Check object's state via Management.", childClass.getSimpleName(), id);
+            return null;
+        }
+    }
+
     protected SecurityManager getSecurityManager()
     {
         Broker broker = getModel().getAncestor(Broker.class, getCategoryClass(), this);

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Tue Jan 12 00:14:00 2016
@@ -189,19 +189,6 @@ public interface VirtualHost<X extends V
 
     Broker<?> getBroker();
 
-    //children
-    Collection<VirtualHostAlias> getAliases();
-    Collection<Queue<?>> getQueues();
-    Collection<Exchange<?>> getExchanges();
-
-    Exchange<?> createExchange(Map<String, Object> attributes)
-            throws AccessControlException, IllegalArgumentException;
-
-    Queue<?> createQueue(Map<String, Object> attributes)
-            throws AccessControlException, IllegalArgumentException;
-
-    Collection<String> getExchangeTypeNames();
-
     @ManagedOperation(nonModifying = true)
     Collection<? extends Connection<?>> getConnections();
 
@@ -219,16 +206,15 @@ public interface VirtualHost<X extends V
     void registerConnection(AMQPConnection<?> connection);
     void deregisterConnection(AMQPConnection<?> connection);
 
-    Queue<?> getAttainedQueue(String name);
-
     Queue<?> getAttainedQueue(UUID id);
 
     MessageSource getAttainedMessageSource(String name);
 
-    Exchange getAttainedExchange(String name);
-
     MessageDestination getAttainedMessageDestination(String name);
 
+    <T extends ConfiguredObject<?>> T getAttainedChildFromAddress(Class<T> childClass,
+                                                                  String address);
+
     MessageDestination getDefaultDestination();
 
     DurableConfigurationStore getDurableConfigurationStore();

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Tue Jan 12 00:14:00 2016
@@ -145,7 +145,6 @@ public abstract class AbstractVirtualHos
 
     private final EventLogger _eventLogger;
 
-    private final List<VirtualHostAlias> _aliases = new ArrayList<VirtualHostAlias>();
     private final VirtualHostNode<?> _virtualHostNode;
 
     private final AtomicLong _targetSize = new AtomicLong(100 * 1024 * 1024);
@@ -570,19 +569,6 @@ public abstract class AbstractVirtualHos
     }
 
     @Override
-    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
-    {
-        if(clazz == VirtualHostAlias.class)
-        {
-            return (Collection<C>) getAliases();
-        }
-        else
-        {
-            return super.getChildren(clazz);
-        }
-    }
-
-    @Override
     protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
     {
         checkVHostStateIsActive();
@@ -607,11 +593,6 @@ public abstract class AbstractVirtualHos
         throw new IllegalArgumentException("Cannot create a child of class " + childClass.getSimpleName());
     }
 
-    public Collection<String> getExchangeTypeNames()
-    {
-        return getObjectFactory().getSupportedTypes(Exchange.class);
-    }
-
 
     @Override
     public EventLogger getEventLogger()
@@ -741,27 +722,6 @@ public abstract class AbstractVirtualHos
     }
 
     @Override
-    public Queue<?> getAttainedQueue(String name)
-    {
-        Queue<?> child = awaitChildClassToAttainState(Queue.class, name);
-        if(child == null && getGlobalAddressDomains() != null)
-        {
-            for(String domain : getGlobalAddressDomains())
-            {
-                if(name.startsWith(domain + "/"))
-                {
-                    child = awaitChildClassToAttainState(Queue.class, name.substring(domain.length()));
-                    if(child != null)
-                    {
-                        break;
-                    }
-                }
-            }
-        }
-        return child;
-    }
-
-    @Override
     public MessageSource getAttainedMessageSource(final String name)
     {
         MessageSource messageSource = _systemNodeSources.get(name);
@@ -771,22 +731,11 @@ public abstract class AbstractVirtualHos
         }
         if(messageSource == null)
         {
-            messageSource = autoCreateSource(name);
+            messageSource = autoCreateNode(name, MessageSource.class, false);
         }
         return messageSource;
     }
 
-    private MessageSource autoCreateSource(final String name)
-    {
-        return autoCreateNode(name, MessageSource.class, false);
-    }
-
-
-    private MessageDestination autoCreateDestination(final String name)
-    {
-        return autoCreateNode(name, MessageDestination.class, true);
-
-    }
 
     private <T> T autoCreateNode(final String name, final Class<T> clazz, boolean publish)
     {
@@ -848,18 +797,6 @@ public abstract class AbstractVirtualHos
         return _broker;
     }
 
-    @Override
-    public Collection<Queue<?>> getQueues()
-    {
-        Collection children = getChildren(Queue.class);
-        return children;
-    }
-
-    public Queue<?> createQueue(Map<String, Object> attributes) throws QueueExistsException
-    {
-        return (Queue<?> )createChild(Queue.class, attributes);
-    }
-
     private ListenableFuture<? extends Queue<?>> addQueueAsync(Map<String, Object> attributes) throws QueueExistsException
     {
         if (shouldCreateDLQ(attributes))
@@ -895,30 +832,32 @@ public abstract class AbstractVirtualHos
         MessageDestination destination = _systemNodeDestinations.get(name);
         if(destination == null)
         {
-            destination = getAttainedExchange(name);
+            destination = getAttainedChildFromAddress(Exchange.class, name);
         }
         if(destination == null)
         {
-            destination = getAttainedQueue(name);
+            destination = getAttainedChildFromAddress(Queue.class, name);
         }
         if(destination == null)
         {
-            destination = autoCreateDestination(name);
+
+            destination = autoCreateNode(name, MessageDestination.class, true);
         }
         return destination;
     }
 
     @Override
-    public Exchange<?> getAttainedExchange(String name)
+    public <T extends ConfiguredObject<?>> T getAttainedChildFromAddress(final Class<T> childClass,
+                                                                         final String address)
     {
-        Exchange<?> child = awaitChildClassToAttainState(Exchange.class, name);
+        T child = awaitChildClassToAttainState(childClass, address);
         if(child == null && getGlobalAddressDomains() != null)
         {
             for(String domain : getGlobalAddressDomains())
             {
-                if(name.startsWith(domain + "/"))
+                if(address.startsWith(domain + "/"))
                 {
-                    child = awaitChildClassToAttainState(Exchange.class, name.substring(domain.length()));
+                    child = awaitChildClassToAttainState(childClass, address.substring(domain.length()));
                     if(child != null)
                     {
                         break;
@@ -929,56 +868,12 @@ public abstract class AbstractVirtualHos
         return child;
     }
 
-    private <C extends ConfiguredObject> C awaitChildClassToAttainState(final Class<C> childClass, final String name)
-    {
-        ListenableFuture<C> attainedChildByName = getAttainedChildByName(childClass, name);
-        try
-        {
-            return (C) doSync(attainedChildByName, DEFAULT_AWAIT_ATTAINMENT_TIMEOUT, TimeUnit.MILLISECONDS);
-        }
-        catch (TimeoutException e)
-        {
-            _logger.warn("Gave up waiting for {} '{}' to attain state. Check object's state via Management.", childClass.getSimpleName(), name);
-            return null;
-        }
-    }
-
-    private <C extends ConfiguredObject> C awaitChildClassToAttainState(final Class<C> childClass, final UUID id)
-    {
-        ListenableFuture<C> attainedChildByName = getAttainedChildById(childClass, id);
-        try
-        {
-            return (C) doSync(attainedChildByName, DEFAULT_AWAIT_ATTAINMENT_TIMEOUT, TimeUnit.MILLISECONDS);
-        }
-        catch (TimeoutException e)
-        {
-            _logger.warn("Gave up waiting for {} with ID {} to attain state. Check object's state via Management.", childClass.getSimpleName(), id);
-            return null;
-        }
-    }
-
     @Override
     public MessageDestination getDefaultDestination()
     {
         return _defaultDestination;
     }
 
-    @Override
-    public Collection<Exchange<?>> getExchanges()
-    {
-        Collection children = getChildren(Exchange.class);
-        return children;
-    }
-
-
-    @Override
-    public Exchange<?> createExchange(Map<String,Object> attributes)
-            throws ExchangeExistsException, ReservedExchangeNameException,
-                   NoFactoryForTypeException
-    {
-        return (Exchange<?>) createChild(Exchange.class, attributes);
-    }
-
 
     private ListenableFuture<Exchange<?>> addExchangeAsync(Map<String,Object> attributes)
             throws ExchangeExistsException, ReservedExchangeNameException,
@@ -1338,7 +1233,7 @@ public abstract class AbstractVirtualHos
             Broker<?> broker = virtualHostNode.getParent(Broker.class);
             broker.assignTargetSizes();
 
-            for (Queue<?> q : getQueues())
+            for (Queue<?> q : getChildren(Queue.class))
             {
                 if (q.getState() == State.ACTIVE)
                 {
@@ -1545,13 +1440,13 @@ public abstract class AbstractVirtualHos
     @Override
     public long getQueueCount()
     {
-        return getQueues().size();
+        return getChildren(Queue.class).size();
     }
 
     @Override
     public long getExchangeCount()
     {
-        return getExchanges().size();
+        return getChildren(Exchange.class).size();
     }
 
     @Override
@@ -1663,11 +1558,6 @@ public abstract class AbstractVirtualHos
                 });
     }
 
-    public Collection<VirtualHostAlias> getAliases()
-    {
-        return Collections.unmodifiableCollection(_aliases);
-    }
-
     private String createDLQ(final String queueName)
     {
         final String dlExchangeName = getDeadLetterExchangeName(queueName);
@@ -1687,7 +1577,7 @@ public abstract class AbstractVirtualHos
             attributes.put(org.apache.qpid.server.model.Exchange.LIFETIME_POLICY,
                            false ? LifetimePolicy.DELETE_ON_NO_LINKS : LifetimePolicy.PERMANENT);
             attributes.put(org.apache.qpid.server.model.Exchange.ALTERNATE_EXCHANGE, null);
-            dlExchange = createExchange(attributes);
+            dlExchange = (Exchange<?>) createChild(Exchange.class, attributes);;
         }
         catch(ExchangeExistsException e)
         {
@@ -1822,7 +1712,7 @@ public abstract class AbstractVirtualHos
     private void allocateTargetSizeToQueues()
     {
         long targetSize = _targetSize.get();
-        Collection<Queue<?>> queues = getQueues();
+        Collection<Queue> queues = getChildren(Queue.class);
         long totalSize = calculateTotalEnqueuedSize(queues);
         _logger.debug("Allocating target size to queues, total target: {} ; total enqueued size {}", targetSize, totalSize);
         if(targetSize > 0l)
@@ -1840,7 +1730,7 @@ public abstract class AbstractVirtualHos
     @Override
     public long getTotalQueueDepthBytes()
     {
-        return calculateTotalEnqueuedSize(getQueues());
+        return calculateTotalEnqueuedSize(getChildren(Queue.class));
     }
 
 
@@ -1935,7 +1825,7 @@ public abstract class AbstractVirtualHos
     }
 
 
-    private long calculateTotalEnqueuedSize(final Collection<Queue<?>> queues)
+    private long calculateTotalEnqueuedSize(final Collection<Queue> queues)
     {
         long total = 0;
         for(Queue<?> queue : queues)

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java Tue Jan 12 00:14:00 2016
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.virtualhost;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -110,7 +111,8 @@ public class AsynchronousMessageStoreRec
             _logSubject = new MessageStoreLogSubject(virtualHost.getName(), _store.getClass().getSimpleName());
 
             _maxMessageId = _store.getNextMessageId();
-            _recoveringQueues.addAll(_virtualHost.getQueues());
+            Collection children = _virtualHost.getChildren(Queue.class);
+            _recoveringQueues.addAll((Collection<? extends Queue<?>>) children);
 
         }
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java Tue Jan 12 00:14:00 2016
@@ -85,12 +85,10 @@ public class SynchronousMessageStoreReco
         {
             eventLogger.message(logSubject, TransactionLogMessages.RECOVERED(entry.getValue(), entry.getKey()));
             eventLogger.message(logSubject, TransactionLogMessages.RECOVERY_COMPLETE(entry.getKey(), true));
-            virtualHost.getAttainedQueue(entry.getKey()).completeRecovery();
+            virtualHost.getAttainedChildFromAddress(Queue.class, entry.getKey()).completeRecovery();
         }
 
-        Collection<Queue<?>> allQueues = virtualHost.getQueues();
-
-        for(Queue<?> q : allQueues)
+        for(Queue<?> q : virtualHost.getChildren(Queue.class))
         {
             if(!queueRecoveries.containsKey(q.getName()))
             {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java Tue Jan 12 00:14:00 2016
@@ -40,13 +40,11 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Connection;
-import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.ManagedObject;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.VirtualHostAlias;
 import org.apache.qpid.server.model.VirtualHostNode;
 import org.apache.qpid.server.model.port.AmqpPort;
 import org.apache.qpid.server.protocol.LinkRegistry;
@@ -156,28 +154,15 @@ class RedirectingVirtualHostImpl
     }
 
     @Override
-    public Exchange<?> createExchange(final Map<String, Object> attributes)
-    {
-        throwUnsupportedForRedirector();
-        return null;
-    }
-
-    @Override
     public MessageDestination getAttainedMessageDestination(final String name)
     {
         return null;
     }
 
     @Override
-    public Exchange<?> getAttainedExchange(final String name)
-    {
-        return null;
-    }
-
-    @Override
-    public Queue<?> createQueue(final Map<String, Object> attributes)
+    public <T extends ConfiguredObject<?>> T getAttainedChildFromAddress(final Class<T> childClass,
+                                                                         final String address)
     {
-        throwUnsupportedForRedirector();
         return null;
     }
 
@@ -188,12 +173,6 @@ class RedirectingVirtualHostImpl
     }
 
     @Override
-    public Collection<String> getExchangeTypeNames()
-    {
-        return getObjectFactory().getSupportedTypes(Exchange.class);
-    }
-
-    @Override
     public String getRedirectHost(final AmqpPort<?> port)
     {
         return ((RedirectingVirtualHostNode<?>)(getParent(VirtualHostNode.class))).getRedirects().get(port);
@@ -302,12 +281,6 @@ class RedirectingVirtualHostImpl
     }
 
     @Override
-    public Collection<VirtualHostAlias> getAliases()
-    {
-        return Collections.emptyList();
-    }
-
-    @Override
     public Collection<Connection<?>> getConnections()
     {
         return Collections.emptyList();
@@ -320,12 +293,6 @@ class RedirectingVirtualHostImpl
     }
 
     @Override
-    public Queue<?> getAttainedQueue(final String name)
-    {
-        return null;
-    }
-
-    @Override
     public MessageSource getAttainedMessageSource(final String name)
     {
         return null;
@@ -339,18 +306,6 @@ class RedirectingVirtualHostImpl
 
 
     @Override
-    public Collection<Queue<?>> getQueues()
-    {
-        return Collections.emptyList();
-    }
-
-    @Override
-    public Collection<Exchange<?>> getExchanges()
-    {
-        return Collections.emptyList();
-    }
-
-    @Override
     public DurableConfigurationStore getDurableConfigurationStore()
     {
         return null;

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java Tue Jan 12 00:14:00 2016
@@ -92,7 +92,7 @@ public class TopicExchangeTest extends Q
     {
         Map<String,Object> attributes = new HashMap<>();
         attributes.put(Queue.NAME, name);
-        return _vhost.createQueue(attributes);
+        return _vhost.createChild(Queue.class, attributes);
     }
 
     public void testNoRoute() throws Exception

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java Tue Jan 12 00:14:00 2016
@@ -95,7 +95,7 @@ abstract class AbstractQueueTestBase ext
         attributes.put(Queue.NAME, _qname);
         attributes.put(Queue.OWNER, _owner);
 
-        _queue = _virtualHost.createQueue(attributes);
+        _queue = _virtualHost.createChild(Queue.class, attributes);
 
         _exchange = (DirectExchange) _virtualHost.getChildByName(Exchange.class, ExchangeDefaults.DIRECT_EXCHANGE_NAME);
     }
@@ -122,7 +122,7 @@ abstract class AbstractQueueTestBase ext
         {
             Map<String,Object> attributes = new HashMap<>(_arguments);
 
-            _queue =  _virtualHost.createQueue(attributes);
+            _queue =  _virtualHost.createChild(Queue.class, attributes);
             assertNull("Queue was created", _queue);
         }
         catch (IllegalArgumentException e)
@@ -133,7 +133,7 @@ abstract class AbstractQueueTestBase ext
 
         Map<String,Object> attributes = new HashMap<>(_arguments);
         attributes.put(Queue.NAME, "differentName");
-        _queue =  _virtualHost.createQueue(attributes);
+        _queue =  _virtualHost.createChild(Queue.class, attributes);
         assertNotNull("Queue was not created", _queue);
     }
 
@@ -837,7 +837,7 @@ abstract class AbstractQueueTestBase ext
         attributes.put(Queue.NAME,"testTtlOverrideMaximumTTl");
         attributes.put(Queue.MAXIMUM_MESSAGE_TTL, 10000l);
 
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertEquals("TTL has not been overridden", 60000l, getExpirationOnQueue(queue, 50000l, 0l));
 
@@ -859,7 +859,7 @@ abstract class AbstractQueueTestBase ext
         attributes.put(Queue.NAME,"testTtlOverrideMinimumTTl");
         attributes.put(Queue.MINIMUM_MESSAGE_TTL, 10000l);
 
-        queue = _virtualHost.createQueue(attributes);
+        queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertEquals("TTL has been overridden incorrectly", 0l, getExpirationOnQueue(queue, 50000l, 0l));
 
@@ -883,7 +883,7 @@ abstract class AbstractQueueTestBase ext
         attributes.put(Queue.MINIMUM_MESSAGE_TTL, 10000l);
         attributes.put(Queue.MAXIMUM_MESSAGE_TTL, 20000l);
 
-        queue = _virtualHost.createQueue(attributes);
+        queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertEquals("TTL has not been overridden", 70000l, getExpirationOnQueue(queue, 50000l, 0l));
 

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java Tue Jan 12 00:14:00 2016
@@ -243,7 +243,7 @@ public class BrokerTestHelper
         Map<String,Object> attributes = new HashMap<String, Object>();
         attributes.put(Queue.ID, UUIDGenerator.generateRandomUUID());
         attributes.put(Queue.NAME, queueName);
-        Queue<?> queue = virtualHost.createQueue(attributes);
+        Queue<?> queue = virtualHost.createChild(Queue.class, attributes);
         return queue;
     }
 

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecovererTest.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecovererTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecovererTest.java Tue Jan 12 00:14:00 2016
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.virtualhost;
 
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -65,7 +66,7 @@ public class AsynchronousMessageStoreRec
         doThrow(exception).when(_storeReader).visitMessageInstances(any(TransactionLogResource.class),
                                                                                              any(MessageInstanceHandler.class));
         Queue<?> queue = mock(Queue.class);
-        when(_virtualHost.getQueues()).thenReturn(Collections.singleton(queue));
+        when(_virtualHost.getChildren(eq(Queue.class))).thenReturn(Collections.singleton(queue));
 
         AsynchronousMessageStoreRecoverer recoverer = new AsynchronousMessageStoreRecoverer();
         ListenableFuture<Void> result = recoverer.recover(_virtualHost);
@@ -83,7 +84,7 @@ public class AsynchronousMessageStoreRec
     public void testRecoveryEmptyQueue() throws Exception
     {
         Queue<?> queue = mock(Queue.class);
-        when(_virtualHost.getQueues()).thenReturn(Collections.singleton(queue));
+        when(_virtualHost.getChildren(eq(Queue.class))).thenReturn(Collections.singleton(queue));
 
         AsynchronousMessageStoreRecoverer recoverer = new AsynchronousMessageStoreRecoverer();
         ListenableFuture<Void> result = recoverer.recover(_virtualHost);

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecovererTest.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecovererTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecovererTest.java Tue Jan 12 00:14:00 2016
@@ -437,26 +437,11 @@ public class SynchronousMessageStoreReco
         when(queue.getId()).thenReturn(queueId);
         when(queue.getName()).thenReturn("test-queue");
         when(_virtualHost.getAttainedQueue(queueId)).thenReturn(queue);
-        when(_virtualHost.getAttainedQueue("test-queue")).thenReturn(queue);
+        when(_virtualHost.getAttainedChildFromAddress(Queue.class, "test-queue")).thenReturn(queue);
         return queue;
     }
 
 
-    private final class QueueIdMatcher extends ArgumentMatcher<TransactionLogResource>
-    {
-        private UUID _queueId;
-        public QueueIdMatcher(UUID queueId)
-        {
-            _queueId = queueId;
-        }
-
-        @Override
-        public boolean matches(Object argument)
-        {
-            return argument instanceof TransactionLogResource && _queueId.equals( ((TransactionLogResource)argument).getId() );
-        }
-    }
-
     private final class MessageEnqueueRecordMatcher extends ArgumentMatcher<MessageEnqueueRecord>
     {
         private final long _messageId;

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java Tue Jan 12 00:14:00 2016
@@ -120,7 +120,7 @@ public class VirtualHostQueueCreationTes
 
     private void verifyRegisteredQueueCount(int count)
     {
-        assertEquals("Queue was not registered in virtualhost", count, _virtualHost.getQueues().size());
+        assertEquals("Queue was not registered in virtualhost", count, _virtualHost.getChildren(Queue.class).size());
     }
 
 
@@ -138,7 +138,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(PriorityQueue.PRIORITIES, 5);
 
 
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertEquals("Queue not a priority queue", PriorityQueueImpl.class, queue.getClass());
         verifyQueueRegistered("testPriorityQueue");
@@ -156,7 +156,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(Queue.NAME, queueName);
 
 
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
         assertEquals("Queue not a simple queue", StandardQueueImpl.class, queue.getClass());
         verifyQueueRegistered(queueName);
 
@@ -188,7 +188,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(Queue.NAME, queueName);
         attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, true);
 
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
 
         Exchange<?> altExchange = queue.getAlternateExchange();
         assertNotNull("Queue should have an alternate exchange as DLQ is enabled", altExchange);
@@ -228,7 +228,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, true);
         attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 5);
 
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertEquals("Unexpected maximum delivery count", 5, queue.getMaximumDeliveryAttempts());
         Exchange<?> altExchange = queue.getAlternateExchange();
@@ -270,7 +270,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(Queue.NAME, queueName);
         attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, false);
 
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertNull("Queue should not have an alternate exchange as DLQ is disabled", queue.getAlternateExchange());
         assertNull("The alternate exchange should still not exist", _virtualHost.getChildByName(Exchange.class, dlExchangeName));
@@ -303,7 +303,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(Queue.LIFETIME_POLICY, LifetimePolicy.DELETE_ON_NO_OUTBOUND_LINKS);
 
         //create an autodelete queue
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
         assertEquals("Queue should be autodelete",
                      LifetimePolicy.DELETE_ON_NO_OUTBOUND_LINKS,
                      queue.getLifetimePolicy());
@@ -329,7 +329,7 @@ public class VirtualHostQueueCreationTes
 
         attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, (Object) 5);
 
-        final Queue<?> queue = _virtualHost.createQueue(attributes);
+        final Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertNotNull("The queue was not registered as expected ", queue);
         assertEquals("Maximum delivery count not as expected", 5, queue.getMaximumDeliveryAttempts());
@@ -347,7 +347,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(Queue.ID, UUID.randomUUID());
         attributes.put(Queue.NAME, "testMaximumDeliveryCountDefault");
 
-        final Queue<?> queue = _virtualHost.createQueue(attributes);
+        final Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
 
         assertNotNull("The queue was not registered as expected ", queue);
         assertEquals("Maximum delivery count not as expected", 0, queue.getMaximumDeliveryAttempts());
@@ -365,7 +365,7 @@ public class VirtualHostQueueCreationTes
             Map<String,Object> attributes = new HashMap<String, Object>();
             attributes.put(Queue.ID, UUID.randomUUID());
 
-            _virtualHost.createQueue(attributes);
+            _virtualHost.createChild(Queue.class, attributes);
             fail("queue with null name can not be created!");
         }
         catch (Exception e)
@@ -394,7 +394,7 @@ public class VirtualHostQueueCreationTes
 
             attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, true);
 
-            _virtualHost.createQueue(attributes);
+            _virtualHost.createChild(Queue.class, attributes);
             fail("queue with DLQ name having more than 255 characters can not be created!");
         }
         catch (Exception e)
@@ -424,7 +424,7 @@ public class VirtualHostQueueCreationTes
 
             attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, (Object) true);
 
-            _virtualHost.createQueue(attributes);
+            _virtualHost.createChild(Queue.class, attributes);
             fail("queue with DLE name having more than 255 characters can not be created!");
         }
         catch (Exception e)
@@ -444,7 +444,7 @@ public class VirtualHostQueueCreationTes
         attributes.put(Queue.MESSAGE_GROUP_KEY,"mykey");
         attributes.put(Queue.MESSAGE_GROUP_SHARED_GROUPS, true);
 
-        Queue<?> queue = _virtualHost.createQueue(attributes);
+        Queue<?> queue = _virtualHost.createChild(Queue.class, attributes);
         assertEquals("mykey", queue.getAttribute(Queue.MESSAGE_GROUP_KEY));
         assertEquals(Boolean.TRUE, queue.getAttribute(Queue.MESSAGE_GROUP_SHARED_GROUPS));
     }

Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java Tue Jan 12 00:14:00 2016
@@ -881,7 +881,7 @@ public class ServerSessionDelegate exten
                     attributes.put(org.apache.qpid.server.model.Exchange.LIFETIME_POLICY,
                                    method.getAutoDelete() ? LifetimePolicy.DELETE_ON_NO_LINKS : LifetimePolicy.PERMANENT);
                     attributes.put(org.apache.qpid.server.model.Exchange.ALTERNATE_EXCHANGE, method.getAlternateExchange());
-                    virtualHost.createExchange(attributes);
+                    virtualHost.createChild(Exchange.class, attributes);;
                 }
                 catch(ReservedExchangeNameException e)
                 {
@@ -949,7 +949,7 @@ public class ServerSessionDelegate exten
 
     private Exchange<?> getExchange(Session session, String exchangeName)
     {
-        return getVirtualHost(session).getAttainedExchange(exchangeName);
+        return getVirtualHost(session).getAttainedChildFromAddress(Exchange.class, exchangeName);
     }
 
     private MessageDestination getDestinationForMessage(Session ssn, MessageTransfer xfr)
@@ -1095,8 +1095,8 @@ public class ServerSessionDelegate exten
                 {
                     method.setBindingKey(method.getQueue());
                 }
-                Queue<?> queue = virtualHost.getAttainedQueue(method.getQueue());
-                Exchange<?> exchange = virtualHost.getAttainedExchange(exchangeName);
+                Queue<?> queue = virtualHost.getAttainedChildFromAddress(Queue.class, method.getQueue());
+                Exchange<?> exchange = virtualHost.getAttainedChildFromAddress(Exchange.class, exchangeName);
                 if(queue == null)
                 {
                     exception(session, method, ExecutionErrorCode.NOT_FOUND, "Queue: '" + method.getQueue() + "' not found");
@@ -1155,8 +1155,8 @@ public class ServerSessionDelegate exten
         }
         else
         {
-            Queue<?> queue = virtualHost.getAttainedQueue(method.getQueue());
-            Exchange<?> exchange = virtualHost.getAttainedExchange(method.getExchange());
+            Queue<?> queue = virtualHost.getAttainedChildFromAddress(Queue.class, method.getQueue());
+            Exchange<?> exchange = virtualHost.getAttainedChildFromAddress(Exchange.class, method.getExchange());
             if(queue == null)
             {
                 exception(session, method, ExecutionErrorCode.NOT_FOUND, "Queue: '" + method.getQueue() + "' not found");
@@ -1195,7 +1195,7 @@ public class ServerSessionDelegate exten
         if(!nameNullOrEmpty(method.getExchange()))
         {
             isDefaultExchange = false;
-            exchange = virtualHost.getAttainedExchange(method.getExchange());
+            exchange = virtualHost.getAttainedChildFromAddress(Exchange.class, method.getExchange());
 
             if(exchange == null)
             {
@@ -1376,7 +1376,7 @@ public class ServerSessionDelegate exten
 
     private Queue<?> getQueue(Session session, String queue)
     {
-        return getVirtualHost(session).getAttainedQueue(queue);
+        return getVirtualHost(session).getAttainedChildFromAddress(Queue.class, queue);
     }
 
     @Override
@@ -1394,7 +1394,7 @@ public class ServerSessionDelegate exten
 
         if(method.getPassive())
         {
-            queue = virtualHost.getAttainedQueue(queueName);
+            queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName);
 
             if (queue == null)
             {
@@ -1466,7 +1466,7 @@ public class ServerSessionDelegate exten
 
                 arguments.put(Queue.EXCLUSIVE, exclusivityPolicy);
 
-                queue = virtualHost.createQueue(arguments);
+                queue = virtualHost.createChild(Queue.class, arguments);
 
             }
             catch(QueueExistsException qe)

Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java Tue Jan 12 00:14:00 2016
@@ -61,7 +61,7 @@ public class ServerSessionDelegateTest e
         Exchange<?> exchange = mock(Exchange.class);
         when(exchange.hasBindings()).thenReturn(true);
 
-        doReturn(exchange).when(_host).getAttainedExchange(getTestName());
+        doReturn(exchange).when(_host).getAttainedChildFromAddress(Exchange.class, getTestName());
 
         final ExchangeDelete method = new ExchangeDelete(getTestName(), Option.IF_UNUSED);
         _delegate.exchangeDelete(_session, method);
@@ -82,7 +82,7 @@ public class ServerSessionDelegateTest e
         Exchange<?> exchange = mock(Exchange.class);
         when(exchange.hasBindings()).thenReturn(false);
 
-        doReturn(exchange).when(_host).getAttainedExchange(getTestName());
+        doReturn(exchange).when(_host).getAttainedChildFromAddress(Exchange.class, getTestName());
 
         final ExchangeDelete method = new ExchangeDelete(getTestName(), Option.IF_UNUSED);
         _delegate.exchangeDelete(_session, method);

Modified: qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java Tue Jan 12 00:14:00 2016
@@ -2710,7 +2710,7 @@ public class AMQChannel
             {
                 if (queueName == null)
                 {
-                    replyCode = virtualHost.getQueues().isEmpty()
+                    replyCode = virtualHost.getChildren(Queue.class).isEmpty()
                             ? ExchangeBoundOkBody.NO_BINDINGS
                             : ExchangeBoundOkBody.OK;
                     replyText = null;
@@ -2735,14 +2735,14 @@ public class AMQChannel
             {
                 if (queueName == null)
                 {
-                    replyCode = virtualHost.getAttainedQueue(routingKey.toString()) == null
+                    replyCode = virtualHost.getAttainedChildFromAddress(Queue.class, routingKey.toString()) == null
                             ? ExchangeBoundOkBody.NO_QUEUE_BOUND_WITH_RK
                             : ExchangeBoundOkBody.OK;
                     replyText = null;
                 }
                 else
                 {
-                    Queue<?> queue = virtualHost.getAttainedQueue(queueName.toString());
+                    Queue<?> queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString());
                     if (queue == null)
                     {
 
@@ -2761,7 +2761,7 @@ public class AMQChannel
         }
         else
         {
-            Exchange<?> exchange = virtualHost.getAttainedExchange(exchangeName.toString());
+            Exchange<?> exchange = virtualHost.getAttainedChildFromAddress(Exchange.class, exchangeName.toString());
             if (exchange == null)
             {
 
@@ -2786,7 +2786,7 @@ public class AMQChannel
                 else
                 {
 
-                    Queue<?> queue = virtualHost.getAttainedQueue(queueName.toString());
+                    Queue<?> queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString());
                     if (queue == null)
                     {
                         replyCode = ExchangeBoundOkBody.QUEUE_NOT_FOUND;
@@ -2813,7 +2813,7 @@ public class AMQChannel
             }
             else if (queueName != null)
             {
-                Queue<?> queue = virtualHost.getAttainedQueue(queueName.toString());
+                Queue<?> queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString());
                 if (queue == null)
                 {
                     replyCode = ExchangeBoundOkBody.QUEUE_NOT_FOUND;
@@ -2907,7 +2907,7 @@ public class AMQChannel
         {
             if (passive)
             {
-                exchange = virtualHost.getAttainedExchange(exchangeName.toString());
+                exchange = virtualHost.getAttainedChildFromAddress(Exchange.class, exchangeName.toString());
                 if (exchange == null)
                 {
                     closeChannel(AMQConstant.NOT_FOUND, "Unknown exchange: '" + exchangeName + "'");
@@ -2951,7 +2951,7 @@ public class AMQChannel
                     {
                         attributes.put(Exchange.ALTERNATE_EXCHANGE, null);
                     }
-                    exchange = virtualHost.createExchange(attributes);
+                    exchange = virtualHost.createChild(Exchange.class, attributes);
 
                     if (!nowait)
                     {
@@ -2962,7 +2962,7 @@ public class AMQChannel
                 }
                 catch (ReservedExchangeNameException e)
                 {
-                    Exchange existing = virtualHost.getAttainedExchange(exchangeName.toString());
+                    Exchange existing = virtualHost.getAttainedChildFromAddress(Exchange.class, exchangeName.toString());
                     if (existing != null && new AMQShortString(existing.getType()).equals(type))
                     {
                         sync();
@@ -3054,7 +3054,7 @@ public class AMQChannel
         {
             final String exchangeName = exchangeStr.toString();
 
-            final Exchange<?> exchange = virtualHost.getAttainedExchange(exchangeName);
+            final Exchange<?> exchange = virtualHost.getAttainedChildFromAddress(Exchange.class, exchangeName);
             if (exchange == null)
             {
                 closeChannel(AMQConstant.NOT_FOUND, "No such exchange: '" + exchangeStr + "'");
@@ -3127,7 +3127,7 @@ public class AMQChannel
         }
         else
         {
-            queue = virtualHost.getAttainedQueue(queueName.toString());
+            queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString());
             routingKey = routingKey == null ? AMQShortString.EMPTY_STRING : routingKey;
         }
 
@@ -3149,7 +3149,7 @@ public class AMQChannel
 
             final String exchangeName = exchange.toString();
 
-            final Exchange<?> exch = virtualHost.getAttainedExchange(exchangeName);
+            final Exchange<?> exch = virtualHost.getAttainedChildFromAddress(Exchange.class, exchangeName);
             if (exch == null)
             {
                 closeChannel(AMQConstant.NOT_FOUND,
@@ -3240,7 +3240,7 @@ public class AMQChannel
 
         if (passive)
         {
-            queue = virtualHost.getAttainedQueue(queueName.toString());
+            queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString());
             if (queue == null)
             {
                 closeChannel(AMQConstant.NOT_FOUND,
@@ -3311,7 +3311,7 @@ public class AMQChannel
                 attributes.put(Queue.LIFETIME_POLICY, lifetimePolicy);
 
 
-                queue = virtualHost.createQueue(attributes);
+                queue = virtualHost.createChild(Queue.class, attributes);
 
                 setDefaultQueue(queue);
 
@@ -3421,7 +3421,7 @@ public class AMQChannel
         }
         else
         {
-            queue = virtualHost.getAttainedQueue(queueName.toString());
+            queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString());
         }
 
         if (queue == null)
@@ -3487,7 +3487,7 @@ public class AMQChannel
 
             _connection.sendConnectionClose(AMQConstant.NOT_ALLOWED, "No queue specified.", getChannelId());
         }
-        else if ((queueName != null) && (queue = virtualHost.getAttainedQueue(queueName.toString())) == null)
+        else if ((queueName != null) && (queue = virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString())) == null)
         {
             closeChannel(AMQConstant.NOT_FOUND, "Queue '" + queueName + "' does not exist.");
         }
@@ -3539,7 +3539,7 @@ public class AMQChannel
         final boolean useDefaultQueue = queueName == null;
         final Queue<?> queue = useDefaultQueue
                 ? getDefaultQueue()
-                : virtualHost.getAttainedQueue(queueName.toString());
+                : virtualHost.getAttainedChildFromAddress(Queue.class, queueName.toString());
 
 
         if (queue == null)
@@ -3559,7 +3559,7 @@ public class AMQChannel
         else
         {
 
-            final Exchange<?> exch = virtualHost.getAttainedExchange(exchange.toString());
+            final Exchange<?> exch = virtualHost.getAttainedChildFromAddress(Exchange.class, exchange.toString());
 
             if (exch == null)
             {

Modified: qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java Tue Jan 12 00:14:00 2016
@@ -123,7 +123,7 @@ public class AMQChannelTest extends Qpid
         String testExchangeName = getTestName();
         Exchange<?> exchange = mock(Exchange.class);
         when(exchange.hasBindings()).thenReturn(true);
-        doReturn(exchange).when(_virtualHost).getAttainedExchange(testExchangeName);
+        doReturn(exchange).when(_virtualHost).getAttainedChildFromAddress(Exchange.class, testExchangeName);
 
         AMQChannel channel = new AMQChannel(_amqConnection, 1, _messageStore);
 
@@ -138,7 +138,7 @@ public class AMQChannelTest extends Qpid
     {
         Exchange<?> exchange = mock(Exchange.class);
         when(exchange.hasBindings()).thenReturn(false);
-        doReturn(exchange).when(_virtualHost).getAttainedExchange(getTestName());
+        doReturn(exchange).when(_virtualHost).getAttainedChildFromAddress(Exchange.class, getTestName());
 
         AMQChannel channel = new AMQChannel(_amqConnection, 1, _messageStore);
         channel.receiveExchangeDelete(AMQShortString.valueOf(getTestName()), true, false);

Modified: qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java Tue Jan 12 00:14:00 2016
@@ -208,7 +208,7 @@ public class SendingLink_1_0 implements
                     name = UUID.randomUUID().toString();
                 }
 
-                Queue<?> queue = _vhost.getAttainedQueue(name);
+                Queue<?> queue = _vhost.getAttainedChildFromAddress(Queue.class, name);
                 Exchange<?> exchange = exchangeDestination.getExchange();
 
                 if(queue == null)
@@ -220,7 +220,7 @@ public class SendingLink_1_0 implements
                     attributes.put(Queue.LIFETIME_POLICY, LifetimePolicy.DELETE_ON_NO_OUTBOUND_LINKS);
                     attributes.put(Queue.EXCLUSIVE, ExclusivityPolicy.LINK);
 
-                    queue = _vhost.createQueue(attributes);
+                    queue = _vhost.createChild(Queue.class, attributes);
                 }
                 else
                 {

Modified: qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java Tue Jan 12 00:14:00 2016
@@ -172,7 +172,7 @@ public class Session_1_0 implements Sess
                     if(!addr.startsWith("/") && addr.contains("/"))
                     {
                         String[] parts = addr.split("/",2);
-                        Exchange<?> exchg = getVirtualHost().getAttainedExchange(parts[0]);
+                        Exchange<?> exchg = getVirtualHost().getAttainedChildFromAddress(Exchange.class, parts[0]);
                         if(exchg != null)
                         {
                             ExchangeDestination exchangeDestination =
@@ -196,7 +196,7 @@ public class Session_1_0 implements Sess
                         }
                         else
                         {
-                            Exchange<?> exchg = getVirtualHost().getAttainedExchange(addr);
+                            Exchange<?> exchg = getVirtualHost().getAttainedChildFromAddress(Exchange.class, addr);
                             if(exchg != null)
                             {
                                 destination = new ExchangeDestination(exchg, source.getDurable(), source.getExpiryPolicy());
@@ -340,7 +340,7 @@ public class Session_1_0 implements Sess
                         else if(!addr.startsWith("/") && addr.contains("/"))
                         {
                             String[] parts = addr.split("/",2);
-                            Exchange<?> exchange = getVirtualHost().getAttainedExchange(parts[0]);
+                            Exchange<?> exchange = getVirtualHost().getAttainedChildFromAddress(Exchange.class, parts[0]);
                             if(exchange != null)
                             {
                                 ExchangeDestination exchangeDestination =
@@ -369,7 +369,7 @@ public class Session_1_0 implements Sess
                             }
                             else
                             {
-                                Queue<?> queue = getVirtualHost().getAttainedQueue(addr);
+                                Queue<?> queue = getVirtualHost().getAttainedChildFromAddress(Queue.class, addr);
                                 if(queue != null)
                                 {
 
@@ -492,7 +492,7 @@ public class Session_1_0 implements Sess
 
             // TODO convert AMQP 1-0 node properties to queue attributes
 
-            queue = getVirtualHost().createQueue(attributes);
+            queue = getVirtualHost().createChild(Queue.class, attributes);
         }
         catch (AccessControlException e)
         {

Modified: qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_1_0_to_v0_10.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_1_0_to_v0_10.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_1_0_to_v0_10.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_1_0_to_v0_10.java Tue Jan 12 00:14:00 2016
@@ -26,6 +26,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 import org.apache.qpid.bytebuffer.QpidByteBuffer;
+import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.plugin.MessageConverter;
 import org.apache.qpid.server.plugin.PluggableService;
@@ -150,7 +151,7 @@ public class MessageConverter_1_0_to_v0_
                 String[] parts = origReplyTo.split("/",2);
                 replyTo = new ReplyTo(parts[0],parts[1]);
             }
-            else if(vhost.getAttainedExchange(origReplyTo) != null)
+            else if(vhost.getAttainedChildFromAddress(Exchange.class, origReplyTo) != null)
             {
                 replyTo = new ReplyTo(origReplyTo,"");
             }

Modified: qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java Tue Jan 12 00:14:00 2016
@@ -113,7 +113,7 @@ public class MessageConverter_0_10_to_0_
                     exchangeName = "";
                 }
 
-                Exchange<?> exchange = vhost.getAttainedExchange(exchangeName);
+                Exchange<?> exchange = vhost.getAttainedChildFromAddress(Exchange.class, exchangeName);
                 String exchangeClass = exchange == null
                                             ? ExchangeDefaults.DIRECT_EXCHANGE_CLASS
                                             : exchange.getType();

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueReportServlet.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueReportServlet.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueReportServlet.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueReportServlet.java Tue Jan 12 00:14:00 2016
@@ -88,7 +88,7 @@ public class QueueReportServlet extends
     {
         Queue queue = null;
 
-        for(Queue<?> q : vhost.getQueues())
+        for(Queue<?> q : vhost.getChildren(Queue.class))
         {
 
             if(q.getName().equals(queueName))

Modified: qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java?rev=1724145&r1=1724144&r2=1724145&view=diff
==============================================================================
--- qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java (original)
+++ qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java Tue Jan 12 00:14:00 2016
@@ -195,7 +195,7 @@ public class VirtualHostMessageStoreTest
 
     public void testQueueExchangeAndBindingCreation() throws Exception
     {
-        assertEquals("Should not be any existing queues", 0,  _virtualHost.getQueues().size());
+        assertEquals("Should not be any existing queues", 0,  _virtualHost.getChildren(Queue.class).size());
 
         createAllQueues();
         createAllTopicQueues();
@@ -235,7 +235,7 @@ public class VirtualHostMessageStoreTest
         validateMessageOnTopics(2, true);
 
         assertEquals("Not all queues correctly registered",
-                10, _virtualHost.getQueues().size());
+                10, _virtualHost.getChildren(Queue.class).size());
     }
 
     public void testMessagePersistence() throws Exception
@@ -259,7 +259,7 @@ public class VirtualHostMessageStoreTest
         testMessagePersistence();
 
         assertEquals("Incorrect number of queues registered after recovery",
-                6,  _virtualHost.getQueues().size());
+                6,  _virtualHost.getChildren(Queue.class).size());
 
         //clear the queue
         _virtualHost.getChildByName(Queue.class, durableQueueName).clearQueue();
@@ -281,7 +281,7 @@ public class VirtualHostMessageStoreTest
     public void testQueuePersistence() throws Exception
     {
         assertEquals("Should not be any existing queues",
-                0, _virtualHost.getQueues().size());
+                0, _virtualHost.getChildren(Queue.class).size());
 
         //create durable and non durable queues/topics
         createAllQueues();
@@ -291,7 +291,7 @@ public class VirtualHostMessageStoreTest
         reloadVirtualHost();
 
         assertEquals("Incorrect number of queues registered after recovery",
-                6,  _virtualHost.getQueues().size());
+                6,  _virtualHost.getChildren(Queue.class).size());
 
         //Validate the non-Durable Queues were not recovered.
         assertNull("Non-Durable queue still registered:" + priorityQueueName,
@@ -322,12 +322,12 @@ public class VirtualHostMessageStoreTest
         createQueue(durableQueueName, false, true, false, false);
 
         assertEquals("Incorrect number of queues registered before recovery",
-                1,  _virtualHost.getQueues().size());
+                1,  _virtualHost.getChildren(Queue.class).size());
 
         reloadVirtualHost();
 
         assertEquals("Incorrect number of queues registered after first recovery",
-                1,  _virtualHost.getQueues().size());
+                1,  _virtualHost.getChildren(Queue.class).size());
 
         //test that removing the queue means it is not recovered next time
 
@@ -337,7 +337,7 @@ public class VirtualHostMessageStoreTest
         reloadVirtualHost();
 
         assertEquals("Incorrect number of queues registered after second recovery",
-                0,  _virtualHost.getQueues().size());
+                0,  _virtualHost.getChildren(Queue.class).size());
         assertNull("Durable queue was not removed:" + durableQueueName,
                 _virtualHost.getChildByName(Queue.class, durableQueueName));
     }
@@ -349,12 +349,12 @@ public class VirtualHostMessageStoreTest
      */
     public void testExchangePersistence() throws Exception
     {
-        int origExchangeCount = _virtualHost.getExchanges().size();
+        int origExchangeCount = _virtualHost.getChildren(Exchange.class).size();
 
         Map<String, Exchange<?>> oldExchanges = createExchanges();
 
         assertEquals("Incorrect number of exchanges registered before recovery",
-                origExchangeCount + 3, _virtualHost.getExchanges().size());
+                origExchangeCount + 3, _virtualHost.getChildren(Exchange.class).size());
 
         reloadVirtualHost();
 
@@ -369,17 +369,17 @@ public class VirtualHostMessageStoreTest
      */
     public void testDurableExchangeRemoval() throws Exception
     {
-        int origExchangeCount = _virtualHost.getExchanges().size();
+        int origExchangeCount = _virtualHost.getChildren(Exchange.class).size();
 
         createExchange(ExchangeDefaults.DIRECT_EXCHANGE_CLASS, directExchangeName, true);
 
         assertEquals("Incorrect number of exchanges registered before recovery",
-                origExchangeCount + 1,  _virtualHost.getExchanges().size());
+                origExchangeCount + 1,  _virtualHost.getChildren(Exchange.class).size());
 
         reloadVirtualHost();
 
         assertEquals("Incorrect number of exchanges registered after first recovery",
-                origExchangeCount + 1,  _virtualHost.getExchanges().size());
+                origExchangeCount + 1,  _virtualHost.getChildren(Exchange.class).size());
 
         //test that removing the exchange means it is not recovered next time
 
@@ -390,7 +390,7 @@ public class VirtualHostMessageStoreTest
         reloadVirtualHost();
 
         assertEquals("Incorrect number of exchanges registered after second recovery",
-                     origExchangeCount, _virtualHost.getExchanges().size());
+                     origExchangeCount, _virtualHost.getChildren(Exchange.class).size());
         assertNull("Durable exchange was not removed:" + directExchangeName,
                    _virtualHost.getChildByName(Exchange.class, directExchangeName));
     }
@@ -403,7 +403,7 @@ public class VirtualHostMessageStoreTest
      */
     public void testBindingPersistence() throws Exception
     {
-        int origExchangeCount = _virtualHost.getExchanges().size();
+        int origExchangeCount = _virtualHost.getChildren(Exchange.class).size();
 
         createAllQueues();
         createAllTopicQueues();
@@ -419,7 +419,7 @@ public class VirtualHostMessageStoreTest
         bindAllTopicQueuesToExchange(topicExchange, topicRouting);
 
         assertEquals("Incorrect number of exchanges registered before recovery",
-                origExchangeCount + 3, _virtualHost.getExchanges().size());
+                origExchangeCount + 3, _virtualHost.getChildren(Exchange.class).size());
 
         reloadVirtualHost();
 
@@ -470,7 +470,7 @@ public class VirtualHostMessageStoreTest
      */
     private void validateExchanges(int originalNumExchanges, Map<String, Exchange<?>> oldExchanges)
     {
-        Collection<Exchange<?>> exchanges = _virtualHost.getExchanges();
+        Collection<Exchange> exchanges = _virtualHost.getChildren(Exchange.class);
         Collection<String> exchangeNames = new ArrayList<String>(exchanges.size());
         for(Exchange<?> exchange : exchanges)
         {
@@ -491,14 +491,14 @@ public class VirtualHostMessageStoreTest
 
         // There should only be the original exchanges + our 2 recovered durable exchanges
         assertEquals("Incorrect number of exchanges available",
-                originalNumExchanges + 2, _virtualHost.getExchanges().size());
+                originalNumExchanges + 2, _virtualHost.getChildren(Exchange.class).size());
     }
 
     /** Validates the Durable queues and their properties are as expected following recovery */
     private void validateBindingProperties()
     {
 
-        assertEquals("Incorrect number of (durable) queues following recovery", 6, _virtualHost.getQueues().size());
+        assertEquals("Incorrect number of (durable) queues following recovery", 6, _virtualHost.getChildren(Queue.class).size());
 
         validateBindingProperties(_virtualHost.getChildByName(Queue.class, durablePriorityQueueName).getBindings(), false);
         validateBindingProperties(_virtualHost.getChildByName(Queue.class, durablePriorityTopicQueueName).getBindings(), true);
@@ -696,7 +696,7 @@ public class VirtualHostMessageStoreTest
                                              @Override
                                              public Queue<?> run()
                                              {
-                                                 return _virtualHost.createQueue(queueArguments);
+                                                 return _virtualHost.createChild(Queue.class, queueArguments);
 
                                              }
                                          });
@@ -731,7 +731,7 @@ public class VirtualHostMessageStoreTest
         attributes.put(org.apache.qpid.server.model.Exchange.LIFETIME_POLICY,
                 durable ? LifetimePolicy.DELETE_ON_NO_LINKS : LifetimePolicy.PERMANENT);
         attributes.put(org.apache.qpid.server.model.Exchange.ALTERNATE_EXCHANGE, null);
-        exchange = _virtualHost.createExchange(attributes);
+        exchange = _virtualHost.createChild(Exchange.class, attributes);
 
         return exchange;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org