Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
 Sun Apr 22 21:10:27 2012
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.server.model.adapter;
 
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Consumer;
 import org.apache.qpid.server.model.LifetimePolicy;
 import org.apache.qpid.server.model.State;
@@ -28,6 +29,7 @@ import org.apache.qpid.server.subscripti
 
 import java.security.AccessControlException;
 import java.util.Collection;
+import java.util.Collections;
 
 public class ConsumerAdapter extends AbstractAdapter implements Consumer
 {
@@ -174,6 +176,12 @@ public class ConsumerAdapter extends Abs
         return _statistics;
     }
 
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        return Collections.emptySet();
+    }
+
     private class ConsumerStatistics implements Statistics
     {
 

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
 Sun Apr 22 21:10:27 2012
@@ -32,6 +32,7 @@ import org.apache.qpid.AMQException;
 import org.apache.qpid.AMQInternalException;
 import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.LifetimePolicy;
 import org.apache.qpid.server.model.Publisher;
@@ -212,6 +213,19 @@ final class ExchangeAdapter extends Abst
         return _statistics;
     }
 
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        if(clazz == org.apache.qpid.server.model.Binding.class)
+        {
+            return (Collection<C>) getBindings();
+        }
+        else
+        {
+            return Collections.emptySet();
+        }
+    }
+
     public void bindingAdded(org.apache.qpid.server.exchange.Exchange 
exchange, Binding binding)
     {
         BindingAdapter adapter = null;

Added: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java?rev=1328976&view=auto
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
 (added)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
 Sun Apr 22 21:10:27 2012
@@ -0,0 +1,311 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.server.model.adapter;
+
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Connection;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Protocol;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.Statistics;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.VirtualHostAlias;
+import org.apache.qpid.server.protocol.AmqpProtocolVersion;
+import org.apache.qpid.server.transport.QpidAcceptor;
+
+import java.net.InetSocketAddress;
+import java.security.AccessControlException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+public class PortAdapter extends AbstractAdapter implements Port
+{
+    private final BrokerAdapter _broker;
+    private final QpidAcceptor _acceptor;
+    private final InetSocketAddress _address;
+    private final Collection<Protocol> _protocols;
+
+    public PortAdapter(BrokerAdapter brokerAdapter, QpidAcceptor acceptor, 
InetSocketAddress address)
+    {
+        _broker = brokerAdapter;
+        _acceptor = acceptor;
+        _address = address;
+
+        List<Protocol> protocols = new ArrayList<Protocol>();
+
+        for(AmqpProtocolVersion pv : _acceptor.getSupported())
+        {
+             switch(pv)
+             {
+                 case v0_8:
+                     protocols.add(Protocol.AMQP_0_8);
+                     break;
+                 case v0_9:
+                     protocols.add(Protocol.AMQP_0_9);
+                     break;
+                 case v0_9_1:
+                     protocols.add(Protocol.AMQP_0_9_1);
+                     break;
+                 case v0_10:
+                     protocols.add(Protocol.AMQP_0_10);
+                     break;
+                 case v1_0_0:
+                     protocols.add(Protocol.AMQP_1_0);
+                     break;
+             }
+        }
+
+        _protocols = Collections.unmodifiableCollection(protocols);
+
+    }
+
+    @Override
+    public String getBindingAddress()
+    {
+        return _address.getHostName();
+    }
+
+    @Override
+    public int getPort()
+    {
+        return _address.getPort();
+    }
+
+    @Override
+    public Collection<Transport> getTransports()
+    {
+        switch (_acceptor.getTransport())
+        {
+            case TCP:
+                return Collections.singleton(Transport.TCP);
+            case SSL:
+                return Collections.singleton(Transport.SSL);
+        }
+
+        return null;  // TODO - Implement
+    }
+
+    @Override
+    public void addTransport(Transport transport)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException(); // TODO - Implement
+    }
+
+    @Override
+    public Transport removeTransport(Transport transport)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();   // TODO - Implement
+    }
+
+    @Override
+    public Collection<Protocol> getProtocols()
+    {
+        return _protocols;
+    }
+
+    @Override
+    public void addProtocol(Protocol protocol)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException(); // TODO - Implement
+    }
+
+    @Override
+    public Protocol removeProtocol(Protocol protocol)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();   // TODO - Implement
+    }
+
+    @Override
+    public Collection<VirtualHostAlias> getVirtualHostBindings()
+    {
+        List<VirtualHostAlias> aliases = new ArrayList<VirtualHostAlias>();
+        for(VirtualHost vh : _broker.getVirtualHosts())
+        {
+            for(VirtualHostAlias alias : vh.getAliases())
+            {
+                if(alias.getPort().equals(this))
+                {
+                    aliases.add(alias);
+                }
+            }
+        }
+        return Collections.unmodifiableCollection(aliases);
+    }
+
+    @Override
+    public Collection<Connection> getConnections()
+    {
+        return null;  // TODO - Implement
+    }
+
+    @Override
+    public String getName()
+    {
+        return getBindingAddress() + ":" + getPort();  // TODO - Implement
+    }
+
+    @Override
+    public String setName(String currentName, String desiredName) throws 
IllegalStateException, AccessControlException
+    {
+        throw new IllegalStateException();  // TODO - Implement
+    }
+
+    @Override
+    public State getActualState()
+    {
+        return State.ACTIVE;
+    }
+
+    @Override
+    public boolean isDurable()
+    {
+        return false;  // TODO - Implement
+    }
+
+    @Override
+    public void setDurable(boolean durable)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();
+    }
+
+    @Override
+    public LifetimePolicy getLifetimePolicy()
+    {
+        return LifetimePolicy.PERMANENT;
+    }
+
+    @Override
+    public LifetimePolicy setLifetimePolicy(LifetimePolicy expected, 
LifetimePolicy desired)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();   // TODO - Implement
+    }
+
+    @Override
+    public long getTimeToLive()
+    {
+        return 0;  // TODO - Implement
+    }
+
+    @Override
+    public long setTimeToLive(long expected, long desired)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();  // TODO - Implement
+    }
+
+    @Override
+    public Statistics getStatistics()
+    {
+        return NoStatistics.getInstance();
+    }
+
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        if(clazz == Connection.class)
+        {
+            return (Collection<C>) getConnections();
+        }
+        else
+        {
+            return Collections.emptySet();
+        }
+    }
+
+    @Override
+    public Object getAttribute(String name)
+    {
+        if(ID.equals(name))
+        {
+            return getId();
+        }
+        else if(NAME.equals(name))
+        {
+            return getName();
+        }
+        else if(STATE.equals(name))
+        {
+            return getActualState();
+        }
+        else if(DURABLE.equals(name))
+        {
+            return isDurable();
+        }
+        else if(LIFETIME_POLICY.equals(name))
+        {
+            return getLifetimePolicy();
+        }
+        else if(TIME_TO_LIVE.equals(name))
+        {
+            return getTimeToLive();
+        }
+        else if(CREATED.equals(name))
+        {
+
+        }
+        else if(UPDATED.equals(name))
+        {
+
+        }
+        else if(BINDING_ADDRESS.equals(name))
+        {
+            return getBindingAddress();
+        }
+        else if(PORT.equals(name))
+        {
+            return getPort();
+        }
+        else if(PROTOCOLS.equals(name))
+        {
+            return getProtocols();
+        }
+        else if(TRANSPORTS.equals(name))
+        {
+            return getTransports();
+        }
+
+        return super.getAttribute(name);    //TODO - Implement
+    }
+
+    @Override
+    public Collection<String> getAttributeNames()
+    {
+        return AVAILABLE_ATTRIBUTES;
+    }
+
+    @Override
+    public Object setAttribute(String name, Object expected, Object desired)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        return super.setAttribute(name, expected, desired);    //TODO - 
Implement
+    }
+}

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
 Sun Apr 22 21:10:27 2012
