diff options
| author | Robert Gemmell <robbie@apache.org> | 2010-05-31 16:01:24 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2010-05-31 16:01:24 +0000 |
| commit | 71098e50d6a4685205abc4937586ae414b4cee8d (patch) | |
| tree | f56eab9d2a34cec6f272739c9f1b0780c5c26bf5 /java | |
| parent | 68d06cb9f5f10f3679ae1fc3c7bde86881862c38 (diff) | |
| download | qpid-python-71098e50d6a4685205abc4937586ae414b4cee8d.tar.gz | |
QPID-2581: Update configuration manager to allow multiple plugins to handle the same configuration
Applied patch from Andrew Kennedy <andrew.international@gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@949779 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
27 files changed, 411 insertions, 650 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationManager.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationManager.java index 9529d1097d..2c492ff6b9 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationManager.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationManager.java @@ -20,40 +20,34 @@ */ package org.apache.qpid.server.configuration; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; -import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin; import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory; import org.apache.qpid.server.registry.ApplicationRegistry; -import java.util.Map; - public class ConfigurationManager { - Logger _logger = Logger.getLogger(ConfigurationManager.class); - - public ConfigurationPlugin getConfigurationPlugin(String configurationElement, Configuration configuration) throws ConfigurationException + public List<ConfigurationPlugin> getConfigurationPlugins(String configurationElement, Configuration configuration) throws ConfigurationException { - Map<String, ConfigurationPluginFactory> configPlugins = - ApplicationRegistry.getInstance().getPluginManager().getConfigurationPlugins(); + List<ConfigurationPlugin> plugins = new ArrayList<ConfigurationPlugin>(); + Map<List<String>, ConfigurationPluginFactory> factories = + ApplicationRegistry.getInstance().getPluginManager().getConfigurationPlugins(); - ConfigurationPluginFactory factory = configPlugins.get(configurationElement); - - if (_logger.isInfoEnabled()) + for (Entry<List<String>, ConfigurationPluginFactory> entry : factories.entrySet()) { - _logger.info("Got Factory:" + factory + ": for :" + configurationElement); - } - - if (_logger.isDebugEnabled()) - { - _logger.debug("Loaded Plugins:"); - for (String key : configPlugins.keySet()) + if (entry.getKey().contains(configurationElement)) { - _logger.debug(key + ":" + configPlugins.get(key)); + ConfigurationPluginFactory factory = entry.getValue(); + plugins.add(factory.newInstance(configurationElement, configuration)); } } - - return factory != null ? factory.newInstance(configurationElement, configuration) : null; + + return plugins; } } diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfig.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfig.java index 4c9ec6619e..be34c8d63d 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfig.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfig.java @@ -23,6 +23,8 @@ package org.apache.qpid.server.configuration; import java.util.Map; +import org.apache.qpid.AMQException; + public interface QueueConfig extends ConfiguredObject<QueueConfigType, QueueConfig> { @@ -80,5 +82,5 @@ public interface QueueConfig extends ConfiguredObject<QueueConfigType, QueueConf long getUnackedMessageCountHigh(); - void purge(long request); + void purge(long request) throws AMQException; }
\ No newline at end of file diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java index adbb0059d8..7fef4558c8 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java @@ -21,8 +21,6 @@ package org.apache.qpid.server.configuration; import java.util.List; -import java.util.Map; -import java.util.HashMap; import org.apache.commons.configuration.CompositeConfiguration; import org.apache.commons.configuration.Configuration; diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/SecurityConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/SecurityConfiguration.java deleted file mode 100644 index 5d080f8df1..0000000000 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/SecurityConfiguration.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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. - * - * - */ - -package org.apache.qpid.server.configuration; - -import org.apache.commons.configuration.Configuration; - -public class SecurityConfiguration -{ - - private Configuration _conf; - - public SecurityConfiguration(Configuration configuration) - { - _conf = configuration; - } - - public Configuration getConfiguration() - { - return _conf; - } - -} diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java index 8f9bded82a..9f1a4c52f2 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java @@ -34,8 +34,7 @@ import org.apache.qpid.server.virtualhost.VirtualHost; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; import org.apache.qpid.server.registry.ApplicationRegistry; import org.apache.qpid.transport.NetworkDriverConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + import sun.misc.Signal; import sun.misc.SignalHandler; @@ -50,6 +49,8 @@ import java.util.Map.Entry; public class ServerConfiguration extends ConfigurationPlugin implements SignalHandler { + protected static final Logger _logger = Logger.getLogger(ServerConfiguration.class); + // Default Configuration values public static final int DEFAULT_BUFFER_READ_LIMIT_SIZE = 262144; public static final int DEFAULT_BUFFER_WRITE_LIMIT_SIZE = 262144; @@ -117,14 +118,15 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa * * This will load the file and present the root level properties but will * not perform any virtualhost configuration. - * - * To perform this configure() must be called. - * + * <p> + * To perform this {@link #initialise()} must be called. + * <p> * This has been made a two step process to allow the Plugin Manager and * Configuration Manager to be initialised in the Application Registry. - * + * <p> * If using this ServerConfiguration via an ApplicationRegistry there is no - * need to explictly call configure() as this is done via the AR.initialise() + * need to explictly call {@link #initialise()} as this is done via the + * {@link ApplicationRegistry#initialise()} method. * * @param configurationURL * @throws org.apache.commons.configuration.ConfigurationException @@ -149,15 +151,16 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa * * Mainly used during testing and in locations where configuration is not * desired but the interface requires configuration. - * - * If the given configuration has VirtualHost configuration then configure() - * must be called to perform the required setup. - * + * <p> + * If the given configuration has VirtualHost configuration then + * {@link #initialise()} must be called to perform the required setup. + * <p> * This has been made a two step process to allow the Plugin Manager and * Configuration Manager to be initialised in the Application Registry. - * + * <p> * If using this ServerConfiguration via an ApplicationRegistry there is no - * need to explictly call configure() as this is done via the AR.initialise() + * need to explictly call {@link #initialise()} as this is done via the + * {@link ApplicationRegistry#initialise()} method. * * @param conf */ @@ -173,17 +176,17 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa * This has been separated from the constructor to allow the PluginManager * time to be created and provide plugins to the ConfigurationManager for * processing here. - * - * Called by ApplicationRegistry.initialise(); - * + * <p> + * Called by {@link ApplicationRegistry#initialise()}. + * <p> * NOTE: A DEFAULT ApplicationRegistry must exist when using this method * or a new ApplicationRegistry will be created. * * @throws ConfigurationException */ - public void configure() throws ConfigurationException - { - + public void initialise() throws ConfigurationException + { + setConfiguration("", _configuration); setupVirtualHosts(_configuration); } @@ -380,6 +383,11 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa return conf; } + public String getConfigurationURL() + { + return _configFile == null ? "" : _configFile.getAbsolutePath(); + } + public void handle(Signal arg0) { try @@ -388,7 +396,7 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa } catch (ConfigurationException e) { - _log.error("Could not reload configuration file security sections", e); + _logger.error("Could not reload configuration file security sections", e); } } @@ -397,9 +405,9 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa if (_configFile != null) { Configuration newConfig = parseConfig(_configFile); - setConfiguration("", newConfig); - + ApplicationRegistry.getInstance().getSecurityManager().configureHostPlugins(this); + // Reload virtualhosts from correct location Configuration newVhosts; if (_vhostsFile == null) @@ -412,15 +420,16 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa } VirtualHostRegistry vhostRegistry = ApplicationRegistry.getInstance().getVirtualHostRegistry(); - for (String hostname : _virtualHosts.keySet()) + for (String hostName : _virtualHosts.keySet()) { - VirtualHost vhost = vhostRegistry.getVirtualHost(hostname); - SecurityConfiguration hostSecurityConfig = new SecurityConfiguration(newVhosts.subset("virtualhost."+hostname+".security")); - vhost.getAccessManager().configureGlobalPlugins(getSecurityConfiguration()); - vhost.getAccessManager().configureHostPlugins(hostSecurityConfig); + VirtualHost vhost = vhostRegistry.getVirtualHost(hostName); + Configuration vhostConfig = newVhosts.subset("virtualhost." + hostName); + vhost.getConfiguration().setConfiguration("virtualhosts.virtualhost", vhostConfig); // XXX + vhost.getSecurityManager().configureGlobalPlugins(this); + vhost.getSecurityManager().configureHostPlugins(vhost.getConfiguration()); } - _log.warn(SECURITY_CONFIG_RELOADED); + _logger.warn(SECURITY_CONFIG_RELOADED); } } @@ -556,11 +565,6 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa return getStringValue("management.ssl.keyStorePassword"); } - public SecurityConfiguration getSecurityConfiguration() - { - return new SecurityConfiguration(_configuration.subset("security")); - } - public boolean getQueueAutoRegister() { return getBooleanValue("queue.auto_register", true); diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java index 00b109f33b..2be3311403 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java @@ -20,20 +20,18 @@ */ package org.apache.qpid.server.configuration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + import org.apache.commons.configuration.CompositeConfiguration; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin; import org.apache.qpid.server.registry.ApplicationRegistry; import org.apache.qpid.server.store.MemoryMessageStore; -import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.HashSet; public class VirtualHostConfiguration extends ConfigurationPlugin { @@ -55,7 +53,7 @@ public class VirtualHostConfiguration extends ConfigurationPlugin */ public void setConfiguration(Configuration config) throws ConfigurationException { - super.setConfiguration("virtualhosts.virtualhost",config); + setConfiguration("virtualhosts.virtualhost", config); Iterator i = getListValue("queues.queue.name").iterator(); @@ -97,11 +95,6 @@ public class VirtualHostConfiguration extends ConfigurationPlugin return getListValue("custom-exchanges.class-name"); } - public SecurityConfiguration getSecurityConfiguration() - { - return new SecurityConfiguration(_configuration.subset("security")); - } - public Configuration getStoreConfiguration() { return _configuration.subset("store"); @@ -201,8 +194,7 @@ public class VirtualHostConfiguration extends ConfigurationPlugin public String[] getElementsProcessed() { - return new String[]{"queues", "exchanges", "custom-exchanges", - "security", "store", "housekeeping"}; + return new String[]{"queues", "exchanges", "custom-exchanges", "store", "housekeeping"}; } diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPlugin.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPlugin.java index cb21f07eaf..9024c6aec6 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPlugin.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPlugin.java @@ -1,5 +1,4 @@ /* - * * 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 @@ -16,18 +15,9 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. - * */ package org.apache.qpid.server.configuration.plugins; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.ConversionException; -import org.apache.log4j.Logger; -import org.apache.qpid.server.configuration.ConfigurationManager; -import org.apache.qpid.server.registry.ApplicationRegistry; - -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -37,9 +27,16 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; +import org.apache.commons.configuration.Configuration; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.ConversionException; +import org.apache.log4j.Logger; +import org.apache.qpid.server.configuration.ConfigurationManager; +import org.apache.qpid.server.registry.ApplicationRegistry; + public abstract class ConfigurationPlugin { - protected Logger _logger = Logger.getLogger(this.getClass()); + protected static final Logger _logger = Logger.getLogger(ConfigurationPlugin.class); private Map<Class<? extends ConfigurationPlugin>, ConfigurationPlugin> _pluginConfiguration = new HashMap<Class<? extends ConfigurationPlugin>, ConfigurationPlugin>(); @@ -48,17 +45,24 @@ public abstract class ConfigurationPlugin /** * The Elements that this Plugin can process. - * i.e. + * * For a Queues plugin that would be a list containing: - * queue - the queue entries - * the alerting values for defaults - * exchange - the default exchange - * durable - set the default durablity - * etc - * - * @return + * <ul> + * <li>queue - the queue entries + * <li>the alerting values for defaults + * <li>exchange - the default exchange + * <li>durable - set the default durablity + * </ul> */ abstract public String[] getElementsProcessed(); + + /** + * Performs configuration validation. + */ + public void validateConfiguration() throws ConfigurationException + { + // Override in sub-classes + } public Configuration getConfig() { @@ -76,7 +80,6 @@ public abstract class ConfigurationPlugin * @param path * @param configuration the configuration for this plugin. */ - public void setConfiguration(String path, Configuration configuration) throws ConfigurationException { _configuration = configuration; @@ -97,7 +100,7 @@ public abstract class ConfigurationPlugin element = key.substring(0, elementNameIndex).trim(); } - //Trim any element properties + // Trim any element properties elementNameIndex = element.indexOf("["); if (elementNameIndex > 0) { @@ -138,29 +141,46 @@ public abstract class ConfigurationPlugin } // Process the elements in the configuration - for (String element : elements.toArray(new String[elements.size()])) + for (String element : elements) { ConfigurationManager configurationManager = ApplicationRegistry.getInstance().getConfigurationManager(); - - String configurationElement = path + "." + element; - ConfigurationPlugin elementHandler = configurationManager. - getConfigurationPlugin(configurationElement, - configuration.subset(element)); - - if (elementHandler == null) + Configuration handled = element.length() == 0 ? configuration : configuration.subset(element); + + String configurationElement = element; + if (path.length() > 0) { - _logger.warn("Unused configuration element: '" + configurationElement + "'"); + configurationElement = path + "." + configurationElement; } - else + + List<ConfigurationPlugin> handlers = configurationManager.getConfigurationPlugins(configurationElement, handled); + for (ConfigurationPlugin plugin : handlers) { - _pluginConfiguration.put(elementHandler.getClass(), elementHandler); + _pluginConfiguration.put(plugin.getClass(), plugin); } } validateConfiguration(); } - - abstract public void validateConfiguration() throws ConfigurationException; + + /** + * Helper method to print out list of keys in a {@link Configuration}. + */ + public static final void showKeys(Configuration config) + { + if (config.isEmpty()) + { + _logger.info("Configuration is empty"); + } + else + { + Iterator<?> keys = config.getKeys(); + while (keys.hasNext()) + { + String key = (String) keys.next(); + _logger.info("Configuration key: " + key); + } + } + } protected boolean hasConfiguration() { diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginFactory.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginFactory.java index 1e928a1728..02560b296e 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginFactory.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginFactory.java @@ -20,22 +20,19 @@ */ package org.apache.qpid.server.configuration.plugins; +import java.util.List; + import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; public interface ConfigurationPluginFactory { - /** * The Parent paths of the configuration that this plugin supports. - * i.e. - * For Queue Elements the parent path is - * virtualhosts.virtualhost - * @return + * + * For example, {@code queue} elements have a parent path of {@code virtualhosts.virtualhost}. */ - abstract public String[] getParentPaths(); - + public List<String> getParentPaths(); public ConfigurationPlugin newInstance(String path, Configuration config) throws ConfigurationException; - } diff --git a/java/broker/src/main/java/org/apache/qpid/server/connection/ConnectionRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/connection/ConnectionRegistry.java index 69bdf94621..bac751e0c8 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/connection/ConnectionRegistry.java +++ b/java/broker/src/main/java/org/apache/qpid/server/connection/ConnectionRegistry.java @@ -20,15 +20,15 @@ */ package org.apache.qpid.server.connection; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + import org.apache.log4j.Logger; -import org.apache.qpid.common.Closeable; -import org.apache.qpid.server.protocol.AMQProtocolSession; -import org.apache.qpid.AMQException; import org.apache.qpid.AMQConnectionException; +import org.apache.qpid.AMQException; +import org.apache.qpid.common.Closeable; import org.apache.qpid.protocol.AMQConstant; - -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.List; +import org.apache.qpid.server.protocol.AMQProtocolSession; public class ConnectionRegistry implements IConnectionRegistry, Closeable { @@ -38,7 +38,7 @@ public class ConnectionRegistry implements IConnectionRegistry, Closeable public void initialise() { - + // None required } public void expireClosedChannels() diff --git a/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java index d339304ab6..4cb3d9e209 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java +++ b/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java @@ -20,6 +20,11 @@ */ package org.apache.qpid.server.registry; +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + import org.apache.commons.configuration.ConfigurationException; import org.apache.log4j.Logger; import org.apache.qpid.AMQException; @@ -42,7 +47,7 @@ import org.apache.qpid.server.logging.rawloggers.Log4jMessageLogger; import org.apache.qpid.server.management.ManagedObjectRegistry; import org.apache.qpid.server.management.NoopManagedObjectRegistry; import org.apache.qpid.server.plugins.PluginManager; -import org.apache.qpid.server.security.access.ACLManager; +import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.auth.database.ConfigurationFilePrincipalDatabaseManager; import org.apache.qpid.server.security.auth.database.PrincipalDatabaseManager; import org.apache.qpid.server.security.auth.manager.AuthenticationManager; @@ -52,11 +57,6 @@ import org.apache.qpid.server.virtualhost.VirtualHost; import org.apache.qpid.server.virtualhost.VirtualHostImpl; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; -import java.net.InetSocketAddress; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - /** * An abstract application registry that provides access to configuration information and handles the * construction and caching of configurable objects. @@ -69,8 +69,6 @@ public abstract class ApplicationRegistry implements IApplicationRegistry private static Map<Integer, IApplicationRegistry> _instanceMap = new HashMap<Integer, IApplicationRegistry>(); - private final Map<Class<?>, Object> _configuredObjects = new HashMap<Class<?>, Object>(); - protected final ServerConfiguration _configuration; public static final int DEFAULT_INSTANCE = 1; @@ -85,7 +83,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry protected VirtualHostRegistry _virtualHostRegistry; - protected ACLManager _accessManager; + protected SecurityManager _securityManager; protected PrincipalDatabaseManager _databaseManager; @@ -123,8 +121,10 @@ public abstract class ApplicationRegistry implements IApplicationRegistry initialise(instance, DEFAULT_INSTANCE); } + @SuppressWarnings("finally") public static void initialise(IApplicationRegistry instance, int instanceID) throws Exception { + _logger.error("initialise(IApplicationRegistry instance, int instanceID)"); if (instance != null) { _logger.info("Initialising Application Registry(" + instance + "):" + instanceID); @@ -134,7 +134,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry store.setRoot(new SystemConfigImpl(store)); instance.setConfigStore(store); - BrokerConfig broker = new BrokerConfigAdapter(instance, instanceID); + BrokerConfig broker = new BrokerConfigAdapter(instance); SystemConfig system = (SystemConfig) store.getRoot(); system.addBroker(broker); @@ -142,6 +142,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry try { + _logger.error("instance.initialise(instanceID)"); instance.initialise(instanceID); } catch (Exception e) @@ -248,13 +249,12 @@ public abstract class ApplicationRegistry implements IApplicationRegistry throw new ConfigurationException(e); } - _configuration.configure(); + _configuration.initialise(); } public void initialise(int instanceID) throws Exception { - _rootMessageLogger = new RootMessageLoggerImpl(_configuration, - new Log4jMessageLogger()); + _rootMessageLogger = new RootMessageLoggerImpl(_configuration, new Log4jMessageLogger()); _registryName = String.valueOf(instanceID); // Set the Actor for current log messages @@ -270,7 +270,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry _virtualHostRegistry = new VirtualHostRegistry(this); - _accessManager = new ACLManager(_configuration.getSecurityConfiguration(), _pluginManager); + _securityManager = new SecurityManager(_configuration, _pluginManager); createDatabaseManager(_configuration); @@ -282,7 +282,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry initialiseVirtualHosts(); - // Startup complete pop the current actor + // Startup complete, so pop the current actor CurrentActor.remove(); } @@ -433,9 +433,9 @@ public abstract class ApplicationRegistry implements IApplicationRegistry return _virtualHostRegistry; } - public ACLManager getAccessManager() throws ConfigurationException + public SecurityManager getSecurityManager() { - return new ACLManager(_configuration.getSecurityConfiguration(), _pluginManager); + return _securityManager; } public ManagedObjectRegistry getManagedObjectRegistry() diff --git a/java/broker/src/main/java/org/apache/qpid/server/registry/BrokerConfigAdapter.java b/java/broker/src/main/java/org/apache/qpid/server/registry/BrokerConfigAdapter.java index c8f5181416..4a4253153c 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/registry/BrokerConfigAdapter.java +++ b/java/broker/src/main/java/org/apache/qpid/server/registry/BrokerConfigAdapter.java @@ -32,7 +32,6 @@ import java.util.concurrent.ConcurrentHashMap; public class BrokerConfigAdapter implements BrokerConfig { private final IApplicationRegistry _instance; - private final int _instanceId; private SystemConfig _system; private final Map<UUID, VirtualHostConfig> _vhosts = new ConcurrentHashMap<UUID, VirtualHostConfig>(); @@ -40,10 +39,9 @@ public class BrokerConfigAdapter implements BrokerConfig private UUID _id; private String _federationTag; - public BrokerConfigAdapter(final IApplicationRegistry instance, final int instanceID) + public BrokerConfigAdapter(final IApplicationRegistry instance) { _instance = instance; - _instanceId = instanceID; _id = instance.getConfigStore().createId(); _federationTag = UUID.randomUUID().toString(); } diff --git a/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java index ae18cc0edb..b1172a880e 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java +++ b/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java @@ -20,8 +20,9 @@ */ package org.apache.qpid.server.registry; -import org.apache.commons.configuration.ConfigurationException; +import java.io.File; +import org.apache.commons.configuration.ConfigurationException; import org.apache.qpid.AMQException; import org.apache.qpid.server.configuration.ServerConfiguration; import org.apache.qpid.server.logging.actors.BrokerActor; @@ -29,8 +30,6 @@ import org.apache.qpid.server.logging.actors.CurrentActor; import org.apache.qpid.server.management.JMXManagedObjectRegistry; import org.apache.qpid.server.management.NoopManagedObjectRegistry; -import java.io.File; - public class ConfigurationFileApplicationRegistry extends ApplicationRegistry { public ConfigurationFileApplicationRegistry(File configurationURL) throws ConfigurationException @@ -38,7 +37,6 @@ public class ConfigurationFileApplicationRegistry extends ApplicationRegistry super(new ServerConfiguration(configurationURL)); } - @Override public void close() { diff --git a/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java index 62dddeda92..228c3b9112 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java +++ b/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java @@ -20,7 +20,8 @@ */ package org.apache.qpid.server.registry; -import org.apache.commons.configuration.ConfigurationException; +import java.net.InetSocketAddress; +import java.util.UUID; import org.apache.qpid.qmf.QMFService; import org.apache.qpid.server.configuration.BrokerConfig; @@ -31,16 +32,13 @@ import org.apache.qpid.server.configuration.ConfigurationManager; import org.apache.qpid.server.logging.RootMessageLogger; import org.apache.qpid.server.management.ManagedObjectRegistry; import org.apache.qpid.server.plugins.PluginManager; -import org.apache.qpid.server.security.access.ACLManager; +import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.auth.database.PrincipalDatabaseManager; import org.apache.qpid.server.security.auth.manager.AuthenticationManager; import org.apache.qpid.server.transport.QpidAcceptor; import org.apache.qpid.server.virtualhost.VirtualHost; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; -import java.net.InetSocketAddress; -import java.util.UUID; - public interface IApplicationRegistry { /** @@ -71,7 +69,7 @@ public interface IApplicationRegistry VirtualHostRegistry getVirtualHostRegistry(); - ACLManager getAccessManager() throws ConfigurationException; + SecurityManager getSecurityManager(); PluginManager getPluginManager(); diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/ManagedVirtualHost.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/ManagedVirtualHost.java index 2f0c56cc86..767474d5ae 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/ManagedVirtualHost.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/ManagedVirtualHost.java @@ -25,8 +25,7 @@ import java.io.IOException; import org.apache.qpid.management.common.mbeans.annotations.MBeanAttribute;
/**
- * The management interface exposed to allow management of an Exchange.
- * @version 0.1
+ * The management interface exposed to allow management of a virtualHost
*/
public interface ManagedVirtualHost
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java index 9e1c07863c..4ed0507228 100755 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java @@ -32,8 +32,8 @@ import org.apache.qpid.server.exchange.ExchangeFactory; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.TransactionLog; import org.apache.qpid.server.store.DurableConfigurationStore; +import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.auth.manager.AuthenticationManager; -import org.apache.qpid.server.security.access.ACLManager; import org.apache.qpid.server.management.ManagedObject; import org.apache.qpid.server.registry.IApplicationRegistry; import org.apache.qpid.server.binding.BindingFactory; @@ -65,7 +65,7 @@ public interface VirtualHost extends DurableConfigurationStore.Source, VirtualHo AuthenticationManager getAuthenticationManager(); - ACLManager getAccessManager(); + SecurityManager getSecurityManager(); void close(); diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java index ca999ceb0b..675a6f6a91 100755 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java @@ -94,21 +94,29 @@ public class VirtualHostConfigRecoveryHandler implements ConfigurationRecoveryHa public void queue(String queueName, String owner, boolean exclusive, FieldTable arguments) { - AMQShortString queueNameShortString = new AMQShortString(queueName); - - AMQQueue q = _virtualHost.getQueueRegistry().getQueue(queueNameShortString); - - if (q == null) + try { - q = AMQQueueFactory.createAMQQueueImpl(queueNameShortString, true, owner == null ? null : new AMQShortString(owner), false, exclusive, - _virtualHost, arguments); - _virtualHost.getQueueRegistry().registerQueue(q); + AMQShortString queueNameShortString = new AMQShortString(queueName); + + AMQQueue q = _virtualHost.getQueueRegistry().getQueue(queueNameShortString); + + if (q == null) + { + q = AMQQueueFactory.createAMQQueueImpl(queueNameShortString, true, owner == null ? null : new AMQShortString(owner), false, _virtualHost, + arguments); + _virtualHost.getQueueRegistry().registerQueue(q); + } + + CurrentActor.get().message(_logSubject, TransactionLogMessages.TXN_1004(queueName, true)); + + //Record that we have a queue for recovery + _queueRecoveries.put(queueName, 0); + } + catch (AMQException e) + { + // TODO + throw new RuntimeException(e); } - - CurrentActor.get().message(_logSubject, TransactionLogMessages.TXN_1004(queueName, true)); - - //Record that we have a queue for recovery - _queueRecoveries.put(queueName, 0); } public ExchangeRecoveryHandler completeQueueRecovery() @@ -131,9 +139,9 @@ public class VirtualHostConfigRecoveryHandler implements ConfigurationRecoveryHa } catch (AMQException e) { + // TODO throw new RuntimeException(e); } - } public BindingRecoveryHandler completeExchangeRecovery() diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index 2542e1e94d..44d178602f 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -159,7 +159,9 @@ public class VirtualHostImpl implements Accessable, VirtualHost } /** - * Abstract MBean class. This has some of the methods implemented from management intrerface for exchanges. Any + * Virtual host JMX MBean class. + * + * This has some of the methods implemented from management intrerface for exchanges. Any * implementaion of an Exchange MBean should extend this class. */ public class VirtualHostMBean extends AMQManagedObject implements ManagedVirtualHost @@ -183,10 +185,7 @@ public class VirtualHostImpl implements Accessable, VirtualHost { return VirtualHostImpl.this; } - - } // End of MBean class - - + } public VirtualHostImpl(IApplicationRegistry appRegistry, VirtualHostConfiguration hostConfig) throws Exception { @@ -340,9 +339,25 @@ public class VirtualHostImpl implements Accessable, VirtualHost { try { - VirtualHostHouseKeepingPlugin plugin = - plugins.get(pluginName).newInstance(this); + VirtualHostPlugin plugin = plugins.get(pluginName).newInstance(this); + + TimeUnit units = TimeUnit.MILLISECONDS; + if (plugin.getTimeUnit() != null) + { + try + { + units = TimeUnit.valueOf(plugin.getTimeUnit()); + } + catch (IllegalArgumentException iae) + { + _logger.warn("Plugin:" + pluginName + + " provided an illegal TimeUnit value:" + + plugin.getTimeUnit()); + // Warn and use default of millseconds + // Should not occur in a well behaved plugin + } + } _houseKeepingTasks.scheduleAtFixedRate(plugin, plugin.getDelay() / 2, plugin.getDelay(), plugin.getTimeUnit()); diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostHouseKeepingPlugin.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostHouseKeepingPlugin.java index d2fd4daaa5..d119190842 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostHouseKeepingPlugin.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostHouseKeepingPlugin.java @@ -20,16 +20,27 @@ */ package org.apache.qpid.server.virtualhost.plugins; +import org.apache.log4j.Logger; import org.apache.qpid.server.virtualhost.HouseKeepingTask; import org.apache.qpid.server.virtualhost.VirtualHost; import java.util.concurrent.TimeUnit; -public abstract class VirtualHostHouseKeepingPlugin extends HouseKeepingTask +public abstract class VirtualHostHouseKeepingPlugin extends HouseKeepingTask implements VirtualHostPlugin { + protected final Logger _logger = Logger.getLogger(getClass()); + + protected VirtualHost _virtualhost; + public VirtualHostHouseKeepingPlugin(VirtualHost vhost) { super(vhost); + setVirtualHost(vhost); + } + + public void setVirtualHost(VirtualHost vhost) + { + _virtualhost = vhost; } /** @@ -47,5 +58,4 @@ public abstract class VirtualHostHouseKeepingPlugin extends HouseKeepingTask * @see java.util.concurrent.TimeUnit for valid value. */ public abstract TimeUnit getTimeUnit(); - } diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java new file mode 100644 index 0000000000..59ab7ec673 --- /dev/null +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java @@ -0,0 +1,43 @@ +/* + * + * 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. + * + */ +package org.apache.qpid.server.virtualhost.plugins; + +import org.apache.qpid.server.plugins.Plugin; +import org.apache.qpid.server.virtualhost.VirtualHost; + +public interface VirtualHostPlugin extends Runnable, Plugin +{ + public void setVirtualHost(VirtualHost vhost); + + /** + * Long value representing the delay between repeats + * + * @return + */ + public long getDelay(); + + /** + * Option to specify what the delay value represents + * @see java.util.concurrent.TimeUnit for valid value. + * @return + */ + public String getTimeUnit(); +} diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java index c8bea18444..5335925fb0 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java @@ -20,9 +20,10 @@ */ package org.apache.qpid.server.virtualhost.plugins; +import org.apache.commons.configuration.ConfigurationException; import org.apache.qpid.server.virtualhost.VirtualHost; public interface VirtualHostPluginFactory { - public VirtualHostHouseKeepingPlugin newInstance(VirtualHost vhost); + public VirtualHostHouseKeepingPlugin newInstance(VirtualHost vhost) throws ConfigurationException; } diff --git a/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java b/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java index 7a2c99cd77..059ee5f54a 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java +++ b/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java @@ -33,7 +33,6 @@ import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.XMLConfiguration; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.server.exchange.Exchange; -import org.apache.qpid.server.exchange.ExchangeType; import org.apache.qpid.server.protocol.AMQProtocolEngine; import org.apache.qpid.server.protocol.AMQProtocolSession; import org.apache.qpid.server.registry.ApplicationRegistry; @@ -65,7 +64,7 @@ public class ServerConfigurationTest extends TestCase public void testSetJMXManagementPort() throws ConfigurationException { ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); serverConfig.setJMXManagementPort(23); assertEquals(23, serverConfig.getJMXManagementPort()); } @@ -74,7 +73,7 @@ public class ServerConfigurationTest extends TestCase { _config.setProperty("management.jmxport", 42); ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(42, serverConfig.getJMXManagementPort()); } @@ -82,13 +81,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getPlatformMbeanserver()); // Check value we set _config.setProperty("management.platform-mbeanserver", false); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getPlatformMbeanserver()); } @@ -96,28 +95,42 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(null, serverConfig.getPluginDirectory()); // Check value we set _config.setProperty("plugin-directory", "/path/to/plugins"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("/path/to/plugins", serverConfig.getPluginDirectory()); } + public void testGetCacheDirectory() throws ConfigurationException + { + // Check default + ServerConfiguration serverConfig = new ServerConfiguration(_config); + serverConfig.initialise(); + assertEquals(null, serverConfig.getCacheDirectory()); + + // Check value we set + _config.setProperty("cache-directory", "/path/to/cache"); + serverConfig = new ServerConfiguration(_config); + serverConfig.initialise(); + assertEquals("/path/to/cache", serverConfig.getCacheDirectory()); + } + public void testGetPrincipalDatabaseNames() throws ConfigurationException { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getPrincipalDatabaseNames().size()); // Check value we set _config.setProperty("security.principal-databases.principal-database(0).name", "a"); _config.setProperty("security.principal-databases.principal-database(1).name", "b"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); List<String> dbs = serverConfig.getPrincipalDatabaseNames(); assertEquals(2, dbs.size()); assertEquals("a", dbs.get(0)); @@ -128,14 +141,14 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getPrincipalDatabaseClass().size()); // Check value we set _config.setProperty("security.principal-databases.principal-database(0).class", "a"); _config.setProperty("security.principal-databases.principal-database(1).class", "b"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); List<String> dbs = serverConfig.getPrincipalDatabaseClass(); assertEquals(2, dbs.size()); assertEquals("a", dbs.get(0)); @@ -146,14 +159,14 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getPrincipalDatabaseAttributeNames(1).size()); // Check value we set _config.setProperty("security.principal-databases.principal-database(0).attributes(0).attribute.name", "a"); _config.setProperty("security.principal-databases.principal-database(0).attributes(1).attribute.name", "b"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); List<String> dbs = serverConfig.getPrincipalDatabaseAttributeNames(0); assertEquals(2, dbs.size()); assertEquals("a", dbs.get(0)); @@ -164,14 +177,14 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getPrincipalDatabaseAttributeValues(1).size()); // Check value we set _config.setProperty("security.principal-databases.principal-database(0).attributes(0).attribute.value", "a"); _config.setProperty("security.principal-databases.principal-database(0).attributes(1).attribute.value", "b"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); List<String> dbs = serverConfig.getPrincipalDatabaseAttributeValues(0); assertEquals(2, dbs.size()); assertEquals("a", dbs.get(0)); @@ -182,14 +195,14 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getManagementAccessList().size()); // Check value we set _config.setProperty("security.jmx.access(0)", "a"); _config.setProperty("security.jmx.access(1)", "b"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); List<String> dbs = serverConfig.getManagementAccessList(); assertEquals(2, dbs.size()); assertEquals("a", dbs.get(0)); @@ -200,13 +213,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(65536, serverConfig.getFrameSize()); // Check value we set _config.setProperty("advanced.framesize", "23"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getFrameSize()); } @@ -214,13 +227,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getProtectIOEnabled()); // Check value we set _config.setProperty(ServerConfiguration.CONNECTOR_PROTECTIO_ENABLED, true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getProtectIOEnabled()); } @@ -228,13 +241,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(262144, serverConfig.getBufferReadLimit()); // Check value we set _config.setProperty(ServerConfiguration.CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE, 23); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getBufferReadLimit()); } @@ -242,13 +255,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(262144, serverConfig.getBufferWriteLimit()); // Check value we set _config.setProperty(ServerConfiguration.CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE, 23); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getBufferWriteLimit()); } @@ -257,20 +270,20 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(ServerConfiguration.DEFAULT_STATUS_UPDATES.equalsIgnoreCase("on"), serverConfig.getStatusUpdatesEnabled()); // Check disabling we set _config.setProperty(ServerConfiguration.STATUS_UPDATES, "off"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getStatusUpdatesEnabled()); // Check invalid values don't cause error but result in disabled _config.setProperty(ServerConfiguration.STATUS_UPDATES, "Yes Please"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getStatusUpdatesEnabled()); } @@ -278,13 +291,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getSynchedClocks()); // Check value we set _config.setProperty("advanced.synced-clocks", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getSynchedClocks()); } @@ -292,7 +305,7 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); // The Default is what ever the VMs default is Locale defaultLocale = Locale.getDefault(); @@ -304,21 +317,21 @@ public class ServerConfigurationTest extends TestCase Locale update = new Locale("es"); _config.setProperty(ServerConfiguration.ADVANCED_LOCALE, "es"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(update, serverConfig.getLocale()); //Test Language and Country update = new Locale("es","ES"); _config.setProperty(ServerConfiguration.ADVANCED_LOCALE, "es_ES"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(update, serverConfig.getLocale()); //Test Language and Country and Variant update = new Locale("es","ES", "Traditional_WIN"); _config.setProperty(ServerConfiguration.ADVANCED_LOCALE, "es_ES_Traditional_WIN"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(update, serverConfig.getLocale()); } @@ -327,13 +340,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getMsgAuth()); // Check value we set _config.setProperty("security.msg-auth", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getMsgAuth()); } @@ -341,13 +354,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(null, serverConfig.getJMXPrincipalDatabase()); // Check value we set _config.setProperty("security.jmx.principal-database", "a"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("a", serverConfig.getJMXPrincipalDatabase()); } @@ -355,13 +368,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(null, serverConfig.getManagementKeyStorePath()); // Check value we set _config.setProperty("management.ssl.keyStorePath", "a"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("a", serverConfig.getManagementKeyStorePath()); } @@ -369,13 +382,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getManagementSSLEnabled()); // Check value we set _config.setProperty("management.ssl.enabled", false); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getManagementSSLEnabled()); } @@ -383,13 +396,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(null, serverConfig.getManagementKeyStorePassword()); // Check value we set _config.setProperty("management.ssl.keyStorePassword", "a"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("a", serverConfig.getManagementKeyStorePassword()); } @@ -397,13 +410,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getQueueAutoRegister()); // Check value we set _config.setProperty("queue.auto_register", false); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getQueueAutoRegister()); } @@ -411,13 +424,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getManagementEnabled()); // Check value we set _config.setProperty("management.enabled", false); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getManagementEnabled()); } @@ -425,7 +438,7 @@ public class ServerConfigurationTest extends TestCase { // Check value we set ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); serverConfig.setManagementEnabled(false); assertEquals(false, serverConfig.getManagementEnabled()); } @@ -434,13 +447,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(5, serverConfig.getHeartBeatDelay()); // Check value we set _config.setProperty("heartbeat.delay", 23); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getHeartBeatDelay()); } @@ -448,13 +461,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(2.0, serverConfig.getHeartBeatTimeout()); // Check value we set _config.setProperty("heartbeat.timeoutFactor", 2.3); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(2.3, serverConfig.getHeartBeatTimeout()); } @@ -462,13 +475,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getMaximumMessageAge()); // Check value we set _config.setProperty("maximumMessageAge", 10L); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(10, serverConfig.getMaximumMessageAge()); } @@ -476,13 +489,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getMaximumMessageCount()); // Check value we set _config.setProperty("maximumMessageCount", 10L); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(10, serverConfig.getMaximumMessageCount()); } @@ -490,13 +503,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getMaximumQueueDepth()); // Check value we set _config.setProperty("maximumQueueDepth", 10L); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(10, serverConfig.getMaximumQueueDepth()); } @@ -504,13 +517,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getMaximumMessageSize()); // Check value we set _config.setProperty("maximumMessageSize", 10L); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(10, serverConfig.getMaximumMessageSize()); } @@ -518,13 +531,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(0, serverConfig.getMinimumAlertRepeatGap()); // Check value we set _config.setProperty("minimumAlertRepeatGap", 10L); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(10, serverConfig.getMinimumAlertRepeatGap()); } @@ -532,13 +545,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(4, serverConfig.getProcessors()); // Check value we set _config.setProperty("connector.processors", 10); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(10, serverConfig.getProcessors()); } @@ -546,7 +559,7 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertNotNull(serverConfig.getPorts()); assertEquals(1, serverConfig.getPorts().size()); assertEquals(5672, serverConfig.getPorts().get(0)); @@ -555,7 +568,7 @@ public class ServerConfigurationTest extends TestCase // Check value we set _config.setProperty("connector.port", "10"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertNotNull(serverConfig.getPorts()); assertEquals(1, serverConfig.getPorts().size()); assertEquals("10", serverConfig.getPorts().get(0)); @@ -565,13 +578,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("wildcard", serverConfig.getBind()); // Check value we set _config.setProperty("connector.bind", "a"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("a", serverConfig.getBind()); } @@ -579,13 +592,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(32767, serverConfig.getReceiveBufferSize()); // Check value we set _config.setProperty("connector.socketReceiveBuffer", "23"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getReceiveBufferSize()); } @@ -593,13 +606,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(32767, serverConfig.getWriteBufferSize()); // Check value we set _config.setProperty("connector.socketWriteBuffer", "23"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getWriteBufferSize()); } @@ -607,13 +620,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getTcpNoDelay()); // Check value we set _config.setProperty("connector.tcpNoDelay", false); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getTcpNoDelay()); } @@ -621,13 +634,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getEnableExecutorPool()); // Check value we set _config.setProperty("advanced.filterchain[@enableExecutorPool]", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getEnableExecutorPool()); } @@ -635,13 +648,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getEnablePooledAllocator()); // Check value we set _config.setProperty("advanced.enablePooledAllocator", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getEnablePooledAllocator()); } @@ -649,13 +662,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getEnableDirectBuffers()); // Check value we set _config.setProperty("advanced.enableDirectBuffers", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getEnableDirectBuffers()); } @@ -663,13 +676,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getEnableSSL()); // Check value we set _config.setProperty("connector.ssl.enabled", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getEnableSSL()); } @@ -677,13 +690,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getSSLOnly()); // Check value we set _config.setProperty("connector.ssl.sslOnly", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getSSLOnly()); } @@ -691,13 +704,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(8672, serverConfig.getSSLPort()); // Check value we set _config.setProperty("connector.ssl.port", 23); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getSSLPort()); } @@ -705,13 +718,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("none", serverConfig.getKeystorePath()); // Check value we set _config.setProperty("connector.ssl.keystorePath", "a"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("a", serverConfig.getKeystorePath()); } @@ -719,13 +732,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("none", serverConfig.getKeystorePassword()); // Check value we set _config.setProperty("connector.ssl.keystorePassword", "a"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("a", serverConfig.getKeystorePassword()); } @@ -733,13 +746,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("SunX509", serverConfig.getCertType()); // Check value we set _config.setProperty("connector.ssl.certType", "a"); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals("a", serverConfig.getCertType()); } @@ -747,13 +760,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getQpidNIO()); // Check value we set _config.setProperty("connector.qpidnio", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getQpidNIO()); } @@ -761,13 +774,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(false, serverConfig.getUseBiasedWrites()); // Check value we set _config.setProperty("advanced.useWriteBiasedPool", true); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(true, serverConfig.getUseBiasedWrites()); } @@ -775,13 +788,13 @@ public class ServerConfigurationTest extends TestCase { // Check default ServerConfiguration serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(30000, serverConfig.getHousekeepingCheckPeriod()); // Check value we set _config.setProperty("housekeeping.expiredMessageCheckPeriod", 23L); serverConfig = new ServerConfiguration(_config); - serverConfig.configure(); + serverConfig.initialise(); assertEquals(23, serverConfig.getHousekeepingCheckPeriod()); serverConfig.setHousekeepingExpiredMessageCheckPeriod(42L); assertEquals(42, serverConfig.getHousekeepingCheckPeriod()); @@ -795,7 +808,7 @@ public class ServerConfigurationTest extends TestCase out.write("<broker><connector><port>2342</port><ssl><port>4235</port></ssl></connector></broker>"); out.close(); ServerConfiguration conf = new ServerConfiguration(fileA); - conf.configure(); + conf.initialise(); assertEquals(4235, conf.getSSLPort()); } @@ -825,7 +838,7 @@ public class ServerConfigurationTest extends TestCase out.close(); ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); assertEquals(4235, config.getSSLPort()); // From first file, not // overriden by second assertNotNull(config.getPorts()); @@ -850,158 +863,11 @@ public class ServerConfigurationTest extends TestCase out.close(); ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); assertEquals("Did not get correct interpolated value", "foo", config.getManagementKeyStorePath()); } - public void testFirewallConfiguration() throws Exception - { - // Write out config - File mainFile = File.createTempFile(getClass().getName(), null); - mainFile.deleteOnExit(); - writeConfigFile(mainFile, false); - - // Load config - ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile); - try - { - ApplicationRegistry.initialise(reg, 1); - - // Test config - VirtualHostRegistry virtualHostRegistry = reg.getVirtualHostRegistry(); - VirtualHost virtualHost = virtualHostRegistry.getVirtualHost("test"); - - TestNetworkDriver testDriver = new TestNetworkDriver(); - testDriver.setRemoteAddress("127.0.0.1"); - - AMQProtocolEngine session = new AMQProtocolEngine(virtualHostRegistry, testDriver); - assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost)); - - testDriver.setRemoteAddress("127.1.2.3"); - session = new AMQProtocolEngine(virtualHostRegistry, testDriver); - assertTrue(reg.getAccessManager().authoriseConnect(session, virtualHost)); - } - finally - { - ApplicationRegistry.remove(1); - } - } - - public void testCombinedConfigurationFirewall() throws Exception - { - // Write out config - File mainFile = File.createTempFile(getClass().getName(), null); - File fileA = File.createTempFile(getClass().getName(), null); - File fileB = File.createTempFile(getClass().getName(), null); - - mainFile.deleteOnExit(); - fileA.deleteOnExit(); - fileB.deleteOnExit(); - - FileWriter out = new FileWriter(mainFile); - out.write("<configuration><system/>"); - out.write("<xml fileName=\"" + fileA.getAbsolutePath() + "\"/>"); - out.write("</configuration>"); - out.close(); - - out = new FileWriter(fileA); - out.write("<broker>\n"); - out.write("\t<management><enabled>false</enabled></management>\n"); - out.write("\t<security>\n"); - out.write("\t\t<principal-databases>\n"); - out.write("\t\t\t<principal-database>\n"); - out.write("\t\t\t\t<name>passwordfile</name>\n"); - out.write("\t\t\t\t<class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class>\n"); - out.write("\t\t\t\t<attributes>\n"); - out.write("\t\t\t\t\t<attribute>\n"); - out.write("\t\t\t\t\t\t<name>passwordFile</name>\n"); - out.write("\t\t\t\t\t\t<value>/dev/null</value>\n"); - out.write("\t\t\t\t\t</attribute>\n"); - out.write("\t\t\t\t</attributes>\n"); - out.write("\t\t\t</principal-database>\n"); - out.write("\t\t</principal-databases>\n"); - out.write("\t\t<jmx>\n"); - out.write("\t\t\t<access>/dev/null</access>\n"); - out.write("\t\t\t<principal-database>passwordfile</principal-database>\n"); - out.write("\t\t</jmx>\n"); - out.write("\t\t<firewall>\n"); - out.write("\t\t\t<xml fileName=\"" + fileB.getAbsolutePath() + "\"/>"); - out.write("\t\t</firewall>\n"); - out.write("\t</security>\n"); - out.write("\t<virtualhosts>\n"); - out.write("\t\t<virtualhost>\n"); - out.write("\t\t\t<name>test</name>\n"); - out.write("\t\t</virtualhost>\n"); - out.write("\t</virtualhosts>\n"); - out.write("</broker>\n"); - out.close(); - - out = new FileWriter(fileB); - out.write("<firewall>\n"); - out.write("\t<rule access=\"deny\" network=\"127.0.0.1\"/>"); - out.write("</firewall>\n"); - out.close(); - - // Load config - ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile); - try - { - ApplicationRegistry.initialise(reg, 1); - - // Test config - VirtualHostRegistry virtualHostRegistry = reg.getVirtualHostRegistry(); - VirtualHost virtualHost = virtualHostRegistry.getVirtualHost("test"); - - TestNetworkDriver testDriver = new TestNetworkDriver(); - testDriver.setRemoteAddress("127.0.0.1"); - - AMQProtocolEngine session = new AMQProtocolEngine(virtualHostRegistry, testDriver); - session.setNetworkDriver(testDriver); - assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost)); - } - finally - { - ApplicationRegistry.remove(1); - } - } - - public void testConfigurationFirewallReload() throws Exception - { - // Write out config - File mainFile = File.createTempFile(getClass().getName(), null); - - mainFile.deleteOnExit(); - writeConfigFile(mainFile, false); - - // Load config - ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile); - try - { - ApplicationRegistry.initialise(reg, 1); - - // Test config - TestNetworkDriver testDriver = new TestNetworkDriver(); - testDriver.setRemoteAddress("127.0.0.1"); - VirtualHostRegistry virtualHostRegistry = reg.getVirtualHostRegistry(); - VirtualHost virtualHost = virtualHostRegistry.getVirtualHost("test"); - AMQProtocolSession session = new AMQProtocolEngine(virtualHostRegistry, testDriver); - - assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost)); - - // Switch to deny the connection - writeConfigFile(mainFile, true); - - reg.getConfiguration().reparseConfigFileSecuritySections(); - - assertTrue(reg.getAccessManager().authoriseConnect(session, virtualHost)); - } - finally - { - ApplicationRegistry.remove(1); - } - } - private void writeConfigFile(File mainFile, boolean allow) throws IOException { writeConfigFile(mainFile, allow, true, null, "test"); } @@ -1112,126 +978,6 @@ public class ServerConfigurationTest extends TestCase out.close(); } - private void writeFirewallVhostsFile(File vhostsFile, boolean allow) throws IOException - { - FileWriter out = new FileWriter(vhostsFile); - String ipAddr = "127.0.0.1"; // FIXME: get this from InetAddress.getLocalHost().getAddress() ? - out.write("<virtualhosts><virtualhost>"); - out.write("<name>test</name>"); - out.write("<test>"); - out.write("<security><firewall>"); - out.write("<rule access=\""+((allow) ? "allow" : "deny")+"\" network=\""+ipAddr +"\"/>"); - out.write("</firewall></security>"); - out.write("</test>"); - out.write("</virtualhost></virtualhosts>"); - out.close(); - } - - public void testCombinedConfigurationFirewallReload() throws Exception - { - // Write out config - File mainFile = File.createTempFile(getClass().getName(), null); - File fileA = File.createTempFile(getClass().getName(), null); - File fileB = File.createTempFile(getClass().getName(), null); - - mainFile.deleteOnExit(); - fileA.deleteOnExit(); - fileB.deleteOnExit(); - - FileWriter out = new FileWriter(mainFile); - out.write("<configuration><system/>"); - out.write("<xml fileName=\"" + fileA.getAbsolutePath() + "\"/>"); - out.write("</configuration>"); - out.close(); - - out = new FileWriter(fileA); - out.write("<broker>\n"); - out.write("\t<management><enabled>false</enabled></management>\n"); - out.write("\t<security>\n"); - out.write("\t\t<principal-databases>\n"); - out.write("\t\t\t<principal-database>\n"); - out.write("\t\t\t\t<name>passwordfile</name>\n"); - out.write("\t\t\t\t<class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class>\n"); - out.write("\t\t\t\t<attributes>\n"); - out.write("\t\t\t\t\t<attribute>\n"); - out.write("\t\t\t\t\t\t<name>passwordFile</name>\n"); - out.write("\t\t\t\t\t\t<value>/dev/null</value>\n"); - out.write("\t\t\t\t\t</attribute>\n"); - out.write("\t\t\t\t</attributes>\n"); - out.write("\t\t\t</principal-database>\n"); - out.write("\t\t</principal-databases>\n"); - out.write("\t\t<jmx>\n"); - out.write("\t\t\t<access>/dev/null</access>\n"); - out.write("\t\t\t<principal-database>passwordfile</principal-database>\n"); - out.write("\t\t</jmx>\n"); - out.write("\t\t<firewall>\n"); - out.write("\t\t\t<xml fileName=\"" + fileB.getAbsolutePath() + "\"/>"); - out.write("\t\t</firewall>\n"); - out.write("\t</security>\n"); - out.write("\t<virtualhosts>\n"); - out.write("\t\t<virtualhost>\n"); - out.write("\t\t\t<name>test</name>\n"); - out.write("\t\t</virtualhost>\n"); - out.write("\t</virtualhosts>\n"); - out.write("</broker>\n"); - out.close(); - - out = new FileWriter(fileB); - out.write("<firewall>\n"); - out.write("\t<rule access=\"deny\" network=\"127.0.0.1\"/>"); - out.write("</firewall>\n"); - out.close(); - - // Load config - ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile); - try - { - ApplicationRegistry.initialise(reg, 1); - - // Test config - TestNetworkDriver testDriver = new TestNetworkDriver(); - testDriver.setRemoteAddress("127.0.0.1"); - VirtualHostRegistry virtualHostRegistry = reg.getVirtualHostRegistry(); - VirtualHost virtualHost = virtualHostRegistry.getVirtualHost("test"); - AMQProtocolSession session = new AMQProtocolEngine(virtualHostRegistry, testDriver); - assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost)); - - RandomAccessFile fileBRandom = new RandomAccessFile(fileB, "rw"); - fileBRandom.setLength(0); - fileBRandom.seek(0); - fileBRandom.close(); - - out = new FileWriter(fileB); - out.write("<firewall>\n"); - out.write("\t<rule access=\"allow\" network=\"127.0.0.1\"/>"); - out.write("</firewall>\n"); - out.close(); - - reg.getConfiguration().reparseConfigFileSecuritySections(); - - assertTrue(reg.getAccessManager().authoriseConnect(session, virtualHost)); - - fileBRandom = new RandomAccessFile(fileB, "rw"); - fileBRandom.setLength(0); - fileBRandom.seek(0); - fileBRandom.close(); - - out = new FileWriter(fileB); - out.write("<firewall>\n"); - out.write("\t<rule access=\"deny\" network=\"127.0.0.1\"/>"); - out.write("</firewall>\n"); - out.close(); - - reg.getConfiguration().reparseConfigFileSecuritySections(); - - assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost)); - } - finally - { - ApplicationRegistry.remove(1); - } - } - private void writeVirtualHostsFile(File vhostsFile, String name) throws IOException { FileWriter out = new FileWriter(vhostsFile); out.write("<virtualhosts>\n"); @@ -1450,7 +1196,6 @@ public class ServerConfigurationTest extends TestCase // Load config try { - @SuppressWarnings("unused") ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile); ApplicationRegistry.initialise(reg, 1); fail("Different virtualhost XML configurations not allowed"); @@ -1485,7 +1230,6 @@ public class ServerConfigurationTest extends TestCase // Load config try { - @SuppressWarnings("unused") ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile); ApplicationRegistry.initialise(reg, 1); fail("Multiple virtualhost XML configurations not allowed"); @@ -1527,9 +1271,8 @@ public class ServerConfigurationTest extends TestCase // Load config try { - @SuppressWarnings("unused") ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); fail("Different virtualhost XML configurations not allowed"); } catch (ConfigurationException ce) @@ -1559,7 +1302,7 @@ public class ServerConfigurationTest extends TestCase // Load config ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); // Test config VirtualHostConfiguration virtualHost = config.getVirtualHostConfig("a"); @@ -1597,7 +1340,7 @@ public class ServerConfigurationTest extends TestCase // Load config ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); // Test config VirtualHostConfiguration virtualHost = config.getVirtualHostConfig("one"); @@ -1651,7 +1394,7 @@ public class ServerConfigurationTest extends TestCase // Load config ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); // Test config VirtualHostConfiguration testHost = config.getVirtualHostConfig("test"); @@ -1665,34 +1408,6 @@ public class ServerConfigurationTest extends TestCase assertEquals("Incorrect virtualhost name", "fish", fishHost.getName()); assertTrue("Incorrect exchange durable property", fishExchange.getDurable()); } - - /** - * Test that configuration loads correctly when virtual hosts are specified in an external - * configuration file only. - * <p> - * Test for QPID-2360 - */ - public void testExternalFirewallVirtualhostXMLFile() throws Exception - { - // Write out config - File mainFile = File.createTempFile(getClass().getName(), "config"); - mainFile.deleteOnExit(); - File vhostsFile = File.createTempFile(getClass().getName(), "vhosts"); - vhostsFile.deleteOnExit(); - writeConfigFile(mainFile, false, false, vhostsFile, null); - writeFirewallVhostsFile(vhostsFile, false); - - // Load config - ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile); - ApplicationRegistry.initialise(reg, 1); - - // Test config - VirtualHostRegistry virtualHostRegistry = reg.getVirtualHostRegistry(); - VirtualHost virtualHost = virtualHostRegistry.getVirtualHost("test"); - - assertEquals("Incorrect virtualhost count", 1, virtualHostRegistry.getVirtualHosts().size()); - assertEquals("Incorrect virtualhost name", "test", virtualHost.getName()); - } /** * Test that configuration loads correctly when the virtualhost configuration is a set of overriding @@ -1733,7 +1448,7 @@ public class ServerConfigurationTest extends TestCase // Load config ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); // Test config VirtualHostConfiguration testHost = config.getVirtualHostConfig("test"); @@ -1771,7 +1486,7 @@ public class ServerConfigurationTest extends TestCase // Load config ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); - config.configure(); + config.initialise(); // Test config VirtualHostConfiguration oneHost = config.getVirtualHostConfig("test-one"); diff --git a/java/broker/src/test/java/org/apache/qpid/server/util/NullApplicationRegistry.java b/java/broker/src/test/java/org/apache/qpid/server/util/NullApplicationRegistry.java index 9f00ce3cad..d757cdc3e6 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/util/NullApplicationRegistry.java +++ b/java/broker/src/test/java/org/apache/qpid/server/util/NullApplicationRegistry.java @@ -20,9 +20,11 @@ */ package org.apache.qpid.server.util; +import java.util.NoSuchElementException; +import java.util.Properties; + import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; - import org.apache.qpid.server.configuration.ServerConfiguration; import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.logging.actors.BrokerActor; @@ -31,9 +33,6 @@ import org.apache.qpid.server.logging.actors.TestLogActor; import org.apache.qpid.server.registry.ApplicationRegistry; import org.apache.qpid.server.security.auth.database.PropertiesPrincipalDatabaseManager; -import java.util.NoSuchElementException; -import java.util.Properties; - public class NullApplicationRegistry extends ApplicationRegistry { // Private Exception to track tests that cause Log Actor to become unset. @@ -65,7 +64,6 @@ public class NullApplicationRegistry extends ApplicationRegistry } } - @Override public void initialise(int instanceID) throws Exception { @@ -117,6 +115,3 @@ public class NullApplicationRegistry extends ApplicationRegistry } } } - - - diff --git a/java/broker/src/test/java/org/apache/qpid/server/util/TestApplicationRegistry.java b/java/broker/src/test/java/org/apache/qpid/server/util/TestApplicationRegistry.java index 95ff096d6c..28cd576fb6 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/util/TestApplicationRegistry.java +++ b/java/broker/src/test/java/org/apache/qpid/server/util/TestApplicationRegistry.java @@ -23,6 +23,21 @@ package org.apache.qpid.server.util; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.qpid.server.configuration.ServerConfiguration; +import org.apache.qpid.server.configuration.VirtualHostConfiguration; +import org.apache.qpid.server.exchange.ExchangeFactory; +import org.apache.qpid.server.exchange.ExchangeRegistry; +import org.apache.qpid.server.logging.RootMessageLoggerImpl; +import org.apache.qpid.server.logging.actors.CurrentActor; +import org.apache.qpid.server.logging.actors.TestLogActor; +import org.apache.qpid.server.logging.rawloggers.Log4jMessageLogger; +import org.apache.qpid.server.management.NoopManagedObjectRegistry; +import org.apache.qpid.server.queue.QueueRegistry; +import org.apache.qpid.server.registry.ApplicationRegistry; +import org.apache.qpid.server.security.SecurityManager; +import org.apache.qpid.server.security.access.plugins.AllowAll; +import org.apache.qpid.server.security.auth.database.PropertiesPrincipalDatabaseManager; +import org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticationManager; +import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.TestableMemoryMessageStore; public class TestApplicationRegistry extends NullApplicationRegistry diff --git a/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java b/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java index c39c3a0add..d7932dae78 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java @@ -113,7 +113,7 @@ public class AlertingTest extends AbstractTestLogging message.append("\nVirtualhost maxMessageCount:\n"); ServerConfiguration config = new ServerConfiguration(_configFile); - config.configure();; + config.initialise(); message.append(config.getVirtualHostConfig(VIRTUALHOST).getMaximumMessageCount()); fail(message.toString()); diff --git a/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java b/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java index 533fc94aeb..13b0b7dda1 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/logging/DerbyMessageStoreLoggingTest.java @@ -59,7 +59,7 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest // Load the default configuration file to get the list of defined vhosts ServerConfiguration configuration = new ServerConfiguration(new File(_configFile.getParent() + "/config.xml")); - configuration.configure(); + configuration.initialise(); List<String> vhosts = configuration.getConfig().getList("virtualhosts.virtualhost.name"); // Make them all persistent i.e. Use DerbyMessageStore and @@ -100,7 +100,7 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = configuration.getConfig().getList("virtualhosts.virtualhost.name"); //Validate each vhost logs a creation @@ -164,7 +164,7 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = configuration.getConfig().getList("virtualhosts.virtualhost.name"); //Validate each vhost logs a creation @@ -232,7 +232,7 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = configuration.getConfig().getList("virtualhosts.virtualhost.name"); //Validate each vhost logs a creation @@ -299,7 +299,7 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = configuration.getConfig().getList("virtualhosts.virtualhost.name"); //Validate each vhost logs a creation @@ -365,7 +365,7 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = configuration.getConfig().getList("virtualhosts.virtualhost.name"); //Validate each vhost logs a creation @@ -508,7 +508,7 @@ public class DerbyMessageStoreLoggingTest extends MemoryMessageStoreLoggingTest // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = configuration.getConfig().getList("virtualhosts.virtualhost.name"); //Validate each vhost logs a creation diff --git a/java/systests/src/main/java/org/apache/qpid/server/logging/MemoryMessageStoreLoggingTest.java b/java/systests/src/main/java/org/apache/qpid/server/logging/MemoryMessageStoreLoggingTest.java index 0eccf6e5ac..294838201f 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/logging/MemoryMessageStoreLoggingTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/logging/MemoryMessageStoreLoggingTest.java @@ -88,14 +88,14 @@ public class MemoryMessageStoreLoggingTest extends AbstractTestLogging //1 assertEquals("MST-1001 is not the first MST message", "MST-1001", getMessageID(fromMessage(log))); + //Validate each vhost logs a creation + results = _monitor.waitAndFindMatches("MST-1001", DEFAULT_LOG_WAIT); + // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = Arrays.asList(configuration.getVirtualHosts()); - //Validate each vhost logs a creation - results = _monitor.waitAndFindMatches("MST-1001", DEFAULT_LOG_WAIT); - assertEquals("Each vhost did not create a store.", vhosts.size(), results.size()); for (int index = 0; index < results.size(); index++) @@ -155,7 +155,7 @@ public class MemoryMessageStoreLoggingTest extends AbstractTestLogging // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = Arrays.asList(configuration.getVirtualHosts()); //Validate each vhost logs a creation diff --git a/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java b/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java index 6631f6bbbd..a82e0c7496 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/logging/VirtualHostLoggingTest.java @@ -70,7 +70,7 @@ public class VirtualHostLoggingTest extends AbstractTestLogging { // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = Arrays.asList(configuration.getVirtualHosts()); assertEquals("Each vhost did not create a store.", vhosts.size(), results.size()); @@ -124,7 +124,7 @@ public class VirtualHostLoggingTest extends AbstractTestLogging { // Load VirtualHost list from file. ServerConfiguration configuration = new ServerConfiguration(_configFile); - configuration.configure(); + configuration.initialise(); List<String> vhosts = Arrays.asList(configuration.getVirtualHosts()); assertEquals("Each vhost did not close their store.", vhosts.size(), results.size()); |
