diff options
author | Martin Ritchie <ritchiem@apache.org> | 2010-06-03 21:27:48 +0000 |
---|---|---|
committer | Martin Ritchie <ritchiem@apache.org> | 2010-06-03 21:27:48 +0000 |
commit | 1fcfcde8c0ecb27ccd8387857006646bebd44d39 (patch) | |
tree | 3e67456cd746910f9d1c570946807710d9bb7d7a | |
parent | 378a7020fdb911c2009fa5846f554cd8dbf14b39 (diff) | |
download | qpid-python-1fcfcde8c0ecb27ccd8387857006646bebd44d39.tar.gz |
QPID-2581 : Update Plugins that use configuration to only throw ConfigurationExceptions during the configuration phase of loading configuration.
Creating a plugin and providing it with configuration should not throw a configuration exception.
Added configuration validation to newer plugins SimpleXML still needs validation.
todo Docuement Configuration mechanism.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@951159 13f79535-47bb-0310-9956-ffa450edef68
17 files changed, 206 insertions, 99 deletions
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java index 69e3218bf5..59fbaa4a34 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java @@ -79,13 +79,6 @@ public class AccessControl extends AbstractPlugin return _ruleSet.getDefault(); } - /** Parse a version two access control file. */ - private void parseFile(File aclFile) throws ConfigurationException - { - ConfigurationFile configFile = new PlainConfiguration(aclFile); - _ruleSet = configFile.load(); - } - /** * Object instance access authorisation. * @@ -115,14 +108,12 @@ public class AccessControl extends AbstractPlugin return _ruleSet.check(principal.getName(), operation, objectType, properties); } - public void configure(ConfigurationPlugin config) throws ConfigurationException + public void configure(ConfigurationPlugin config) { super.configure(config); AccessControlConfiguration accessConfig = (AccessControlConfiguration) _config; - String fileName = accessConfig.getFileName(); - File aclFile = new File(fileName); - parseFile(aclFile); + _ruleSet = accessConfig.getRuleSet(); } } diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java index 2d6ac99a98..f7db740ebc 100644 --- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java +++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.server.security.access.plugins; +import java.io.File; import java.util.Arrays; import java.util.List; @@ -27,6 +28,9 @@ import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin; import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory; +import org.apache.qpid.server.security.access.config.ConfigurationFile; +import org.apache.qpid.server.security.access.config.PlainConfiguration; +import org.apache.qpid.server.security.access.config.RuleSet; public class AccessControlConfiguration extends ConfigurationPlugin { @@ -41,17 +45,39 @@ public class AccessControlConfiguration extends ConfigurationPlugin public List<String> getParentPaths() { - return Arrays.asList("security", "virtualhosts.virtualhost.security"); + return Arrays.asList("security.aclv2", "virtualhosts.virtualhost.security.aclv2"); } }; + private RuleSet _ruleSet; + public String[] getElementsProcessed() { - return new String[] { "aclv2" }; + return new String[] { "" }; } public String getFileName() { - return _configuration.getString("aclv2"); + return _configuration.getString(""); } + + public void validateConfiguration() throws ConfigurationException + { + String filename = getFileName(); + if (filename == null) + { + throw new ConfigurationException("No ACL file name specified"); + } + + File aclFile = new File(filename); + + ConfigurationFile configFile = new PlainConfiguration(aclFile); + _ruleSet = configFile.load(); + } + + public RuleSet getRuleSet() + { + return _ruleSet; + } + } diff --git a/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java b/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java index 6b5be4a9e2..73ba91f1e8 100644 --- a/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java +++ b/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java @@ -38,32 +38,24 @@ class SlowConsumerDetection extends VirtualHostHouseKeepingPlugin public static class SlowConsumerFactory implements VirtualHostPluginFactory { - public Class<SlowConsumerDetection> getPluginClass() + public SlowConsumerDetection newInstance(VirtualHost vhost) { - return SlowConsumerDetection.class; - } + SlowConsumerDetectionConfiguration config = vhost.getConfiguration().getConfiguration(SlowConsumerDetectionConfiguration.class); - public String getPluginName() - { - return SlowConsumerDetection.class.getName(); - } + if (config == null) + { + return null; + } - public SlowConsumerDetection newInstance(VirtualHost vhost) throws ConfigurationException - { SlowConsumerDetection plugin = new SlowConsumerDetection(vhost); - plugin.configure(vhost.getConfiguration()); + plugin.configure(config); return plugin; } } - public void configure(ConfigurationPlugin config) throws ConfigurationException + public void configure(ConfigurationPlugin config) { - _config = config.getConfiguration(SlowConsumerDetectionConfiguration.class); - - if (_config == null) - { - throw new IllegalArgumentException("Plugin has not been configured"); - } + _config = (SlowConsumerDetectionConfiguration) config; } public SlowConsumerDetection(VirtualHost vhost) diff --git a/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java b/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java index 5262042b17..9bd1dd304f 100644 --- a/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java +++ b/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java @@ -128,7 +128,7 @@ public class TopicDeletePolicy implements SlowConsumerPolicyPlugin return false; } - public void configure(ConfigurationPlugin config) throws ConfigurationException + public void configure(ConfigurationPlugin config) { _configuration = (TopicDeletePolicyConfiguration) config; } diff --git a/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java b/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java index d91ee69ce2..6fe0d03741 100644 --- a/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java +++ b/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java @@ -25,6 +25,7 @@ import java.net.UnknownHostException; import java.util.List; import org.apache.commons.configuration.CompositeConfiguration; +import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.XMLConfiguration; import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin; @@ -127,32 +128,15 @@ public class Firewall extends AbstractPlugin } - public void configure(ConfigurationPlugin config) throws ConfigurationException + public void configure(ConfigurationPlugin config) { super.configure(config); FirewallConfiguration firewallConfiguration = (FirewallConfiguration) _config; // Get default action - String defaultAction = firewallConfiguration.getConfiguration().getString("[@default-action]"); - if (defaultAction == null) - { - _default = Result.ABSTAIN; - } - else if (defaultAction.equalsIgnoreCase(FirewallRule.ALLOW)) - { - _default = Result.ALLOWED; - } - else - { - _default = Result.DENIED; - } + _default = firewallConfiguration.getDefaultAction(); - CompositeConfiguration finalConfig = new CompositeConfiguration(firewallConfiguration.getConfiguration()); - List subFiles = firewallConfiguration.getConfiguration().getList("xml[@fileName]"); - for (Object subFile : subFiles) - { - finalConfig.addConfiguration(new XMLConfiguration((String) subFile)); - } + Configuration finalConfig = firewallConfiguration.getConfiguration(); // all rules must have an access attribute int numRules = finalConfig.getList("rule[@access]").size(); diff --git a/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java b/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java index fe9f48f950..1a2bf62d73 100644 --- a/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java +++ b/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java @@ -23,14 +23,20 @@ package org.apache.qpid.server.security.access.plugins; import java.util.Arrays; import java.util.List; +import org.apache.commons.configuration.CompositeConfiguration; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.XMLConfiguration; import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin; import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory; +import org.apache.qpid.server.security.Result; +import org.apache.qpid.server.security.access.config.FirewallRule; public class FirewallConfiguration extends ConfigurationPlugin { - public static final ConfigurationPluginFactory FACTORY = new ConfigurationPluginFactory() + CompositeConfiguration _finalConfig; + + public static final ConfigurationPluginFactory FACTORY = new ConfigurationPluginFactory() { public ConfigurationPlugin newInstance(String path, Configuration config) throws ConfigurationException { @@ -41,17 +47,55 @@ public class FirewallConfiguration extends ConfigurationPlugin public List<String> getParentPaths() { - return Arrays.asList("security", "virtualhosts.virtualhost.security"); + return Arrays.asList("security.firewall", "virtualhosts.virtualhost.security.firewall"); } }; public String[] getElementsProcessed() { - return new String[] { "firewall" }; + return new String[] { "" }; } public Configuration getConfiguration() { - return _configuration.subset("firewall"); + return _finalConfig; } + + public Result getDefaultAction() + { + String defaultAction = _configuration.getString("[@default-action]"); + if (defaultAction == null) + { + return Result.ABSTAIN; + } + else if (defaultAction.equalsIgnoreCase(FirewallRule.ALLOW)) + { + return Result.ALLOWED; + } + else + { + return Result.DENIED; + } + } + + + + @Override + public void validateConfiguration() throws ConfigurationException + { + // Valid Configuration either has xml links to new files + _finalConfig = new CompositeConfiguration(_configuration); + List subFiles = _configuration.getList("xml[@fileName]"); + for (Object subFile : subFiles) + { + _finalConfig.addConfiguration(new XMLConfiguration((String) subFile)); + } + + // all rules must have an access attribute + if (_finalConfig.getList("rule[@access]").size() == 0) + { + throw new ConfigurationException("No rules found in firewall configuration."); + } + } + } diff --git a/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java b/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java index 8c38c6e76c..1bf8761978 100644 --- a/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java +++ b/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java @@ -76,7 +76,7 @@ public class SimpleXML extends AbstractPlugin } }; - public void configure(ConfigurationPlugin config) throws ConfigurationException + public void configure(ConfigurationPlugin config) { super.configure(config); diff --git a/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java b/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java index b73ab97080..e95c21b590 100644 --- a/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java +++ b/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java @@ -41,17 +41,17 @@ public class SimpleXMLConfiguration extends ConfigurationPlugin public List<String> getParentPaths() { - return Arrays.asList("security", "virtualhosts.virtualhost.security"); + return Arrays.asList("security.access_control_list", "virtualhosts.virtualhost.security.access_control_list"); } }; public String[] getElementsProcessed() { - return new String[] { "access_control_list" }; + return new String[] { "" }; } public Configuration getConfiguration() { - return _configuration.subset("access_control_list"); + return _configuration; } } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java index e094422a1e..e7f9983fff 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java @@ -26,9 +26,6 @@ public interface Plugin /** * Provide Configuration to this plugin - * - * FIXME Should not throw ConfigurationException, - * Only ConfigurationPlugin should throw ConfigurationException */ - public void configure(ConfigurationPlugin config) throws ConfigurationException; + public void configure(ConfigurationPlugin config); } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java index bbbe586ed3..466bc9e228 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java @@ -36,6 +36,7 @@ import org.apache.log4j.Logger; import org.apache.qpid.common.Closeable; import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory; import org.apache.qpid.server.exchange.ExchangeType; +import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.SecurityPluginFactory; import org.apache.qpid.server.security.access.plugins.AllowAll; import org.apache.qpid.server.security.access.plugins.DenyAll; @@ -78,6 +79,7 @@ public class PluginManager implements Closeable _securityPlugins.put(pluginFactory.getPluginName(), pluginFactory); } for (ConfigurationPluginFactory configFactory : Arrays.asList( + SecurityManager.SecurityConfiguration.FACTORY, AllowAll.AllowAllConfiguration.FACTORY, DenyAll.DenyAllConfiguration.FACTORY, LegacyAccess.LegacyAccessConfiguration.FACTORY)) diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java index 87cc6e89aa..ff80499bc2 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java @@ -45,7 +45,7 @@ public abstract class AbstractPlugin implements SecurityPlugin public abstract Result authorise(Operation operation, ObjectType object, ObjectProperties properties); - public void configure(ConfigurationPlugin config) throws ConfigurationException + public void configure(ConfigurationPlugin config) { _config = config; } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java index 035b7fa854..362d919a5e 100755 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java @@ -22,14 +22,18 @@ import static org.apache.qpid.server.security.access.ObjectType.*; import static org.apache.qpid.server.security.access.Operation.*; import java.security.Principal; +import java.util.Arrays; import java.util.HashMap; +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.framing.AMQShortString; import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin; +import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory; import org.apache.qpid.server.exchange.Exchange; import org.apache.qpid.server.plugins.PluginManager; import org.apache.qpid.server.protocol.AMQProtocolSession; @@ -57,6 +61,39 @@ public class SecurityManager private Map<String, SecurityPlugin> _globalPlugins = new HashMap<String, SecurityPlugin>(); private Map<String, SecurityPlugin> _hostPlugins = new HashMap<String, SecurityPlugin>(); + public static class SecurityConfiguration extends ConfigurationPlugin + { + public static final ConfigurationPluginFactory FACTORY = new ConfigurationPluginFactory() + { + public ConfigurationPlugin newInstance(String path, Configuration config) throws ConfigurationException + { + ConfigurationPlugin instance = new SecurityConfiguration(); + instance.setConfiguration(path, config); + return instance; + } + + public List<String> getParentPaths() + { + return Arrays.asList("security", "virtualhosts.virtualhost.security"); + } + }; + + @Override + public String[] getElementsProcessed() + { + return new String[]{"security"}; + } + + public void validateConfiguration() throws ConfigurationException + { + if (_configuration.isEmpty()) + { + throw new ConfigurationException("security section is incomplete, no elements found."); + } + } + } + + public SecurityManager(SecurityManager parent) throws ConfigurationException { _pluginManager = parent._pluginManager; @@ -116,12 +153,18 @@ public class SecurityManager public Map<String, SecurityPlugin> configurePlugins(ConfigurationPlugin hostConfig) throws ConfigurationException { Map<String, SecurityPlugin> plugins = new HashMap<String, SecurityPlugin>(); - for (SecurityPluginFactory<?> factory : _pluginFactories.values()) + SecurityConfiguration securityConfig = hostConfig.getConfiguration(SecurityConfiguration.class); + + // If we have no security Configuration then there is nothing to configure. + if (securityConfig != null) { - SecurityPlugin plugin = factory.newInstance(hostConfig); - if (plugin.isConfigured()) + for (SecurityPluginFactory<?> factory : _pluginFactories.values()) { - plugins.put(factory.getPluginName(), plugin); + SecurityPlugin plugin = factory.newInstance(securityConfig); + if (plugin != null) + { + plugins.put(factory.getPluginName(), plugin); + } } } return plugins; diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java index 7525362bfc..24ff44b1ae 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java @@ -36,7 +36,7 @@ public class AllowAll extends BasicPlugin { public List<String> getParentPaths() { - return Arrays.asList("security", "virtualhosts.virtualhost.security"); + return Arrays.asList("security.allow-all", "virtualhosts.virtualhost.security.allow-all"); } public ConfigurationPlugin newInstance(String path, Configuration config) throws ConfigurationException @@ -49,16 +49,33 @@ public class AllowAll extends BasicPlugin public String[] getElementsProcessed() { - return new String[] { "allow-all" }; + return new String[] { "" }; } + + public void validateConfiguration() throws ConfigurationException + { + if (!_configuration.isEmpty()) + { + throw new ConfigurationException("allow-all section takes no elements."); + } + } + } public static final SecurityPluginFactory<AllowAll> FACTORY = new SecurityPluginFactory<AllowAll>() { - public AllowAll newInstance(ConfigurationPlugin config) throws ConfigurationException + public AllowAll newInstance(ConfigurationPlugin config) throws ConfigurationException { + AllowAllConfiguration configuration = config.getConfiguration(AllowAllConfiguration.class); + + // If there is no configuration for this plugin then don't load it. + if (configuration == null) + { + return null; + } + AllowAll plugin = new AllowAll(); - plugin.configure(config); + plugin.configure(configuration); return plugin; } @@ -79,8 +96,4 @@ public class AllowAll extends BasicPlugin return Result.ALLOWED; } - public void configure(ConfigurationPlugin config) throws ConfigurationException - { - _config = config.getConfiguration(AllowAllConfiguration.class); - } } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java index 7647072abc..cd68511730 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java @@ -36,7 +36,7 @@ public class DenyAll extends BasicPlugin { public List<String> getParentPaths() { - return Arrays.asList("security", "virtualhosts.virtualhost.security"); + return Arrays.asList("security.deny-all", "virtualhosts.virtualhost.security.deny-all"); } public ConfigurationPlugin newInstance(String path, Configuration config) throws ConfigurationException @@ -49,16 +49,33 @@ public class DenyAll extends BasicPlugin public String[] getElementsProcessed() { - return new String[] { "deny-all" }; + return new String[] { "" }; } + + public void validateConfiguration() throws ConfigurationException + { + if (!_configuration.isEmpty()) + { + throw new ConfigurationException("deny-all section takes no elements."); + } + } + } public static final SecurityPluginFactory<DenyAll> FACTORY = new SecurityPluginFactory<DenyAll>() { public DenyAll newInstance(ConfigurationPlugin config) throws ConfigurationException { + DenyAllConfiguration configuration = config.getConfiguration(DenyAllConfiguration.class); + + // If there is no configuration for this plugin then don't load it. + if (configuration == null) + { + return null; + } + DenyAll plugin = new DenyAll(); - plugin.configure(config); + plugin.configure(configuration); return plugin; } @@ -79,9 +96,4 @@ public class DenyAll extends BasicPlugin return Result.DENIED; } - public void configure(ConfigurationPlugin config) throws ConfigurationException - { - _config = config.getConfiguration(DenyAllConfiguration.class); - } - } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java index d2b72503a4..8cebedbc26 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java @@ -37,7 +37,11 @@ public class LegacyAccess extends BasicPlugin { public List<String> getParentPaths() { - return Arrays.asList("security", "virtualhosts.virtualhost.security"); + return Arrays.asList("security.jmx", "virtualhosts.virtualhost.security.jmx", + "security.false", "virtualhosts.virtualhost.security.false", + "security.msg-auth", "virtualhosts.virtualhost.security.msg-auth", + "security.access", "virtualhosts.virtualhost.security.access", + "security.principal-databases", "virtualhosts.virtualhost.security.principal-databases"); } public ConfigurationPlugin newInstance(String path, Configuration config) throws ConfigurationException @@ -50,7 +54,7 @@ public class LegacyAccess extends BasicPlugin public String[] getElementsProcessed() { - return new String[] { "principal-databases", "access", "msg-auth", "false", "jmx" }; + return new String[] { "" }; } } @@ -58,8 +62,16 @@ public class LegacyAccess extends BasicPlugin { public LegacyAccess newInstance(ConfigurationPlugin config) throws ConfigurationException { + LegacyAccessConfiguration configuration = config.getConfiguration(LegacyAccessConfiguration.class); + + // If there is no configuration for this plugin then don't load it. + if (configuration == null) + { + return null; + } + LegacyAccess plugin = new LegacyAccess(); - plugin.configure(config); + plugin.configure(configuration); return plugin; } @@ -74,8 +86,4 @@ public class LegacyAccess extends BasicPlugin } }; - public void configure(ConfigurationPlugin config) throws ConfigurationException - { - _config = config.getConfiguration(LegacyAccessConfiguration.class); - } } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index d104209e98..f7ad934a57 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -308,11 +308,7 @@ public class VirtualHostImpl implements VirtualHost _logger.info("Loaded VirtualHostPlugin:" + plugin); } - catch (IllegalArgumentException iae) - { - _logger.warn("VirtualHostPlugin:" + pluginName + " has not been configured for this virtualhost(" + getName() + ")"); - } - catch (Exception e) + catch (RuntimeException e) { _logger.error("Unable to load VirtualHostPlugin:" + pluginName + " due to:" + e.getMessage(), e); } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java index 5335925fb0..c8bea18444 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java @@ -20,10 +20,9 @@ */ 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) throws ConfigurationException; + public VirtualHostHouseKeepingPlugin newInstance(VirtualHost vhost); } |