@@ -23,12 +23,14 @@ package org.apache.qpid.server.model.ada
 import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.qpid.AMQException;
 import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.LifetimePolicy;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.State;
@@ -387,6 +389,23 @@ final class QueueAdapter extends Abstrac
         return _statistics;
     }
 
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        if(clazz == Consumer.class)
+        {
+            return (Collection<C>) getConsumers();
+        }
+        else if(clazz == org.apache.qpid.server.model.Binding.class)
+        {
+            return (Collection<C>) getBindings();
+        }
+        else
+        {
+            return Collections.emptySet();
+        }
+    }
+
     void bindingRegistered(Binding binding, BindingAdapter adapter)
     {
         synchronized (_bindingAdapters)

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
 Sun Apr 22 21:10:27 2012
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.LifetimePolicy;
 import org.apache.qpid.server.model.Publisher;
 import org.apache.qpid.server.model.Session;
@@ -145,6 +146,23 @@ final class SessionAdapter extends Abstr
         return _statistics;
     }
 
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        if(clazz == Consumer.class)
+        {
+            return (Collection<C>) getSubscriptions();
+        }
+        else if(clazz == Publisher.class)
+        {
+            return (Collection<C>) getPublishers();
+        }
+        else
+        {
+            return Collections.emptySet();
+        }
+    }
+
     private class SessionStatistics implements Statistics
     {
 

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
 Sun Apr 22 21:10:27 2012
@@ -38,9 +38,11 @@ import org.apache.qpid.server.connection
 import org.apache.qpid.server.exchange.ExchangeRegistry;
 import org.apache.qpid.server.exchange.ExchangeType;
 import org.apache.qpid.server.message.ServerMessage;
+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.LifetimePolicy;
+import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.Statistics;
@@ -75,10 +77,16 @@ final class VirtualHostAdapter extends A
 
     private final StatisticsAdapter _statistics;
 
+    private final BrokerAdapter _broker;
 
-    public VirtualHostAdapter(final 
org.apache.qpid.server.virtualhost.VirtualHost virtualHost)
+    private final List<VirtualHostAlias> _aliases = new 
ArrayList<VirtualHostAlias>();
+
+
+    VirtualHostAdapter(BrokerAdapter brokerAdapter,
+                       final org.apache.qpid.server.virtualhost.VirtualHost 
virtualHost)
     {
         super(virtualHost.getName());
+        _broker = brokerAdapter;
         _virtualHost = virtualHost;
         _statistics = new StatisticsAdapter(virtualHost);
         virtualHost.getQueueRegistry().addRegistryChangeListener(this);
@@ -88,6 +96,12 @@ final class VirtualHostAdapter extends A
         virtualHost.getConnectionRegistry().addRegistryChangeListener(this);
         populateConnections();
 
+
+
+        for(Port port :_broker.getPorts())
+        {
+            _aliases.add(new VirtualHostAliasAdapter(this, port));
+        }
     }
 
 
@@ -150,7 +164,7 @@ final class VirtualHostAdapter extends A
 
     public Collection<VirtualHostAlias> getAliases()
     {
-        return null;  //TODO
+        return Collections.unmodifiableCollection(_aliases);
     }
 
     public Collection<Connection> getConnections()
@@ -314,6 +328,31 @@ final class VirtualHostAdapter extends A
         return _statistics;
     }
 
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        if(clazz == Exchange.class)
+        {
+            return (Collection<C>) getExchanges();
+        }
+        else if(clazz == Queue.class)
+        {
+            return (Collection<C>) getQueues();
+        }
+        else if(clazz == Connection.class)
+        {
+            return (Collection<C>) getConnections();
+        }
+        else if(clazz == VirtualHostAlias.class)
+        {
+            return (Collection<C>) getAliases();
+        }
+        else
+        {
+            return Collections.emptySet();
+        }
+    }
+
     public void exchangeRegistered(org.apache.qpid.server.exchange.Exchange 
exchange)
     {
         ExchangeAdapter adapter = null;

Added: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java?rev=1328976&view=auto
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
 (added)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
 Sun Apr 22 21:10:27 2012
@@ -0,0 +1,135 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.server.model.adapter;
+
+import org.apache.qpid.server.model.AuthenticationMethod;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.Statistics;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.VirtualHostAlias;
+
+import java.security.AccessControlException;
+import java.util.Collection;
+import java.util.Collections;
+
+public class VirtualHostAliasAdapter  extends AbstractAdapter implements 
VirtualHostAlias
+{
+    private VirtualHostAdapter _vhost;
+    private Port _port;
+
+    public VirtualHostAliasAdapter(VirtualHostAdapter virtualHostAdapter, Port 
port)
+    {
+        super(virtualHostAdapter.getName(), port.getName());
+        _vhost = virtualHostAdapter;
+        _port = port;
+    }
+
+    @Override
+    public Port getPort()
+    {
+        return _port;
+    }
+
+    @Override
+    public VirtualHost getVirtualHost()
+    {
+        return _vhost;
+    }
+
+    @Override
+    public Collection<AuthenticationMethod> getAuthenticationMethods()
+    {
+        return Collections.emptySet();  // TODO - Implement
+    }
+
+    @Override
+    public String getName()
+    {
+        return _vhost.getName();
+    }
+
+    @Override
+    public String setName(String currentName, String desiredName) throws 
IllegalStateException, AccessControlException
+    {
+        throw new IllegalStateException();  // TODO - Implement
+    }
+
+    @Override
+    public State getActualState()
+    {
+        return State.ACTIVE;  // TODO - Implement
+    }
+
+    @Override
+    public boolean isDurable()
+    {
+        return true;  // TODO - Implement
+    }
+
+    @Override
+    public void setDurable(boolean durable)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();
+    }
+
+    @Override
+    public LifetimePolicy getLifetimePolicy()
+    {
+        return LifetimePolicy.PERMANENT;  // TODO - Implement
+    }
+
+    @Override
+    public LifetimePolicy setLifetimePolicy(LifetimePolicy expected, 
LifetimePolicy desired)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();  // TODO - Implement
+    }
+
+    @Override
+    public long getTimeToLive()
+    {
+        return 0;  // TODO - Implement
+    }
+
+    @Override
+    public long setTimeToLive(long expected, long desired)
+            throws IllegalStateException, AccessControlException, 
IllegalArgumentException
+    {
+        throw new IllegalStateException();  // TODO - Implement
+    }
+
+    @Override
+    public Statistics getStatistics()
+    {
+        return NoStatistics.getInstance();
+    }
+
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        return Collections.emptySet();
+    }
+}

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/AbstractConfiguredObject.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/AbstractConfiguredObject.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/AbstractConfiguredObject.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/AbstractConfiguredObject.java
 Sun Apr 22 21:10:27 2012
