You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2010/06/03 23:27:48 UTC
svn commit: r951159 - in /qpid/trunk/qpid/java:
broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/
broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/
broke...
Author: ritchiem
Date: Thu Jun 3 21:27:48 2010
New Revision: 951159
URL: http://svn.apache.org/viewvc?rev=951159&view=rev
Log:
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.
Modified:
qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java
qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java
qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java
qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java
qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java
qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java
Modified: qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControl.java Thu Jun 3 21:27:48 2010
@@ -79,13 +79,6 @@ public class AccessControl extends Abstr
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 Abstr
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();
}
}
Modified: qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/AccessControlConfiguration.java Thu Jun 3 21:27:48 2010
@@ -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.
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
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;
+ }
+
}
Modified: qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java Thu Jun 3 21:27:48 2010
@@ -38,32 +38,24 @@ class SlowConsumerDetection extends Virt
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)
Modified: qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java Thu Jun 3 21:27:48 2010
@@ -128,7 +128,7 @@ public class TopicDeletePolicy implement
return false;
}
- public void configure(ConfigurationPlugin config) throws ConfigurationException
+ public void configure(ConfigurationPlugin config)
{
_configuration = (TopicDeletePolicyConfiguration) config;
}
Modified: qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/Firewall.java Thu Jun 3 21:27:48 2010
@@ -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 AbstractPl
}
- 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();
Modified: qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/firewall/src/main/java/org/apache/qpid/server/security/access/plugins/FirewallConfiguration.java Thu Jun 3 21:27:48 2010
@@ -23,14 +23,20 @@ package org.apache.qpid.server.security.
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 exten
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.");
+ }
+ }
+
}
Modified: qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXML.java Thu Jun 3 21:27:48 2010
@@ -76,7 +76,7 @@ public class SimpleXML extends AbstractP
}
};
- public void configure(ConfigurationPlugin config) throws ConfigurationException
+ public void configure(ConfigurationPlugin config)
{
super.configure(config);
Modified: qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/simple-xml/src/main/java/org/apache/qpid/server/security/access/plugins/SimpleXMLConfiguration.java Thu Jun 3 21:27:48 2010
@@ -41,17 +41,17 @@ public class SimpleXMLConfiguration exte
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;
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/Plugin.java Thu Jun 3 21:27:48 2010
@@ -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);
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java Thu Jun 3 21:27:48 2010
@@ -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 Cl
_securityPlugins.put(pluginFactory.getPluginName(), pluginFactory);
}
for (ConfigurationPluginFactory configFactory : Arrays.asList(
+ SecurityManager.SecurityConfiguration.FACTORY,
AllowAll.AllowAllConfiguration.FACTORY,
DenyAll.DenyAllConfiguration.FACTORY,
LegacyAccess.LegacyAccessConfiguration.FACTORY))
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java Thu Jun 3 21:27:48 2010
@@ -45,7 +45,7 @@ public abstract class AbstractPlugin imp
public abstract Result authorise(Operation operation, ObjectType object, ObjectProperties properties);
- public void configure(ConfigurationPlugin config) throws ConfigurationException
+ public void configure(ConfigurationPlugin config)
{
_config = config;
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java Thu Jun 3 21:27:48 2010
@@ -22,14 +22,18 @@ import static org.apache.qpid.server.sec
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;
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java Thu Jun 3 21:27:48 2010
@@ -36,7 +36,7 @@ public class AllowAll extends BasicPlugi
{
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 BasicPlugi
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 BasicPlugi
return Result.ALLOWED;
}
- public void configure(ConfigurationPlugin config) throws ConfigurationException
- {
- _config = config.getConfiguration(AllowAllConfiguration.class);
- }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java Thu Jun 3 21:27:48 2010
@@ -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);
- }
-
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java Thu Jun 3 21:27:48 2010
@@ -37,7 +37,11 @@ public class LegacyAccess extends BasicP
{
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 BasicP
public String[] getElementsProcessed()
{
- return new String[] { "principal-databases", "access", "msg-auth", "false", "jmx" };
+ return new String[] { "" };
}
}
@@ -58,8 +62,16 @@ public class LegacyAccess extends BasicP
{
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 BasicP
}
};
- public void configure(ConfigurationPlugin config) throws ConfigurationException
- {
- _config = config.getConfiguration(LegacyAccessConfiguration.class);
- }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java Thu Jun 3 21:27:48 2010
@@ -308,11 +308,7 @@ public class VirtualHostImpl implements
_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);
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java?rev=951159&r1=951158&r2=951159&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java Thu Jun 3 21:27:48 2010
@@ -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);
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org