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]