@@ -52,6 +52,9 @@ abstract class AbstractConfiguredObject 
     private final Map<String,Object> _attributes = new HashMap<String, 
Object>();
     private final Map<Class<? extends ConfiguredObject>, ConfiguredObject> 
_parents =
             new HashMap<Class<? extends ConfiguredObject>, ConfiguredObject>();
+    private final Map<Class<? extends ConfiguredObject>, 
Collection<ConfiguredObject>> _children =
+            new HashMap<Class<? extends ConfiguredObject>, 
Collection<ConfiguredObject>>();
+
 
     private final Collection<ConfigurationChangeListener> _changeListeners =
             new ArrayList<ConfigurationChangeListener>();
@@ -265,6 +268,36 @@ abstract class AbstractConfiguredObject 
         }
     }
 
+    protected <T extends ConfiguredObject> void childAdded(Class<T> clazz, T 
child)
+    {
+        synchronized (getLock())
+        {
+            Collection<ConfiguredObject> children =  _children.get(clazz);
+            if(children == null)
+            {
+                children = new ArrayList<ConfiguredObject>();
+                _children.put(clazz, children);
+            }
+            children.add(child);
+        }
+        notifyChildAddedListener(child);
+    }
+
+
+    protected <T extends ConfiguredObject> void childRemoved(Class<T> clazz, T 
child)
+    {
+        synchronized (getLock())
+        {
+            Collection<ConfiguredObject> children =  _children.get(clazz);
+            if(children != null)
+            {
+
+                children.remove(child);
+            }
+        }
+        notifyChildRemovedListener(child);
+    }
+
     protected void notifyChildAddedListener(ConfiguredObject child)
     {
         for (ConfigurationChangeListener listener : _changeListeners)
@@ -284,5 +317,19 @@ abstract class AbstractConfiguredObject 
         }
     }
 
