summaryrefslogtreecommitdiff
path: root/java/broker-plugins/experimental
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2010-05-20 15:17:14 +0000
committerMartin Ritchie <ritchiem@apache.org>2010-05-20 15:17:14 +0000
commitf708d8b6f4e703802313ef536e8f77547bd9d737 (patch)
tree884312e719375c9f0c51abfd290ad3366f01d39f /java/broker-plugins/experimental
parente1880e0a9f26685a5ac8e1219a76b54df64fa659 (diff)
downloadqpid-python-f708d8b6f4e703802313ef536e8f77547bd9d737.tar.gz
QPID-1447 : Update TopicDeletePolicy to have it's own ConfigurationPlugin for handling the configuration section. Improved configuration section based on feedback from Sorin Suciu
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@946664 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker-plugins/experimental')
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/configuration/plugin/SlowConsumerDetectionPolicyConfiguration.java16
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/Activator.java5
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java34
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicyConfiguration.java62
-rw-r--r--java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/systest/SlowConsumerTest.java6
5 files changed, 92 insertions, 31 deletions
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 a8ebd024b1..a413da387b 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
@@ -53,24 +53,12 @@ public class SlowConsumerDetectionPolicyConfiguration extends ConfigurationPlugi
public String[] getElementsProcessed()
{
- return new String[]{"[@name]", "options"};
+ return new String[]{"name"};
}
public String getPolicyName()
{
- return _configuration.getString("[@name]");
+ return _configuration.getString("name");
}
- public String getOption(String option)
- {
- List options = _configuration.getList("options.option[@name]");
-
- if (options != null && options.contains(option))
- {
- return _configuration.getString("options.option[@value]" +
- "(" + options.indexOf(option) + ")");
- }
-
- return null;
- }
}
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/Activator.java b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/Activator.java
index a6ab59a230..7b0168d436 100644
--- a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/Activator.java
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/Activator.java
@@ -25,6 +25,7 @@ import org.apache.qpid.server.configuration.plugin.SlowConsumerDetectionPolicyCo
import org.apache.qpid.server.configuration.plugin.SlowConsumerDetectionQueueConfiguration;
import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory;
import org.apache.qpid.server.virtualhost.plugin.policies.TopicDeletePolicy;
+import org.apache.qpid.server.virtualhost.plugin.policies.TopicDeletePolicyConfiguration;
import org.apache.qpid.server.virtualhost.plugins.VirtualHostPluginFactory;
import org.apache.qpid.slowconsumerdetection.policies.SlowConsumerPolicyPluginFactory;
import org.osgi.framework.BundleActivator;
@@ -47,7 +48,9 @@ public class Activator implements BundleActivator
ctx.registerService(ConfigurationPluginFactory.class.getName(), new SlowConsumerDetectionConfiguration.SlowConsumerDetectionConfigurationFactory(), null);
ctx.registerService(ConfigurationPluginFactory.class.getName(), new SlowConsumerDetectionPolicyConfiguration.SlowConsumerDetectionPolicyConfigurationFactory(), null);
ctx.registerService(VirtualHostPluginFactory.class.getName(), new SlowConsumerDetection.SlowConsumerFactory(), null);
- ctx.registerService(SlowConsumerPolicyPluginFactory.class.getName(), new TopicDeletePolicy.DeletePolicyFactory(), null);
+
+ ctx.registerService(SlowConsumerPolicyPluginFactory.class.getName(), new TopicDeletePolicy.TopicDeletePolicyFactory(), null);
+ ctx.registerService(ConfigurationPluginFactory.class.getName(), new TopicDeletePolicyConfiguration.TopicDeletePolicyConfigurationFactory(), null);
}
}
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java
index fb9dfed103..36892cdcb0 100644
--- a/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java
@@ -34,14 +34,24 @@ import org.apache.qpid.slowconsumerdetection.policies.SlowConsumerPolicyPluginFa
public class TopicDeletePolicy implements SlowConsumerPolicyPlugin
{
Logger _logger = Logger.getLogger(TopicDeletePolicy.class);
- private SlowConsumerDetectionPolicyConfiguration _configuration;
+ private TopicDeletePolicyConfiguration _configuration;
- public static class DeletePolicyFactory implements SlowConsumerPolicyPluginFactory
+ public static class TopicDeletePolicyFactory implements SlowConsumerPolicyPluginFactory
{
public SlowConsumerPolicyPlugin newInstance(SlowConsumerDetectionPolicyConfiguration configuration)
{
- return new TopicDeletePolicy(configuration);
+ TopicDeletePolicyConfiguration config =
+ configuration.getConfiguration(TopicDeletePolicyConfiguration.class);
+
+ if (config != null)
+ {
+ return new TopicDeletePolicy(config);
+ }
+ else
+ {
+ return null;
+ }
}
public String getPluginName()
@@ -50,13 +60,18 @@ public class TopicDeletePolicy implements SlowConsumerPolicyPlugin
}
}
- public TopicDeletePolicy(SlowConsumerDetectionPolicyConfiguration config)
+ public TopicDeletePolicy(TopicDeletePolicyConfiguration config)
{
_configuration = config;
}
public void performPolicy(AMQQueue q)
{
+ if (q == null)
+ {
+ return;
+ }
+
AMQSessionModel owner = q.getExclusiveOwningSession();
// Only process exclusive queues
@@ -66,22 +81,20 @@ public class TopicDeletePolicy implements SlowConsumerPolicyPlugin
}
//Only process Topics
- if(!validateQueueIsATopic(q))
+ if (!validateQueueIsATopic(q))
{
return;
}
try
{
+ // Close the consumer . this will cause autoDelete Queues to be purged
owner.getConnectionModel().
closeSession(owner, AMQConstant.RESOURCE_ERROR,
"Consuming to slow.");
- String option = _configuration.getOption("delete-persistent");
-
- boolean deletePersistent = option != null && Boolean.parseBoolean(option);
-
- if (!q.isAutoDelete() && deletePersistent)
+ // Actively delete non autoDelete queues if deletePersistent is set
+ if (!q.isAutoDelete() && _configuration.deletePersistent())
{
q.delete();
}
@@ -99,6 +112,7 @@ public class TopicDeletePolicy implements SlowConsumerPolicyPlugin
* topic exchange.
*
* @param q the Queue
+ *
* @return true iff Q is bound to a TopicExchange
*/
private boolean validateQueueIsATopic(AMQQueue q)
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
new file mode 100644
index 0000000000..69996b026f
--- /dev/null
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicyConfiguration.java
@@ -0,0 +1,62 @@
+/*
+ *
+ * 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.policies;
+
+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;
+
+public class TopicDeletePolicyConfiguration extends ConfigurationPlugin
+{
+
+ public static class TopicDeletePolicyConfigurationFactory
+ implements ConfigurationPluginFactory
+ {
+ public ConfigurationPlugin newInstance(String path,
+ Configuration config)
+ throws ConfigurationException
+ {
+ TopicDeletePolicyConfiguration slowConsumerConfig =
+ new TopicDeletePolicyConfiguration();
+ slowConsumerConfig.setConfiguration(path, config);
+ return slowConsumerConfig;
+ }
+
+ public String[] getParentPaths()
+ {
+ return new String[]{
+ "virtualhosts.virtualhost.queues.slow-consumer-detection.policy.topicDelete",
+ "virtualhosts.virtualhost.queues.queue.slow-consumer-detection.policy.topicDelete"};
+ }
+ }
+
+ public String[] getElementsProcessed()
+ {
+ return new String[]{"delete-persistent"};
+ }
+
+ public boolean deletePersistent()
+ {
+ return _configuration.containsKey("delete-persistent");
+ }
+
+}
diff --git a/java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/systest/SlowConsumerTest.java b/java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/systest/SlowConsumerTest.java
index 21d1f265fd..b2cb29c33f 100644
--- a/java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/systest/SlowConsumerTest.java
+++ b/java/broker-plugins/experimental/slowconsumerdetection/src/test/java/org/apache/qpid/systest/SlowConsumerTest.java
@@ -95,12 +95,6 @@ public class SlowConsumerTest extends QpidTestCase implements ExceptionListener,
<messageCount>50</messageCount>
<!-- Policies configuration -->
- <policy name="TopicDelete">
- <options>
- <option name="delete-persistent" value="true"/>
- </options>
- </policy>
-
<policy>
<name>TopicDelete"</name>
<topicDelete>