diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2014-05-08 13:14:05 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2014-05-08 13:14:05 +0000 |
| commit | 14ffecc29a8393f54c9d4f6f3bce6ee3276cf381 (patch) | |
| tree | 8d3b879c9c74fa132f7cfba8e474bb72a781dece /qpid/java/broker-plugins/management-http | |
| parent | 54243c16cf78f1d82c642335deaa01aa9a1b341e (diff) | |
| download | qpid-python-14ffecc29a8393f54c9d4f6f3bce6ee3276cf381.tar.gz | |
QPID-5754 : [Java Broker] Make state change operations methods rather than calls to setDesiredState
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1593264 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/management-http')
3 files changed, 38 insertions, 23 deletions
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(); } |