+    @Override
+    public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
+    {
+        synchronized (getLock())
+        {
+            Collection<C> children = new ArrayList<C>();
+            if(_children.containsKey(clazz))
+            {
+                children.addAll((Collection<? extends C>) 
_children.get(clazz));
+            }
+            return children;
+        }
+    }
+
     abstract protected Object getLock();
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java
 Sun Apr 22 21:10:27 2012
@@ -124,7 +124,7 @@ public class BrokerImpl extends Abstract
 
             // TODO - create a mapping for each port with "default" 
authentication provider and alias of the vhost name?
 
-            notifyChildAddedListener(vhost);
+            childAdded(VirtualHost.class, vhost);
             return vhost;
         }
     }
@@ -138,7 +138,7 @@ public class BrokerImpl extends Abstract
             {
                 throw new IllegalArgumentException("A virtual host with the 
name '" + virtualHost.getName() + "' does not exist");
             }
-            notifyChildRemovedListener(virtualHost);
+            childRemoved(VirtualHost.class, virtualHost);
         }
     }
 

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
 Sun Apr 22 21:10:27 2012
@@ -62,9 +62,11 @@ import org.apache.qpid.server.virtualhos
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
 
 import java.net.InetSocketAddress;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -120,6 +122,8 @@ public abstract class ApplicationRegistr
 
     private BundleContext _bundleContext;
 
