summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2010-05-21 21:09:15 +0000
committerMartin Ritchie <ritchiem@apache.org>2010-05-21 21:09:15 +0000
commit832964c70974c9b668aaa17773d22b75228552a7 (patch)
tree687f362a106a17fb6ce2d726ce8fe548c5eb0577 /java
parentd48db423414765a4eb0ec8e530f899355b68ed1a (diff)
downloadqpid-python-832964c70974c9b668aaa17773d22b75228552a7.tar.gz
QPID-1447 : Complete SCDPolicyConfiguration Testing
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@947176 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionConfiguration.java2
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionPolicyConfiguration.java2
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionQueueConfiguration.java34
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicyConfiguration.java2
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetectionPolicyConfigurationTest.java78
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java37
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java118
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java44
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/configuration/plugins/ConfigurationPlugin.java207
-rw-r--r--java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java134
10 files changed, 504 insertions, 154 deletions
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionConfiguration.java b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionConfiguration.java
index 3c87ca08b2..90bd3206e1 100644
--- a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionConfiguration.java
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionConfiguration.java
@@ -56,7 +56,7 @@ public class SlowConsumerDetectionConfiguration extends ConfigurationPlugin
public long getDelay()
{
- return _configuration.getLong("delay", 10);
+ return getLongValue("delay", 10);
}
public TimeUnit getTimeUnit()
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionPolicyConfiguration.java b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionPolicyConfiguration.java
index 482168930b..b6a4ab3cbf 100644
--- a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionPolicyConfiguration.java
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionPolicyConfiguration.java
@@ -56,7 +56,7 @@ public class SlowConsumerDetectionPolicyConfiguration extends ConfigurationPlugi
public String getPolicyName()
{
- return _configuration.getString("name");
+ return getStringValue("name");
}
public void setConfiguration(String path, Configuration configuration) throws ConfigurationException
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionQueueConfiguration.java b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionQueueConfiguration.java
index ce3393ae70..5f1e0c00b9 100644
--- a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionQueueConfiguration.java
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionQueueConfiguration.java
@@ -60,19 +60,19 @@ public class SlowConsumerDetectionQueueConfiguration extends ConfigurationPlugin
"messageCount"};
}
- public int getMessageAge()
+ public long getMessageAge()
{
- return (int) getConfigurationValue("messageAge");
+ return getLongValue("messageAge");
}
public long getDepth()
{
- return getConfigurationValue("depth");
+ return getLongValue("depth");
}
public long getMessageCount()
{
- return getConfigurationValue("messageCount");
+ return getLongValue("messageCount");
}
public SlowConsumerPolicyPlugin getPolicy()
@@ -85,7 +85,16 @@ public class SlowConsumerDetectionQueueConfiguration extends ConfigurationPlugin
{
super.setConfiguration(path, configuration);
- SlowConsumerDetectionPolicyConfiguration policyConfig = getConfiguration(SlowConsumerDetectionPolicyConfiguration.class);
+ if (!containsPositiveLong("messageAge") &&
+ !containsPositiveLong("depth") &&
+ !containsPositiveLong("messageCount"))
+ {
+ throw new ConfigurationException("At least one configuration property" +
+ "('messageAge','depth' or 'messageCount') must be specified.");
+ }
+
+ SlowConsumerDetectionPolicyConfiguration policyConfig =
+ getConfiguration(SlowConsumerDetectionPolicyConfiguration.class);
PluginManager pluginManager = ApplicationRegistry.getInstance().getPluginManager();
Map<String, SlowConsumerPolicyPluginFactory> factories =
@@ -93,7 +102,8 @@ public class SlowConsumerDetectionQueueConfiguration extends ConfigurationPlugin
if (policyConfig == null)
{
- throw new ConfigurationException("No Slow Consumer Policy specified at:" + path + ". Known Policies:" + factories.keySet());
+ throw new ConfigurationException("No Slow Consumer Policy specified at:'" +
+ path + "'. Known Policies:" + factories.keySet());
}
if (_logger.isDebugEnabled())
@@ -125,16 +135,4 @@ public class SlowConsumerDetectionQueueConfiguration extends ConfigurationPlugin
_policyPlugin = pluginFactory.newInstance(policyConfig);
}
- private long getConfigurationValue(String property)
- {
- // The _configuration we are given is a munged configurated
- // so the queue will already have queue-queues munging
-
- // we then need to ensure that the TopicsConfiguration
- // and TopicConfiguration classes correctly munge their configuration:
- // queue-queues -> topic-topics
-
- return _configuration.getLong(property, 0);
- }
-
}
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicyConfiguration.java b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicyConfiguration.java
index 30c1b05b4e..27c214097a 100644
--- a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicyConfiguration.java
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicyConfiguration.java
@@ -57,7 +57,7 @@ public class TopicDeletePolicyConfiguration extends ConfigurationPlugin
public boolean deletePersistent()
{
// If we don't have configuration then we don't deletePersistent Queues
- return (_configuration != null && _configuration.containsKey("delete-persistent"));
+ return (hasConfiguration() && contains("delete-persistent"));
}
}
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetectionPolicyConfigurationTest.java b/java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetectionPolicyConfigurationTest.java
new file mode 100644
index 0000000000..9e0fd7bb2f
--- /dev/null
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetectionPolicyConfigurationTest.java
@@ -0,0 +1,78 @@
+/*
+ *
+ * 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.plugin;
+
+import junit.framework.TestCase;
+import org.apache.commons.configuration.CompositeConfiguration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.qpid.server.configuration.plugin.SlowConsumerDetectionPolicyConfiguration;
+
+public class SlowConsumerDetectionPolicyConfigurationTest extends TestCase
+{
+
+ public void testConfigLoadingValidConfig()
+ {
+ SlowConsumerDetectionPolicyConfiguration config = new SlowConsumerDetectionPolicyConfiguration();
+
+ XMLConfiguration xmlconfig = new XMLConfiguration();
+
+ xmlconfig.addProperty("name", "TestPolicy");
+
+ // Create a CompositeConfiguration as this is what the broker uses
+ CompositeConfiguration composite = new CompositeConfiguration();
+ composite.addConfiguration(xmlconfig);
+
+ try
+ {
+ config.setConfiguration("", composite);
+ }
+ catch (ConfigurationException e)
+ {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ }
+
+ public void testConfigLoadingInValidConfig()
+ {
+ SlowConsumerDetectionPolicyConfiguration config = new SlowConsumerDetectionPolicyConfiguration();
+
+ XMLConfiguration xmlconfig = new XMLConfiguration();
+
+
+ // Create a CompositeConfiguration as this is what the broker uses
+ CompositeConfiguration composite = new CompositeConfiguration();
+ composite.addConfiguration(xmlconfig);
+
+ try
+ {
+ config.setConfiguration("", composite);
+ fail("Config is invalid so won't validate.");
+ }
+ catch (ConfigurationException e)
+ {
+ e.printStackTrace();
+ assertEquals("Exception message not as expected.", "No Slow consumer policy defined.", e.getMessage());
+ }
+ }
+
+}
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 1812f657d5..ee68143a2d 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
@@ -31,8 +31,6 @@ import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin;
public class QueueConfiguration extends ConfigurationPlugin
{
-
- private Configuration _config;
private String _name;
private VirtualHostConfiguration _vHostConfig;
@@ -44,7 +42,6 @@ public class QueueConfiguration extends ConfigurationPlugin
CompositeConfiguration mungedConf = new CompositeConfiguration();
mungedConf.addConfiguration(_vHostConfig.getConfig().subset("queues.queue." + name));
mungedConf.addConfiguration(_vHostConfig.getConfig().subset("queues"));
- _config = mungedConf;
setConfiguration("virtualhosts.virtualhost.queues.queue", mungedConf);
}
@@ -78,42 +75,42 @@ public class QueueConfiguration extends ConfigurationPlugin
public boolean getDurable()
{
- return _config.getBoolean("durable" ,false);
+ return getBooleanValue("durable");
}
public boolean getExclusive()
{
- return _config.getBoolean("exclusive" ,false);
+ return getBooleanValue("exclusive");
}
public boolean getAutoDelete()
{
- return _config.getBoolean("autodelete", false);
+ return getBooleanValue("autodelete");
}
public String getOwner()
{
- return _config.getString("owner", null);
+ return getStringValue("owner", null);
}
public boolean getPriority()
{
- return _config.getBoolean("priority", false);
+ return getBooleanValue("priority");
}
public int getPriorities()
{
- return _config.getInt("priorities", -1);
+ return getIntValue("priorities", -1);
}
public String getExchange()
{
- return _config.getString("exchange", null);
+ return getStringValue("exchange", null);
}
public List getRoutingKeys()
{
- return _config.getList("routingKey");
+ return getListValue("routingKey");
}
public String getName()
@@ -123,46 +120,46 @@ public class QueueConfiguration extends ConfigurationPlugin
public int getMaximumMessageAge()
{
- return _config.getInt("maximumMessageAge", _vHostConfig.getMaximumMessageAge());
+ return getIntValue("maximumMessageAge", _vHostConfig.getMaximumMessageAge());
}
public long getMaximumQueueDepth()
{
- return _config.getLong("maximumQueueDepth", _vHostConfig.getMaximumQueueDepth());
+ return getLongValue("maximumQueueDepth", _vHostConfig.getMaximumQueueDepth());
}
public long getMaximumMessageSize()
{
- return _config.getLong("maximumMessageSize", _vHostConfig.getMaximumMessageSize());
+ return getLongValue("maximumMessageSize", _vHostConfig.getMaximumMessageSize());
}
public long getMaximumMessageCount()
{
- return _config.getLong("maximumMessageCount", _vHostConfig.getMaximumMessageCount());
+ return getLongValue("maximumMessageCount", _vHostConfig.getMaximumMessageCount());
}
public long getMinimumAlertRepeatGap()
{
- return _config.getLong("minimumAlertRepeatGap", _vHostConfig.getMinimumAlertRepeatGap());
+ return getLongValue("minimumAlertRepeatGap", _vHostConfig.getMinimumAlertRepeatGap());
}
public long getCapacity()
{
- return _config.getLong("capacity", _vHostConfig.getCapacity());
+ return getLongValue("capacity", _vHostConfig.getCapacity());
}
public long getFlowResumeCapacity()
{
- return _config.getLong("flowResumeCapacity", _vHostConfig.getFlowResumeCapacity());
+ return getLongValue("flowResumeCapacity", _vHostConfig.getFlowResumeCapacity());
}
public boolean isLVQ()
{
- return _config.getBoolean("lvq", false);
+ return getBooleanValue("lvq");
}
public String getLVQKey()
{
- return _config.getString("lvqKey", null);
+ return getStringValue("lvqKey", null);
}
}
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 96b2e26f3c..fe399669fd 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
@@ -287,7 +287,7 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public boolean getStatusUpdatesEnabled()
{
// Retrieve the setting from configuration but default to on.
- String value = getConfig().getString(STATUS_UPDATES, DEFAULT_STATUS_UPDATES);
+ String value = getStringValue(STATUS_UPDATES, DEFAULT_STATUS_UPDATES);
return value.equalsIgnoreCase("on");
}
@@ -300,7 +300,7 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public Locale getLocale()
{
- String localeString = getConfig().getString(ADVANCED_LOCALE);
+ String localeString = getStringValue(ADVANCED_LOCALE);
// Expecting locale of format langauge_country_variant
// If the configuration does not have a defined locale use the JVM default
@@ -430,12 +430,12 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public int getJMXManagementPort()
{
- return getConfig().getInt("management.jmxport", DEFAULT_JMXPORT);
+ return getIntValue("management.jmxport", DEFAULT_JMXPORT);
}
public boolean getUseCustomRMISocketFactory()
{
- return getConfig().getBoolean(MGMT_CUSTOM_REGISTRY_SOCKET, true);
+ return getBooleanValue(MGMT_CUSTOM_REGISTRY_SOCKET, true);
}
public void setUseCustomRMISocketFactory(boolean bool)
@@ -445,7 +445,7 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public boolean getPlatformMbeanserver()
{
- return getConfig().getBoolean("management.platform-mbeanserver", true);
+ return getBooleanValue("management.platform-mbeanserver", true);
}
public String[] getVirtualHosts()
@@ -455,7 +455,7 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public String getPluginDirectory()
{
- return getConfig().getString("plugin-directory");
+ return getStringValue("plugin-directory");
}
public VirtualHostConfiguration getVirtualHostConfig(String name)
@@ -470,84 +470,84 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public List<String> getPrincipalDatabaseNames()
{
- return getConfig().getList("security.principal-databases.principal-database.name");
+ return getListValue("security.principal-databases.principal-database.name");
}
public List<String> getPrincipalDatabaseClass()
{
- return getConfig().getList("security.principal-databases.principal-database.class");
+ return getListValue("security.principal-databases.principal-database.class");
}
public List<String> getPrincipalDatabaseAttributeNames(int index)
{
String name = "security.principal-databases.principal-database(" + index + ")." + "attributes.attribute.name";
- return getConfig().getList(name);
+ return getListValue(name);
}
public List<String> getPrincipalDatabaseAttributeValues(int index)
{
String name = "security.principal-databases.principal-database(" + index + ")." + "attributes.attribute.value";
- return getConfig().getList(name);
+ return getListValue(name);
}
public List<String> getManagementPrincipalDBs()
{
- return getConfig().getList("security.jmx.principal-database");
+ return getListValue("security.jmx.principal-database");
}
public List<String> getManagementAccessList()
{
- return getConfig().getList("security.jmx.access");
+ return getListValue("security.jmx.access");
}
public int getFrameSize()
{
- return getConfig().getInt("advanced.framesize", DEFAULT_FRAME_SIZE);
+ return getIntValue("advanced.framesize", DEFAULT_FRAME_SIZE);
}
public boolean getProtectIOEnabled()
{
- return getConfig().getBoolean(CONNECTOR_PROTECTIO_ENABLED, DEFAULT_BROKER_CONNECTOR_PROTECTIO_ENABLED);
+ return getBooleanValue(CONNECTOR_PROTECTIO_ENABLED, DEFAULT_BROKER_CONNECTOR_PROTECTIO_ENABLED);
}
public int getBufferReadLimit()
{
- return getConfig().getInt(CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE, DEFAULT_BUFFER_READ_LIMIT_SIZE);
+ return getIntValue(CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE, DEFAULT_BUFFER_READ_LIMIT_SIZE);
}
public int getBufferWriteLimit()
{
- return getConfig().getInt(CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE, DEFAULT_BUFFER_WRITE_LIMIT_SIZE);
+ return getIntValue(CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE, DEFAULT_BUFFER_WRITE_LIMIT_SIZE);
}
public boolean getSynchedClocks()
{
- return getConfig().getBoolean("advanced.synced-clocks", false);
+ return getBooleanValue("advanced.synced-clocks");
}
public boolean getMsgAuth()
{
- return getConfig().getBoolean("security.msg-auth", false);
+ return getBooleanValue("security.msg-auth");
}
public String getJMXPrincipalDatabase()
{
- return getConfig().getString("security.jmx.principal-database");
+ return getStringValue("security.jmx.principal-database");
}
public String getManagementKeyStorePath()
{
- return getConfig().getString("management.ssl.keyStorePath", null);
+ return getStringValue("management.ssl.keyStorePath");
}
public boolean getManagementSSLEnabled()
{
- return getConfig().getBoolean("management.ssl.enabled", true);
+ return getBooleanValue("management.ssl.enabled", true);
}
public String getManagementKeyStorePassword()
{
- return getConfig().getString("management.ssl.keyStorePassword");
+ return getStringValue("management.ssl.keyStorePassword");
}
public SecurityConfiguration getSecurityConfiguration()
@@ -557,12 +557,12 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public boolean getQueueAutoRegister()
{
- return getConfig().getBoolean("queue.auto_register", true);
+ return getBooleanValue("queue.auto_register", true);
}
public boolean getManagementEnabled()
{
- return getConfig().getBoolean("management.enabled", true);
+ return getBooleanValue("management.enabled", true);
}
public void setManagementEnabled(boolean enabled)
@@ -572,162 +572,162 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public int getHeartBeatDelay()
{
- return getConfig().getInt("heartbeat.delay", 5);
+ return getIntValue("heartbeat.delay", 5);
}
public double getHeartBeatTimeout()
{
- return getConfig().getDouble("heartbeat.timeoutFactor", 2.0);
+ return getDoubleValue("heartbeat.timeoutFactor", 2.0);
}
public int getDeliveryPoolSize()
{
- return getConfig().getInt("delivery.poolsize", 0);
+ return getIntValue("delivery.poolsize");
}
public long getMaximumMessageAge()
{
- return getConfig().getLong("maximumMessageAge", 0);
+ return getLongValue("maximumMessageAge");
}
public long getMaximumMessageCount()
{
- return getConfig().getLong("maximumMessageCount", 0);
+ return getLongValue("maximumMessageCount");
}
public long getMaximumQueueDepth()
{
- return getConfig().getLong("maximumQueueDepth", 0);
+ return getLongValue("maximumQueueDepth");
}
public long getMaximumMessageSize()
{
- return getConfig().getLong("maximumMessageSize", 0);
+ return getLongValue("maximumMessageSize");
}
public long getMinimumAlertRepeatGap()
{
- return getConfig().getLong("minimumAlertRepeatGap", 0);
+ return getLongValue("minimumAlertRepeatGap");
}
public long getCapacity()
{
- return getConfig().getLong("capacity", 0L);
+ return getLongValue("capacity");
}
public long getFlowResumeCapacity()
{
- return getConfig().getLong("flowResumeCapacity", getCapacity());
+ return getLongValue("flowResumeCapacity", getCapacity());
}
public int getProcessors()
{
- return getConfig().getInt("connector.processors", 4);
+ return getIntValue("connector.processors", 4);
}
public List getPorts()
{
- return getConfig().getList("connector.port", Collections.singletonList(DEFAULT_PORT));
+ return getListValue("connector.port", Collections.singletonList(DEFAULT_PORT));
}
public List getPortExclude010()
{
- return getConfig().getList("connector.non010port", Collections.EMPTY_LIST);
+ return getListValue("connector.non010port");
}
public List getPortExclude091()
{
- return getConfig().getList("connector.non091port", Collections.EMPTY_LIST);
+ return getListValue("connector.non091port");
}
public List getPortExclude09()
{
- return getConfig().getList("connector.non09port", Collections.EMPTY_LIST);
+ return getListValue("connector.non09port");
}
public List getPortExclude08()
{
- return getConfig().getList("connector.non08port", Collections.EMPTY_LIST);
+ return getListValue("connector.non08port");
}
public String getBind()
{
- return getConfig().getString("connector.bind", "wildcard");
+ return getStringValue("connector.bind", "wildcard");
}
public int getReceiveBufferSize()
{
- return getConfig().getInt("connector.socketReceiveBuffer", 32767);
+ return getIntValue("connector.socketReceiveBuffer", 32767);
}
public int getWriteBufferSize()
{
- return getConfig().getInt("connector.socketWriteBuffer", 32767);
+ return getIntValue("connector.socketWriteBuffer", 32767);
}
public boolean getTcpNoDelay()
{
- return getConfig().getBoolean("connector.tcpNoDelay", true);
+ return getBooleanValue("connector.tcpNoDelay", true);
}
public boolean getEnableExecutorPool()
{
- return getConfig().getBoolean("advanced.filterchain[@enableExecutorPool]", false);
+ return getBooleanValue("advanced.filterchain[@enableExecutorPool]");
}
public boolean getEnablePooledAllocator()
{
- return getConfig().getBoolean("advanced.enablePooledAllocator", false);
+ return getBooleanValue("advanced.enablePooledAllocator");
}
public boolean getEnableDirectBuffers()
{
- return getConfig().getBoolean("advanced.enableDirectBuffers", false);
+ return getBooleanValue("advanced.enableDirectBuffers");
}
public boolean getEnableSSL()
{
- return getConfig().getBoolean("connector.ssl.enabled", false);
+ return getBooleanValue("connector.ssl.enabled");
}
public boolean getSSLOnly()
{
- return getConfig().getBoolean("connector.ssl.sslOnly", false);
+ return getBooleanValue("connector.ssl.sslOnly");
}
public int getSSLPort()
{
- return getConfig().getInt("connector.ssl.port", DEFAULT_SSL_PORT);
+ return getIntValue("connector.ssl.port", DEFAULT_SSL_PORT);
}
public String getKeystorePath()
{
- return getConfig().getString("connector.ssl.keystorePath", "none");
+ return getStringValue("connector.ssl.keystorePath", "none");
}
public String getKeystorePassword()
{
- return getConfig().getString("connector.ssl.keystorePassword", "none");
+ return getStringValue("connector.ssl.keystorePassword", "none");
}
public String getCertType()
{
- return getConfig().getString("connector.ssl.certType", "SunX509");
+ return getStringValue("connector.ssl.certType", "SunX509");
}
public boolean getQpidNIO()
{
- return getConfig().getBoolean("connector.qpidnio", false);
+ return getBooleanValue("connector.qpidnio");
}
public boolean getUseBiasedWrites()
{
- return getConfig().getBoolean("advanced.useWriteBiasedPool", false);
+ return getBooleanValue("advanced.useWriteBiasedPool");
}
public String getDefaultVirtualHost()
{
- return getConfig().getString("virtualhosts.default");
+ return getStringValue("virtualhosts.default");
}
public void setDefaultVirtualHost(String vhost)
@@ -742,8 +742,8 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public long getHousekeepingCheckPeriod()
{
- return getConfig().getLong("housekeeping.checkPeriod",
- getConfig().getLong("housekeeping.expiredMessageCheckPeriod",
+ return getLongValue("housekeeping.checkPeriod",
+ getLongValue("housekeeping.expiredMessageCheckPeriod",
DEFAULT_HOUSEKEEPING_PERIOD));
}
@@ -760,7 +760,7 @@ public class ServerConfiguration extends ConfigurationPlugin implements SignalHa
public Boolean getTcpNoDelay()
{
// Can't call parent getTcpNoDelay since it just calls this one
- return getConfig().getBoolean("connector.tcpNoDelay", true);
+ return getBooleanValue("connector.tcpNoDelay", true);
}
public Integer getSoTimeout()
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 d3e5921e79..ca1f25952e 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
@@ -37,14 +37,12 @@ import java.util.HashSet;
public class VirtualHostConfiguration extends ConfigurationPlugin
{
- private Configuration _config;
private String _name;
private Map<String, QueueConfiguration> _queues = new HashMap<String, QueueConfiguration>();
private Map<String, ExchangeConfiguration> _exchanges = new HashMap<String, ExchangeConfiguration>();
public VirtualHostConfiguration(String name, Configuration config) throws ConfigurationException
{
- _config = config;
_name = name;
setConfiguration(config);
}
@@ -59,7 +57,7 @@ public class VirtualHostConfiguration extends ConfigurationPlugin
{
super.setConfiguration("virtualhosts.virtualhost",config);
- Iterator i = _config.getList("queues.queue.name").iterator();
+ Iterator i = getListValue("queues.queue.name").iterator();
while (i.hasNext())
{
@@ -67,13 +65,13 @@ public class VirtualHostConfiguration extends ConfigurationPlugin
_queues.put(queueName, new QueueConfiguration(queueName, this));
}
- i = _config.getList("exchanges.exchange.name").iterator();
+ i = getListValue("exchanges.exchange.name").iterator();
int count = 0;
while (i.hasNext())
{
CompositeConfiguration mungedConf = new CompositeConfiguration();
mungedConf.addConfiguration(config.subset("exchanges.exchange(" + count++ + ")"));
- mungedConf.addConfiguration(_config.subset("exchanges"));
+ mungedConf.addConfiguration(_configuration.subset("exchanges"));
String exchName = (String) i.next();
_exchanges.put(exchName, new ExchangeConfiguration(exchName, mungedConf));
}
@@ -86,42 +84,42 @@ public class VirtualHostConfiguration extends ConfigurationPlugin
public long getHousekeepingExpiredMessageCheckPeriod()
{
- return _config.getLong("housekeeping.expiredMessageCheckPeriod", ApplicationRegistry.getInstance().getConfiguration().getHousekeepingCheckPeriod());
+ return getLongValue("housekeeping.expiredMessageCheckPeriod", ApplicationRegistry.getInstance().getConfiguration().getHousekeepingCheckPeriod());
}
public String getAuthenticationDatabase()
{
- return _config.getString("security.authentication.name");
+ return getStringValue("security.authentication.name");
}
public List getCustomExchanges()
{
- return _config.getList("custom-exchanges.class-name");
+ return getListValue("custom-exchanges.class-name");
}
public SecurityConfiguration getSecurityConfiguration()
{
- return new SecurityConfiguration(_config.subset("security"));
+ return new SecurityConfiguration(_configuration.subset("security"));
}
public Configuration getStoreConfiguration()
{
- return _config.subset("store");
+ return _configuration.subset("store");
}
public String getMessageStoreClass()
{
- return _config.getString("store.class", MemoryMessageStore.class.getName());
+ return getStringValue("store.class", MemoryMessageStore.class.getName());
}
public void setMessageStoreClass(String storeClass)
{
- _config.setProperty("store.class", storeClass);
+ _configuration.setProperty("store.class", storeClass);
}
public List getExchanges()
{
- return _config.getList("exchanges.exchange.name");
+ return getListValue("exchanges.exchange.name");
}
public String[] getQueueNames()
@@ -158,47 +156,47 @@ public class VirtualHostConfiguration extends ConfigurationPlugin
public long getMemoryUsageMaximum()
{
- return _config.getLong("queues.maximumMemoryUsage", 0);
+ return getLongValue("queues.maximumMemoryUsage");
}
public long getMemoryUsageMinimum()
{
- return _config.getLong("queues.minimumMemoryUsage", 0);
+ return getLongValue("queues.minimumMemoryUsage");
}
public int getMaximumMessageAge()
{
- return _config.getInt("queues.maximumMessageAge", 0);
+ return getIntValue("queues.maximumMessageAge");
}
public Long getMaximumQueueDepth()
{
- return _config.getLong("queues.maximumQueueDepth", 0);
+ return getLongValue("queues.maximumQueueDepth");
}
public Long getMaximumMessageSize()
{
- return _config.getLong("queues.maximumMessageSize", 0);
+ return getLongValue("queues.maximumMessageSize");
}
public Long getMaximumMessageCount()
{
- return _config.getLong("queues.maximumMessageCount", 0);
+ return getLongValue("queues.maximumMessageCount");
}
public Long getMinimumAlertRepeatGap()
{
- return _config.getLong("queues.minimumAlertRepeatGap", 0);
+ return getLongValue("queues.minimumAlertRepeatGap");
}
public long getCapacity()
{
- return _config.getLong("queues.capacity", 0l);
+ return getLongValue("queues.capacity");
}
public long getFlowResumeCapacity()
{
- return _config.getLong("queues.flowResumeCapacity", getCapacity());
+ return getLongValue("queues.flowResumeCapacity", getCapacity());
}
public String[] getElementsProcessed()
@@ -210,6 +208,6 @@ public class VirtualHostConfiguration extends ConfigurationPlugin
public int getHouseKeepingThreadCount()
{
- return _config.getInt("housekeeping.poolSize", Runtime.getRuntime().availableProcessors());
+ return getIntValue("housekeeping.poolSize", Runtime.getRuntime().availableProcessors());
}
}
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 df4a7da4bf..e6306b70d5 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
@@ -22,14 +22,19 @@ 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 org.apache.log4j.Logger;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.Set;
public abstract class ConfigurationPlugin
@@ -44,14 +49,14 @@ 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
+ * 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
+ * @return
*/
abstract public String[] getElementsProcessed();
@@ -96,13 +101,12 @@ public abstract class ConfigurationPlugin
elementNameIndex = element.indexOf("[");
if (elementNameIndex > 0)
{
- element = element.substring(0,elementNameIndex).trim();
+ element = element.substring(0, elementNameIndex).trim();
}
elements.add(element);
}
-
//Remove the items we already expect in the configuration
for (String tag : getElementsProcessed())
{
@@ -114,7 +118,7 @@ public abstract class ConfigurationPlugin
// configuration they don't have to.
int bracketIndex = tag.indexOf("[");
if (bracketIndex != -1)
- {
+ {
tag = tag.substring(bracketIndex + 1, tag.length());
}
@@ -128,7 +132,7 @@ public abstract class ConfigurationPlugin
_logger.info("Elements to lookup:" + path);
for (String tag : elements)
{
- _logger.info("Tag:'"+tag+"'");
+ _logger.info("Tag:'" + tag + "'");
}
}
}
@@ -138,15 +142,14 @@ public abstract class ConfigurationPlugin
{
ConfigurationManager configurationManager = ApplicationRegistry.getInstance().getConfigurationManager();
- String configurationElement = path +"."+ element;
+ String configurationElement = path + "." + element;
ConfigurationPlugin elementHandler = configurationManager.
getConfigurationPlugin(configurationElement,
configuration.subset(element));
-
if (elementHandler == null)
{
- _logger.warn("Unused configuration element: '" + configurationElement+"'");
+ _logger.warn("Unused configuration element: '" + configurationElement + "'");
}
else
{
@@ -154,6 +157,180 @@ public abstract class ConfigurationPlugin
}
}
}
+
+ protected boolean hasConfiguration()
+ {
+ return _configuration != null;
+ }
+
+ /// Getters
+
+ protected double getDoubleValue(String property)
+ {
+ return getDoubleValue(property, 0.0);
+ }
+
+ protected double getDoubleValue(String property, double defaultValue)
+ {
+ return _configuration.getDouble(property, defaultValue);
+ }
+
+
+ protected long getLongValue(String property)
+ {
+ return getLongValue(property, 0);
+ }
+
+ protected long getLongValue(String property, long defaultValue)
+ {
+ return _configuration.getLong(property, defaultValue);
+ }
+
+ protected int getIntValue(String property)
+ {
+ return getIntValue(property, 0);
+ }
+
+ protected int getIntValue(String property, int defaultValue)
+ {
+ return _configuration.getInt(property, defaultValue);
+ }
+
+ protected String getStringValue(String property)
+ {
+ return getStringValue(property, null);
+ }
+
+ protected String getStringValue(String property, String defaultValue)
+ {
+ return _configuration.getString(property, defaultValue);
+ }
+
+ protected boolean getBooleanValue(String property)
+ {
+ return getBooleanValue(property, false);
+ }
+
+ protected boolean getBooleanValue(String property, boolean defaultValue)
+ {
+ return _configuration.getBoolean(property, defaultValue);
+ }
+
+ protected List getListValue(String property)
+ {
+ return getListValue(property, Collections.EMPTY_LIST);
+ }
+
+ protected List getListValue(String property, List defaultValue)
+ {
+ return _configuration.getList(property, defaultValue);
+ }
+
+
+
+ /// Validation Helpers
+
+ protected boolean contains(String property)
+ {
+ return _configuration.getProperty(property) != null;
+ }
+
+
+ /**
+ * Provide mechanism to validate Configuration contains a Postiive Long Value
+ *
+ * @param property
+ *
+ * @throws ConfigurationException
+ */
+ protected void validatePositiveLong(String property) throws ConfigurationException
+ {
+ try
+ {
+ if (!containsPositiveLong(property))
+ {
+ throw new ConfigurationException(this.getClass().getSimpleName()
+ + ": '" + property +
+ "' must be a Positive Long value.");
+ }
+ }
+ catch (Exception e)
+ {
+ Throwable last = e;
+
+ // Find the first cause
+ if (e instanceof ConversionException)
+ {
+ Throwable t = e.getCause();
+ while (t != null)
+ {
+ last = t;
+ t = last.getCause();
+ }
+ }
+
+ throw new ConfigurationException(this.getClass().getSimpleName() +
+ ": unable to configure invalid " +
+ property + ":" +
+ _configuration.getString(property),
+ last);
+ }
+ }
+
+ protected boolean containsLong(String property)
+ {
+ try
+ {
+ _configuration.getLong(property);
+ return true;
+ }
+ catch (NoSuchElementException e)
+ {
+ return false;
+ }
+ }
+
+ protected boolean containsPositiveLong(String property)
+ {
+ try
+ {
+ long value = _configuration.getLong(property);
+ return value > 0;
+ }
+ catch (NoSuchElementException e)
+ {
+ return false;
+ }
+
+ }
+
+ protected boolean containsInt(String property)
+ {
+ try
+ {
+ _configuration.getInt(property);
+ return true;
+ }
+ catch (NoSuchElementException e)
+ {
+ return false;
+ }
+ }
+
+ protected boolean containsBoolean(String property)
+ {
+ try
+ {
+ _configuration.getBoolean(property);
+ return true;
+ }
+ catch (NoSuchElementException e)
+ {
+ return false;
+ }
+ }
+
+
}
diff --git a/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java b/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java
index b9c8e39d1f..2f2a47cd14 100644
--- a/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java
+++ b/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java
@@ -22,73 +22,175 @@ package org.apache.qpid.server.configuration.plugins;
import junit.framework.TestCase;
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 java.util.List;
+
/**
* Test that verifies that given a configuration the
* Plugin manager
*/
public class ConfigurationPluginTest extends TestCase
{
+ private static final double DOUBLE = 3.14;
+ private static final long POSITIVE_LONG = 1000;
+ private static final long NEGATIVE_LONG = -1000;
+ private static final int LIST_SIZE = 3;
class ConfigPlugin extends ConfigurationPlugin
{
@Override
public String[] getElementsProcessed()
{
- return new String[]{"[@property]", "name"};
+ return new String[]{"[@property]", "name",
+ "positiveLong", "negativeLong",
+ "true", "list", "double"};
}
public String getName()
{
- return _configuration.getString("name");
+ return getStringValue("name");
}
public String getProperty()
{
- return _configuration.getString("[@property]");
+ return getStringValue("[@property]");
}
-
}
- Configuration _configuration;
+ ConfigPlugin _plugin;
public void setUp()
{
XMLConfiguration xmlconfig = new XMLConfiguration();
- xmlconfig.addProperty("base.element[@property]","property");
- xmlconfig.addProperty("base.element.name","name");
+ xmlconfig.addProperty("base.element[@property]", "property");
+ xmlconfig.addProperty("base.element.name", "name");
+ // We make these strings as that is how they will be read from the file.
+ xmlconfig.addProperty("base.element.positiveLong", String.valueOf(POSITIVE_LONG));
+ xmlconfig.addProperty("base.element.negativeLong", String.valueOf(NEGATIVE_LONG));
+ xmlconfig.addProperty("base.element.boolean", String.valueOf(true));
+ xmlconfig.addProperty("base.element.double", String.valueOf(DOUBLE));
+ for (int i = 0; i < LIST_SIZE; i++)
+ {
+ xmlconfig.addProperty("base.element.list", i);
+ }
//Use a composite configuration as this is what our broker code uses.
- CompositeConfiguration composite = new CompositeConfiguration();
+ CompositeConfiguration composite = new CompositeConfiguration();
composite.addConfiguration(xmlconfig);
- _configuration = composite;
+ _plugin = new ConfigPlugin();
+
+ try
+ {
+ _plugin.setConfiguration("base.element", composite.subset("base.element"));
+ }
+ catch (ConfigurationException e)
+ {
+ e.printStackTrace();
+ fail(e.toString());
+ }
+
}
+ public void testHasConfiguration()
+ {
+ assertTrue("Plugin has no configuration ", _plugin.hasConfiguration());
+ _plugin = new ConfigPlugin();
+ assertFalse("Plugins has configuration", _plugin.hasConfiguration());
+ }
public void testValuesRetreived()
{
- ConfigPlugin plugin = new ConfigPlugin();
+ assertEquals("Name not correct", "name", _plugin.getName());
+ assertEquals("Property not correct", "property", _plugin.getProperty());
+ }
+
+ public void testContainsPositiveLong()
+ {
+ assertTrue("positiveLong is not positive", _plugin.containsPositiveLong("positiveLong"));
+ assertFalse("NonExistentValue was found", _plugin.containsPositiveLong("NonExistentValue"));
try
{
- plugin.setConfiguration("base.element", _configuration.subset("base.element"));
+ _plugin.validatePositiveLong("positiveLong");
}
catch (ConfigurationException e)
{
- e.printStackTrace();
- fail(e.toString());
+ fail(e.getMessage());
+ }
+
+ try
+ {
+ _plugin.validatePositiveLong("negativeLong");
+ fail("negativeLong should not be positive");
+ }
+ catch (ConfigurationException e)
+ {
+ assertEquals("negativeLong should not be reported as positive",
+ "ConfigPlugin: unable to configure invalid negativeLong:" + NEGATIVE_LONG, e.getMessage());
}
- assertEquals("Name not correct","name",plugin.getName());
- assertEquals("Property not correct","property",plugin.getProperty());
}
+ public void testDouble()
+ {
+ assertEquals("Double value not returned", DOUBLE, _plugin.getDoubleValue("double"));
+ assertEquals("default Double value not returned", 0.0, _plugin.getDoubleValue("NonExistent"));
+ assertEquals("set default Double value not returned", DOUBLE, _plugin.getDoubleValue("NonExistent", DOUBLE));
+ }
+
+ public void testLong()
+ {
+ assertTrue("Long value not returned", _plugin.containsLong("positiveLong"));
+ assertFalse("Long value returned", _plugin.containsLong("NonExistent"));
+ assertEquals("Long value not returned", POSITIVE_LONG, _plugin.getLongValue("positiveLong"));
+ assertEquals("default Long value not returned", 0, _plugin.getLongValue("NonExistent"));
+ assertEquals("set default Long value not returned", NEGATIVE_LONG, _plugin.getLongValue("NonExistent", NEGATIVE_LONG));
+ }
+ public void testInt()
+ {
+ assertTrue("Int value not returned", _plugin.containsInt("positiveLong"));
+ assertFalse("Int value returned", _plugin.containsInt("NonExistent"));
+ assertEquals("Int value not returned", (int) POSITIVE_LONG, _plugin.getIntValue("positiveLong"));
+ assertEquals("default Int value not returned", 0, _plugin.getIntValue("NonExistent"));
+ assertEquals("set default Int value not returned", (int) NEGATIVE_LONG, _plugin.getIntValue("NonExistent", (int) NEGATIVE_LONG));
+ }
+ public void testString()
+ {
+ assertEquals("String value not returned", "name", _plugin.getStringValue("name"));
+ assertNull("Null default String value not returned", _plugin.getStringValue("NonExistent", null));
+ assertNull("default String value not returned", _plugin.getStringValue("NonExistent"));
+ assertEquals("default String value not returned", "Default", _plugin.getStringValue("NonExistent", "Default"));
+ }
+
+ public void testBoolean()
+ {
+ assertTrue("Boolean value not returned", _plugin.getBooleanValue("boolean"));
+ assertFalse("default String value not returned", _plugin.getBooleanValue("NonExistent"));
+ assertTrue("set default String value not returned", _plugin.getBooleanValue("NonExistent", true));
+ }
+
+ public void testList()
+ {
+ assertTrue("list not found in plugin", _plugin.contains("list"));
+ List list = _plugin.getListValue("list");
+ assertNotNull("Returned list should not be null", list);
+ assertEquals("List should not be empty", LIST_SIZE, list.size());
+
+ list = _plugin.getListValue("NonExistent");
+ assertNotNull("Returned list should not be null", list);
+ assertEquals("List is not empty", 0, list.size());
+ }
+
+ public void testContains()
+ {
+ assertTrue("list not found in plugin", _plugin.contains("list"));
+ assertFalse("NonExistent found in plugin", _plugin.contains("NonExistent"));
+ }
}