summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/broker-plugins')
-rw-r--r--qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java103
-rw-r--r--qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java16
-rw-r--r--qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java2
-rw-r--r--qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java52
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java3
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java6
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java78
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java8
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java4
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java8
11 files changed, 151 insertions, 131 deletions
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java
index 91e64e5334..0b31bdbc14 100644
--- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java
+++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java
@@ -33,13 +33,12 @@ import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.AccessControlProvider;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.IllegalStateTransitionException;
import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
import org.apache.qpid.server.security.AccessControl;
import org.apache.qpid.server.security.access.Operation;
-import org.apache.qpid.server.util.MapValueConverter;
public class ACLFileAccessControlProviderImpl
extends AbstractConfiguredObject<ACLFileAccessControlProviderImpl>
@@ -50,7 +49,7 @@ public class ACLFileAccessControlProviderImpl
protected DefaultAccessControl _accessControl;
protected final Broker _broker;
- private AtomicReference<State> _state;
+ private AtomicReference<State> _state = new AtomicReference<>(State.UNINITIALIZED);
@ManagedAttributeField
private String _path;
@@ -63,9 +62,6 @@ public class ACLFileAccessControlProviderImpl
_broker = broker;
- State state = MapValueConverter.getEnumAttribute(State.class, STATE, attributes, State.INITIALISING);
- _state = new AtomicReference<State>(state);
-
}
@Override
@@ -108,81 +104,68 @@ public class ACLFileAccessControlProviderImpl
}
@Override
- public Object getAttribute(String name)
- {
- if(STATE.equals(name))
- {
- return getState();
- }
- return super.getAttribute(name);
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptySet();
}
- @Override
- public boolean setState(State desiredState)
- throws IllegalStateTransitionException, AccessControlException
- {
- State state = _state.get();
- if(desiredState == State.DELETED)
- {
- deleted();
- return _state.compareAndSet(state, State.DELETED);
- }
- else if (desiredState == State.QUIESCED)
+ @StateTransition(currentState = {State.UNINITIALIZED, State.QUIESCED, State.ERRORED}, desiredState = State.ACTIVE)
+ private void activate()
+ {
+ if(_broker.isManagementMode())
{
- return _state.compareAndSet(state, State.QUIESCED);
+
+ _state.set(_accessControl.validate() ? State.QUIESCED : State.ERRORED);
}
- else if(desiredState == State.ACTIVE)
+ else
{
- if ((state == State.INITIALISING || state == State.QUIESCED) && _state.compareAndSet(state, State.ACTIVE))
+ try
+ {
+ _accessControl.open();
+ _state.set(State.ACTIVE);
+ }
+ catch (RuntimeException e)
{
- try
+ _state.set(State.ERRORED);
+ if (_broker.isManagementMode())
{
- _accessControl.open();
- return true;
+ LOGGER.warn("Failed to activate ACL provider: " + getName(), e);
}
- catch(RuntimeException e)
+ else
{
- _state.compareAndSet(State.ACTIVE, State.ERRORED);
- if (_broker.isManagementMode())
- {
- LOGGER.warn("Failed to activate ACL provider: " + getName(), e);
- }
- else
- {
- throw e;
- }
+ throw e;
}
}
- else
- {
- throw new IllegalStateException("Can't activate access control provider in " + state + " state");
- }
- }
- else if(desiredState == State.STOPPED)
- {
- if(_state.compareAndSet(state, State.STOPPED))
- {
- _accessControl.close();
- return true;
- }
-
- return false;
}
- return false;
}
+ @StateTransition(currentState = {State.ACTIVE, State.QUIESCED}, desiredState = State.STOPPED)
+ private void doStop()
+ {
+ close();
+ _state.set(State.STOPPED);
+ }
@Override
- protected void changeAttributes(Map<String, Object> attributes)
+ protected void onClose()
+ {
+ super.onClose();
+ _accessControl.close();
+ }
+
+ @StateTransition(currentState = State.UNINITIALIZED, desiredState = State.QUIESCED)
+ private void startQuiesced()
+ {
+ _state.set(State.QUIESCED);
+ }
+
+ @StateTransition(currentState = {State.ACTIVE, State.QUIESCED, State.STOPPED, State.ERRORED}, desiredState = State.DELETED)
+ private void doDelete()
{
- throw new UnsupportedOperationException("Changing attributes on AccessControlProvider is not supported");
+ close();
+ _state.set(State.DELETED);
+ deleted();
}
@Override
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java
index 5f5e12d435..c42dc88d53 100644
--- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java
+++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java
@@ -20,9 +20,9 @@
*/
package org.apache.qpid.server.security.access.plugins;
+import java.io.File;
import java.net.InetAddress;
import java.net.InetSocketAddress;
-import java.io.File;
import java.net.SocketAddress;
import java.security.AccessController;
import java.util.Set;
@@ -31,12 +31,12 @@ import javax.security.auth.Subject;
import org.apache.commons.lang.ObjectUtils;
import org.apache.log4j.Logger;
+
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.connection.ConnectionPrincipal;
-import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.logging.EventLoggerProvider;
-import org.apache.qpid.server.security.Result;
import org.apache.qpid.server.security.AccessControl;
+import org.apache.qpid.server.security.Result;
import org.apache.qpid.server.security.access.ObjectProperties;
import org.apache.qpid.server.security.access.ObjectType;
import org.apache.qpid.server.security.access.Operation;
@@ -73,7 +73,7 @@ public class DefaultAccessControl implements AccessControl
{
if(_aclFile != null)
{
- if (!_aclFile.exists())
+ if (!validate())
{
throw new IllegalConfigurationException("ACL file '" + _aclFile + "' is not found");
}
@@ -84,6 +84,12 @@ public class DefaultAccessControl implements AccessControl
}
@Override
+ public boolean validate()
+ {
+ return _aclFile.exists();
+ }
+
+ @Override
public void close()
{
//no-op
@@ -101,7 +107,7 @@ public class DefaultAccessControl implements AccessControl
if(_aclFile != null)
{
//verify it exists
- if (!_aclFile.exists())
+ if (!validate())
{
throw new IllegalConfigurationException("ACL file '" + _aclFile + "' is not found");
}
diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java
index 01da01eb97..49697cf5b7 100644
--- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java
+++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java
@@ -30,6 +30,7 @@ import java.util.UUID;
import java.util.regex.Pattern;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.model.AccessControlProvider;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
@@ -53,6 +54,7 @@ public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase
when(_broker.getObjectFactory()).thenReturn(_objectFactory);
when(_broker.getModel()).thenReturn(_objectFactory.getModel());
when(_broker.getCategoryClass()).thenReturn(Broker.class);
+ when(_broker.getTaskExecutor()).thenReturn(mock(TaskExecutor.class));
}
public void testCreateInstanceWhenAclFileIsNotPresent()
diff --git a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
index ab58b80ac4..b65181966c 100644
--- a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
+++ b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
@@ -496,7 +496,7 @@ class ManagementNode implements MessageSource, MessageDestination
responseHeader.setHeader(TYPE_ATTRIBUTE, type);
try
{
- entity.setDesiredState(State.DELETED);
+ entity.delete();
responseHeader.setHeader(STATUS_CODE_HEADER, STATUS_CODE_NO_CONTENT);
}
catch(AccessControlException e)
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
index c1b2fc4bd6..881d359e9b 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
@@ -67,11 +67,12 @@ import org.apache.qpid.server.management.plugin.servlet.rest.UserPreferencesServ
import org.apache.qpid.server.model.*;
import org.apache.qpid.server.model.adapter.AbstractPluginAdapter;
import org.apache.qpid.server.model.port.HttpPort;
+import org.apache.qpid.server.model.port.PortManager;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager;
@ManagedObject( category = false, type = "MANAGEMENT-HTTP" )
-public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implements HttpManagementConfiguration<HttpManagement>
+public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implements HttpManagementConfiguration<HttpManagement>, PortManager
{
private final Logger _logger = Logger.getLogger(HttpManagement.class);
@@ -106,29 +107,16 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
@ManagedAttributeField
private int _sessionTimeout;
+ private boolean _allowPortActivation;
+
@ManagedObjectFactoryConstructor
public HttpManagement(Map<String, Object> attributes, Broker broker)
{
super(attributes, broker);
}
- @Override
- protected boolean setState(State desiredState)
- {
- if(desiredState == State.ACTIVE)
- {
- start();
- return true;
- }
- else if(desiredState == State.STOPPED)
- {
- stop();
- return true;
- }
- return false;
- }
-
- private void start()
+ @StateTransition(currentState = State.UNINITIALIZED, desiredState = State.ACTIVE)
+ private void doStart()
{
getBroker().getEventLogger().message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
@@ -145,9 +133,18 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
}
getBroker().getEventLogger().message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
+ setCurrentState(State.ACTIVE);
}
- private void stop()
+ @StateTransition(currentState = State.ACTIVE, desiredState = State.STOPPED)
+ private void doStop()
+ {
+ close();
+ setCurrentState(State.STOPPED);
+ }
+
+ @Override
+ protected void onClose()
{
if (_server != null)
{
@@ -176,7 +173,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
{
_logger.info("Starting up web server on " + ports);
}
-
+ _allowPortActivation = true;
Server server = new Server();
int lastPort = -1;
for (Port<?> port : ports)
@@ -184,11 +181,16 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
if(port instanceof HttpPort)
{
- if (State.QUIESCED.equals(port.getState()))
+ if (!State.ACTIVE.equals(port.getDesiredState()))
{
continue;
}
+ ((HttpPort<?>)port).setPortManager(this);
+ if(port.getState() != State.ACTIVE)
+ {
+ port.start();
+ }
Connector connector = null;
Collection<Transport> transports = port.getTransports();
@@ -223,6 +225,8 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
}
+ _allowPortActivation = false;
+
ServletContextHandler root = new ServletContextHandler(ServletContextHandler.SESSIONS);
root.setContextPath("/");
server.setHandler(root);
@@ -435,6 +439,12 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
}
@Override
+ public boolean isActivationAllowed(final Port<?> port)
+ {
+ return _allowPortActivation;
+ }
+
+ @Override
public boolean isHttpsSaslAuthenticationEnabled()
{
return _httpsSaslAuthenticationEnabled;
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
index 4bd28accb0..b261927ee7 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
@@ -43,7 +43,6 @@ import org.codehaus.jackson.map.SerializationConfig;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.State;
public class RestServlet extends AbstractServlet
{
@@ -541,7 +540,7 @@ public class RestServlet extends AbstractServlet
Collection<ConfiguredObject<?>> allObjects = getObjects(request);
for(ConfiguredObject o : allObjects)
{
- o.setDesiredState(State.DELETED);
+ o.delete();
}
response.setStatus(HttpServletResponse.SC_OK);
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
index b747ee5435..52d7ba33a3 100644
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
+++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
@@ -29,12 +29,15 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ConfiguredObjectFactory;
import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl;
+import org.apache.qpid.server.model.State;
import org.apache.qpid.test.utils.QpidTestCase;
public class HttpManagementTest extends QpidTestCase
@@ -54,6 +57,8 @@ public class HttpManagementTest extends QpidTestCase
when(_broker.getObjectFactory()).thenReturn(objectFactory);
when(_broker.getModel()).thenReturn(objectFactory.getModel());
when(_broker.getCategoryClass()).thenReturn(Broker.class);
+ when(_broker.getEventLogger()).thenReturn(mock(EventLogger.class));
+ when(_broker.getTaskExecutor()).thenReturn(mock(TaskExecutor.class));
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(HttpManagement.HTTP_BASIC_AUTHENTICATION_ENABLED, false);
@@ -63,6 +68,7 @@ public class HttpManagementTest extends QpidTestCase
attributes.put(HttpManagement.NAME, getTestName());
attributes.put(HttpManagement.TIME_OUT, 10000l);
attributes.put(ConfiguredObject.ID, _id);
+ attributes.put(HttpManagement.DESIRED_STATE, State.QUIESCED);
_management = new HttpManagement(attributes, _broker);
_management.open();
}
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java
index 850c14cf20..d3b5b786e9 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java
@@ -31,6 +31,7 @@ import java.util.Set;
import javax.management.JMException;
import org.apache.log4j.Logger;
+
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.jmx.mbeans.LoggingManagementMBean;
import org.apache.qpid.server.jmx.mbeans.ServerInformationMBean;
@@ -48,15 +49,19 @@ import org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProv
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.StateTransition;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.model.adapter.AbstractPluginAdapter;
+import org.apache.qpid.server.model.port.JmxPort;
+import org.apache.qpid.server.model.port.PortManager;
+import org.apache.qpid.server.model.port.RmiPort;
import org.apache.qpid.server.plugin.QpidServiceLoader;
-import org.apache.qpid.server.util.ServerScopedRuntimeException;
public class JMXManagementPluginImpl
extends AbstractPluginAdapter<JMXManagementPluginImpl> implements ConfigurationChangeListener,
- JMXManagementPlugin<JMXManagementPluginImpl>
+ JMXManagementPlugin<JMXManagementPluginImpl>,
+ PortManager
{
private static final Logger LOGGER = Logger.getLogger(JMXManagementPluginImpl.class);
@@ -81,55 +86,48 @@ public class JMXManagementPluginImpl
@ManagedAttributeField
private boolean _usePlatformMBeanServer;
+ private boolean _allowPortActivation;
+
@ManagedObjectFactoryConstructor
public JMXManagementPluginImpl(Map<String, Object> attributes, Broker broker)
{
super(attributes, broker);
}
- @Override
- protected boolean setState(State desiredState)
- {
- if(desiredState == State.ACTIVE)
- {
- try
- {
- start();
- }
- catch (Exception e)
- {
- throw new ServerScopedRuntimeException("Couldn't start JMX management", e);
- }
- return true;
- }
- else if(desiredState == State.STOPPED)
- {
- stop();
- return true;
- }
- return false;
- }
-
- private void start() throws JMException, IOException
+ @StateTransition(currentState = State.UNINITIALIZED, desiredState = State.ACTIVE)
+ private void doStart() throws JMException, IOException
{
+ _allowPortActivation = true;
Broker<?> broker = getBroker();
- Port connectorPort = null;
- Port registryPort = null;
+ JmxPort<?> connectorPort = null;
+ RmiPort registryPort = null;
Collection<Port<?>> ports = broker.getPorts();
for (Port port : ports)
{
- if (State.QUIESCED.equals(port.getState()))
+ if (port.getDesiredState() != State.ACTIVE)
{
continue;
}
if(isRegistryPort(port))
{
- registryPort = port;
+ registryPort = (RmiPort) port;
+ registryPort.setPortManager(this);
+ if(port.getState() != State.ACTIVE)
+ {
+ port.start();
+ }
+
}
else if(isConnectorPort(port))
{
- connectorPort = port;
+ connectorPort = (JmxPort<?>) port;
+ connectorPort.setPortManager(this);
+ if(port.getState() != State.ACTIVE)
+ {
+ port.start();
+ }
+
}
}
if(connectorPort == null)
@@ -184,6 +182,14 @@ public class JMXManagementPluginImpl
new LoggingManagementMBean(LoggingManagementFacade.getCurrentInstance(), _objectRegistry);
}
_objectRegistry.start();
+ setCurrentState(State.ACTIVE);
+ _allowPortActivation = false;
+ }
+
+ @Override
+ public boolean isActivationAllowed(final Port<?> port)
+ {
+ return _allowPortActivation;
}
@Override
@@ -203,7 +209,15 @@ public class JMXManagementPluginImpl
return port.getAvailableProtocols().contains(Protocol.RMI);
}
- private void stop()
+ @StateTransition( currentState = State.ACTIVE, desiredState = State.STOPPED )
+ private void doStop()
+ {
+ close();
+ setCurrentState(State.STOPPED);
+ }
+
+ @Override
+ protected void onClose()
{
synchronized (_childrenLock)
{
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java
index 26608d4309..ce4236661d 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java
@@ -20,12 +20,10 @@
*/
package org.apache.qpid.server.jmx;
-import org.apache.qpid.common.Closeable;
+import java.io.IOException;
import javax.management.JMException;
-import java.io.IOException;
-
/**
* Handles the registration (and unregistration and so on) of managed objects.
*
@@ -38,11 +36,13 @@ import java.io.IOException;
* be the obvious choice for managed objects.
*
*/
-public interface ManagedObjectRegistry extends Closeable
+public interface ManagedObjectRegistry
{
void start() throws IOException;
void registerObject(ManagedObject managedObject) throws JMException;
void unregisterObject(ManagedObject managedObject) throws JMException;
+
+ void close();
}
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
index 69b7dff117..bb2769d447 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
@@ -215,7 +215,7 @@ public class VirtualHostManagerMBean extends AbstractStatisticsGatheringMBean<Vi
try
{
- exchange.delete();
+ exchange.deleteWithChecks();
}
catch(RequiredExchangeException e)
{
@@ -291,7 +291,7 @@ public class VirtualHostManagerMBean extends AbstractStatisticsGatheringMBean<Vi
{
throw new OperationsException("No such queue \""+ queueName +"\"");
}
- queue.delete();
+ queue.deleteAndReturnCount();
}
@Override
diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
index 8f2418ddf3..bbb64e1879 100644
--- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
+++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
@@ -125,7 +125,7 @@ public class VirtualHostManagerMBeanTest extends TestCase
when(_mockVirtualHost.getChildByName(eq(Queue.class), eq(QUEUE_1_NAME))).thenReturn(mockQueue);
_virtualHostManagerMBean.deleteQueue(QUEUE_1_NAME);
- verify(mockQueue).delete();
+ verify(mockQueue).deleteAndReturnCount();
}
public void testDeleteQueueWhenQueueDoesNotExist() throws Exception
@@ -145,7 +145,7 @@ public class VirtualHostManagerMBeanTest extends TestCase
// PASS
assertEquals("No such queue \"unknownqueue\"", oe.getMessage());
}
- verify(mockQueue, never()).delete();
+ verify(mockQueue, never()).deleteAndReturnCount();
}
public void testCreateNewDurableExchange() throws Exception
@@ -182,7 +182,7 @@ public class VirtualHostManagerMBeanTest extends TestCase
_virtualHostManagerMBean.unregisterExchange(EXCHANGE_1_NAME);
- verify(mockExchange).delete();
+ verify(mockExchange).deleteWithChecks();
}
public void testUnregisterExchangeWhenExchangeDoesNotExist() throws Exception
@@ -203,7 +203,7 @@ public class VirtualHostManagerMBeanTest extends TestCase
assertEquals("No such exchange \"unknownexchange\"", oe.getMessage());
}
- verify(mockExchange, never()).delete();
+ verify(mockExchange, never()).deleteWithChecks();
}
private static Map<String,Object> matchesMap(final String name,