summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/management-http
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-04-11 15:30:38 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-04-11 15:30:38 +0000
commit58a7f5e8759446fd6c2cc5876581bc414d78d9bd (patch)
tree21b0e5263029bb9bfa9f2c90643ef7d9a6ba38ed /qpid/java/broker-plugins/management-http
parentc7f2cd12b45f051cd1d421d8c440f12d007a50b4 (diff)
downloadqpid-python-58a7f5e8759446fd6c2cc5876581bc414d78d9bd.tar.gz
QPID-5680 : [Java Broker] move configuration defualts to annotations
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1586683 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/management-http')
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java115
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java12
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java10
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java2
4 files changed, 75 insertions, 64 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 b4ce0ccf9a..59c5a4428d 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
@@ -20,7 +20,35 @@
*/
package org.apache.qpid.server.management.plugin;
+import java.lang.reflect.Type;
+import java.net.SocketAddress;
+import java.security.GeneralSecurityException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import javax.servlet.DispatcherType;
+
import org.apache.log4j.Logger;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.SessionManager;
+import org.eclipse.jetty.server.nio.SelectChannelConnector;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
+
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.logging.messages.ManagementConsoleMessages;
import org.apache.qpid.server.management.plugin.filter.ForbiddingAuthorisationFilter;
@@ -28,32 +56,23 @@ import org.apache.qpid.server.management.plugin.filter.RedirectingAuthorisationF
import org.apache.qpid.server.management.plugin.servlet.DefinedFileServlet;
import org.apache.qpid.server.management.plugin.servlet.FileServlet;
import org.apache.qpid.server.management.plugin.servlet.LogFileServlet;
-import org.apache.qpid.server.management.plugin.servlet.rest.*;
+import org.apache.qpid.server.management.plugin.servlet.rest.HelperServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.LogFileListingServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.LogRecordsServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.LoggedOnUserPreferencesServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.LogoutServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.MessageContentServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.MessageServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.SaslServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.StructureServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.UserPreferencesServlet;
import org.apache.qpid.server.model.*;
-import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.adapter.AbstractPluginAdapter;
+import org.apache.qpid.server.model.port.PortWithAuthProvider;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.SessionManager;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.server.ssl.SslSocketConnector;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import javax.servlet.DispatcherType;
-import java.lang.reflect.Type;
-import java.net.SocketAddress;
-import java.security.GeneralSecurityException;
-import java.util.*;
@ManagedObject( category = false, type = "MANAGEMENT-HTTP" )
public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implements HttpManagementConfiguration<HttpManagement>
@@ -62,12 +81,6 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
// 10 minutes by default
public static final int DEFAULT_TIMEOUT_IN_SECONDS = 60 * 10;
- public static final boolean DEFAULT_HTTP_BASIC_AUTHENTICATION_ENABLED = false;
- public static final boolean DEFAULT_HTTPS_BASIC_AUTHENTICATION_ENABLED = true;
- public static final boolean DEFAULT_HTTP_SASL_AUTHENTICATION_ENABLED = true;
- public static final boolean DEFAULT_HTTPS_SASL_AUTHENTICATION_ENABLED = true;
- public static final String DEFAULT_NAME = "httpManagement";
-
public static final String TIME_OUT = "sessionTimeout";
public static final String HTTP_BASIC_AUTHENTICATION_ENABLED = "httpBasicAuthenticationEnabled";
public static final String HTTPS_BASIC_AUTHENTICATION_ENABLED = "httpsBasicAuthenticationEnabled";
@@ -80,17 +93,6 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
@SuppressWarnings("serial")
- public static final Map<String, Object> DEFAULTS = Collections.unmodifiableMap(new HashMap<String, Object>()
- {{
- put(HTTP_BASIC_AUTHENTICATION_ENABLED, DEFAULT_HTTP_BASIC_AUTHENTICATION_ENABLED);
- put(HTTPS_BASIC_AUTHENTICATION_ENABLED, DEFAULT_HTTPS_BASIC_AUTHENTICATION_ENABLED);
- put(HTTP_SASL_AUTHENTICATION_ENABLED, DEFAULT_HTTP_SASL_AUTHENTICATION_ENABLED);
- put(HTTPS_SASL_AUTHENTICATION_ENABLED, DEFAULT_HTTPS_SASL_AUTHENTICATION_ENABLED);
- put(TIME_OUT, DEFAULT_TIMEOUT_IN_SECONDS);
- put(NAME, DEFAULT_NAME);
- }});
-
- @SuppressWarnings("serial")
private static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{
put(HTTP_BASIC_AUTHENTICATION_ENABLED, Boolean.class);
put(HTTPS_BASIC_AUTHENTICATION_ENABLED, Boolean.class);
@@ -105,9 +107,24 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
private Server _server;
+ @ManagedAttributeField
+ private boolean _httpsSaslAuthenticationEnabled;
+
+ @ManagedAttributeField
+ private boolean _httpSaslAuthenticationEnabled;
+
+ @ManagedAttributeField
+ private boolean _httpsBasicAuthenticationEnabled;
+
+ @ManagedAttributeField
+ private boolean _httpBasicAuthenticationEnabled;
+
+ @ManagedAttributeField
+ private int _sessionTimeout;
+
public HttpManagement(UUID id, Broker broker, Map<String, Object> attributes)
{
- super(id, DEFAULTS, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES), broker);
+ super(id, Collections.<String,Object>emptyMap(), attributes, broker);
}
@Override
@@ -165,7 +182,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
public int getSessionTimeout()
{
- return (Integer)getAttribute(TIME_OUT);
+ return _sessionTimeout;
}
@SuppressWarnings("unchecked")
@@ -201,8 +218,8 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
throw new IllegalConfigurationException("Key store is not configured. Cannot start management on HTTPS port without keystore");
}
SslContextFactory factory = new SslContextFactory();
- final boolean needClientAuth = Boolean.valueOf(String.valueOf(port.getAttribute(Port.NEED_CLIENT_AUTH)));
- final boolean wantClientAuth = Boolean.valueOf(String.valueOf(port.getAttribute(Port.WANT_CLIENT_AUTH)));
+ final boolean needClientAuth = port instanceof PortWithAuthProvider && ((PortWithAuthProvider)port).getNeedClientAuth();
+ final boolean wantClientAuth = port instanceof PortWithAuthProvider && ((PortWithAuthProvider)port).getWantClientAuth();
boolean needClientCert = needClientAuth || wantClientAuth;
if (needClientCert && trustStores.isEmpty())
{
@@ -419,25 +436,25 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
@Override
public boolean isHttpsSaslAuthenticationEnabled()
{
- return (Boolean)getAttribute(HTTPS_SASL_AUTHENTICATION_ENABLED);
+ return _httpsSaslAuthenticationEnabled;
}
@Override
public boolean isHttpSaslAuthenticationEnabled()
{
- return (Boolean)getAttribute(HTTP_SASL_AUTHENTICATION_ENABLED);
+ return _httpSaslAuthenticationEnabled;
}
@Override
public boolean isHttpsBasicAuthenticationEnabled()
{
- return (Boolean)getAttribute(HTTPS_BASIC_AUTHENTICATION_ENABLED);
+ return _httpsBasicAuthenticationEnabled;
}
@Override
public boolean isHttpBasicAuthenticationEnabled()
{
- return (Boolean)getAttribute(HTTP_BASIC_AUTHENTICATION_ENABLED);
+ return _httpBasicAuthenticationEnabled;
}
@Override
@@ -475,10 +492,4 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
}
}
-
- @Override
- public String getPluginType()
- {
- return PLUGIN_TYPE;
- }
}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
index 227271d439..aebe76b9bd 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
@@ -23,26 +23,24 @@ package org.apache.qpid.server.management.plugin;
import java.net.SocketAddress;
import org.apache.qpid.server.model.AuthenticationProvider;
-import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ManagedAttribute;
-import org.apache.qpid.server.model.ManagedObject;
import org.apache.qpid.server.model.Plugin;
public interface HttpManagementConfiguration<X extends HttpManagementConfiguration<X>> extends Plugin<X>
{
- @ManagedAttribute
+ @ManagedAttribute( automate = true, defaultValue = "true" )
boolean isHttpsSaslAuthenticationEnabled();
- @ManagedAttribute
+ @ManagedAttribute( automate = true, defaultValue = "true" )
boolean isHttpSaslAuthenticationEnabled();
- @ManagedAttribute
+ @ManagedAttribute( automate = true, defaultValue = "true" )
boolean isHttpsBasicAuthenticationEnabled();
- @ManagedAttribute
+ @ManagedAttribute( automate = true, defaultValue = "false" )
boolean isHttpBasicAuthenticationEnabled();
- @ManagedAttribute
+ @ManagedAttribute( automate = true, defaultValue = "600" )
public int getSessionTimeout();
AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress);
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java
index 2fd057437a..2cb611d382 100644
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java
+++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java
@@ -18,15 +18,15 @@
*/
package org.apache.qpid.server.management.plugin;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.test.utils.QpidTestCase;
+import static org.mockito.Mockito.mock;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-import static org.mockito.Mockito.mock;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.test.utils.QpidTestCase;
public class HttpManagementFactoryTest extends QpidTestCase
{
@@ -40,11 +40,13 @@ public class HttpManagementFactoryTest extends QpidTestCase
public void testCreateInstance() throws Exception
{
+ _attributes.put(ConfiguredObject.NAME, getName());
_attributes.put(ConfiguredObject.TYPE, HttpManagement.PLUGIN_TYPE);
_attributes.put(HttpManagement.TIME_OUT, SESSION_TIMEOUT);
_attributes.put(ConfiguredObject.ID, _id);
HttpManagement management = _pluginFactory.createInstance(_attributes, _broker);
+ management.open();
assertEquals(_broker, management.getParent(Broker.class));
assertEquals(SESSION_TIMEOUT, management.getSessionTimeout());
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 d0a357fd28..ff96a4223e 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
@@ -31,7 +31,6 @@ import java.util.UUID;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.test.utils.QpidTestCase;
public class HttpManagementTest extends QpidTestCase
@@ -54,6 +53,7 @@ public class HttpManagementTest extends QpidTestCase
attributes.put(HttpManagement.NAME, getTestName());
attributes.put(HttpManagement.TIME_OUT, 10000l);
_management = new HttpManagement(_id, _broker, attributes);
+ _management.open();
}
public void testGetSessionTimeout()