You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/05/08 15:14:11 UTC
svn commit: r1593264 [4/4] - in /qpid/trunk/qpid:
java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/
java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/
java/broker-core/src/main/java/org/apache/qpid/server/...
Modified: qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java Thu May 8 13:14:05 2014
@@ -33,13 +33,12 @@ import org.apache.qpid.server.model.Abst
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 ACLFileAccessControlProvide
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 ACLFileAccessControlProvide
_broker = broker;
- State state = MapValueConverter.getEnumAttribute(State.class, STATE, attributes, State.INITIALISING);
- _state = new AtomicReference<State>(state);
-
}
@Override
@@ -108,81 +104,68 @@ public class ACLFileAccessControlProvide
}
@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
Modified: qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/DefaultAccessControl.java Thu May 8 13:14:05 2014
@@ -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 implem
{
if(_aclFile != null)
{
- if (!_aclFile.exists())
+ if (!validate())
{
throw new IllegalConfigurationException("ACL file '" + _aclFile + "' is not found");
}
@@ -84,6 +84,12 @@ public class DefaultAccessControl implem
}
@Override
+ public boolean validate()
+ {
+ return _aclFile.exists();
+ }
+
+ @Override
public void close()
{
//no-op
@@ -101,7 +107,7 @@ public class DefaultAccessControl implem
if(_aclFile != null)
{
//verify it exists
- if (!_aclFile.exists())
+ if (!validate())
{
throw new IllegalConfigurationException("ACL file '" + _aclFile + "' is not found");
}
Modified: qpid/trunk/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java Thu May 8 13:14:05 2014
@@ -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 ACLFileAccessControlProvide
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()
Modified: qpid/trunk/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java Thu May 8 13:14:05 2014
@@ -496,7 +496,7 @@ class ManagementNode implements MessageS
responseHeader.setHeader(TYPE_ATTRIBUTE, type);
try
{
- entity.setDesiredState(State.DELETED);
+ entity.delete();
responseHeader.setHeader(STATUS_CODE_HEADER, STATUS_CODE_NO_CONTENT);
}
catch(AccessControlException e)
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java Thu May 8 13:14:05 2014
@@ -67,11 +67,12 @@ import org.apache.qpid.server.management
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 Abst
@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 Abst
}
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 Abst
{
_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 Abst
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 Abst
}
+ _allowPortActivation = false;
+
ServletContextHandler root = new ServletContextHandler(ServletContextHandler.SESSIONS);
root.setContextPath("/");
server.setHandler(root);
@@ -435,6 +439,12 @@ public class HttpManagement extends Abst
}
@Override
+ public boolean isActivationAllowed(final Port<?> port)
+ {
+ return _allowPortActivation;
+ }
+
+ @Override
public boolean isHttpsSaslAuthenticationEnabled()
{
return _httpsSaslAuthenticationEnabled;
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java Thu May 8 13:14:05 2014
@@ -43,7 +43,6 @@ import org.codehaus.jackson.map.Serializ
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 Abstrac
Collection<ConfiguredObject<?>> allObjects = getObjects(request);
for(ConfiguredObject o : allObjects)
{
- o.setDesiredState(State.DELETED);
+ o.delete();
}
response.setStatus(HttpServletResponse.SC_OK);
Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java Thu May 8 13:14:05 2014
@@ -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
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
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();
}
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java Thu May 8 13:14:05 2014
@@ -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.Pass
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)
{
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ManagedObjectRegistry.java Thu May 8 13:14:05 2014
@@ -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();
}
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java Thu May 8 13:14:05 2014
@@ -215,7 +215,7 @@ public class VirtualHostManagerMBean ext
try
{
- exchange.delete();
+ exchange.deleteWithChecks();
}
catch(RequiredExchangeException e)
{
@@ -291,7 +291,7 @@ public class VirtualHostManagerMBean ext
{
throw new OperationsException("No such queue \""+ queueName +"\"");
}
- queue.delete();
+ queue.deleteAndReturnCount();
}
@Override
Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java Thu May 8 13:14:05 2014
@@ -125,7 +125,7 @@ public class VirtualHostManagerMBeanTest
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
// 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
_virtualHostManagerMBean.unregisterExchange(EXCHANGE_1_NAME);
- verify(mockExchange).delete();
+ verify(mockExchange).deleteWithChecks();
}
public void testUnregisterExchangeWhenExchangeDoesNotExist() throws Exception
@@ -203,7 +203,7 @@ public class VirtualHostManagerMBeanTest
assertEquals("No such exchange \"unknownexchange\"", oe.getMessage());
}
- verify(mockExchange, never()).delete();
+ verify(mockExchange, never()).deleteWithChecks();
}
private static Map<String,Object> matchesMap(final String name,
Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkConnection.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkConnection.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkConnection.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkConnection.java Thu May 8 13:14:05 2014
@@ -28,12 +28,13 @@ import java.security.Principal;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSocket;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.apache.qpid.transport.Receiver;
import org.apache.qpid.transport.Sender;
-import org.apache.qpid.transport.network.Ticker;
import org.apache.qpid.transport.network.NetworkConnection;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.qpid.transport.network.Ticker;
public class IoNetworkConnection implements NetworkConnection
{
@@ -59,7 +60,7 @@ public class IoNetworkConnection impleme
_ioSender = new IoSender(_socket, 2 * sendBufferSize, _timeout);
- _ioSender.registerCloseListener(_ioReceiver);
+ _ioSender.setReceiver(_ioReceiver);
}
Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java Thu May 8 13:14:05 2014
@@ -20,15 +20,6 @@
*/
package org.apache.qpid.transport.network.io;
-import org.apache.qpid.common.Closeable;
-import org.apache.qpid.thread.Threading;
-import org.apache.qpid.transport.Receiver;
-import org.apache.qpid.transport.TransportException;
-import org.apache.qpid.transport.network.Ticker;
-import org.apache.qpid.transport.util.Logger;
-import org.apache.qpid.util.SystemUtils;
-
-import javax.net.ssl.SSLSocket;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
@@ -37,12 +28,21 @@ import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
import java.util.concurrent.atomic.AtomicBoolean;
+import javax.net.ssl.SSLSocket;
+
+import org.apache.qpid.thread.Threading;
+import org.apache.qpid.transport.Receiver;
+import org.apache.qpid.transport.TransportException;
+import org.apache.qpid.transport.network.Ticker;
+import org.apache.qpid.transport.util.Logger;
+import org.apache.qpid.util.SystemUtils;
+
/**
* IoReceiver
*
*/
-final class IoReceiver implements Runnable, Closeable
+final class IoReceiver implements Runnable
{
private static final Logger log = Logger.get(IoReceiver.class);
Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java Thu May 8 13:14:05 2014
@@ -18,24 +18,21 @@
*/
package org.apache.qpid.transport.network.io;
-import org.apache.qpid.common.Closeable;
-import org.apache.qpid.thread.Threading;
-import org.apache.qpid.transport.Sender;
-import org.apache.qpid.transport.SenderClosedException;
-import org.apache.qpid.transport.SenderException;
-import org.apache.qpid.transport.TransportException;
-import org.apache.qpid.transport.util.Logger;
-
import static org.apache.qpid.transport.util.Functions.mod;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.qpid.thread.Threading;
+import org.apache.qpid.transport.Sender;
+import org.apache.qpid.transport.SenderClosedException;
+import org.apache.qpid.transport.SenderException;
+import org.apache.qpid.transport.TransportException;
+import org.apache.qpid.transport.util.Logger;
+
public final class IoSender implements Runnable, Sender<ByteBuffer>
{
@@ -59,7 +56,7 @@ public final class IoSender implements R
private final Object notEmpty = new Object();
private final AtomicBoolean closed = new AtomicBoolean(false);
private final Thread senderThread;
- private final List<Closeable> _listeners = new ArrayList<Closeable>();
+ private IoReceiver _receiver;
private final String _remoteSocketAddress;
private volatile Throwable exception = null;
@@ -222,7 +219,7 @@ public final class IoSender implements R
}
finally
{
- closeListeners();
+ closeReceiver();
}
if (reportException && exception != null)
{
@@ -231,26 +228,20 @@ public final class IoSender implements R
}
}
- private void closeListeners()
+ private void closeReceiver()
{
- Exception ex = null;
- for(Closeable listener : _listeners)
+ if(_receiver != null)
{
try
{
- listener.close();
+ _receiver.close();
}
- catch(Exception e)
+ catch(RuntimeException e)
{
- log.error(e, "Exception closing listener for socket %s", _remoteSocketAddress);
- ex = e;
+ log.error(e, "Exception closing receiver for socket %s", _remoteSocketAddress);
+ throw new SenderException(e.getMessage(), e);
}
}
-
- if (ex != null)
- {
- throw new SenderException(ex.getMessage(), ex);
- }
}
public void run()
@@ -337,9 +328,9 @@ public final class IoSender implements R
}
}
- public void registerCloseListener(Closeable listener)
+ public void setReceiver(IoReceiver receiver)
{
- _listeners.add(listener);
+ _receiver = receiver;
}
private void awaitSenderThreadShutdown()
Modified: qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoTransport.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoTransport.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoTransport.java (original)
+++ qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoTransport.java Thu May 8 13:14:05 2014
@@ -19,13 +19,13 @@
package org.apache.qpid.transport.network.io;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+
import org.apache.qpid.transport.Binding;
import org.apache.qpid.transport.Sender;
import org.apache.qpid.transport.util.Logger;
-import java.net.Socket;
-import java.nio.ByteBuffer;
-
/**
* This class provides a socket based transport using the java.io
* classes.
@@ -70,7 +70,7 @@ public final class IoTransport<E>
2*readBufferSize, timeout);
this.receiver.initiate();
- ios.registerCloseListener(this.receiver);
+ ios.setReceiver(this.receiver);
}
public Sender<ByteBuffer> getSender()
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/AsynchMessageListenerTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/AsynchMessageListenerTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/AsynchMessageListenerTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/client/AsynchMessageListenerTest.java Thu May 8 13:14:05 2014
@@ -46,7 +46,7 @@ public class AsynchMessageListenerTest e
private static final int MSG_COUNT = 10;
private static final long AWAIT_MESSAGE_TIMEOUT = 2000;
private static final long AWAIT_MESSAGE_TIMEOUT_NEGATIVE = 250;
- private final String _testQueueName = getTestQueueName();
+ private String _testQueueName;
private Connection _consumerConnection;
private Session _consumerSession;
private MessageConsumer _consumer;
@@ -55,7 +55,7 @@ public class AsynchMessageListenerTest e
protected void setUp() throws Exception
{
super.setUp();
-
+ _testQueueName = getTestQueueName();
_consumerConnection = getConnection();
_consumerConnection.start();
_consumerSession = _consumerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java Thu May 8 13:14:05 2014
@@ -138,7 +138,7 @@ public class VirtualHostMessageStoreTest
nodeAttributes.put(VirtualHostNode.NAME, hostName);
nodeAttributes.put(VirtualHostNode.ID, UUID.randomUUID());
_node = factory.create(VirtualHostNode.class, nodeAttributes, broker);
- _node.setDesiredState(State.ACTIVE);
+ _node.start();
_virtualHost = (VirtualHostImpl<?,?,?>)_node.getVirtualHost();
@@ -152,7 +152,7 @@ public class VirtualHostMessageStoreTest
if (_virtualHost != null)
{
VirtualHostNode<?> node = _virtualHost.getParent(VirtualHostNode.class);
- node.setDesiredState(State.STOPPED);
+ node.close();
}
}
finally
@@ -165,10 +165,12 @@ public class VirtualHostMessageStoreTest
protected void reloadVirtualHost()
{
assertEquals("Virtual host node is not active", State.ACTIVE, _virtualHost.getState());
- State currentState = _node.setDesiredState(State.STOPPED);
+ _node.stop();
+ State currentState = _node.getState();
assertEquals("Virtual host node is not stopped", State.STOPPED, currentState);
- currentState = _node.setDesiredState(State.ACTIVE);
+ _node.start();
+ currentState = _node.getState();
assertEquals("Virtual host node is not active", State.ACTIVE, currentState);
_virtualHost = (VirtualHostImpl<?, ?, ?>) _node.getVirtualHost();
}
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java Thu May 8 13:14:05 2014
@@ -70,7 +70,7 @@ public class ExchangeRestTest extends Qp
}
}
- public void testSetExchangeAttributesUnsupported() throws Exception
+ public void testSetExchangeSupported() throws Exception
{
String exchangeName = getTestName();
String exchangeUrl = "exchange/test/test/" + exchangeName;
@@ -89,7 +89,10 @@ public class ExchangeRestTest extends Qp
attributes.put(Exchange.ALTERNATE_EXCHANGE, "amq.direct");
responseCode = getRestTestHelper().submitRequest(exchangeUrl, "PUT", attributes);
- assertEquals("Exchange update should be unsupported", 409, responseCode);
+ assertEquals("Exchange update should be supported", 200, responseCode);
+ exchange = getRestTestHelper().getJsonAsSingletonList(exchangeUrl);
+ assertNotNull("Exchange not found", exchange);
+ assertEquals("amq.direct",exchange.get(Exchange.ALTERNATE_EXCHANGE));
}
private void assertExchange(String exchangeName, Map<String, Object> exchange)
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java Thu May 8 13:14:05 2014
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.systest.rest;
+import java.net.ServerSocket;
import java.net.URLDecoder;
import java.util.Arrays;
import java.util.Collection;
@@ -31,15 +32,18 @@ import java.util.Map;
import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.Plugin;
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.Transport;
+import org.apache.qpid.server.model.port.JmxPort;
import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
public class PortRestTest extends QpidRestTestCase
{
+
public void testGet() throws Exception
{
List<Map<String, Object>> ports = getRestTestHelper().getJsonAsList("port/");
@@ -99,38 +103,65 @@ public class PortRestTest extends QpidRe
public void testPutRmiPortWithMinimumAttributes() throws Exception
{
- String portName = "test-port";
+ String portNameRMI = "test-port-rmi";
Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(Port.NAME, portName);
- attributes.put(Port.PORT, findFreePort());
+ attributes.put(Port.NAME, portNameRMI);
+ int rmiPort = findFreePort();
+ attributes.put(Port.PORT, rmiPort);
attributes.put(Port.PROTOCOLS, Collections.singleton(Protocol.RMI));
- int responseCode = getRestTestHelper().submitRequest("port/" + portName, "PUT", attributes);
+ int responseCode = getRestTestHelper().submitRequest("port/" + portNameRMI, "PUT", attributes);
assertEquals("Unexpected response code", 201, responseCode);
- List<Map<String, Object>> portDetails = getRestTestHelper().getJsonAsList("port/" + portName);
+
+ List<Map<String, Object>> portDetails = getRestTestHelper().getJsonAsList("port/" + portNameRMI);
assertNotNull("Port details cannot be null", portDetails);
- assertEquals("Unexpected number of ports with name " + portName, 1, portDetails.size());
+ assertEquals("Unexpected number of ports with name " + portNameRMI, 1, portDetails.size());
Map<String, Object> port = portDetails.get(0);
Asserts.assertPortAttributes(port, State.QUIESCED);
+ String portNameJMX = "test-port-jmx";
+ attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, portNameJMX);
+ attributes.put(Port.PORT, getNextAvailable(rmiPort + 1));
+ attributes.put(Port.PROTOCOLS, Collections.singleton(Protocol.JMX_RMI));
+ attributes.put(JmxPort.AUTHENTICATION_PROVIDER, TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER);
+
+ responseCode = getRestTestHelper().submitRequest("port/" + portNameJMX, "PUT", attributes);
+ assertEquals("Unexpected response code", 201, responseCode);
+
+
+ portDetails = getRestTestHelper().getJsonAsList("port/" + portNameJMX);
+ assertNotNull("Port details cannot be null", portDetails);
+ assertEquals("Unexpected number of ports with name " + portNameRMI, 1, portDetails.size());
+ port = portDetails.get(0);
+ Asserts.assertPortAttributes(port, State.QUIESCED);
+
+
+ attributes.put(Plugin.TYPE, "MANAGEMENT-JMX");
+ attributes.put(Plugin.NAME, "JmxPlugin");
+ responseCode = getRestTestHelper().submitRequest("plugin/JmxPlugin", "PUT", attributes);
+ assertEquals("Unexpected response code", 201, responseCode);
+
+
+
// make sure that port is there after broker restart
restartBroker();
- portDetails = getRestTestHelper().getJsonAsList("port/" + portName);
+ portDetails = getRestTestHelper().getJsonAsList("port/" + portNameRMI);
assertNotNull("Port details cannot be null", portDetails);
- assertEquals("Unexpected number of ports with name " + portName, 1, portDetails.size());
+ assertEquals("Unexpected number of ports with name " + portNameRMI, 1, portDetails.size());
port = portDetails.get(0);
Asserts.assertPortAttributes(port, State.ACTIVE);
// try to add a second RMI port
- portName = portName + "2";
+ portNameRMI = portNameRMI + "2";
attributes = new HashMap<String, Object>();
- attributes.put(Port.NAME, portName);
+ attributes.put(Port.NAME, portNameRMI);
attributes.put(Port.PORT, findFreePort());
attributes.put(Port.PROTOCOLS, Collections.singleton(Protocol.RMI));
- responseCode = getRestTestHelper().submitRequest("port/" + portName, "PUT", attributes);
+ responseCode = getRestTestHelper().submitRequest("port/" + portNameRMI, "PUT", attributes);
assertEquals("Adding of a second RMI port should fail", 409, responseCode);
}
@@ -301,25 +332,28 @@ public class PortRestTest extends QpidRe
Asserts.assertPortAttributes(portData, State.QUIESCED);
}
- public void testNewPortQuiescedIfPortNumberWasUsed() throws Exception
+ public void testNewPortErroredIfPortNumberInUse() throws Exception
{
String ampqPortName = TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT;
Map<String, Object> portData = getRestTestHelper().getJsonAsSingletonList("port/" + URLDecoder.decode(ampqPortName, "UTF-8"));
int amqpPort = (Integer)portData.get(Port.PORT);
+ ServerSocket socket = new ServerSocket(0);
+ int occupiedPort = socket.getLocalPort();
+
int deleteResponseCode = getRestTestHelper().submitRequest("port/" + ampqPortName, "DELETE");
assertEquals("Port deletion should be allowed", 200, deleteResponseCode);
String newPortName = "reused-port";
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(Port.NAME, newPortName);
- attributes.put(Port.PORT, amqpPort); // reuses port that was previously in use
+ attributes.put(Port.PORT, occupiedPort); // port in use
attributes.put(Port.AUTHENTICATION_PROVIDER, TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER);
int responseCode = getRestTestHelper().submitRequest("port/" + newPortName, "PUT", attributes);
assertEquals("Unexpected response code for port creation", 201, responseCode);
portData = getRestTestHelper().getJsonAsSingletonList("port/" + URLDecoder.decode(newPortName, "UTF-8"));
- Asserts.assertPortAttributes(portData, State.QUIESCED);
+ Asserts.assertPortAttributes(portData, State.ERRORED);
}
}
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java Thu May 8 13:14:05 2014
@@ -29,20 +29,20 @@ import java.util.Map;
import javax.jms.Session;
import javax.servlet.http.HttpServletResponse;
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.map.JsonMappingException;
+
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.queue.LastValueQueue;
import org.apache.qpid.server.queue.PriorityQueue;
import org.apache.qpid.server.queue.SortedQueue;
-import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
-
-import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
import org.apache.qpid.util.FileUtils;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.map.JsonMappingException;
public class VirtualHostRestTest extends QpidRestTestCase
{
@@ -147,7 +147,7 @@ public class VirtualHostRestTest extends
assertEquals("Host should be deleted", 1, hosts.size());
}
- public void testUpdateActiveHostFails() throws Exception
+ public void testUpdateActiveHost() throws Exception
{
String hostToUpdate = TEST3_VIRTUALHOST;
String restHostUrl = "virtualhost/" + hostToUpdate + "/" + hostToUpdate;
@@ -156,16 +156,16 @@ public class VirtualHostRestTest extends
Map<String, Object> newAttributes = new HashMap<String, Object>();
newAttributes.put(VirtualHost.NAME, hostToUpdate);
- newAttributes.put("fakeAttribute", "value");
+ newAttributes.put(VirtualHost.DESCRIPTION, "This is a virtual host");
int response = getRestTestHelper().submitRequest(restHostUrl, "PUT", newAttributes);
- assertEquals("Unexpected response code", 409, response);
+ assertEquals("Unexpected response code", 200, response);
restartBroker();
Map<String, Object> rereadHostDetails = getRestTestHelper().getJsonAsSingletonList(restHostUrl);
Asserts.assertVirtualHost(hostToUpdate, rereadHostDetails);
- assertFalse(rereadHostDetails.containsKey("fakeAttribute"));
+ assertEquals("This is a virtual host", rereadHostDetails.get(VirtualHost.DESCRIPTION));
}
public void testPutCreateQueue() throws Exception
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java Thu May 8 13:14:05 2014
@@ -836,7 +836,7 @@ public class BrokerACLTest extends QpidR
assertAccessControlProviderExistence(accessControlProviderName, false);
}
- public void testSetAccessControlProviderAttributesAllowedButUnsupported() throws Exception
+ public void testSetAccessControlProviderAttributesAllowed() throws Exception
{
getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
@@ -854,7 +854,7 @@ public class BrokerACLTest extends QpidR
attributes.put(GroupProvider.TYPE, FileBasedGroupProviderImpl.GROUP_FILE_PROVIDER_TYPE);
attributes.put(FileBasedGroupProvider.PATH, "/path/to/file");
responseCode = getRestTestHelper().submitRequest("accesscontrolprovider/" + accessControlProviderName, "PUT", attributes);
- assertEquals("Setting of access control provider attributes should be allowed but not supported", 409, responseCode);
+ assertEquals("Setting of access control provider attributes should be allowed", 200, responseCode);
}
public void testSetAccessControlProviderAttributesDenied() throws Exception
Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java Thu May 8 13:14:05 2014
@@ -753,7 +753,7 @@ public class QpidBrokerTestCase extends
}
if (exceptionOccured)
{
- throw new RuntimeException("Exception occured on stopping of test broker. Please, examine logs for details");
+ throw new RuntimeException("Exception occurred on stopping of test broker. Please, examine logs for details");
}
}
Modified: qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes (original)
+++ qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes Thu May 8 13:14:05 2014
@@ -50,3 +50,5 @@ org.apache.qpid.systest.management.jmx.Q
org.apache.qpid.systest.management.jmx.QueueManagementTest#testCopyMessageBetweenQueuesWithBrokerRestart
org.apache.qpid.test.unit.client.MaxDeliveryCountTest#testWhenBrokerIsRestartedAfterEnqeuingMessages
+
+org.apache.qpid.systest.rest.VirtualHostRestTest#testUpdateActiveHost
Modified: qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/QmfManagementPluginImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/QmfManagementPluginImpl.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/QmfManagementPluginImpl.java (original)
+++ qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/QmfManagementPluginImpl.java Thu May 8 13:14:05 2014
@@ -36,6 +36,7 @@ import org.apache.qpid.server.model.Life
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.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.model.adapter.AbstractPluginAdapter;
@@ -122,33 +123,6 @@ public class QmfManagementPluginImpl ext
_defaultVirtualHost = _broker.getDefaultVirtualHost();
}
- /**
- * Set the state of the Plugin, I believe that this is called from the BrokerAdapter object when it
- * has its own state set to State.ACTIVE or State.STOPPED.
- * When State.ACTIVE is set this calls the start() method to startup the Plugin, when State.STOPPED
- * is set this calls the stop() method to shutdown the Plugin.
- * @param desiredState the desired state of the Plugin (either State.ACTIVE or State.STOPPED).
- * @return true if a valid state has been set, otherwise false.
- */
- @Override // From org.apache.qpid.server.model.adapter.AbstractAdapter
- protected boolean setState(State desiredState)
- {
- if (desiredState == State.ACTIVE)
- {
- start();
- return true;
- }
- else if (desiredState == State.STOPPED)
- {
- stop();
- return true;
- }
- else
- {
- _log.info("QmfManagementPlugin.setState() received invalid desiredState {}", desiredState);
- return false;
- }
- }
/**
* Start the Plugin. Note that we bind the QMF Connection the the default Virtual Host, this is important
@@ -159,7 +133,8 @@ public class QmfManagementPluginImpl ext
* as these don't exist by default on the Java Broker, however we have to check if they already exist
* as attempting to add an Exchange that already exists will cause IllegalArgumentException.
*/
- private void start()
+ @StateTransition( currentState = State.UNINITIALIZED, desiredState = State.ACTIVE )
+ private void doStart()
{
// Log "QMF2 Management Startup" message.
getBroker().getEventLogger().message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
@@ -232,7 +207,8 @@ public class QmfManagementPluginImpl ext
/**
* Stop the Plugin, closing the QMF Connection and logging "QMF2 Management Stopped".
*/
- private void stop()
+ @StateTransition( currentState = State.ACTIVE, desiredState = State.STOPPED )
+ private void doStop()
{
// When the Plugin state gets set to STOPPED we close the QMF Connection.
if (_agent != null)
Modified: qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Broker.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Broker.java?rev=1593264&r1=1593263&r2=1593264&view=diff
==============================================================================
--- qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Broker.java (original)
+++ qpid/trunk/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Broker.java Thu May 8 13:14:05 2014
@@ -650,7 +650,7 @@ System.out.println("properties = " + pro
Queue queue = nameParser.getQueue();
if (queue != null)
{
- queue.delete();
+ queue.deleteAndReturnCount();
}
}
else if (type.equals("binding")) // delete binding.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org