From 7344c8879c319c4ca6ab57963e6147d878a4e154 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Fri, 4 Apr 2014 22:34:26 +0000 Subject: QPID-5615 : [Java Broker] Migrate broker config store to use same API as VirtualHost config store git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1584931 13f79535-47bb-0310-9956-ffa450edef68 --- .../server/management/plugin/HttpManagement.java | 37 ++++++++-------------- .../plugin/HttpManagementConfiguration.java | 1 + .../management/plugin/HttpManagementFactory.java | 29 ++++++++--------- .../plugin/servlet/rest/RestServlet.java | 1 + .../ListAccessControlProviderAttributes.java | 17 +++++----- ....qpid.server.plugin.ConfiguredObjectTypeFactory | 21 ++++++++++++ .../plugin/HttpManagementFactoryTest.java | 24 +++++--------- 7 files changed, 67 insertions(+), 63 deletions(-) create mode 100644 qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory (limited to 'qpid/java/broker-plugins/management-http') 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 eed387f8c5..b4ce0ccf9a 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,17 +20,6 @@ */ package org.apache.qpid.server.management.plugin; -import java.lang.reflect.Type; -import java.net.SocketAddress; -import java.security.GeneralSecurityException; -import java.util.*; - -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.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.messages.ManagementConsoleMessages; @@ -39,21 +28,10 @@ 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.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.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.LoggedOnUserPreferencesServlet; -import org.apache.qpid.server.management.plugin.servlet.rest.UserPreferencesServlet; -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.*; 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.plugin.PluginFactory; import org.apache.qpid.server.util.MapValueConverter; import org.apache.qpid.server.util.ServerScopedRuntimeException; import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager; @@ -67,6 +45,17 @@ 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 implements HttpManagementConfiguration { private final Logger _logger = Logger.getLogger(HttpManagement.class); @@ -109,7 +98,7 @@ public class HttpManagement extends AbstractPluginAdapter implem put(HTTPS_SASL_AUTHENTICATION_ENABLED, Boolean.class); put(NAME, String.class); put(TIME_OUT, Integer.class); - put(PluginFactory.PLUGIN_TYPE, String.class); + put(TYPE, String.class); }}); private static final String JSESSIONID_COOKIE_PREFIX = "JSESSIONID_"; 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 3b159b1e5d..227271d439 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 @@ -25,6 +25,7 @@ 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> extends Plugin diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java index fd40f56ef8..0431954879 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java @@ -18,30 +18,29 @@ */ package org.apache.qpid.server.management.plugin; +import org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory; +import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.ConfiguredObject; + +import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.Plugin; -import org.apache.qpid.server.plugin.PluginFactory; - -public class HttpManagementFactory implements PluginFactory +public class HttpManagementFactory extends AbstractConfiguredObjectTypeFactory { - @Override - public Plugin createInstance(UUID id, Map attributes, Broker broker) + public HttpManagementFactory() { - if (!HttpManagement.PLUGIN_TYPE.equals(attributes.get(PLUGIN_TYPE))) - { - return null; - } - - return new HttpManagement(id, broker, attributes); + super(HttpManagement.class); } @Override - public String getType() + public HttpManagement createInstance(final Map attributes, final ConfiguredObject... parents) { - return "HTTP Management"; + Map attributesWithoutId = new HashMap(attributes); + Object idObj = attributesWithoutId.remove(ConfiguredObject.ID); + UUID id = idObj == null ? UUID.randomUUID() : idObj instanceof UUID ? (UUID) idObj : UUID.fromString(idObj.toString()); + return new HttpManagement(id, getParent(Broker.class,parents), attributes); } + } 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 005358faf4..00126200f8 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 @@ -458,6 +458,7 @@ public class RestServlet extends AbstractServlet catch (RuntimeException e) { setResponseStatus(response, e); + e.printStackTrace(); } } diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java index 6887217016..84d05997b5 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java @@ -26,21 +26,21 @@ import java.util.TreeMap; import org.apache.qpid.server.management.plugin.servlet.rest.Action; import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.plugin.AccessControlFactory; +import org.apache.qpid.server.plugin.AccessControlProviderFactory; import org.apache.qpid.server.plugin.QpidServiceLoader; public class ListAccessControlProviderAttributes implements Action { private static final String ATTRIBUTES = "attributes"; private static final String DESCRIPTIONS = "descriptions"; - private Map _factories; + private Map _factories; public ListAccessControlProviderAttributes() { - _factories = new TreeMap(); - Iterable factories = new QpidServiceLoader() - .instancesOf(AccessControlFactory.class); - for (AccessControlFactory factory : factories) + _factories = new TreeMap(); + Iterable factories = new QpidServiceLoader() + .instancesOf(AccessControlProviderFactory.class); + for (AccessControlProviderFactory factory : factories) { _factories.put(factory.getType(), factory); } @@ -58,10 +58,11 @@ public class ListAccessControlProviderAttributes implements Action Map attributes = new TreeMap(); for (String providerType : _factories.keySet()) { - AccessControlFactory factory = _factories.get(providerType); + AccessControlProviderFactory factory = _factories.get(providerType); Map data = new HashMap(); - data.put(ATTRIBUTES, factory.getAttributeNames()); + // TODO RG - fix + // data.put(ATTRIBUTES, factory.getAttributeNames()); Map resources = factory.getAttributeDescriptions(); if (resources != null) { diff --git a/qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory b/qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory new file mode 100644 index 0000000000..316698a10e --- /dev/null +++ b/qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory @@ -0,0 +1,21 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +org.apache.qpid.server.management.plugin.HttpManagementFactory + + 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 10bc9f941b..2fd057437a 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,41 +18,33 @@ */ package org.apache.qpid.server.management.plugin; -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; import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.plugin.PluginFactory; -import org.apache.qpid.test.utils.QpidTestCase; +import static org.mockito.Mockito.mock; public class HttpManagementFactoryTest extends QpidTestCase { private static final int SESSION_TIMEOUT = 3600; - private PluginFactory _pluginFactory = new HttpManagementFactory(); + private HttpManagementFactory _pluginFactory = new HttpManagementFactory(); private Map _attributes = new HashMap(); private Broker _broker = mock(Broker.class); private UUID _id = UUID.randomUUID(); - public void testCreateInstanceReturnsNullWhenPluginTypeMissing() throws Exception - { - assertNull(_pluginFactory.createInstance(_id, _attributes, _broker)); - } - public void testCreateInstanceReturnsNullWhenPluginTypeNotHttp() - { - _attributes.put(PluginFactory.PLUGIN_TYPE, "notHttp"); - assertNull(_pluginFactory.createInstance(_id, _attributes, _broker)); - } public void testCreateInstance() throws Exception { - _attributes.put(PluginFactory.PLUGIN_TYPE, HttpManagement.PLUGIN_TYPE); + _attributes.put(ConfiguredObject.TYPE, HttpManagement.PLUGIN_TYPE); _attributes.put(HttpManagement.TIME_OUT, SESSION_TIMEOUT); + _attributes.put(ConfiguredObject.ID, _id); - HttpManagement management = (HttpManagement) _pluginFactory.createInstance(_id, _attributes, _broker); + HttpManagement management = _pluginFactory.createInstance(_attributes, _broker); assertEquals(_broker, management.getParent(Broker.class)); assertEquals(SESSION_TIMEOUT, management.getSessionTimeout()); -- cgit v1.2.1