+    private final List<PortBindingListener> _portBindingListeners = new 
ArrayList<PortBindingListener>();
+
     protected static Logger get_logger()
     {
         return _logger;
@@ -572,12 +576,14 @@ public abstract class ApplicationRegistr
 
     private void unbind()
     {
+        List<QpidAcceptor> removedAcceptors = new ArrayList<QpidAcceptor>();
         synchronized (_acceptors)
         {
             for (InetSocketAddress bindAddress : _acceptors.keySet())
             {
                 QpidAcceptor acceptor = _acceptors.get(bindAddress);
 
+                removedAcceptors.add(acceptor);
                 try
                 {
                     acceptor.getNetworkTransport().close();
@@ -590,6 +596,16 @@ public abstract class ApplicationRegistr
                
CurrentActor.get().message(BrokerMessages.SHUTTING_DOWN(acceptor.toString(), 
bindAddress.getPort()));
             }
         }
+        synchronized (_portBindingListeners)
+        {
+            for(QpidAcceptor acceptor : removedAcceptors)
+            {
+                for(PortBindingListener listener : _portBindingListeners)
+                {
+                    listener.unbound(acceptor);
+                }
+            }
+        }
     }
 
     public ServerConfiguration getConfiguration()
@@ -603,6 +619,13 @@ public abstract class ApplicationRegistr
         {
             _acceptors.put(bindAddress, acceptor);
         }
+        synchronized (_portBindingListeners)
+        {
+            for(PortBindingListener listener : _portBindingListeners)
+            {
+                listener.bound(acceptor, bindAddress);
+            }
+        }
     }
 
     public VirtualHostRegistry getVirtualHostRegistry()
@@ -768,4 +791,12 @@ public abstract class ApplicationRegistr
         return _broker;
     }
 
+    @Override
+    public void addPortBindingListener(PortBindingListener listener)
+    {
+        synchronized (_portBindingListeners)
+        {
+            _portBindingListeners.add(listener);
+        }
+    }
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
 Sun Apr 22 21:10:27 2012
@@ -105,4 +105,13 @@ public interface IApplicationRegistry ex
 
     Map<InetSocketAddress, QpidAcceptor> getAcceptors();
 
+    void addPortBindingListener(PortBindingListener listener);
+
+    public interface PortBindingListener
+    {
+        public void bound(QpidAcceptor acceptor, InetSocketAddress 
bindAddress);
+        public void unbound(QpidAcceptor acceptor);
+
+    }
+
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/QpidAcceptor.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/QpidAcceptor.java?rev=1328976&r1=1328975&r2=1328976&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/QpidAcceptor.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/QpidAcceptor.java
 Sun Apr 22 21:10:27 2012
@@ -20,25 +20,62 @@
  */
 package org.apache.qpid.server.transport;
 
+import org.apache.qpid.server.protocol.AmqpProtocolVersion;
 import org.apache.qpid.transport.network.NetworkTransport;
 
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
 public class QpidAcceptor
 {
-    private NetworkTransport _transport;
-    private String _protocol;
-    public QpidAcceptor(NetworkTransport transport, String protocol)
+    public enum Transport
     {
-        _transport = transport;
-        _protocol = protocol;
+        TCP("TCP"),
+        SSL("TCP/SSL");
+
+        private final String _asString;
+
+        Transport(String asString)
+        {
+            _asString = asString;
+        }
+
+        public String toString()
+        {
+            return _asString;
+        }
+    }
+
+    private NetworkTransport _networkTransport;
+    private Transport _transport;
+    private Set<AmqpProtocolVersion> _supported;
+
+
+    public QpidAcceptor(NetworkTransport transport, Transport protocol, 
Set<AmqpProtocolVersion> supported)
+    {
+        _networkTransport = transport;
+        _transport = protocol;
+        _supported = Collections.unmodifiableSet(new 
HashSet<AmqpProtocolVersion>(supported));
     }
 
     public NetworkTransport getNetworkTransport()
     {
+        return _networkTransport;
+    }
+
+    public Transport getTransport()
+    {
         return _transport;
     }
 
+    public Set<AmqpProtocolVersion> getSupported()
+    {
+        return _supported;
+    }
+
     public String toString()
     {
-        return _protocol;
+        return _transport.toString();
     }    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to