summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2014-03-12 13:19:29 +0000
committerAlex Rudyy <orudyy@apache.org>2014-03-12 13:19:29 +0000
commitf10abece85c408a2185afe8f3075f0ed82451aeb (patch)
treeb56a98d59e5786a39901a08f7fde53b7aa218541 /qpid/java/broker-core/src
parenta038ecc0c2da1fdd8cff38051bba3c8ffca4df1e (diff)
downloadqpid-python-f10abece85c408a2185afe8f3075f0ed82451aeb.tar.gz
QPID-5624: Remove virtualhost xml configuration. Move virtual host configuration into broker configuration store"
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha2@1576732 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-core/src')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java250
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java301
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java93
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/plugins/AbstractConfiguration.java344
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java19
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java277
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java160
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java196
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java51
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java25
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java5
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java269
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java410
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java213
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java29
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java14
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java4
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java9
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java31
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java16
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java6
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java8
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStore.java1
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStoreFactory.java (renamed from qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/ExchangeConfiguration.java)39
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java49
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java12
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java236
-rw-r--r--qpid/java/broker-core/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory1
36 files changed, 365 insertions, 2728 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
deleted file mode 100644
index 8f77de56b8..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.configuration;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-
-import org.apache.qpid.exchange.ExchangeDefaults;
-import org.apache.qpid.server.configuration.plugins.AbstractConfiguration;
-
-import java.util.List;
-
-public class QueueConfiguration extends AbstractConfiguration
-{
- private String _name;
- private VirtualHostConfiguration _vHostConfig;
-
- public QueueConfiguration(String name, VirtualHostConfiguration virtualHostConfiguration) throws ConfigurationException
- {
- _vHostConfig = virtualHostConfiguration;
- _name = name;
-
- CompositeConfiguration mungedConf = new CompositeConfiguration();
- mungedConf.addConfiguration(_vHostConfig.getConfig().subset("queues.queue." + escapeTagName(name)));
-
- setConfiguration("virtualhosts.virtualhost.queues.queue", mungedConf);
- }
-
- public String[] getElementsProcessed()
- {
- return new String[]{"maximumMessageSize",
- "maximumQueueDepth",
- "maximumMessageCount",
- "maximumMessageAge",
- "minimumAlertRepeatGap",
- "durable",
- "exchange",
- "exclusive",
- "queue",
- "autodelete",
- "priority",
- "priorities",
- "routingKey",
- "capacity",
- "flowResumeCapacity",
- "lvq",
- "lvqKey",
- "sortKey",
- "maximumDeliveryCount",
- "deadLetterQueues",
- "argument"
- };
- }
-
- @Override
- public void validateConfiguration() throws ConfigurationException
- {
- //Currently doesn't do validation
- }
-
- public VirtualHostConfiguration getVirtualHostConfiguration()
- {
- return _vHostConfig;
- }
-
- private boolean getDefaultedBoolean(String attribute)
- {
- final Configuration config = _vHostConfig.getConfig();
- if(config.containsKey("queues."+attribute))
- {
- final boolean defaultValue = config.getBoolean("queues." + attribute);
- return getBooleanValue(attribute, defaultValue);
- }
- else
- {
- return getBooleanValue(attribute);
- }
- }
-
- public boolean getDurable()
- {
- return getDefaultedBoolean("durable");
- }
-
- public boolean getExclusive()
- {
- return getDefaultedBoolean("exclusive");
- }
-
- public boolean getAutoDelete()
- {
- return getDefaultedBoolean("autodelete");
- }
-
- public String getOwner()
- {
- return getStringValue("owner", null);
- }
-
- public boolean getPriority()
- {
- return getDefaultedBoolean("priority");
- }
-
- public int getPriorities()
- {
- final Configuration config = _vHostConfig.getConfig();
-
- int defaultValue;
- if(config.containsKey("queues.priorities"))
- {
- defaultValue = config.getInt("queues.priorities");
- }
- else
- {
- defaultValue = -1;
- }
- return getIntValue("priorities", defaultValue);
- }
-
- public String getExchange()
- {
- final Configuration config = _vHostConfig.getConfig();
-
- String defaultValue;
-
- if(config.containsKey("queues.exchange"))
- {
- defaultValue = config.getString("queues.exchange");
- }
- else
- {
- defaultValue = "";
- }
-
- return getStringValue("exchange", defaultValue);
- }
-
- public List getRoutingKeys()
- {
- return getListValue("routingKey");
- }
-
- public String getName()
- {
- return _name;
- }
-
- public String getDescription()
- {
- return getStringValue("description");
- }
-
- public int getMaximumMessageAge()
- {
- return getIntValue("maximumMessageAge");
- }
-
- public long getMaximumQueueDepth()
- {
- return getLongValue("maximumQueueDepth");
- }
-
- public long getMaximumMessageSize()
- {
- return getLongValue("maximumMessageSize");
- }
-
- public long getMaximumMessageCount()
- {
- return getLongValue("maximumMessageCount");
- }
-
- public long getMinimumAlertRepeatGap()
- {
- return getLongValue("minimumAlertRepeatGap");
- }
-
- public long getCapacity()
- {
- return getLongValue("capacity");
- }
-
- public long getFlowResumeCapacity()
- {
- return getLongValue("flowResumeCapacity");
- }
-
- public boolean isLVQ()
- {
- return getBooleanValue("lvq");
- }
-
- public String getLVQKey()
- {
- return getStringValue("lvqKey", null);
- }
-
- public String getQueueSortKey()
- {
- return getStringValue("sortKey", null);
- }
-
- public int getMaxDeliveryCount()
- {
- return getIntValue("maximumDeliveryCount", _vHostConfig.getMaxDeliveryCount());
- }
-
- /**
- * Check if dead letter queue delivery is enabled, deferring to the virtualhost configuration if not set.
- */
- public boolean isDeadLetterQueueEnabled()
- {
- return getBooleanValue("deadLetterQueues", _vHostConfig.isDeadLetterQueueEnabled());
- }
-
- public Map<String,String> getArguments()
- {
- return getMap("argument");
- }
-
- public Map<String,String> getBindingArguments(String routingKey)
- {
-
- return getConfig().containsKey(routingKey+".bindingArgument") ? getMap(routingKey+".bindingArgument") : null;
- }
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
deleted file mode 100644
index 189f5916e0..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.configuration;
-
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-
-import org.apache.qpid.server.configuration.plugins.AbstractConfiguration;
-import org.apache.qpid.server.model.Broker;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-public class VirtualHostConfiguration extends AbstractConfiguration
-{
- private final String _name;
- private final Map<String, QueueConfiguration> _queues = new HashMap<String, QueueConfiguration>();
- private final Map<String, ExchangeConfiguration> _exchanges = new HashMap<String, ExchangeConfiguration>();
- private final Broker _broker;
- private final long _defaultHouseKeepingCheckPeriod;
-
- public VirtualHostConfiguration(String name, Configuration config, Broker broker) throws ConfigurationException
- {
- _name = name;
- _broker = broker;
-
- // store value of this attribute for running life of virtual host since updating of this value has no run-time effect
- _defaultHouseKeepingCheckPeriod = ((Number)_broker.getAttribute(Broker.VIRTUALHOST_HOUSEKEEPING_CHECK_PERIOD)).longValue();
- setConfiguration(config);
- }
-
- public VirtualHostConfiguration(String name, File configurationFile, Broker broker) throws ConfigurationException
- {
- this(name, loadConfiguration(name, configurationFile), broker);
- }
-
- private static Configuration loadConfiguration(String name, File configurationFile) throws ConfigurationException
- {
- Configuration configuration = null;
- if (configurationFile == null)
- {
- throw new IllegalConfigurationException("Virtualhost configuration file must be supplied!");
- }
- else
- {
- Configuration virtualHostConfig = XmlConfigurationUtilities.parseConfig(configurationFile);
-
- // check for the element with the same name as virtual host
- Configuration config = virtualHostConfig.subset("virtualhost." + XmlConfigurationUtilities.escapeTagName(name));
- if (config.isEmpty())
- {
- throw new IllegalConfigurationException("No configuration found for virtual host '" + name + "' in " + configurationFile.getAbsolutePath());
- }
- else
- {
- configuration = config;
- }
- }
- return configuration;
- }
-
- /**
- * Apply the given configuration to this VirtualHostConfiguration
- *
- * @param config the config to apply
- * @throws ConfigurationException if a problem occurs with configuration
- */
- public void setConfiguration(Configuration config) throws ConfigurationException
- {
- setConfiguration("virtualhosts.virtualhost", config);
-
- Iterator i = getListValue("queues.queue.name").iterator();
-
- while (i.hasNext())
- {
- String queueName = (String) i.next();
- _queues.put(queueName, new QueueConfiguration(queueName, this));
- }
-
- 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(getConfig().subset("exchanges"));
- String exchName = (String) i.next();
- _exchanges.put(exchName, new ExchangeConfiguration(exchName, mungedConf));
- }
- }
-
- public String getName()
- {
- return _name;
- }
-
- public long getHousekeepingCheckPeriod()
- {
- return getLongValue("housekeeping.checkPeriod", _defaultHouseKeepingCheckPeriod);
- }
-
- public Configuration getStoreConfiguration()
- {
- return getConfig().subset("store");
- }
-
- public String getMessageStoreClass()
- {
- return getStringValue("store.class", null);
- }
-
- public void setMessageStoreClass(String storeFactoryClass)
- {
- getConfig().setProperty("store.class", storeFactoryClass);
- }
-
- public List getExchanges()
- {
- return getListValue("exchanges.exchange.name");
- }
-
- public String[] getQueueNames()
- {
- return _queues.keySet().toArray(new String[_queues.size()]);
- }
-
- public ExchangeConfiguration getExchangeConfiguration(String exchangeName)
- {
- return _exchanges.get(exchangeName);
- }
-
- public QueueConfiguration getQueueConfiguration(String queueName)
- {
- // We might be asked for the config for a queue we don't know about,
- // such as one that's been dynamically created. Those get the defaults by default.
- if (_queues.containsKey(queueName))
- {
- return _queues.get(queueName);
- }
- else
- {
- try
- {
- return new QueueConfiguration(queueName, this);
- }
- catch (ConfigurationException e)
- {
- // The configuration is empty so there can't be an error.
- return null;
- }
- }
- }
-
- public int getMaximumMessageAge()
- {
- return getIntValue("queues.maximumMessageAge", getBrokerAttributeAsInt(Broker.QUEUE_ALERT_THRESHOLD_MESSAGE_AGE));
- }
-
- public Long getMaximumQueueDepth()
- {
- return getLongValue("queues.maximumQueueDepth", getBrokerAttributeAsLong(Broker.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES));
- }
-
- public Long getMaximumMessageSize()
- {
- return getLongValue("queues.maximumMessageSize", getBrokerAttributeAsLong(Broker.QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE));
- }
-
- public Long getMaximumMessageCount()
- {
- return getLongValue("queues.maximumMessageCount", getBrokerAttributeAsLong(Broker.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES));
- }
-
- public Long getMinimumAlertRepeatGap()
- {
- return getLongValue("queues.minimumAlertRepeatGap", getBrokerAttributeAsLong(Broker.QUEUE_ALERT_REPEAT_GAP));
- }
-
- public long getCapacity()
- {
- return getLongValue("queues.capacity", getBrokerAttributeAsLong(Broker.QUEUE_FLOW_CONTROL_SIZE_BYTES));
- }
-
- public long getFlowResumeCapacity()
- {
- return getLongValue("queues.flowResumeCapacity", getBrokerAttributeAsLong(Broker.QUEUE_FLOW_CONTROL_RESUME_SIZE_BYTES));
- }
-
- public String[] getElementsProcessed()
- {
- return new String[]{"queues", "exchanges", "custom-exchanges", "store", "housekeeping"};
-
- }
-
- @Override
- public void validateConfiguration() throws ConfigurationException
- {
- // QPID-3249. Support for specifying authentication name at vhost level is no longer supported.
- if (getListValue("security.authentication.name").size() > 0)
- {
- String message = "Validation error : security/authentication/name is no longer a supported element within the configuration xml."
- + " It appears in virtual host definition : " + _name;
- throw new ConfigurationException(message);
- }
-
- // QPID-3266. Tidy up housekeeping configuration option for scheduling frequency
- if (contains("housekeeping.expiredMessageCheckPeriod"))
- {
- String message = "Validation error : housekeeping/expiredMessageCheckPeriod must be replaced by housekeeping/checkPeriod."
- + " It appears in virtual host definition : " + _name;
- throw new ConfigurationException(message);
- }
- }
-
- public int getHouseKeepingThreadCount()
- {
- return getIntValue("housekeeping.poolSize", Runtime.getRuntime().availableProcessors());
- }
-
- public long getTransactionTimeoutOpenWarn()
- {
- return getLongValue("transactionTimeout.openWarn",
- getBrokerAttributeAsLong(Broker.VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_WARN));
- }
-
- public long getTransactionTimeoutOpenClose()
- {
- return getLongValue("transactionTimeout.openClose",
- getBrokerAttributeAsLong(Broker.VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE));
- }
-
- public long getTransactionTimeoutIdleWarn()
- {
- return getLongValue("transactionTimeout.idleWarn",
- getBrokerAttributeAsLong(Broker.VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_WARN));
- }
-
- public long getTransactionTimeoutIdleClose()
- {
- return getLongValue("transactionTimeout.idleClose",
- getBrokerAttributeAsLong(Broker.VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE));
- }
-
- public int getMaxDeliveryCount()
- {
- return getIntValue("queues.maximumDeliveryCount", getBrokerAttributeAsInt(Broker.QUEUE_MAXIMUM_DELIVERY_ATTEMPTS));
- }
-
- /**
- * Check if dead letter queue delivery is enabled, deferring to the broker configuration if not set.
- */
- public boolean isDeadLetterQueueEnabled()
- {
- return getBooleanValue("queues.deadLetterQueues", getBrokerAttributeAsBoolean(Broker.QUEUE_DEAD_LETTER_QUEUE_ENABLED));
- }
-
- private long getBrokerAttributeAsLong(String name)
- {
- Number brokerValue = (Number)_broker.getAttribute(name);
- return brokerValue == null? 0 : brokerValue.longValue();
- }
-
- private int getBrokerAttributeAsInt(String name)
- {
- Number brokerValue = (Number)_broker.getAttribute(name);
- return brokerValue == null? 0 : brokerValue.intValue();
- }
-
- private boolean getBrokerAttributeAsBoolean(String name)
- {
- Boolean brokerValue = (Boolean)_broker.getAttribute(name);
- return brokerValue == null? false : brokerValue.booleanValue();
- }
-
- public String getType()
- {
- return getStringValue("type", "org.apache.qpid.server.store.berkeleydb.BDBHAMessageStore".equals(getMessageStoreClass()) ? "BDB_HA": "STANDARD");
- }
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java
deleted file mode 100644
index 84972c1e0a..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.configuration;
-
-import java.io.File;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.ConfigurationFactory;
-import org.apache.commons.configuration.SystemConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
-
-public class XmlConfigurationUtilities
-{
-
- // Our configuration class needs to make the interpolate method
- // public so it can be called below from the config method.
- public static class MyConfiguration extends CompositeConfiguration
- {
- public String interpolate(String obj)
- {
- return super.interpolate(obj);
- }
- }
-
- public static Configuration parseConfig(File file) throws ConfigurationException
- {
- ConfigurationFactory factory = new ConfigurationFactory();
- factory.setConfigurationFileName(file.getAbsolutePath());
- Configuration conf = factory.getConfiguration();
-
- Iterator<?> keys = conf.getKeys();
- if (!keys.hasNext())
- {
- keys = null;
- conf = flatConfig(file);
- }
-
- return conf;
- }
-
- public final static Configuration flatConfig(File file) throws ConfigurationException
- {
- // We have to override the interpolate methods so that
- // interpolation takes place across the entirety of the
- // composite configuration. Without doing this each
- // configuration object only interpolates variables defined
- // inside itself.
- final MyConfiguration conf = new MyConfiguration();
- conf.addConfiguration(new SystemConfiguration()
- {
- protected String interpolate(String o)
- {
- return conf.interpolate(o);
- }
- });
- conf.addConfiguration(new XMLConfiguration(file)
- {
- protected String interpolate(String o)
- {
- return conf.interpolate(o);
- }
- });
- return conf;
- }
-
- public static String escapeTagName(String name)
- {
- return name.replaceAll("\\.", "\\.\\.");
- }
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/plugins/AbstractConfiguration.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/plugins/AbstractConfiguration.java
deleted file mode 100644
index c28ea726c0..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/plugins/AbstractConfiguration.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.qpid.server.configuration.plugins;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.ConversionException;
-import org.apache.log4j.Logger;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-public abstract class AbstractConfiguration
-{
- protected static final Logger _logger = Logger.getLogger(AbstractConfiguration.class);
-
- private Configuration _config;
-
- /**
- * The Elements that this Plugin can process.
- *
- * For a Queues plugin that would be a list containing:
- * <ul>
- * <li>queue - the queue entries
- * <li>the alerting values for defaults
- * <li>exchange - the default exchange
- * <li>durable - set the default durability
- * </ul>
- */
- abstract public String[] getElementsProcessed();
-
- /** Performs configuration validation. */
- public void validateConfiguration() throws ConfigurationException
- {
- // Override in sub-classes
- }
-
- public Configuration getConfig()
- {
- return _config;
- }
-
- /**
- * Sets the configuration for this plugin
- *
- * @param path
- * @param configuration the configuration for this plugin.
- */
- public void setConfiguration(String path, Configuration configuration) throws ConfigurationException
- {
- _config = configuration;
-
- // Extract a list of elements for processing
- Iterator<?> keys = configuration.getKeys();
-
- Set<String> elements = new HashSet<String>();
- while (keys.hasNext())
- {
- String key = (String) keys.next();
-
- int elementNameIndex = key.indexOf(".");
-
- String element = key.trim();
- if (elementNameIndex != -1)
- {
- element = key.substring(0, elementNameIndex).trim();
- }
-
- // Trim any element properties
- elementNameIndex = element.indexOf("[");
- if (elementNameIndex > 0)
- {
- element = element.substring(0, elementNameIndex).trim();
- }
-
- elements.add(element);
- }
-
- //Remove the items we already expect in the configuration
- for (String tag : getElementsProcessed())
- {
-
- // Work round the issue with Commons configuration.
- // With an XMLConfiguration the key will be [@property]
- // but with a CompositeConfiguration it will be @property].
- // Hide this issue from our users so when/if we change the
- // configuration they don't have to.
- int bracketIndex = tag.indexOf("[");
- if (bracketIndex != -1)
- {
- tag = tag.substring(bracketIndex + 1, tag.length());
- }
-
- elements.remove(tag);
- }
-
- if (_logger.isInfoEnabled())
- {
- if (!elements.isEmpty())
- {
- _logger.info("Elements to lookup:" + path);
- for (String tag : elements)
- {
- _logger.info("Tag:'" + tag + "'");
- }
- }
- }
-
- validateConfiguration();
- }
-
- /** Helper method to print out list of keys in a {@link Configuration}. */
- public static final void showKeys(Configuration config)
- {
- if (config.isEmpty())
- {
- _logger.info("Configuration is empty");
- }
- else
- {
- Iterator<?> keys = config.getKeys();
- while (keys.hasNext())
- {
- String key = (String) keys.next();
- _logger.info("Configuration key: " + key);
- }
- }
- }
-
- protected boolean hasConfiguration()
- {
- return _config != null;
- }
-
- /// Getters
-
- protected double getDoubleValue(String property)
- {
- return getDoubleValue(property, 0.0);
- }
-
- protected double getDoubleValue(String property, double defaultValue)
- {
- return _config.getDouble(property, defaultValue);
- }
-
- protected long getLongValue(String property)
- {
- return getLongValue(property, 0);
- }
-
- protected long getLongValue(String property, long defaultValue)
- {
- return _config.getLong(property, defaultValue);
- }
-
- protected int getIntValue(String property)
- {
- return getIntValue(property, 0);
- }
-
- protected int getIntValue(String property, int defaultValue)
- {
- return _config.getInt(property, defaultValue);
- }
-
- protected String getStringValue(String property)
- {
- return getStringValue(property, null);
- }
-
- protected String getStringValue(String property, String defaultValue)
- {
- return _config.getString(property, defaultValue);
- }
-
- protected boolean getBooleanValue(String property)
- {
- return getBooleanValue(property, false);
- }
-
- protected boolean getBooleanValue(String property, boolean defaultValue)
- {
- return _config.getBoolean(property, defaultValue);
- }
-
- protected List getListValue(String property)
- {
- return getListValue(property, Collections.EMPTY_LIST);
- }
-
- protected List getListValue(String property, List defaultValue)
- {
- return _config.getList(property, defaultValue);
- }
-
- /// Validation Helpers
-
- protected boolean contains(String property)
- {
- return _config.getProperty(property) != null;
- }
-
- /**
- * Provide mechanism to validate Configuration contains a Positive 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 + ":" +
- _config.getString(property),
- last);
- }
- }
-
- protected boolean containsLong(String property)
- {
- try
- {
- _config.getLong(property);
- return true;
- }
- catch (NoSuchElementException e)
- {
- return false;
- }
- }
-
- protected boolean containsPositiveLong(String property)
- {
- try
- {
- long value = _config.getLong(property);
- return value > 0;
- }
- catch (NoSuchElementException e)
- {
- return false;
- }
-
- }
-
- protected boolean containsInt(String property)
- {
- try
- {
- _config.getInt(property);
- return true;
- }
- catch (NoSuchElementException e)
- {
- return false;
- }
- }
-
- protected boolean containsBoolean(String property)
- {
- try
- {
- _config.getBoolean(property);
- return true;
- }
- catch (NoSuchElementException e)
- {
- return false;
- }
- }
-
- public static String escapeTagName(String name)
- {
- return name.replaceAll("\\.", "\\.\\.");
- }
-
- protected void setConfig(Configuration config)
- {
- _config = config;
- }
-
- protected Map<String,String> getMap(String name)
- {
- List elements = getListValue(name,Collections.emptyList());
-
- Map<String,String> map = new LinkedHashMap();
- for(Object item : elements)
- {
- String[] keyValue = String.valueOf(item).split("=",2);
- map.put(keyValue[0].trim(), keyValue.length > 1 ? keyValue[1].trim() : null);
- }
- return map;
- }
-}
-
-
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
index cc591b695e..010d74eb7f 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
@@ -545,7 +545,7 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore
}
else if (fieldNode.isObject())
{
- // ignore, in-line objects are not supported yet
+ attributes.put(fieldName, toObject(fieldNode) );
}
else
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
index d63a765144..928ea26819 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
@@ -22,8 +22,6 @@ package org.apache.qpid.server.model;
import java.util.Collection;
-import org.apache.qpid.server.message.MessageInstance;
-import org.apache.qpid.server.queue.QueueEntry;
import org.apache.qpid.server.queue.QueueEntryVisitor;
@ManagedObject
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
index 4aec9b38a0..827c01f70f 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
@@ -56,7 +56,8 @@ public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<
String SUPPORTED_QUEUE_TYPES = "supportedQueueTypes";
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
- String CONFIG_PATH = "configPath";
+ String SECURITY_ACL = "securityAcl";
+ String HOUSE_KEEPING_THREAD_COUNT = "houseKeepingThreadCount";
// Attributes
@@ -123,7 +124,10 @@ public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<
long getQueue_alertThresholdQueueDepthMessages();
@ManagedAttribute
- String getConfigPath();
+ String getSecurityAcl();
+
+ @ManagedAttribute
+ int getHouseKeepingThreadCount();
@ManagedStatistic
long getQueueCount();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
index eda61f92b0..a498e3e59e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
@@ -377,6 +377,25 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
}
}
+ <T extends ConfiguredObject<?>> Object getAttribute(String name, T parent, String parentAttributeName)
+ {
+ Object value = getActualAttribute(name);
+ if (value != null )
+ {
+ return value;
+ }
+ if (parent != null)
+ {
+ value = parent.getAttribute(parentAttributeName);
+ if (value != null)
+ {
+ return value;
+ }
+ }
+ return getDefaultAttribute(name);
+ }
+
+
@Override
public String getDescription()
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
index 72b316c784..82051c3a41 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.model.adapter;
-import java.io.File;
import java.lang.reflect.Type;
import java.security.AccessControlException;
import java.util.ArrayList;
@@ -31,15 +30,9 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.commons.configuration.SystemConfiguration;
import org.apache.log4j.Logger;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
-import org.apache.qpid.server.configuration.XmlConfigurationUtilities.MyConfiguration;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.message.ServerMessage;
@@ -75,8 +68,32 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
put(TYPE, String.class);
put(STORE_PATH, String.class);
put(STORE_TYPE, String.class);
- put(CONFIG_PATH, String.class);
put(STATE, State.class);
+
+ put(QUEUE_ALERT_REPEAT_GAP, Long.class);
+ put(QUEUE_ALERT_THRESHOLD_MESSAGE_AGE, Long.class);
+ put(QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE, Long.class);
+ put(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, Long.class);
+ put(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, Long.class);
+ put(QUEUE_DEAD_LETTER_QUEUE_ENABLED, Boolean.class);
+ put(QUEUE_MAXIMUM_DELIVERY_ATTEMPTS, Integer.class);
+ put(QUEUE_FLOW_CONTROL_SIZE_BYTES, Long.class);
+ put(QUEUE_FLOW_RESUME_SIZE_BYTES, Long.class);
+
+ put(HOUSEKEEPING_CHECK_PERIOD, Long.class);
+ put(STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE, Long.class);
+ put(STORE_TRANSACTION_IDLE_TIMEOUT_WARN, Long.class);
+ put(STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE, Long.class);
+ put(STORE_TRANSACTION_OPEN_TIMEOUT_WARN, Long.class);
+
+ put(CONFIG_STORE_TYPE, String.class);
+ put(CONFIG_STORE_PATH, String.class);
+
+ }});
+
+ @SuppressWarnings("serial")
+ private static final Map<String, Object> DEFAULTS = Collections.unmodifiableMap(new HashMap<String, Object>(){{
+ put(HOUSE_KEEPING_THREAD_COUNT, Runtime.getRuntime().availableProcessors());
}});
private org.apache.qpid.server.virtualhost.VirtualHost _virtualHost;
@@ -90,7 +107,7 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
public VirtualHostAdapter(UUID id, Map<String, Object> attributes, Broker<?> broker, StatisticsGatherer brokerStatisticsGatherer, TaskExecutor taskExecutor)
{
- super(id, Collections.<String,Object>emptyMap(), MapValueConverter.convert(attributes, ATTRIBUTE_TYPES, false), taskExecutor, false);
+ super(id, DEFAULTS, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES, false), taskExecutor, false);
_broker = broker;
_brokerStatisticsGatherer = brokerStatisticsGatherer;
validateAttributes();
@@ -104,43 +121,10 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
{
throw new IllegalConfigurationException("Virtual host name must be specified");
}
-
- String configurationFile = (String) getAttribute(CONFIG_PATH);
- String type = (String) getAttribute(TYPE);
-
- boolean invalidAttributes = false;
- if (configurationFile == null)
- {
- if (type == null)
- {
- invalidAttributes = true;
- }
- else
- {
- validateAttributes(type);
- }
- }/*
- else
- {
- if (type != null)
- {
- invalidAttributes = true;
- }
-
- }*/
- if (invalidAttributes)
- {
- throw new IllegalConfigurationException("Please specify either the 'configPath' attribute or 'type' attributes");
- }
-
- // pre-load the configuration in order to validate
- try
- {
- createVirtualHostConfiguration(name);
- }
- catch(ConfigurationException e)
+ String type = getType();
+ if (type == null || "".equals(type.trim()))
{
- throw new IllegalConfigurationException("Failed to validate configuration", e);
+ throw new IllegalConfigurationException("Virtual host type must be specified");
}
}
@@ -682,95 +666,96 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
{
return LifetimePolicy.PERMANENT;
}
- else if (_virtualHost != null)
+ else if(QUEUE_ALERT_REPEAT_GAP.equals(name))
{
- return getAttributeFromVirtualHostImplementation(name);
+ return getAttribute(QUEUE_ALERT_REPEAT_GAP, Broker.QUEUE_ALERT_REPEAT_GAP);
}
- return super.getAttribute(name);
- }
-
- private Object getAttributeFromVirtualHostImplementation(String name)
- {
- if(SUPPORTED_EXCHANGE_TYPES.equals(name))
+ else if(QUEUE_ALERT_THRESHOLD_MESSAGE_AGE.equals(name))
{
- List<String> types = new ArrayList<String>();
- for(@SuppressWarnings("rawtypes") ExchangeType type : _virtualHost.getExchangeTypes())
- {
- types.add(type.getType());
- }
- return Collections.unmodifiableCollection(types);
+ return getAttribute(QUEUE_ALERT_THRESHOLD_MESSAGE_AGE, Broker.QUEUE_ALERT_THRESHOLD_MESSAGE_AGE);
}
- else if(SUPPORTED_QUEUE_TYPES.equals(name))
+ else if(QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE.equals(name))
{
- // TODO
+ return getAttribute(QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE, Broker.QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE);
}
- else if(QUEUE_DEAD_LETTER_QUEUE_ENABLED.equals(name))
+ else if(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES.equals(name))
{
- return _virtualHost.getConfiguration().isDeadLetterQueueEnabled();
+ return getAttribute(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, Broker.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES);
}
- else if(HOUSEKEEPING_CHECK_PERIOD.equals(name))
+ else if(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES.equals(name))
+ {
+ return getAttribute(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, Broker.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES);
+ }
+ else if(QUEUE_DEAD_LETTER_QUEUE_ENABLED.equals(name))
{
- return _virtualHost.getConfiguration().getHousekeepingCheckPeriod();
+ return getAttribute(QUEUE_DEAD_LETTER_QUEUE_ENABLED, Broker.QUEUE_DEAD_LETTER_QUEUE_ENABLED);
}
else if(QUEUE_MAXIMUM_DELIVERY_ATTEMPTS.equals(name))
{
- return _virtualHost.getConfiguration().getMaxDeliveryCount();
+ return getAttribute(QUEUE_MAXIMUM_DELIVERY_ATTEMPTS, Broker.QUEUE_MAXIMUM_DELIVERY_ATTEMPTS);
}
else if(QUEUE_FLOW_CONTROL_SIZE_BYTES.equals(name))
{
- return _virtualHost.getConfiguration().getCapacity();
+ return getAttribute(QUEUE_FLOW_CONTROL_SIZE_BYTES, Broker.QUEUE_FLOW_CONTROL_SIZE_BYTES);
}
else if(QUEUE_FLOW_RESUME_SIZE_BYTES.equals(name))
{
- return _virtualHost.getConfiguration().getFlowResumeCapacity();
- }
- else if(STORE_TYPE.equals(name))
- {
- return _virtualHost.getMessageStore().getStoreType();
+ return getAttribute(QUEUE_FLOW_RESUME_SIZE_BYTES, Broker.QUEUE_FLOW_CONTROL_RESUME_SIZE_BYTES);
}
- else if(STORE_PATH.equals(name))
+ else if(HOUSEKEEPING_CHECK_PERIOD.equals(name))
{
- return _virtualHost.getMessageStore().getStoreLocation();
+ return getAttribute(HOUSEKEEPING_CHECK_PERIOD, Broker.VIRTUALHOST_HOUSEKEEPING_CHECK_PERIOD);
}
else if(STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE.equals(name))
{
- return _virtualHost.getConfiguration().getTransactionTimeoutIdleClose();
+ return getAttribute(STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE, Broker.VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE);
}
else if(STORE_TRANSACTION_IDLE_TIMEOUT_WARN.equals(name))
{
- return _virtualHost.getConfiguration().getTransactionTimeoutIdleWarn();
+ return getAttribute(STORE_TRANSACTION_IDLE_TIMEOUT_WARN, Broker.VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_WARN);
}
else if(STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE.equals(name))
{
- return _virtualHost.getConfiguration().getTransactionTimeoutOpenClose();
+ return getAttribute(STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE, Broker.VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE);
}
else if(STORE_TRANSACTION_OPEN_TIMEOUT_WARN.equals(name))
{
- return _virtualHost.getConfiguration().getTransactionTimeoutOpenWarn();
- }
- else if(QUEUE_ALERT_REPEAT_GAP.equals(name))
- {
- return _virtualHost.getConfiguration().getMinimumAlertRepeatGap();
- }
- else if(QUEUE_ALERT_THRESHOLD_MESSAGE_AGE.equals(name))
- {
- return _virtualHost.getConfiguration().getMaximumMessageAge();
- }
- else if(QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE.equals(name))
- {
- return _virtualHost.getConfiguration().getMaximumMessageSize();
- }
- else if(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES.equals(name))
- {
- return _virtualHost.getConfiguration().getMaximumQueueDepth();
+ return getAttribute(STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE, Broker.VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_WARN);
}
- else if(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES.equals(name))
+ else if (_virtualHost != null)
{
- return _virtualHost.getConfiguration().getMaximumMessageCount();
+ if(SUPPORTED_EXCHANGE_TYPES.equals(name))
+ {
+ List<String> types = new ArrayList<String>();
+ for(@SuppressWarnings("rawtypes") ExchangeType type : _virtualHost.getExchangeTypes())
+ {
+ types.add(type.getType());
+ }
+ return Collections.unmodifiableCollection(types);
+ }
+ else if(SUPPORTED_QUEUE_TYPES.equals(name))
+ {
+ // TODO
+ }
+ else if(STORE_TYPE.equals(name))
+ {
+ return _virtualHost.getMessageStore().getStoreType();
+ }
+ else if(STORE_PATH.equals(name))
+ {
+ return _virtualHost.getMessageStore().getStoreLocation();
+ }
}
return super.getAttribute(name);
}
+
+ Object getAttribute(String name, String brokerAttributeName)
+ {
+ return getAttribute(name, _broker, brokerAttributeName);
+ }
+
+
@Override
public Collection<String> getAttributeNames()
{
@@ -807,31 +792,31 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
@Override
public boolean isQueue_deadLetterQueueEnabled()
{
- return _virtualHost.getConfiguration().isDeadLetterQueueEnabled();
+ return (Boolean)getAttribute(VirtualHost.QUEUE_DEAD_LETTER_QUEUE_ENABLED);
}
@Override
public long getHousekeepingCheckPeriod()
{
- return _virtualHost.getConfiguration().getHousekeepingCheckPeriod();
+ return (Long)getAttribute(VirtualHost.HOUSEKEEPING_CHECK_PERIOD);
}
@Override
public int getQueue_maximumDeliveryAttempts()
{
- return _virtualHost.getConfiguration().getMaxDeliveryCount();
+ return (Integer)getAttribute(VirtualHost.QUEUE_MAXIMUM_DELIVERY_ATTEMPTS);
}
@Override
public long getQueue_flowControlSizeBytes()
{
- return _virtualHost.getConfiguration().getCapacity();
+ return (Long)getAttribute(VirtualHost.QUEUE_FLOW_CONTROL_SIZE_BYTES);
}
@Override
public long getQueue_flowResumeSizeBytes()
{
- return _virtualHost.getConfiguration().getFlowResumeCapacity();
+ return (Long)getAttribute(VirtualHost.QUEUE_FLOW_RESUME_SIZE_BYTES);
}
@Override
@@ -843,7 +828,7 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
@Override
public String getConfigStorePath()
{
- return (String) getAttribute(CONFIG_PATH);
+ return (String) getAttribute(CONFIG_STORE_PATH);
}
@Override
@@ -861,61 +846,55 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
@Override
public long getStoreTransactionIdleTimeoutClose()
{
- return _virtualHost.getConfiguration().getTransactionTimeoutIdleClose();
+ return (Long)getAttribute(VirtualHost.STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE);
}
@Override
public long getStoreTransactionIdleTimeoutWarn()
{
- return _virtualHost.getConfiguration().getTransactionTimeoutIdleWarn();
+ return (Long)getAttribute(VirtualHost.STORE_TRANSACTION_IDLE_TIMEOUT_WARN);
}
@Override
public long getStoreTransactionOpenTimeoutClose()
{
- return _virtualHost.getConfiguration().getTransactionTimeoutOpenClose();
+ return (Long)getAttribute(VirtualHost.STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE);
}
@Override
public long getStoreTransactionOpenTimeoutWarn()
{
- return _virtualHost.getConfiguration().getTransactionTimeoutOpenWarn();
+ return (Long)getAttribute(VirtualHost.STORE_TRANSACTION_OPEN_TIMEOUT_WARN);
}
@Override
public long getQueue_alertRepeatGap()
{
- return _virtualHost.getConfiguration().getMinimumAlertRepeatGap();
+ return (Long)getAttribute(VirtualHost.QUEUE_ALERT_REPEAT_GAP);
}
@Override
public long getQueue_alertThresholdMessageAge()
{
- return _virtualHost.getConfiguration().getMaximumMessageAge();
+ return (Long)getAttribute(VirtualHost.QUEUE_ALERT_THRESHOLD_MESSAGE_AGE);
}
@Override
public long getQueue_alertThresholdMessageSize()
{
- return _virtualHost.getConfiguration().getMaximumMessageSize();
+ return (Long)getAttribute(VirtualHost.QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE);
}
@Override
public long getQueue_alertThresholdQueueDepthBytes()
{
- return _virtualHost.getConfiguration().getMaximumQueueDepth();
+ return (Long)getAttribute(VirtualHost.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES);
}
@Override
public long getQueue_alertThresholdQueueDepthMessages()
{
- return _virtualHost.getConfiguration().getMaximumMessageCount();
- }
-
- @Override
- public String getConfigPath()
- {
- return (String) getAttribute(CONFIG_PATH);
+ return (Long)getAttribute(VirtualHost.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES);
}
@Override
@@ -960,6 +939,17 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
return _virtualHost.getMessageDeliveryStatistics().getTotal();
}
+ @Override
+ public String getSecurityAcl()
+ {
+ return (String)getAttribute(SECURITY_ACL);
+ }
+
+ @Override
+ public int getHouseKeepingThreadCount()
+ {
+ return (Integer)getAttribute(HOUSE_KEEPING_THREAD_COUNT);
+ }
@Override
protected boolean setState(State currentState, State desiredState)
@@ -1041,8 +1031,7 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
String virtualHostName = getName();
try
{
- VirtualHostConfiguration configuration = createVirtualHostConfiguration(virtualHostName);
- String type = configuration.getType();
+ String type = (String) getAttribute(TYPE);
final VirtualHostFactory factory = VirtualHostFactory.FACTORIES.get(type);
if(factory == null)
{
@@ -1053,11 +1042,10 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
_virtualHost = factory.createVirtualHost(_broker.getVirtualHostRegistry(),
_brokerStatisticsGatherer,
_broker.getSecurityManager(),
- configuration,
this);
}
}
- catch (ConfigurationException e)
+ catch (Exception e)
{
throw new ServerScopedRuntimeException("Failed to create virtual host " + virtualHostName, e);
}
@@ -1078,53 +1066,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
}
}
- private VirtualHostConfiguration createVirtualHostConfiguration(String virtualHostName) throws ConfigurationException
- {
- VirtualHostConfiguration configuration;
- String configurationFile = (String)getAttribute(CONFIG_PATH);
- if (configurationFile == null)
- {
- final MyConfiguration basicConfiguration = new MyConfiguration();
- PropertiesConfiguration config = new PropertiesConfiguration();
- final String type = (String) getAttribute(TYPE);
- config.addProperty("type", type);
- VirtualHostFactory factory = VirtualHostFactory.FACTORIES.get(type);
- if(factory != null)
- {
- for(Map.Entry<String,Object> entry : factory.createVirtualHostConfiguration(this).entrySet())
- {
- config.addProperty(entry.getKey(), entry.getValue());
- }
- }
- basicConfiguration.addConfiguration(config);
-
- CompositeConfiguration compositeConfiguration = new CompositeConfiguration();
- compositeConfiguration.addConfiguration(new SystemConfiguration());
- compositeConfiguration.addConfiguration(basicConfiguration);
- configuration = new VirtualHostConfiguration(virtualHostName, compositeConfiguration , _broker);
- }
- else
- {
- if (!new File(configurationFile).exists())
- {
- throw new IllegalConfigurationException("Configuration file '" + configurationFile + "' does not exist");
- }
- configuration = new VirtualHostConfiguration(virtualHostName, new File(configurationFile) , _broker);
- String type = configuration.getType();
- changeAttribute(TYPE,null,type);
- VirtualHostFactory factory = VirtualHostFactory.FACTORIES.get(type);
- if(factory != null)
- {
- for(Map.Entry<String,Object> entry : factory.convertVirtualHostConfiguration(configuration.getConfig()).entrySet())
- {
- changeAttribute(entry.getKey(), getAttribute(entry.getKey()), entry.getValue());
- }
- }
-
- }
- return configuration;
- }
-
@Override
public SecurityManager getSecurityManager()
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java
index 94a029ced3..b83222f798 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java
@@ -21,9 +21,7 @@
package org.apache.qpid.server.plugin;
import java.util.Map;
-import org.apache.commons.configuration.Configuration;
import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
public interface DurableConfigurationStoreFactory extends Pluggable
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
index 12fb9224bb..546f2fa05d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
@@ -25,7 +25,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import org.apache.commons.configuration.Configuration;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.jdbc.ConnectionProvider;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java
index 81404dcba8..779dd06e9e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java
@@ -21,7 +21,6 @@
package org.apache.qpid.server.plugin;
import java.util.Map;
-import org.apache.commons.configuration.Configuration;
import org.apache.qpid.server.store.MessageStore;
public interface MessageStoreFactory extends Pluggable
@@ -30,7 +29,5 @@ public interface MessageStoreFactory extends Pluggable
MessageStore createMessageStore();
- public Map<String, Object> convertStoreConfiguration(Configuration configuration);
-
void validateAttributes(Map<String, Object> attributes);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java
index a073c89a1b..8c5a39797a 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java
@@ -25,8 +25,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import org.apache.commons.configuration.Configuration;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.model.adapter.VirtualHostAdapter;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.stats.StatisticsGatherer;
@@ -40,15 +38,12 @@ public interface VirtualHostFactory extends Pluggable
VirtualHost createVirtualHost(VirtualHostRegistry virtualHostRegistry,
StatisticsGatherer brokerStatisticsGatherer,
SecurityManager parentSecurityManager,
- VirtualHostConfiguration hostConfig,
org.apache.qpid.server.model.VirtualHost virtualHost);
void validateAttributes(Map<String, Object> attributes);
Map<String, Object> createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter);
- Map<String,Object> convertVirtualHostConfiguration(Configuration configuration);
-
static final class TYPES
{
private TYPES()
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
index dd82dfd681..3098572e39 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
@@ -26,11 +26,9 @@ import java.util.UUID;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
import org.apache.qpid.server.exchange.ExchangeImpl;
-import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.server.configuration.BrokerProperties;
-import org.apache.qpid.server.configuration.QueueConfiguration;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.UUIDGenerator;
@@ -74,50 +72,10 @@ public class AMQQueueFactory implements QueueFactory
return createOrRestoreQueue(attributes, true);
}
- private AMQQueue createOrRestoreQueue(Map<String, Object> attributes,
- boolean createInStore)
+ private AMQQueue createOrRestoreQueue(Map<String, Object> attributes, boolean createInStore)
{
-
-
String queueName = MapValueConverter.getStringAttribute(Queue.NAME,attributes);
-
- QueueConfiguration config = _virtualHost.getConfiguration().getQueueConfiguration(queueName);
-
- if (!attributes.containsKey(Queue.ALERT_THRESHOLD_MESSAGE_AGE) && config.getMaximumMessageAge() != 0)
- {
- attributes.put(Queue.ALERT_THRESHOLD_MESSAGE_AGE, config.getMaximumMessageAge());
- }
- if (!attributes.containsKey(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_BYTES) && config.getMaximumQueueDepth() != 0)
- {
- attributes.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, config.getMaximumQueueDepth());
- }
- if (!attributes.containsKey(Queue.ALERT_THRESHOLD_MESSAGE_SIZE) && config.getMaximumMessageSize() != 0)
- {
- attributes.put(Queue.ALERT_THRESHOLD_MESSAGE_SIZE, config.getMaximumMessageSize());
- }
- if (!attributes.containsKey(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES) && config.getMaximumMessageCount() != 0)
- {
- attributes.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, config.getMaximumMessageCount());
- }
- if (!attributes.containsKey(Queue.ALERT_REPEAT_GAP) && config.getMinimumAlertRepeatGap() != 0)
- {
- attributes.put(Queue.ALERT_REPEAT_GAP, config.getMinimumAlertRepeatGap());
- }
- if (config.getMaxDeliveryCount() != 0 && !attributes.containsKey(Queue.MAXIMUM_DELIVERY_ATTEMPTS))
- {
- attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, config.getMaxDeliveryCount());
- }
- if (!attributes.containsKey(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES) && config.getCapacity() != 0)
- {
- attributes.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, config.getCapacity());
- }
- if (!attributes.containsKey(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES) && config.getFlowResumeCapacity() != 0)
- {
- attributes.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, config.getFlowResumeCapacity());
- }
-
-
- boolean createDLQ = createDLQ(attributes, config);
+ boolean createDLQ = shouldCreateDLQ(attributes, _virtualHost.getDefaultDeadLetterQueueEnabled());
if (createDLQ)
{
validateDLNames(queueName);
@@ -259,30 +217,7 @@ public class AMQQueueFactory implements QueueFactory
queue.setAlternateExchange(dlExchange);
}
- public AMQQueue createAMQQueueImpl(QueueConfiguration config)
- {
-
- Map<String, Object> arguments = createQueueAttributesFromConfig(_virtualHost, config);
-
- AMQQueue q = createOrRestoreQueue(arguments, false);
- return q;
- }
-
- /**
- * Validates DLQ and DLE names
- * <p>
- * DLQ name and DLQ exchange name need to be validated in order to keep
- * integrity in cases when queue name passes validation check but DLQ name
- * or DL exchange name fails to pass it. Otherwise, we might have situations
- * when queue is created but DL exchange or/and DLQ creation fail.
- * <p>
- *
- * @param name
- * queue name
- * @throws IllegalArgumentException
- * thrown if length of queue name or exchange name exceed 255
- */
- protected static void validateDLNames(String name)
+ private static void validateDLNames(String name)
{
// check if DLQ name and DLQ exchange name do not exceed 255
String exchangeName = getDeadLetterExchangeName(name);
@@ -299,16 +234,7 @@ public class AMQQueueFactory implements QueueFactory
}
}
- /**
- * Checks if DLQ is enabled for the queue.
- *
- * @param arguments
- * queue arguments
- * @param qConfig
- * queue configuration
- * @return true if DLQ enabled
- */
- protected static boolean createDLQ(Map<String, Object> arguments, QueueConfiguration qConfig)
+ private static boolean shouldCreateDLQ(Map<String, Object> arguments, boolean virtualHostDefaultDeadLetterQueueEnabled)
{
boolean autoDelete = MapValueConverter.getEnumAttribute(LifetimePolicy.class,
Queue.LIFETIME_POLICY,
@@ -320,7 +246,7 @@ public class AMQQueueFactory implements QueueFactory
{
boolean dlqArgumentPresent = arguments != null
&& arguments.containsKey(Queue.CREATE_DLQ_ON_CREATION);
- if (dlqArgumentPresent || qConfig.isDeadLetterQueueEnabled())
+ if (dlqArgumentPresent)
{
boolean dlqEnabled = true;
if (dlqArgumentPresent)
@@ -329,89 +255,21 @@ public class AMQQueueFactory implements QueueFactory
dlqEnabled = (argument instanceof Boolean && ((Boolean)argument).booleanValue())
|| (argument instanceof String && Boolean.parseBoolean(argument.toString()));
}
- return dlqEnabled ;
+ return dlqEnabled;
}
+ return virtualHostDefaultDeadLetterQueueEnabled;
}
return false;
}
- /**
- * Generates a dead letter queue name for a given queue name
- *
- * @param name
- * queue name
- * @return DLQ name
- */
- protected static String getDeadLetterQueueName(String name)
+ private static String getDeadLetterQueueName(String name)
{
return name + System.getProperty(BrokerProperties.PROPERTY_DEAD_LETTER_QUEUE_SUFFIX, DEFAULT_DLQ_NAME_SUFFIX);
}
- /**
- * Generates a dead letter exchange name for a given queue name
- *
- * @param name
- * queue name
- * @return DL exchange name
- */
- protected static String getDeadLetterExchangeName(String name)
+ private static String getDeadLetterExchangeName(String name)
{
return name + System.getProperty(BrokerProperties.PROPERTY_DEAD_LETTER_EXCHANGE_SUFFIX, DefaultExchangeFactory.DEFAULT_DLE_NAME_SUFFIX);
}
- private static Map<String, Object> createQueueAttributesFromConfig(final VirtualHost virtualHost,
- QueueConfiguration config)
- {
- Map<String,Object> attributes = new HashMap<String,Object>();
-
- if(config.getArguments() != null && !config.getArguments().isEmpty())
- {
- attributes.putAll(QueueArgumentsConverter.convertWireArgsToModel(new HashMap<String, Object>(config.getArguments())));
- }
-
- if(config.isLVQ() || config.getLVQKey() != null)
- {
- attributes.put(Queue.LVQ_KEY,
- config.getLVQKey() == null ? ConflationQueue.DEFAULT_LVQ_KEY : config.getLVQKey());
- }
- else if (config.getPriority() || config.getPriorities() > 0)
- {
- attributes.put(Queue.PRIORITIES, config.getPriorities() < 0 ? 10 : config.getPriorities());
- }
- else if (config.getQueueSortKey() != null && !"".equals(config.getQueueSortKey()))
- {
- attributes.put(Queue.SORT_KEY, config.getQueueSortKey());
- }
-
- if (!config.getAutoDelete() && config.isDeadLetterQueueEnabled())
- {
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, true);
- }
-
- if (config.getDescription() != null && !"".equals(config.getDescription()))
- {
- attributes.put(Queue.DESCRIPTION, config.getDescription());
- }
-
- attributes.put(Queue.DURABLE, config.getDurable());
- attributes.put(Queue.LIFETIME_POLICY,
- config.getAutoDelete() ? LifetimePolicy.DELETE_ON_NO_OUTBOUND_LINKS : LifetimePolicy.PERMANENT);
- if(config.getExclusive())
- {
- attributes.put(Queue.EXCLUSIVE, ExclusivityPolicy.CONTAINER);
- }
- if(config.getOwner() != null)
- {
- attributes.put(Queue.OWNER, config.getOwner());
- }
-
- attributes.put(Queue.NAME, config.getName());
-
- // we need queues that are defined in config to have deterministic ids.
- attributes.put(Queue.ID, UUIDGenerator.generateQueueUUID(config.getName(), virtualHost.getName()));
-
-
- return attributes;
- }
-
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
index a4719f6058..3ffa34f4fa 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
@@ -24,7 +24,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.BlockingQueue;
@@ -32,7 +31,6 @@ import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-import org.apache.commons.configuration.ConfigurationException;
import org.apache.log4j.Logger;
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
@@ -41,9 +39,6 @@ import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
-import org.apache.qpid.server.configuration.ExchangeConfiguration;
-import org.apache.qpid.server.configuration.QueueConfiguration;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.connection.ConnectionRegistry;
import org.apache.qpid.server.connection.IConnectionRegistry;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
@@ -75,7 +70,6 @@ import org.apache.qpid.server.store.Event;
import org.apache.qpid.server.store.EventListener;
import org.apache.qpid.server.txn.DtxRegistry;
import org.apache.qpid.server.util.MapValueConverter;
-import org.apache.qpid.server.util.ServerScopedRuntimeException;
public abstract class AbstractVirtualHost implements VirtualHost, IConnectionRegistry.RegistryChangeListener, EventListener
{
@@ -97,8 +91,6 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
private final SecurityManager _securityManager;
- private final VirtualHostConfiguration _vhostConfig;
-
private final QueueRegistry _queueRegistry;
private final ExchangeRegistry _exchangeRegistry;
@@ -131,23 +123,11 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
public AbstractVirtualHost(VirtualHostRegistry virtualHostRegistry,
StatisticsGatherer brokerStatisticsGatherer,
SecurityManager parentSecurityManager,
- VirtualHostConfiguration hostConfig,
org.apache.qpid.server.model.VirtualHost virtualHost)
{
- if (hostConfig == null)
- {
- throw new IllegalArgumentException("HostConfig cannot be null");
- }
-
- if (hostConfig.getName() == null || hostConfig.getName().length() == 0)
- {
- throw new IllegalArgumentException("Illegal name (" + hostConfig.getName() + ") for virtualhost.");
- }
-
_virtualHostRegistry = virtualHostRegistry;
_brokerStatisticsGatherer = brokerStatisticsGatherer;
- _vhostConfig = hostConfig;
- _name = _vhostConfig.getName();
+ _name = virtualHost.getName();
_dtxRegistry = new DtxRegistry();
_model = virtualHost;
_eventLogger = virtualHostRegistry.getEventLogger();
@@ -156,12 +136,12 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
_eventLogger.message(VirtualHostMessages.CREATED(_name));
- _securityManager = new SecurityManager(parentSecurityManager, _vhostConfig.getConfig().getString("security.acl"), _name);
+ _securityManager = new SecurityManager(parentSecurityManager, virtualHost.getSecurityAcl(), _name);
_connectionRegistry = new ConnectionRegistry();
_connectionRegistry.addRegistryChangeListener(this);
- _houseKeepingTasks = new ScheduledThreadPoolExecutor(_vhostConfig.getHouseKeepingThreadCount());
+ _houseKeepingTasks = new ScheduledThreadPoolExecutor(virtualHost.getHouseKeepingThreadCount());
_queueRegistry = new DefaultQueueRegistry(this);
@@ -176,7 +156,7 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
initialiseStatistics();
- initialiseStorage(hostConfig, virtualHost);
+ initialiseStorage(virtualHost);
getMessageStore().addEventListener(this, Event.PERSISTENT_MESSAGE_SIZE_OVERFULL);
getMessageStore().addEventListener(this, Event.PERSISTENT_MESSAGE_SIZE_UNDERFULL);
@@ -192,19 +172,13 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
}
}
- abstract protected void initialiseStorage(VirtualHostConfiguration hostConfig,
- org.apache.qpid.server.model.VirtualHost virtualHost);
+ abstract protected void initialiseStorage(org.apache.qpid.server.model.VirtualHost<?> virtualHost);
public IConnectionRegistry getConnectionRegistry()
{
return _connectionRegistry;
}
- public VirtualHostConfiguration getConfiguration()
- {
- return _vhostConfig;
- }
-
public UUID getId()
{
return _id;
@@ -306,135 +280,11 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
}
- protected void initialiseModel(VirtualHostConfiguration config)
+ protected void initialiseModel()
{
- _logger.debug("Loading configuration for virtualhost: " + config.getName());
-
+ _logger.debug("Loading configuration for virtualhost: " + _model.getName());
_exchangeRegistry.initialise(_exchangeFactory);
-
- List<String> exchangeNames = config.getExchanges();
-
- for (String exchangeName : exchangeNames)
- {
- try
- {
- configureExchange(config.getExchangeConfiguration(exchangeName));
- }
- catch (UnknownExchangeException e)
- {
- throw new ServerScopedRuntimeException("Could not configure exchange " + exchangeName, e);
- }
- catch (ReservedExchangeNameException e)
- {
- throw new ServerScopedRuntimeException("Could not configure exchange " + exchangeName, e);
- }
- catch (AMQUnknownExchangeType e)
- {
- throw new ServerScopedRuntimeException("Could not configure exchange " + exchangeName, e);
- }
- }
-
- String[] queueNames = config.getQueueNames();
-
- for (Object queueNameObj : queueNames)
- {
- String queueName = String.valueOf(queueNameObj);
- try
- {
- configureQueue(config.getQueueConfiguration(queueName));
- }
- catch (ConfigurationException e)
- {
- throw new ServerScopedRuntimeException("Could not configure queue " + queueName, e);
- }
- }
- }
-
- private void configureExchange(ExchangeConfiguration exchangeConfiguration)
- throws UnknownExchangeException, ReservedExchangeNameException,
- AMQUnknownExchangeType
- {
- boolean durable = exchangeConfiguration.getDurable();
- boolean autodelete = exchangeConfiguration.getAutoDelete();
- try
- {
- Map<String,Object> attributes = new HashMap<String, Object>();
-
- attributes.put(org.apache.qpid.server.model.Exchange.ID, null);
- attributes.put(org.apache.qpid.server.model.Exchange.NAME, exchangeConfiguration.getName());
- attributes.put(org.apache.qpid.server.model.Exchange.TYPE, exchangeConfiguration.getType());
- attributes.put(org.apache.qpid.server.model.Exchange.DURABLE, durable);
- attributes.put(org.apache.qpid.server.model.Exchange.LIFETIME_POLICY,
- autodelete ? LifetimePolicy.DELETE_ON_NO_LINKS : LifetimePolicy.PERMANENT);
- attributes.put(org.apache.qpid.server.model.Exchange.ALTERNATE_EXCHANGE, null);
- ExchangeImpl newExchange = createExchange(attributes);
- }
- catch(ExchangeExistsException e)
- {
- _logger.info("Exchange " + exchangeConfiguration.getName() + " already defined. Configuration in XML file ignored");
- }
-
- }
-
- private void configureQueue(QueueConfiguration queueConfiguration)
- throws ConfigurationException
- {
- AMQQueue queue = _queueFactory.createAMQQueueImpl(queueConfiguration);
- String queueName = queue.getName();
-
- if (queue.isDurable())
- {
- DurableConfigurationStoreHelper.createQueue(getDurableConfigurationStore(), queue);
- }
-
- //get the exchange name (returns empty String if none was specified)
- String exchangeName = queueConfiguration.getExchange();
-
-
- if(ExchangeDefaults.DEFAULT_EXCHANGE_NAME.equals(exchangeName))
- {
- //get routing keys in configuration (returns empty list if none are defined)
- List<?> routingKeys = queueConfiguration.getRoutingKeys();
- if(!(routingKeys.isEmpty() || (routingKeys.size()==1 && routingKeys.contains(queueName))))
- {
- throw new ConfigurationException("Attempt to bind queue '" + queueName + "' with binding key(s) " +
- routingKeys + " without specifying an exchange");
- }
- }
- else
- {
- ExchangeImpl exchange = _exchangeRegistry.getExchange(exchangeName);
- if (exchange == null)
- {
- throw new ConfigurationException("Attempt to bind queue '" + queueName + "' to unknown exchange:" + exchangeName);
- }
-
- //get routing keys in configuration (returns empty list if none are defined)
- List<?> routingKeys = queueConfiguration.getRoutingKeys();
-
- for (Object routingKeyNameObj : routingKeys)
- {
- String routingKey = String.valueOf(routingKeyNameObj);
-
- configureBinding(queue, exchange, routingKey, (Map) queueConfiguration.getBindingArguments(routingKey));
- }
-
- if (!routingKeys.contains(queueName))
- {
- //bind the queue to the named exchange using its name
- configureBinding(queue, exchange, queueName, null);
- }
- }
- }
-
- private void configureBinding(AMQQueue queue, ExchangeImpl exchange, String routingKey, Map<String,Object> arguments)
- {
- if (_logger.isInfoEnabled())
- {
- _logger.info("Binding queue:" + queue + " with routing key '" + routingKey + "' to exchange:" + exchange.getName());
- }
- exchange.addBinding(routingKey, queue, arguments);
}
public String getName()
@@ -907,7 +757,7 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
try
{
- initialiseHouseKeeping(_vhostConfig.getHousekeepingCheckPeriod());
+ initialiseHouseKeeping(_model.getHousekeepingCheckPeriod());
finalState = State.ACTIVE;
}
finally
@@ -981,10 +831,10 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
}
try
{
- session.checkTransactionStatus(_vhostConfig.getTransactionTimeoutOpenWarn(),
- _vhostConfig.getTransactionTimeoutOpenClose(),
- _vhostConfig.getTransactionTimeoutIdleWarn(),
- _vhostConfig.getTransactionTimeoutIdleClose());
+ session.checkTransactionStatus(_model.getStoreTransactionOpenTimeoutWarn(),
+ _model.getStoreTransactionOpenTimeoutClose(),
+ _model.getStoreTransactionIdleTimeoutWarn(),
+ _model.getStoreTransactionIdleTimeoutClose());
} catch (Exception e)
{
_logger.error("Exception in housekeeping for connection: " + connection.toString(), e);
@@ -1039,49 +889,55 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
@Override
public long getDefaultAlertThresholdMessageAge()
{
- return getConfiguration().getMaximumMessageAge();
+ return _model.getQueue_alertThresholdMessageAge();
}
@Override
public long getDefaultAlertThresholdMessageSize()
{
- return getConfiguration().getMaximumMessageSize();
+ return _model.getQueue_alertThresholdMessageSize();
}
@Override
public long getDefaultAlertThresholdQueueDepthMessages()
{
- return getConfiguration().getMaximumMessageCount();
+ return _model.getQueue_alertThresholdQueueDepthMessages();
}
@Override
public long getDefaultAlertThresholdQueueDepthBytes()
{
- return getConfiguration().getMaximumQueueDepth();
+ return _model.getQueue_alertThresholdQueueDepthBytes();
}
@Override
public long getDefaultAlertRepeatGap()
{
- return getConfiguration().getMinimumAlertRepeatGap();
+ return _model.getQueue_alertRepeatGap();
}
@Override
public long getDefaultQueueFlowControlSizeBytes()
{
- return getConfiguration().getCapacity();
+ return _model.getQueue_flowControlSizeBytes();
}
@Override
public long getDefaultQueueFlowResumeSizeBytes()
{
- return getConfiguration().getFlowResumeCapacity();
+ return _model.getQueue_flowResumeSizeBytes();
}
@Override
public int getDefaultMaximumDeliveryAttempts()
{
- return getConfiguration().getMaxDeliveryCount();
+ return _model.getQueue_maximumDeliveryAttempts();
+ }
+
+ @Override
+ public boolean getDefaultDeadLetterQueueEnabled()
+ {
+ return _model.isQueue_deadLetterQueueEnabled();
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
index 9b576bf41f..f1bfb39eb8 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
@@ -19,7 +19,6 @@ package org.apache.qpid.server.virtualhost;/*
*
*/
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.stats.StatisticsGatherer;
@@ -29,7 +28,6 @@ import org.apache.qpid.server.store.DurableConfigurationStoreCreator;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.server.store.OperationalLoggingListener;
-import org.apache.qpid.server.util.ServerScopedRuntimeException;
public class StandardVirtualHost extends AbstractVirtualHost
{
@@ -40,54 +38,19 @@ public class StandardVirtualHost extends AbstractVirtualHost
StandardVirtualHost(VirtualHostRegistry virtualHostRegistry,
StatisticsGatherer brokerStatisticsGatherer,
org.apache.qpid.server.security.SecurityManager parentSecurityManager,
- VirtualHostConfiguration hostConfig, VirtualHost virtualHost)
+ VirtualHost virtualHost)
{
- super(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, hostConfig, virtualHost);
+ super(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, virtualHost);
}
- private MessageStore initialiseMessageStore(VirtualHostConfiguration hostConfig, VirtualHost virtualHost)
+ private MessageStore initialiseMessageStore(VirtualHost virtualHost)
{
final Object storeTypeAttr = virtualHost.getAttribute(VirtualHost.STORE_TYPE);
String storeType = storeTypeAttr == null ? null : String.valueOf(storeTypeAttr);
- MessageStore messageStore = null;
- if (storeType == null)
- {
- try
- {
- final Class<?> clazz = Class.forName(hostConfig.getMessageStoreClass());
- final Object o = clazz.newInstance();
-
- if (!(o instanceof MessageStore))
- {
- throw new ClassCastException(clazz + " does not implement " + MessageStore.class);
- }
-
- messageStore = (MessageStore) o;
- }
- catch (ClassNotFoundException e)
- {
- throw new ServerScopedRuntimeException("Failed to fina virtual host message store implementation, " +
- "check the classpath and the configuration", e);
- }
- catch (InstantiationException e)
- {
- throw new ServerScopedRuntimeException("Failed to initialise virtual host store, " +
- "check the configuration", e);
- }
- catch (IllegalAccessException e)
- {
- throw new ServerScopedRuntimeException("Failed to initialise virtual host store, " +
- "check the configuration", e);
- }
- }
- else
- {
- messageStore = new MessageStoreCreator().createMessageStore(storeType);
- }
+ MessageStore messageStore = new MessageStoreCreator().createMessageStore(storeType);
- final
MessageStoreLogSubject
storeLogSubject = new MessageStoreLogSubject(getName(), messageStore.getClass().getSimpleName());
OperationalLoggingListener.listen(messageStore, storeLogSubject, getEventLogger());
@@ -118,9 +81,9 @@ public class StandardVirtualHost extends AbstractVirtualHost
}
- protected void initialiseStorage(VirtualHostConfiguration hostConfig, VirtualHost virtualHost)
+ protected void initialiseStorage(VirtualHost virtualHost)
{
- _messageStore = initialiseMessageStore(hostConfig, virtualHost);
+ _messageStore = initialiseMessageStore(virtualHost);
_durableConfigurationStore = initialiseConfigurationStore(virtualHost);
@@ -132,7 +95,7 @@ public class StandardVirtualHost extends AbstractVirtualHost
VirtualHostConfigRecoveryHandler recoveryHandler = new VirtualHostConfigRecoveryHandler(this);
_messageStore.configureMessageStore(virtualHost, recoveryHandler, recoveryHandler);
- initialiseModel(hostConfig);
+ initialiseModel();
_messageStore.activate();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java
index c28bcb977f..5ae3623baa 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java
@@ -21,13 +21,10 @@ package org.apache.qpid.server.virtualhost;/*
import java.util.LinkedHashMap;
import java.util.Map;
-import org.apache.commons.configuration.Configuration;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.model.adapter.VirtualHostAdapter;
import org.apache.qpid.server.plugin.MessageStoreFactory;
import org.apache.qpid.server.plugin.VirtualHostFactory;
import org.apache.qpid.server.stats.StatisticsGatherer;
-import org.apache.qpid.server.store.MessageStoreConstants;
import org.apache.qpid.server.store.MessageStoreCreator;
public class StandardVirtualHostFactory implements VirtualHostFactory
@@ -45,10 +42,9 @@ public class StandardVirtualHostFactory implements VirtualHostFactory
public VirtualHost createVirtualHost(VirtualHostRegistry virtualHostRegistry,
StatisticsGatherer brokerStatisticsGatherer,
org.apache.qpid.server.security.SecurityManager parentSecurityManager,
- VirtualHostConfiguration hostConfig,
org.apache.qpid.server.model.VirtualHost virtualHost)
{
- return new StandardVirtualHost(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, hostConfig, virtualHost);
+ return new StandardVirtualHost(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, virtualHost);
}
@@ -96,23 +92,4 @@ public class StandardVirtualHostFactory implements VirtualHostFactory
return convertedMap;
}
- @Override
- public Map<String, Object> convertVirtualHostConfiguration(Configuration configuration)
- {
- Map<String,Object> convertedMap = new LinkedHashMap<String, Object>();
- Configuration storeConfiguration = configuration.subset("store");
- convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_TYPE, storeConfiguration.getString("type"));
- convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_PATH, storeConfiguration.getString(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY));
-
- convertedMap.put(MessageStoreConstants.OVERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.OVERFULL_SIZE_PROPERTY));
- convertedMap.put(MessageStoreConstants.UNDERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.UNDERFULL_SIZE_PROPERTY));
-
- for(MessageStoreFactory mf : new MessageStoreCreator().getFactories())
- {
- convertedMap.putAll(mf.convertStoreConfiguration(storeConfiguration));
- }
-
- return convertedMap;
-
- }
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
index a06056de8f..f113abb25a 100755
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
@@ -28,7 +28,6 @@ import java.util.concurrent.ScheduledFuture;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
import org.apache.qpid.common.Closeable;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.connection.IConnectionRegistry;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.logging.EventLogger;
@@ -49,8 +48,6 @@ public interface VirtualHost extends DurableConfigurationStore.Source, Closeable
{
IConnectionRegistry getConnectionRegistry();
- VirtualHostConfiguration getConfiguration();
-
String getName();
AMQQueue getQueue(String name);
@@ -137,6 +134,8 @@ public interface VirtualHost extends DurableConfigurationStore.Source, Closeable
int getDefaultMaximumDeliveryAttempts();
+ boolean getDefaultDeadLetterQueueEnabled();
+
TaskExecutor getTaskExecutor();
org.apache.qpid.server.model.VirtualHost getModel();
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java
deleted file mode 100644
index 2c3420a718..0000000000
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/QueueConfigurationTest.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.configuration;
-
-import static org.mockito.Mockito.when;
-
-import java.util.Collections;
-import junit.framework.TestCase;
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
-
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.queue.QueueArgumentsConverter;
-import org.apache.qpid.server.util.BrokerTestHelper;
-
-public class QueueConfigurationTest extends TestCase
-{
- private VirtualHostConfiguration _emptyConf;
- private PropertiesConfiguration _env;
- private VirtualHostConfiguration _fullHostConf;
- private Broker _broker;
-
- @Override
- public void setUp() throws Exception
- {
- super.setUp();
- BrokerTestHelper.setUp();
- _broker = BrokerTestHelper.createBrokerMock();
- _env = new PropertiesConfiguration();
- _emptyConf = new VirtualHostConfiguration("test", _env, _broker);
-
- PropertiesConfiguration fullEnv = new PropertiesConfiguration();
- fullEnv.setProperty("queues.maximumMessageAge", 1);
- fullEnv.setProperty("queues.maximumQueueDepth", 1);
- fullEnv.setProperty("queues.maximumMessageSize", 1);
- fullEnv.setProperty("queues.maximumMessageCount", 1);
- fullEnv.setProperty("queues.minimumAlertRepeatGap", 1);
- fullEnv.setProperty("queues.deadLetterQueues", true);
- fullEnv.setProperty("queues.maximumDeliveryCount", 5);
-
- _fullHostConf = new VirtualHostConfiguration("test", fullEnv, _broker);
-
- }
-
- @Override
- public void tearDown() throws Exception
- {
- BrokerTestHelper.tearDown();
- super.tearDown();
- }
-
- public void testMaxDeliveryCount() throws Exception
- {
- // broker MAXIMUM_DELIVERY_ATTEMPTS attribute is not set
- when(_broker.getAttribute(Broker.QUEUE_MAXIMUM_DELIVERY_ATTEMPTS)).thenReturn(null);
-
- // Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertEquals("Unexpected default server configuration for max delivery count ", 0, qConf.getMaxDeliveryCount());
-
- // set broker MAXIMUM_DELIVERY_ATTEMPTS attribute to 2
- when(_broker.getAttribute(Broker.QUEUE_MAXIMUM_DELIVERY_ATTEMPTS)).thenReturn(2);
-
- // Check that queue inherits the MAXIMUM_DELIVERY_ATTEMPTS value from broker
- qConf = new QueueConfiguration("test", _emptyConf);
- assertEquals("Unexpected default server configuration for max delivery count ", 2, qConf.getMaxDeliveryCount());
-
- // Check explicit value
- VirtualHostConfiguration vhostConfig = overrideConfiguration("maximumDeliveryCount", 7);
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals("Unexpected host configuration for max delivery count", 7, qConf.getMaxDeliveryCount());
-
- // Check inherited value
- qConf = new QueueConfiguration("test", _fullHostConf);
- assertEquals("Unexpected queue configuration for max delivery count", 5, qConf.getMaxDeliveryCount());
- }
-
- /**
- * Tests that the default setting for DLQ configuration is disabled, and verifies that it can be overridden
- * at a broker or virtualhost level.
- * @throws Exception
- */
- public void testIsDeadLetterQueueEnabled() throws Exception
- {
- // enable dead letter queues broker wide
- when(_broker.getAttribute(Broker.QUEUE_DEAD_LETTER_QUEUE_ENABLED)).thenReturn(true);
-
- // Check that queue inherits the broker setting
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertTrue("Unexpected queue configuration for dead letter enabled attribute", qConf.isDeadLetterQueueEnabled());
-
- // broker DEAD_LETTER_QUEUE_ENABLED is not set
- when(_broker.getAttribute(Broker.QUEUE_DEAD_LETTER_QUEUE_ENABLED)).thenReturn(null);
-
- // Check that queue dead letter queue is not enabled
- qConf = new QueueConfiguration("test", _emptyConf);
- assertFalse("Unexpected queue configuration for dead letter enabled attribute", qConf.isDeadLetterQueueEnabled());
-
- // Check explicit value
- VirtualHostConfiguration vhostConfig = overrideConfiguration("deadLetterQueues", true);
- qConf = new QueueConfiguration("test", vhostConfig);
- assertTrue("Unexpected queue configuration for dead letter enabled attribute", qConf.isDeadLetterQueueEnabled());
-
- // Check inherited value
- qConf = new QueueConfiguration("test", _fullHostConf);
- assertTrue("Unexpected queue configuration for dead letter enabled attribute", qConf.isDeadLetterQueueEnabled());
- }
-
- public void testGetMaximumMessageAge() throws ConfigurationException
- {
- // Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertEquals(0, qConf.getMaximumMessageAge());
-
- // Check explicit value
- VirtualHostConfiguration vhostConfig = overrideConfiguration("maximumMessageAge", 2);
-
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals(2, qConf.getMaximumMessageAge());
-
- }
-
- public void testGetMaximumQueueDepth() throws ConfigurationException
- {
- // Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertEquals(0, qConf.getMaximumQueueDepth());
-
- // Check explicit value
- VirtualHostConfiguration vhostConfig = overrideConfiguration("maximumQueueDepth", 2);
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals(2, qConf.getMaximumQueueDepth());
-
- }
-
- public void testGetMaximumMessageSize() throws ConfigurationException
- {
- // Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertEquals(0, qConf.getMaximumMessageSize());
-
- // Check explicit value
- VirtualHostConfiguration vhostConfig = overrideConfiguration("maximumMessageSize", 2);
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals(2, qConf.getMaximumMessageSize());
-
- }
-
- public void testGetMaximumMessageCount() throws ConfigurationException
- {
- // Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertEquals(0, qConf.getMaximumMessageCount());
-
- // Check explicit value
- VirtualHostConfiguration vhostConfig = overrideConfiguration("maximumMessageCount", 2);
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals(2, qConf.getMaximumMessageCount());
-
- }
-
- public void testGetMinimumAlertRepeatGap() throws Exception
- {
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
-
- // Check default value
- qConf = new QueueConfiguration("test", _emptyConf);
- assertEquals(0, qConf.getMinimumAlertRepeatGap());
-
- // Check explicit value
- VirtualHostConfiguration vhostConfig = overrideConfiguration("minimumAlertRepeatGap", 2);
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals(2, qConf.getMinimumAlertRepeatGap());
-
- }
-
- public void testSortQueueConfiguration() throws ConfigurationException
- {
- //Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertNull(qConf.getQueueSortKey());
-
- // Check explicit value
- final VirtualHostConfiguration vhostConfig = overrideConfiguration("sortKey", "test-sort-key");
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals("test-sort-key", qConf.getQueueSortKey());
- }
-
- public void testQueueDescription() throws ConfigurationException
- {
- //Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertNull(qConf.getDescription());
-
- // Check explicit value
- final VirtualHostConfiguration vhostConfig = overrideConfiguration("description", "mydescription");
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals("mydescription", qConf.getDescription());
- }
-
-
- public void testQueueSingleArgument() throws ConfigurationException
- {
- //Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertTrue(qConf.getArguments().isEmpty());
-
- // Check explicit value
- final VirtualHostConfiguration vhostConfig = overrideConfiguration("argument", QueueArgumentsConverter.QPID_GROUP_HEADER_KEY + "=mykey");
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals(Collections.singletonMap(QueueArgumentsConverter.QPID_GROUP_HEADER_KEY,"mykey"), qConf.getArguments());
- }
-
-
- public void testQueueMultipleArguments() throws ConfigurationException
- {
- //Check default value
- QueueConfiguration qConf = new QueueConfiguration("test", _emptyConf);
- assertTrue(qConf.getArguments().isEmpty());
-
-
- PropertiesConfiguration queueConfig = new PropertiesConfiguration();
- queueConfig.addProperty("queues.queue.test.argument", QueueArgumentsConverter.QPID_GROUP_HEADER_KEY + "=mykey");
- queueConfig.addProperty("queues.queue.test.argument", QueueArgumentsConverter.QPID_SHARED_MSG_GROUP + "=1");
-
- CompositeConfiguration config = new CompositeConfiguration();
- config.addConfiguration(_fullHostConf.getConfig());
- config.addConfiguration(queueConfig);
-
- final VirtualHostConfiguration vhostConfig = new VirtualHostConfiguration("test", config, _broker);;
- qConf = new QueueConfiguration("test", vhostConfig);
- assertEquals(2, qConf.getArguments().size());
- assertEquals("mykey", qConf.getArguments().get(QueueArgumentsConverter.QPID_GROUP_HEADER_KEY));
- assertEquals("1", qConf.getArguments().get(QueueArgumentsConverter.QPID_SHARED_MSG_GROUP));
- }
-
-
- private VirtualHostConfiguration overrideConfiguration(String property, Object value)
- throws ConfigurationException
- {
- PropertiesConfiguration queueConfig = new PropertiesConfiguration();
- queueConfig.setProperty("queues.queue.test." + property, value);
-
- CompositeConfiguration config = new CompositeConfiguration();
- config.addConfiguration(_fullHostConf.getConfig());
- config.addConfiguration(queueConfig);
-
- return new VirtualHostConfiguration("test", config, _broker);
- }
-}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
deleted file mode 100644
index bd11f7192b..0000000000
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.configuration;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.XMLConfiguration;
-
-import org.apache.qpid.server.logging.EventLogger;
-import org.apache.qpid.server.logging.NullMessageLogger;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.queue.PriorityQueue;
-import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.store.TestableMemoryMessageStore;
-import org.apache.qpid.server.util.BrokerTestHelper;
-import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
-import org.apache.qpid.test.utils.QpidTestCase;
-
-public class VirtualHostConfigurationTest extends QpidTestCase
-{
- private VirtualHostRegistry _virtualHostRegistry;
- private XMLConfiguration _configXml;
- private Broker _broker;
-
- @Override
- public void setUp() throws Exception
- {
- super.setUp();
- BrokerTestHelper.setUp();
- _configXml = new XMLConfiguration();
- _configXml.addProperty("virtualhosts.virtualhost(-1).name", getName());
- _configXml.addProperty("virtualhosts.virtualhost(-1)."+getName()+".store.class", TestableMemoryMessageStore.class.getName());
- EventLogger eventLogger = new EventLogger();
- _virtualHostRegistry = new VirtualHostRegistry(eventLogger);
- _broker = mock(Broker.class);
- when(_broker.getAttribute(Broker.VIRTUALHOST_HOUSEKEEPING_CHECK_PERIOD)).thenReturn(30000l);
- }
-
- @Override
- public void tearDown() throws Exception
- {
- try
- {
- if (_virtualHostRegistry != null)
- {
- _virtualHostRegistry.close();
- }
- }
- finally
- {
- BrokerTestHelper.tearDown();
- super.tearDown();
- }
- }
-
- private XMLConfiguration getConfigXml()
- {
- return _configXml;
- }
-
- private VirtualHost createVirtualHost(String hostName) throws Exception
- {
- Configuration config = getConfigXml().subset("virtualhosts.virtualhost." + XmlConfigurationUtilities.escapeTagName(hostName));
- VirtualHostConfiguration virtualHostConfiguration = new VirtualHostConfiguration(hostName, config, _broker);
- return BrokerTestHelper.createVirtualHost(virtualHostConfiguration, _virtualHostRegistry);
- }
-
- public void testQueuePriority() throws Exception
- {
- // Set up queue with 5 priorities
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues(-1).queue(-1).name(-1)",
- "atest");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues.queue.atest(-1).exchange",
- "amq.direct");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues.queue.atest.priorities",
- "5");
-
- // Set up queue with JMS style priorities
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues(-1).queue(-1).name(-1)",
- "ptest");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues.queue.ptest(-1).exchange",
- "amq.direct");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues.queue.ptest.priority",
- "true");
-
- // Set up queue with no priorities
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues(-1).queue(-1).name(-1)",
- "ntest");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues.queue.ntest(-1).exchange",
- "amq.direct");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueuePriority.queues.queue.ntest.priority",
- "false");
-
- VirtualHost vhost = createVirtualHost(getName());
-
- // Check that atest was a priority queue with 5 priorities
- AMQQueue atest = vhost.getQueue("atest");
- assertTrue(atest instanceof PriorityQueue);
- assertEquals(5, ((PriorityQueue) atest).getPriorities());
-
- // Check that ptest was a priority queue with 10 priorities
- AMQQueue ptest = vhost.getQueue("ptest");
- assertTrue(ptest instanceof PriorityQueue);
- assertEquals(10, ((PriorityQueue) ptest).getPriorities());
-
- // Check that ntest wasn't a priority queue
- AMQQueue ntest = vhost.getQueue("ntest");
- assertFalse(ntest instanceof PriorityQueue);
- }
-
- public void testQueueAlerts() throws Exception
- {
- // Set up queue with 5 priorities
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.exchange", "amq.topic");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.maximumQueueDepth", "1");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.maximumMessageSize", "2");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.maximumMessageAge", "3");
-
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues(-1).queue(1).name(1)", "atest");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.queue.atest(-1).exchange", "amq.direct");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.queue.atest(-1).maximumQueueDepth", "4");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.queue.atest(-1).maximumMessageSize", "5");
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues.queue.atest(-1).maximumMessageAge", "6");
-
- getConfigXml().addProperty("virtualhosts.virtualhost.testQueueAlerts.queues(-1).queue(-1).name(-1)", "btest");
-
- VirtualHost vhost = createVirtualHost(getName());
-
- // Check specifically configured values
- AMQQueue aTest = vhost.getQueue("atest");
- assertEquals(4, aTest.getAlertThresholdQueueDepthBytes());
- assertEquals(5, aTest.getAlertThresholdMessageSize());
- assertEquals(6, aTest.getAlertThresholdMessageAge());
-
- // Check default values
- AMQQueue bTest = vhost.getQueue("btest");
- assertEquals(1, bTest.getAlertThresholdQueueDepthBytes());
- assertEquals(2, bTest.getAlertThresholdMessageSize());
- assertEquals(3, bTest.getAlertThresholdMessageAge());
- }
-
- public void testMaxDeliveryCount() throws Exception
- {
- // Set up vhosts and queues
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues.maximumDeliveryCount", 5);
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues(-1).queue(-1).name", "biggles");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues.queue.biggles.maximumDeliveryCount", 4);
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues(-1).queue(-1).name", "beetle");
-
- VirtualHost test = createVirtualHost(getName());
-
- // Enabled specifically
- assertEquals("Test vhost MDC was configured as enabled", 5 ,test.getConfiguration().getMaxDeliveryCount());
-
- // Enabled by test vhost default
- assertEquals("beetle queue DLQ was configured as enabled", test.getConfiguration().getMaxDeliveryCount(), test.getConfiguration().getQueueConfiguration("beetle").getMaxDeliveryCount());
-
- // Disabled specifically
- assertEquals("Biggles queue DLQ was configured as disabled", 4, test.getConfiguration().getQueueConfiguration("biggles").getMaxDeliveryCount());
- }
-
- /**
- * Tests the full set of configuration options for enabling DLQs in the broker configuration.
- */
- public void testIsDeadLetterQueueEnabled() throws Exception
- {
- // Set up vhosts and queues
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues.deadLetterQueues", "true");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues(-1).queue(-1).name", "biggles");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues.queue.biggles.deadLetterQueues", "false");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues(-1).queue(-1).name", "beetle");
-
-
- getConfigXml().addProperty("virtualhosts.virtualhost.name", getName() + "Extra");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + "Extra.queues(-1).queue(-1).name", "r2d2");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + "Extra.queues.queue.r2d2.deadLetterQueues", "true");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + "Extra.queues(-1).queue(-1).name", "c3p0");
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + "Extra.store.class", TestableMemoryMessageStore.class.getName());
-
- VirtualHost test = createVirtualHost(getName());
- VirtualHost extra = createVirtualHost(getName() + "Extra");
-
- // Enabled specifically
- assertTrue("Test vhost DLQ was configured as enabled", test.getConfiguration().isDeadLetterQueueEnabled());
- assertTrue("r2d2 queue DLQ was configured as enabled", extra.getConfiguration().getQueueConfiguration("r2d2").isDeadLetterQueueEnabled());
-
- // Enabled by test vhost default
- assertTrue("beetle queue DLQ was configured as enabled", test.getConfiguration().getQueueConfiguration("beetle").isDeadLetterQueueEnabled());
-
- // Disabled specifically
- assertFalse("Biggles queue DLQ was configured as disabled", test.getConfiguration().getQueueConfiguration("biggles").isDeadLetterQueueEnabled());
-
- // Using broker default of disabled
- assertFalse("Extra vhost DLQ disabled, using broker default", extra.getConfiguration().isDeadLetterQueueEnabled());
- assertFalse("c3p0 queue DLQ was configured as disabled", extra.getConfiguration().getQueueConfiguration("c3p0").isDeadLetterQueueEnabled());
-
- // Get queues
- AMQQueue biggles = test.getQueue("biggles");
- AMQQueue beetle = test.getQueue("beetle");
- AMQQueue r2d2 = extra.getQueue("r2d2");
- AMQQueue c3p0 = extra.getQueue("c3p0");
-
- // Disabled specifically for this queue, overriding virtualhost setting
- assertNull("Biggles queue should not have alt exchange as DLQ should be configured as disabled: " + biggles.getAlternateExchange(), biggles.getAlternateExchange());
-
- // Enabled for all queues on the virtualhost
- assertNotNull("Beetle queue should have an alt exchange as DLQ should be enabled, using test vhost default", beetle.getAlternateExchange());
-
- // Enabled specifically for this queue, overriding the default broker setting of disabled
- assertNotNull("R2D2 queue should have an alt exchange as DLQ should be configured as enabled", r2d2.getAlternateExchange());
-
- // Disabled by the default broker setting
- assertNull("C3PO queue should not have an alt exchange as DLQ should be disabled, using broker default", c3p0.getAlternateExchange());
- }
-
- /**
- * Test that the house keeping pool sizes is correctly processed
- *
- * @throws Exception
- */
- public void testHouseKeepingThreadCount() throws Exception
- {
- int initialPoolSize = 10;
-
- getConfigXml().addProperty("virtualhosts.virtualhost.testHouseKeepingThreadCount.housekeeping.poolSize",
- initialPoolSize);
-
- VirtualHost vhost = createVirtualHost(getName());
-
- assertEquals("HouseKeeping PoolSize not set correctly.",
- initialPoolSize, vhost.getHouseKeepingPoolSize());
- }
-
- /**
- * Test that we can dynamically change the thread pool size
- *
- * @throws Exception
- */
- public void testDynamicHouseKeepingPoolSizeChange() throws Exception
- {
- int initialPoolSize = 10;
-
- getConfigXml().addProperty("virtualhosts.virtualhost.testDynamicHouseKeepingPoolSizeChange.housekeeping.poolSize",
- initialPoolSize);
-
- VirtualHost vhost = createVirtualHost(getName());
-
- assertEquals("HouseKeeping PoolSize not set correctly.",
- initialPoolSize, vhost.getHouseKeepingPoolSize());
-
- vhost.setHouseKeepingPoolSize(1);
-
- assertEquals("HouseKeeping PoolSize not correctly change.",
- 1, vhost.getHouseKeepingPoolSize());
-
- }
-
- /**
- * Tests that the old element security.authentication.name is rejected. This element
- * was never supported properly as authentication is performed before the virtual host
- * is considered.
- */
- public void testSecurityAuthenticationNameRejected() throws Exception
- {
- getConfigXml().addProperty("virtualhosts.virtualhost.testSecurityAuthenticationNameRejected.security.authentication.name",
- "testdb");
-
- try
- {
- createVirtualHost(getName());
- fail("Exception not thrown");
- }
- catch(ConfigurationException ce)
- {
- assertEquals("Incorrect error message",
- "Validation error : security/authentication/name is no longer a supported element within the configuration xml." +
- " It appears in virtual host definition : " + getName(),
- ce.getMessage());
- }
- }
-
- /*
- * Tests that the old element housekeeping.expiredMessageCheckPeriod. ... (that was
- * replaced by housekeeping.checkPeriod) is rejected.
- */
- public void testExpiredMessageCheckPeriodRejected() throws Exception
- {
- getConfigXml().addProperty("virtualhosts.virtualhost.testExpiredMessageCheckPeriodRejected.housekeeping.expiredMessageCheckPeriod",
- 5);
-
- try
- {
- createVirtualHost(getName());
- fail("Exception not thrown");
- }
- catch (ConfigurationException ce)
- {
- assertEquals("Incorrect error message",
- "Validation error : housekeeping/expiredMessageCheckPeriod must be replaced by housekeeping/checkPeriod." +
- " It appears in virtual host definition : " + getName(),
- ce.getMessage());
- }
- }
-
- /*
- * Tests that the queues with dots in the names are fully supported. The XML configuration
- * had problems with handling the tags containing dots due to the design of the Apache Commons
- * Configuration library. The dots need to be escaped when accessing the XML configuration.
- */
- public void testDotsInQueueName() throws Exception
- {
- // Set up vhosts and queue
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues(-1).queue(-1).name", "dot.in.a.name");
- // Add a single property which is inside the <dot.in.a.name> queue tag - the maximum delivery count
- getConfigXml().addProperty("virtualhosts.virtualhost." + getName() + ".queues.queue.dot..in..a..name.maximumDeliveryCount", 5);
-
- VirtualHost test = createVirtualHost(getName());
-
- // Check, that the property stored within the <dot.in.a.name> tag has been properly loaded
- assertEquals("queue with dots in its name has been properly loaded", 5, test.getConfiguration().getQueueConfiguration("dot.in.a.name").getMaxDeliveryCount());
- }
-
- /*
- * Tests that the virtual hosts with dots in the names are fully supported. The XML
- * configuration had problems with handling the tags containing dots due to the design
- * of the Apache Commons Configuration library. The dots need to be escaped when
- * accessing the XML configuration.
- */
- public void testDotsInVirtualHostName() throws Exception
- {
- // Set up vhosts
- getConfigXml().addProperty("virtualhosts.virtualhost.name", "dot.in.a.name");
- // Add a single property which is inside the <dot.in.a.name> virtual host tag - the message store
- getConfigXml().addProperty("virtualhosts.virtualhost.dot..in..a..name.store.class", TestableMemoryMessageStore.class.getName());
-
- VirtualHost test = createVirtualHost("dot.in.a.name");
-
- // Check, that the property stored within the <dot.in.a.name> tag has been properly loaded
- assertEquals("virtual host with dots in the name has been properly loaded", TestableMemoryMessageStore.class.getName(), test.getMessageStore().getClass().getName());
- }
-
- public void testStoreTransactionIdleTimeoutClose() throws Exception
- {
- VirtualHost vhost = createVirtualHost(getName());
- assertEquals("Unexpected StoreTransactionIdleTimeoutClose value", 0, vhost.getConfiguration().getTransactionTimeoutIdleClose());
-
- when(_broker.getAttribute(Broker.VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE)).thenReturn(1000l);
- assertEquals("Unexpected StoreTransactionIdleTimeoutClose value", 1000l, vhost.getConfiguration().getTransactionTimeoutIdleClose());
-
- vhost.getConfiguration().getConfig().setProperty("transactionTimeout.idleClose", 2000l);
- assertEquals("Unexpected StoreTransactionIdleTimeoutClose value", 2000l, vhost.getConfiguration().getTransactionTimeoutIdleClose());
- }
-
- public void testStoreTransactionIdleTimeoutWarn() throws Exception
- {
- VirtualHost vhost = createVirtualHost(getName());
- assertEquals("Unexpected StoreTransactionIdleTimeoutWarn value", 0, vhost.getConfiguration().getTransactionTimeoutIdleWarn());
-
- when(_broker.getAttribute(Broker.VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_WARN)).thenReturn(1000l);
- assertEquals("Unexpected StoreTransactionIdleTimeoutWarn value", 1000l, vhost.getConfiguration().getTransactionTimeoutIdleWarn());
-
- vhost.getConfiguration().getConfig().setProperty("transactionTimeout.idleWarn", 2000l);
- assertEquals("Unexpected StoreTransactionIdleTimeoutWarn value", 2000l, vhost.getConfiguration().getTransactionTimeoutIdleWarn());
- }
-
- public void testStoreTransactionOpenTimeoutClose() throws Exception
- {
- VirtualHost vhost = createVirtualHost(getName());
- assertEquals("Unexpected StoreTransactionOpenTimeoutClose value", 0, vhost.getConfiguration().getTransactionTimeoutOpenClose());
-
- when(_broker.getAttribute(Broker.VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE)).thenReturn(1000l);
- assertEquals("Unexpected StoreTransactionOpenTimeoutClose value", 1000l, vhost.getConfiguration().getTransactionTimeoutOpenClose());
-
- vhost.getConfiguration().getConfig().setProperty("transactionTimeout.openClose", 2000l);
- assertEquals("Unexpected StoreTransactionOpenTimeoutClose value", 2000l, vhost.getConfiguration().getTransactionTimeoutOpenClose());
- }
-
- public void testStoreTransactionOpenTimeoutWarn() throws Exception
- {
- VirtualHost vhost = createVirtualHost(getName());
- assertEquals("Unexpected StoreTransactionOpenTimeoutWarn value", 0, vhost.getConfiguration().getTransactionTimeoutOpenWarn());
-
- when(_broker.getAttribute(Broker.VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_WARN)).thenReturn(1000l);
- assertEquals("Unexpected StoreTransactionOpenTimeoutWarn value", 1000l, vhost.getConfiguration().getTransactionTimeoutOpenWarn());
-
- vhost.getConfiguration().getConfig().setProperty("transactionTimeout.openWarn", 2000l);
- assertEquals("Unexpected StoreTransactionOpenTimeoutWarn value", 2000l, vhost.getConfiguration().getTransactionTimeoutOpenWarn());
- }
-}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java
deleted file mode 100644
index 79abae85cd..0000000000
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.configuration.plugins;
-
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.XMLConfiguration;
-
-import org.apache.log4j.Logger;
-import org.apache.qpid.test.utils.QpidTestCase;
-
-import java.util.List;
-
-/**
- * Test that verifies that given a Configuration a ConfigurationPlugin can
- * process and validate that data.
- */
-public class AbstractConfigurationTest extends QpidTestCase
-{
- private static final Logger _logger = Logger.getLogger(AbstractConfigurationTest.class);
-
- 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 TestConfigPlugin extends AbstractConfiguration
- {
- @Override
- public String[] getElementsProcessed()
- {
- return new String[]{"[@property]", "name",
- "positiveLong", "negativeLong",
- "true", "list", "double"};
- }
-
- @Override
- public void validateConfiguration() throws ConfigurationException
- {
- // no validation required
- }
-
- public String getName()
- {
- return getStringValue("name");
- }
-
- public String getProperty()
- {
- return getStringValue("[@property]");
- }
-
-
- }
-
- private TestConfigPlugin _plugin;
-
- @Override
- public void setUp() throws Exception
- {
- // Test does not directly use the AppRegistry but the configured broker
- // is required for the correct ConfigurationPlugin processing
- super.setUp();
- XMLConfiguration xmlConfig = new XMLConfiguration();
- 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();
- composite.addConfiguration(xmlConfig);
-
- _plugin = new TestConfigPlugin();
-
- try
- {
- _plugin.setConfiguration("base.element", composite.subset("base.element"));
- }
- catch (ConfigurationException e)
- {
- _logger.error("Error setting up plugin configuration", e);
- fail(e.toString());
- }
-
- }
-
- public void testHasConfiguration()
- {
- assertTrue("Plugin has no configuration ", _plugin.hasConfiguration());
- _plugin = new TestConfigPlugin();
- assertFalse("Plugins has configuration", _plugin.hasConfiguration());
- }
-
- public void testValuesRetrieved()
- {
- 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.validatePositiveLong("positiveLong");
- }
- catch (ConfigurationException e)
- {
- fail(e.getMessage());
- }
-
- try
- {
- _plugin.validatePositiveLong("negativeLong");
- fail("negativeLong should not be positive");
- }
- catch (ConfigurationException e)
- {
- assertEquals("negativeLong should not be reported as positive",
- "TestConfigPlugin: unable to configure invalid negativeLong:" + NEGATIVE_LONG, e.getMessage());
- }
-
- }
-
- 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.containsBoolean("boolean"));
- assertFalse("Boolean value not returned", _plugin.containsBoolean("NonExistent"));
- 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"));
- }
-
-}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java
index 9649838b00..0cf89842a1 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java
@@ -23,7 +23,6 @@ package org.apache.qpid.server.configuration.startup;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.io.File;
import java.util.HashMap;
import java.util.Map;
@@ -36,33 +35,9 @@ import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.stats.StatisticsGatherer;
import org.apache.qpid.server.virtualhost.StandardVirtualHostFactory;
-import org.apache.qpid.test.utils.TestFileUtils;
public class VirtualHostRecovererTest extends TestCase
{
- public void testCreate()
- {
- StatisticsGatherer statisticsGatherer = mock(StatisticsGatherer.class);
- SecurityManager securityManager = mock(SecurityManager.class);
- ConfigurationEntry entry = mock(ConfigurationEntry.class);
- Broker parent = mock(Broker.class);
- when(parent.getAttribute(Broker.VIRTUALHOST_HOUSEKEEPING_CHECK_PERIOD)).thenReturn(3000l);
- when(parent.getSecurityManager()).thenReturn(securityManager);
-
- VirtualHostRecoverer recoverer = new VirtualHostRecoverer(statisticsGatherer);
- Map<String, Object> attributes = new HashMap<String, Object>();
- String name = getName();
- attributes.put(VirtualHost.NAME, name);
- File file = TestFileUtils.createTempFile(this, ".xml", "<virtualhosts><virtualhost><name>" + name + "</name><" + name
- + "></" + name + "></virtualhost></virtualhosts>");
- attributes.put(VirtualHost.CONFIG_PATH, file.getAbsolutePath());
- when(entry.getAttributes()).thenReturn(attributes);
-
- VirtualHost host = recoverer.create(null, entry, parent);
-
- assertNotNull("Null is returned", host);
- assertEquals("Unexpected name", getName(), host.getName());
- }
public void testCreateVirtualHostFromStoreConfigAttributes()
{
@@ -91,8 +66,8 @@ public class VirtualHostRecovererTest extends TestCase
{
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(VirtualHost.NAME, getName());
- attributes.put(VirtualHost.CONFIG_PATH, "/path/to/virtualhost.xml");
- String[] mandatoryAttributes = {VirtualHost.NAME, VirtualHost.CONFIG_PATH};
+ attributes.put(VirtualHost.TYPE, "STANDARD");
+ String[] mandatoryAttributes = {VirtualHost.NAME, VirtualHost.TYPE};
checkMandatoryAttributesAreValidated(mandatoryAttributes, attributes);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java
index 133eb94e43..fdf3ec24a1 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java
@@ -79,7 +79,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase
_virtualHostId = UUID.randomUUID();
_virtualHostAttributes = new HashMap<String, Object>();
_virtualHostAttributes.put(VirtualHost.NAME, "test");
- _virtualHostAttributes.put(VirtualHost.CONFIG_PATH, "/path/to/phantom/test");
+ _virtualHostAttributes.put(VirtualHost.TYPE, "STANDARD");
_authenticationProviderId = UUID.randomUUID();
_authenticationProviderAttributes = new HashMap<String, Object>();
@@ -135,7 +135,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase
{
Map<String, Object> virtualHostAttributes = new HashMap<String, Object>();
virtualHostAttributes.put(VirtualHost.NAME, getName());
- virtualHostAttributes.put(VirtualHost.CONFIG_PATH, "/path/to/phantom/virtualhost/config");
+ virtualHostAttributes.put(VirtualHost.TYPE, "STANDARD");
UUID virtualHostId = UUID.randomUUID();
addConfiguration(virtualHostId, VirtualHost.class.getSimpleName(), virtualHostAttributes);
@@ -149,13 +149,13 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase
{
Map<String, Object> virtualHost1Attributes = new HashMap<String, Object>();
virtualHost1Attributes.put(VirtualHost.NAME, "test1");
- virtualHost1Attributes.put(VirtualHost.CONFIG_PATH, "/path/to/phantom/virtualhost/config1");
+ virtualHost1Attributes.put(VirtualHost.TYPE, "STANDARD");
UUID virtualHost1Id = UUID.randomUUID();
addConfiguration(virtualHost1Id, VirtualHost.class.getSimpleName(), virtualHost1Attributes);
Map<String, Object> virtualHost2Attributes = new HashMap<String, Object>();
virtualHost2Attributes.put(VirtualHost.NAME, "test1");
- virtualHost2Attributes.put(VirtualHost.CONFIG_PATH, "/path/to/phantom/virtualhost/config2");
+ virtualHost2Attributes.put(VirtualHost.TYPE, "STANDARD");
UUID virtualHost2Id = UUID.randomUUID();
addConfiguration(virtualHost2Id, VirtualHost.class.getSimpleName(), virtualHost2Attributes);
@@ -207,7 +207,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase
{
Map<String, Object> virtualHostAttributes = new HashMap<String, Object>();
virtualHostAttributes.put(VirtualHost.NAME, "test1");
- virtualHostAttributes.put(VirtualHost.CONFIG_PATH, "/path/to/phantom/virtualhost/config1");
+ virtualHostAttributes.put(VirtualHost.TYPE, "STANDARD");
UUID virtualHostId = UUID.randomUUID();
ConfigurationEntry hostEntry = new ConfigurationEntry(virtualHostId, VirtualHost.class.getSimpleName(), virtualHostAttributes,
Collections.<UUID> emptySet(), _store);
@@ -228,7 +228,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase
Map<String, Object> virtualHostAttributes = new HashMap<String, Object>();
virtualHostAttributes.put(VirtualHost.NAME, "test");
- virtualHostAttributes.put(VirtualHost.CONFIG_PATH, "/path/to/new/phantom/test/configuration");
+ virtualHostAttributes.put(VirtualHost.TYPE, "STANDARD");
ConfigurationEntry updatedEntry = new ConfigurationEntry(_virtualHostId, VirtualHost.class.getSimpleName(), virtualHostAttributes,
hostEntry.getChildrenIds(), _store);
@@ -372,7 +372,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase
UUID virtualHostId = UUID.randomUUID();
Map<String, Object> virtualHostAttributes = new HashMap<String, Object>();
virtualHostAttributes.put(VirtualHost.NAME, "test1");
- virtualHostAttributes.put(VirtualHost.CONFIG_PATH, "/path/to/phantom/virtualhost/config1");
+ virtualHostAttributes.put(VirtualHost.TYPE, "STANDARD");
ConfigurationEntry hostEntry = new ConfigurationEntry(virtualHostId, VirtualHost.class.getSimpleName(), virtualHostAttributes,
Collections.<UUID> emptySet(), _store);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java
index 34b4fbf1ab..bcdfce1d0a 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java
@@ -213,7 +213,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
when(virtualHost.getId()).thenReturn(virtualHostId);
when(virtualHost.getType()).thenReturn(VirtualHost.class.getSimpleName());
Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(VirtualHost.CONFIG_PATH, "/path/to/host.xml");
+ attributes.put(VirtualHost.TYPE, "STANDARD");
when(virtualHost.getAttributes()).thenReturn(attributes);
when(_store.getEntry(virtualHostId)).thenReturn(virtualHost);
when(_root.getChildrenIds()).thenReturn(new HashSet<UUID>(Arrays.asList(_portEntryId, virtualHostId)));
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java
index db52bb0e29..d0a282c20f 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java
@@ -20,9 +20,6 @@
*/
package org.apache.qpid.server.logging.messages;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.PropertiesConfiguration;
-
import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.logging.LogMessage;
import org.apache.qpid.server.logging.LogSubject;
@@ -35,7 +32,6 @@ import java.util.List;
public abstract class AbstractTestMessages extends QpidTestCase
{
- protected Configuration _config = new PropertiesConfiguration();
protected LogMessage _logMessage = null;
protected UnitTestMessageLogger _logger;
protected LogSubject _logSubject = new TestBlankSubject();
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
index b8ecc4a2c0..2410df1fe0 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
@@ -54,6 +54,15 @@ public class VirtualHostTest extends QpidTestCase
TaskExecutor taskExecutor = mock(TaskExecutor.class);
when(taskExecutor.isTaskExecutorThread()).thenReturn(true);
when(_broker.getTaskExecutor()).thenReturn(taskExecutor);
+ when(_broker.getAttribute(Broker.QUEUE_ALERT_THRESHOLD_MESSAGE_AGE)).thenReturn(0l);
+ when(_broker.getAttribute(Broker.QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE)).thenReturn(0l);
+ when(_broker.getAttribute(Broker.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES)).thenReturn(0l);
+ when(_broker.getAttribute(Broker.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES)).thenReturn(0l);
+ when(_broker.getAttribute(Broker.QUEUE_ALERT_REPEAT_GAP)).thenReturn(10000l);
+ when(_broker.getAttribute(Broker.QUEUE_MAXIMUM_DELIVERY_ATTEMPTS)).thenReturn(0);
+ when(_broker.getAttribute(Broker.QUEUE_FLOW_CONTROL_RESUME_SIZE_BYTES)).thenReturn(0l);
+ when(_broker.getAttribute(Broker.QUEUE_FLOW_CONTROL_SIZE_BYTES)).thenReturn(0l);
+ when(_broker.getAttribute(Broker.QUEUE_DEAD_LETTER_QUEUE_ENABLED)).thenReturn(false);
_recovererProvider = mock(RecovererProvider.class);
_statisticsGatherer = mock(StatisticsGatherer.class);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
index 31a0b9d358..02921f987c 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
@@ -33,8 +33,6 @@ import java.util.UUID;
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.server.configuration.BrokerProperties;
-import org.apache.qpid.server.configuration.QueueConfiguration;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.logging.EventLogger;
@@ -56,7 +54,6 @@ public class AMQQueueFactoryTest extends QpidTestCase
private VirtualHost _virtualHost;
private AMQQueueFactory _queueFactory;
private List<AMQQueue> _queues;
- private QueueConfiguration _queueConfiguration;
@Override
public void setUp() throws Exception
@@ -67,12 +64,8 @@ public class AMQQueueFactoryTest extends QpidTestCase
_virtualHost = mock(VirtualHost.class);
when(_virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
-
- VirtualHostConfiguration vhostConfig = mock(VirtualHostConfiguration.class);
- when(_virtualHost.getConfiguration()).thenReturn(vhostConfig);
when(_virtualHost.getEventLogger()).thenReturn(new EventLogger());
- _queueConfiguration = mock(QueueConfiguration.class);
- when(vhostConfig.getQueueConfiguration(anyString())).thenReturn(_queueConfiguration);
+
DurableConfigurationStore store = mock(DurableConfigurationStore.class);
when(_virtualHost.getDurableConfigurationStore()).thenReturn(store);
@@ -284,15 +277,14 @@ public class AMQQueueFactoryTest extends QpidTestCase
String dlExchangeName = queueName + DefaultExchangeFactory.DEFAULT_DLE_NAME_SUFFIX;
String dlQueueName = queueName + AMQQueueFactory.DEFAULT_DLQ_NAME_SUFFIX;
- when(_queueConfiguration.getMaxDeliveryCount()).thenReturn(5);
- when(_queueConfiguration.isDeadLetterQueueEnabled()).thenReturn(true);
-
assertNull("The DLQ should not yet exist", _virtualHost.getQueue(dlQueueName));
assertNull("The alternate exchange should not yet exist", _virtualHost.getExchange(dlExchangeName));
Map<String,Object> attributes = new HashMap<String, Object>();
attributes.put(Queue.ID, UUID.randomUUID());
attributes.put(Queue.NAME, queueName);
+ attributes.put(Queue.CREATE_DLQ_ON_CREATION, true);
+ attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 5);
AMQQueue queue = _queueFactory.createQueue(attributes);
@@ -501,19 +493,16 @@ public class AMQQueueFactoryTest extends QpidTestCase
}
}
- public void testMessageGroupFromConfig() throws Exception
+ public void testMessageGroupQueue() throws Exception
{
- Map<String,String> arguments = new HashMap<String, String>();
-
- arguments.put(QueueArgumentsConverter.QPID_GROUP_HEADER_KEY,"mykey");
- arguments.put(QueueArgumentsConverter.QPID_SHARED_MSG_GROUP,"1");
-
- QueueConfiguration qConf = mock(QueueConfiguration.class);
- when(qConf.getArguments()).thenReturn(arguments);
- when(qConf.getName()).thenReturn("test");
+ Map<String,Object> attributes = new HashMap<String, Object>();
+ attributes.put(Queue.ID, UUID.randomUUID());
+ attributes.put(Queue.NAME, getTestName());
+ attributes.put(Queue.MESSAGE_GROUP_KEY,"mykey");
+ attributes.put(Queue.MESSAGE_GROUP_SHARED_GROUPS, true);
- AMQQueue queue = _queueFactory.createAMQQueueImpl(qConf);
+ AMQQueue queue = _queueFactory.createQueue(attributes);
assertEquals("mykey", queue.getAttribute(Queue.MESSAGE_GROUP_KEY));
assertEquals(Boolean.TRUE, queue.getAttribute(Queue.MESSAGE_GROUP_SHARED_GROUPS));
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java
index 7eda8ea4fa..34371b1b11 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java
@@ -28,8 +28,8 @@ import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.model.Queue;
-
import org.apache.qpid.server.security.SecurityManager;
+import org.apache.qpid.server.util.BrokerTestHelper;
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.test.utils.QpidTestCase;
@@ -49,6 +49,7 @@ public class PriorityQueueListTest extends QpidTestCase
protected void setUp()
{
+ BrokerTestHelper.setUp();
QueueEntry[] entries = new QueueEntry[PRIORITIES.length];
Map<String,Object> queueAttributes = new HashMap<String, Object>();
queueAttributes.put(Queue.ID, UUID.randomUUID());
@@ -81,6 +82,19 @@ public class PriorityQueueListTest extends QpidTestCase
_priority5message2 = entries[2];
}
+ @Override
+ public void tearDown() throws Exception
+ {
+ try
+ {
+ super.tearDown();
+ }
+ finally
+ {
+ BrokerTestHelper.tearDown();
+ }
+ }
+
public void testPriorityQueueEntryCompareToItself()
{
//check messages compare to themselves properly
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java
index 11c2451118..a9036a49a4 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java
@@ -36,7 +36,6 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
-import org.apache.commons.configuration.Configuration;
import org.apache.qpid.common.AMQPFilterTypes;
import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.exchange.ExchangeImpl;
@@ -69,7 +68,6 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
private String _storePath;
private String _storeName;
private MessageStore _messageStore;
- private Configuration _configuration;
private VirtualHost _virtualHost;
private ConfigurationRecoveryHandler _recoveryHandler;
@@ -98,7 +96,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
_storePath = TMP_FOLDER + File.separator + _storeName;
FileUtils.delete(new File(_storePath), true);
setTestSystemProperty("QPID_WORK", TMP_FOLDER);
- _configuration = mock(Configuration.class);
+
_recoveryHandler = mock(ConfigurationRecoveryHandler.class);
_storedMessageRecoveryHandler = mock(StoredMessageRecoveryHandler.class);
_logRecoveryHandler = mock(TransactionLogRecoveryHandler.class);
@@ -116,8 +114,6 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
when(_exchange.getId()).thenReturn(_exchangeId);
when(_exchange.getExchangeType()).thenReturn(mock(ExchangeType.class));
when(_exchange.getEventLogger()).thenReturn(new EventLogger());
- when(_configuration.getString(eq(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY), anyString())).thenReturn(
- _storePath);
when(_virtualHost.getAttribute(eq(VirtualHost.STORE_PATH))).thenReturn(_storePath);
_bindingArgs = new HashMap<String, Object>();
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java
index fd2d4215ab..e2fb96bfef 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java
@@ -21,9 +21,7 @@
package org.apache.qpid.server.store;
-import java.util.Collections;
import java.util.Map;
-import org.apache.commons.configuration.Configuration;
import org.apache.qpid.server.plugin.MessageStoreFactory;
public class TestMemoryMessageStoreFactory implements MessageStoreFactory
@@ -42,12 +40,6 @@ public class TestMemoryMessageStoreFactory implements MessageStoreFactory
}
@Override
- public Map<String, Object> convertStoreConfiguration(Configuration configuration)
- {
- return Collections.emptyMap();
- }
-
- @Override
public void validateAttributes(Map<String, Object> attributes)
{
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStore.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStore.java
index 6b9bb08aa9..7d4dcd0280 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStore.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStore.java
@@ -33,6 +33,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*/
public class TestableMemoryMessageStore extends TestMemoryMessageStore
{
+ public static final String TYPE = "TestableMemory";
private final Map<Long, AMQQueue> _messages = new HashMap<Long, AMQQueue>();
private final AtomicInteger _messageCount = new AtomicInteger(0);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/ExchangeConfiguration.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStoreFactory.java
index 6cbaf26480..ba9b7c155e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/ExchangeConfiguration.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestableMemoryMessageStoreFactory.java
@@ -7,9 +7,9 @@
* 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
@@ -18,41 +18,30 @@
* under the License.
*
*/
-package org.apache.qpid.server.configuration;
-
-import org.apache.commons.configuration.Configuration;
+package org.apache.qpid.server.store;
-public class ExchangeConfiguration
-{
+import java.util.Map;
- private Configuration _config;
- private String _name;
-
- public ExchangeConfiguration(String name, Configuration subset)
- {
- _name = name;
- _config = subset;
- }
-
- public String getName()
- {
- return _name;
- }
+import org.apache.qpid.server.plugin.MessageStoreFactory;
+public class TestableMemoryMessageStoreFactory implements MessageStoreFactory
+{
+ @Override
public String getType()
{
- return _config.getString("type","direct");
+ return TestableMemoryMessageStore.TYPE;
}
- public boolean getDurable()
+ @Override
+ public MessageStore createMessageStore()
{
- return _config.getBoolean("durable", false);
+ return new TestableMemoryMessageStore();
}
- public boolean getAutoDelete()
+ @Override
+ public void validateAttributes(Map<String, Object> attributes)
{
- return _config.getBoolean("autodelete",false);
}
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
index 857cc60a7e..0dc25a2ad2 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
@@ -29,14 +29,11 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.protocol.AMQSessionModel;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.configuration.store.JsonConfigurationEntryStore;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
import org.apache.qpid.server.model.Broker;
@@ -45,9 +42,11 @@ import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.stats.StatisticsGatherer;
+import org.apache.qpid.server.store.TestMemoryMessageStore;
import org.apache.qpid.server.store.TestableMemoryMessageStore;
import org.apache.qpid.server.virtualhost.StandardVirtualHostFactory;
import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.server.plugin.PluggableFactoryLoader;
import org.apache.qpid.server.plugin.VirtualHostFactory;
import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
import org.apache.qpid.server.virtualhost.QueueExistsException;
@@ -82,23 +81,14 @@ public class BrokerTestHelper
{
}
- public static VirtualHost createVirtualHost(VirtualHostConfiguration virtualHostConfiguration, VirtualHostRegistry virtualHostRegistry)
+ public static VirtualHost createVirtualHost(VirtualHostRegistry virtualHostRegistry, org.apache.qpid.server.model.VirtualHost modelVHost)
throws Exception
{
- return createVirtualHost(virtualHostConfiguration, virtualHostRegistry, mock(org.apache.qpid.server.model.VirtualHost.class));
- }
-
- public static VirtualHost createVirtualHost(VirtualHostConfiguration virtualHostConfiguration, VirtualHostRegistry virtualHostRegistry, org.apache.qpid.server.model.VirtualHost modelVHost)
- throws Exception
- {
- StatisticsGatherer statisticsGatherer = mock(StatisticsGatherer.class);
- final VirtualHostFactory factory =
- virtualHostConfiguration == null ? new StandardVirtualHostFactory()
- : VirtualHostFactory.FACTORIES.get(virtualHostConfiguration.getType());
+ String hostType = modelVHost.getType();
+ VirtualHostFactory factory = new PluggableFactoryLoader<VirtualHostFactory>(VirtualHostFactory.class).get(hostType);
VirtualHost host = factory.createVirtualHost(virtualHostRegistry,
- statisticsGatherer,
+ mock(StatisticsGatherer.class),
new SecurityManager(mock(Broker.class), false),
- virtualHostConfiguration,
modelVHost);
if(virtualHostRegistry != null)
{
@@ -107,29 +97,21 @@ public class BrokerTestHelper
return host;
}
- public static VirtualHost createVirtualHost(VirtualHostConfiguration virtualHostConfiguration) throws Exception
+ public static VirtualHost createVirtualHost(String name) throws Exception
{
-
- return createVirtualHost(virtualHostConfiguration, new VirtualHostRegistry(new EventLogger()));
+ return createVirtualHost(name, new VirtualHostRegistry(new EventLogger()));
}
public static VirtualHost createVirtualHost(String name, VirtualHostRegistry virtualHostRegistry) throws Exception
{
- VirtualHostConfiguration vhostConfig = createVirtualHostConfiguration(name);
- return createVirtualHost(vhostConfig, virtualHostRegistry);
- }
+ org.apache.qpid.server.model.VirtualHost virtualHost = mock(org.apache.qpid.server.model.VirtualHost.class);
+ when(virtualHost.getType()).thenReturn(StandardVirtualHostFactory.TYPE);
+ when(virtualHost.getAttribute(org.apache.qpid.server.model.VirtualHost.TYPE)).thenReturn(StandardVirtualHostFactory.TYPE);
- public static VirtualHost createVirtualHost(String name) throws Exception
- {
- VirtualHostConfiguration configuration = createVirtualHostConfiguration(name);
- return createVirtualHost(configuration);
- }
-
- private static VirtualHostConfiguration createVirtualHostConfiguration(String name) throws ConfigurationException
- {
- VirtualHostConfiguration vhostConfig = new VirtualHostConfiguration(name, new PropertiesConfiguration(), createBrokerMock());
- vhostConfig.setMessageStoreClass(TestableMemoryMessageStore.class.getName());
- return vhostConfig;
+ when(virtualHost.getStoreType()).thenReturn(TestableMemoryMessageStore.TYPE);
+ when(virtualHost.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_TYPE)).thenReturn(TestableMemoryMessageStore.TYPE);
+ when(virtualHost.getName()).thenReturn(name);
+ return createVirtualHost(virtualHostRegistry, virtualHost);
}
public static AMQSessionModel createSession(int channelId, AMQConnectionModel connection)
@@ -189,5 +171,4 @@ public class BrokerTestHelper
return queue;
}
-
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
index f3f4b0d06e..04a218d024 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
@@ -23,7 +23,6 @@ package org.apache.qpid.server.virtualhost;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.connection.IConnectionRegistry;
import org.apache.qpid.server.exchange.ExchangeImpl;
@@ -73,11 +72,6 @@ public class MockVirtualHost implements VirtualHost
return null;
}
- public VirtualHostConfiguration getConfiguration()
- {
- return null;
- }
-
public IConnectionRegistry getConnectionRegistry()
{
return null;
@@ -370,4 +364,10 @@ public class MockVirtualHost implements VirtualHost
{
return null;
}
+
+ @Override
+ public boolean getDefaultDeadLetterQueueEnabled()
+ {
+ return false;
+ }
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
index f081268337..570e748d7a 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
@@ -20,45 +20,46 @@
*/
package org.apache.qpid.server.virtualhost;
-import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
+import java.io.File;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
import org.apache.qpid.server.binding.BindingImpl;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.exchange.AbstractExchange;
import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.Model;
+import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.stats.StatisticsGatherer;
+import org.apache.qpid.server.store.ConfigurationRecoveryHandler;
+import org.apache.qpid.server.store.JsonFileConfigStore;
import org.apache.qpid.server.store.TestMemoryMessageStore;
import org.apache.qpid.server.util.BrokerTestHelper;
-import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.test.utils.QpidTestCase;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.qpid.test.utils.TestFileUtils;
+import org.apache.qpid.util.FileUtils;
+import org.codehaus.jackson.map.ObjectMapper;
public class StandardVirtualHostTest extends QpidTestCase
{
private VirtualHostRegistry _virtualHostRegistry;
+ private File _storeFolder;
@Override
public void setUp() throws Exception
{
super.setUp();
BrokerTestHelper.setUp();
+ _storeFolder = TestFileUtils.createTestDirectory(".tmp.store", true);
}
@Override
@@ -75,6 +76,7 @@ public class StandardVirtualHostTest extends QpidTestCase
{
BrokerTestHelper.tearDown();
super.tearDown();
+ FileUtils.delete(_storeFolder, false);
}
}
@@ -106,25 +108,23 @@ public class StandardVirtualHostTest extends QpidTestCase
{
final String queueName = getName();
final String customBinding = "custom-binding";
- File config = writeConfigFile(queueName, queueName, null, false, new String[]{customBinding});
+ writeConfigFile(queueName, queueName, null, false, new String[]{customBinding});
try
{
- createVirtualHost(queueName, config);
+ createVirtualHost(queueName);
fail("virtualhost creation should have failed due to illegal configuration");
}
- catch (ServerScopedRuntimeException e)
+ catch (IllegalConfigurationException e)
{
- Throwable cause = e.getCause();
- assertNotNull(cause);
- assertEquals("Attempt to bind queue '" + queueName + "' with binding key(s) [" + customBinding + "] without specifying an exchange", cause.getMessage());
+ // pass
}
}
public void testVirtualHostBecomesActive() throws Exception
{
- File config = writeConfigFile(getName(), getName(), getName() +".direct", false, new String[0]);
- VirtualHost vhost = createVirtualHost(getName(), config);
+ writeConfigFile(getName(), getName(), getName() +".direct", false, new String[0]);
+ VirtualHost vhost = createVirtualHost(getName());
assertNotNull(vhost);
assertEquals(State.ACTIVE, vhost.getState());
}
@@ -132,15 +132,15 @@ public class StandardVirtualHostTest extends QpidTestCase
public void testVirtualHostHavingStoreSetAsTypeBecomesActive() throws Exception
{
String virtualHostName = getName();
- VirtualHost host = createVirtualHostUsingStoreType(virtualHostName);
+ VirtualHost host = createVirtualHost(virtualHostName);
assertNotNull(host);
assertEquals(State.ACTIVE, host.getState());
}
public void testVirtualHostBecomesStoppedOnClose() throws Exception
{
- File config = writeConfigFile(getName(), getName(), getName() +".direct", false, new String[0]);
- VirtualHost vhost = createVirtualHost(getName(), config);
+ writeConfigFile(getName(), getName(), getName() +".direct", false, new String[0]);
+ VirtualHost vhost = createVirtualHost(getName());
assertNotNull(vhost);
assertEquals(State.ACTIVE, vhost.getState());
vhost.close();
@@ -151,7 +151,7 @@ public class StandardVirtualHostTest extends QpidTestCase
public void testVirtualHostHavingStoreSetAsTypeBecomesStoppedOnClose() throws Exception
{
String virtualHostName = getName();
- VirtualHost host = createVirtualHostUsingStoreType(virtualHostName);
+ VirtualHost host = createVirtualHost(virtualHostName);
assertNotNull(host);
assertEquals(State.ACTIVE, host.getState());
host.close();
@@ -166,33 +166,16 @@ public class StandardVirtualHostTest extends QpidTestCase
{
final String queueName = getName();
final String exchangeName = "made-up-exchange";
- File config = writeConfigFile(queueName, queueName, exchangeName, true, new String[0]);
-
- try
- {
- createVirtualHost(queueName, config);
- fail("virtualhost creation should have failed due to illegal configuration");
- }
- catch (ServerScopedRuntimeException e)
- {
- Throwable cause = e.getCause();
- assertNotNull(cause);
- assertEquals("Attempt to bind queue '" + queueName + "' to unknown exchange:" + exchangeName, cause.getMessage());
- }
- }
+ writeConfigFile(queueName, queueName, exchangeName, true, new String[0]);
- public void testCreateVirtualHostWithoutConfigurationInConfigFile() throws Exception
- {
- File config = writeConfigFile(getName(), getName(), getName() +".direct", false, new String[0]);
- String hostName = getName() + "-not-existing";
try
{
- createVirtualHost(hostName, config);
+ createVirtualHost(queueName);
fail("virtualhost creation should have failed due to illegal configuration");
}
- catch (RuntimeException e)
+ catch (IllegalConfigurationException e)
{
- assertEquals("No configuration found for virtual host '" + hostName + "' in " + config.getAbsolutePath(), e.getMessage());
+ // pass
}
}
@@ -205,8 +188,8 @@ public class StandardVirtualHostTest extends QpidTestCase
Map<String, String[]> bindingArguments = new HashMap<String, String[]>();
bindingArguments.put("ping", new String[]{"x-filter-jms-selector=select=1", "x-qpid-no-local"});
bindingArguments.put("pong", new String[]{"x-filter-jms-selector=select='pong'"});
- File config = writeConfigFile(vhostName, queueName, exchangeName, false, new String[]{"ping","pong"}, bindingArguments);
- VirtualHost vhost = createVirtualHost(vhostName, config);
+ writeConfigFile(vhostName, queueName, exchangeName, false, new String[]{"ping","pong"}, bindingArguments);
+ VirtualHost vhost = createVirtualHost(vhostName);
ExchangeImpl exch = vhost.getExchange(getName() +".direct");
Collection<BindingImpl> bindings = ((AbstractExchange)exch).getBindings();
@@ -246,8 +229,8 @@ public class StandardVirtualHostTest extends QpidTestCase
String vhostName = getName();
String queueName = getName();
- File config = writeConfigFile(vhostName, queueName, exchangeName, false, routingKeys);
- VirtualHost vhost = createVirtualHost(vhostName, config);
+ writeConfigFile(vhostName, queueName, exchangeName, false, routingKeys);
+ VirtualHost vhost = createVirtualHost(vhostName);
assertNotNull("virtualhost should exist", vhost);
AMQQueue queue = vhost.getQueue(queueName);
@@ -263,16 +246,19 @@ public class StandardVirtualHostTest extends QpidTestCase
}
- private VirtualHost createVirtualHost(String vhostName, File config) throws Exception
+ private VirtualHost createVirtualHost(String virtualHostName) throws Exception
{
- Broker broker = BrokerTestHelper.createBrokerMock();
+ Broker<?> broker = BrokerTestHelper.createBrokerMock();
_virtualHostRegistry = broker.getVirtualHostRegistry();
- VirtualHostConfiguration configuration = new VirtualHostConfiguration(vhostName, config, broker);
- VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class), new SecurityManager(mock(Broker.class), false), configuration,
- mock(org.apache.qpid.server.model.VirtualHost.class));
+ org.apache.qpid.server.model.VirtualHost<?> model = mock(org.apache.qpid.server.model.VirtualHost.class);
+ when(model.getAttribute(org.apache.qpid.server.model.VirtualHost.CONFIG_STORE_TYPE)).thenReturn(JsonFileConfigStore.TYPE);
+ when(model.getAttribute(org.apache.qpid.server.model.VirtualHost.CONFIG_STORE_PATH)).thenReturn(_storeFolder.getAbsolutePath());
+ when(model.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_TYPE)).thenReturn(TestMemoryMessageStore.TYPE);
+ when(model.getName()).thenReturn(virtualHostName);
+ VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class),
+ new SecurityManager(broker, false), model);
_virtualHostRegistry.registerVirtualHost(host);
-
return host;
}
@@ -285,95 +271,79 @@ public class StandardVirtualHostTest extends QpidTestCase
* @param dontDeclare if true then don't declare the exchange, even if its name is non-null
* @param routingKeys routingKeys to bind the queue with (empty array = none)
* @return
+ * @throws Exception
*/
- private File writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare, String[] routingKeys)
+ private void writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare, String[] routingKeys) throws Exception
{
- return writeConfigFile(vhostName, queueName, exchangeName, dontDeclare, routingKeys, null);
+ writeConfigFile(vhostName, queueName, exchangeName, dontDeclare, routingKeys, null);
}
- private File writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare, String[] routingKeys, Map<String, String[]> bindingArguments)
+ private void writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare,
+ String[] routingKeys, Map<String, String[]> bindingArguments) throws Exception
{
- File tmpFile = null;
- try
+ Map<String, Object> data = new HashMap<String, Object>();
+ data.put("modelVersion", Model.MODEL_VERSION);
+ data.put("configVersion", org.apache.qpid.server.model.VirtualHost.CURRENT_CONFIG_VERSION);
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.writeValue(new File(_storeFolder, vhostName + ".json"), data);
+
+ JsonFileConfigStore store = new JsonFileConfigStore();
+ org.apache.qpid.server.model.VirtualHost<?> virtualHost = mock(org.apache.qpid.server.model.VirtualHost.class);
+ when(virtualHost.getName()).thenReturn(vhostName);
+ when(virtualHost.getAttribute(org.apache.qpid.server.model.VirtualHost.CONFIG_STORE_PATH)).thenReturn(_storeFolder.getAbsolutePath());
+ ConfigurationRecoveryHandler recoveryHandler = mock(ConfigurationRecoveryHandler.class);
+ when(recoveryHandler.completeConfigurationRecovery()).thenReturn(org.apache.qpid.server.model.VirtualHost.CURRENT_CONFIG_VERSION);
+ store.configureConfigStore(virtualHost , recoveryHandler );
+
+ UUID exchangeId = UUIDGenerator.generateExchangeUUID(exchangeName == null? "amq.direct" : exchangeName, vhostName);
+ if(exchangeName != null && !dontDeclare)
{
- tmpFile = File.createTempFile(getName(), ".tmp");
- tmpFile.deleteOnExit();
-
- FileWriter fstream = new FileWriter(tmpFile);
- BufferedWriter writer = new BufferedWriter(fstream);
-
- //extra outer tag to please Commons Configuration
-
- writer.write("<virtualhosts>");
- writer.write(" <default>" + vhostName + "</default>");
- writer.write(" <virtualhost>");
- writer.write(" <name>" + vhostName + "</name>");
- writer.write(" <" + vhostName + ">");
- writer.write(" <type>" + StandardVirtualHostFactory.TYPE + "</type>");
- writer.write(" <store>");
- writer.write(" <class>" + TestMemoryMessageStore.class.getName() + "</class>");
- writer.write(" </store>");
- if(exchangeName != null && !dontDeclare)
- {
- writer.write(" <exchanges>");
- writer.write(" <exchange>");
- writer.write(" <type>direct</type>");
- writer.write(" <name>" + exchangeName + "</name>");
- writer.write(" </exchange>");
- writer.write(" </exchanges>");
- }
- writer.write(" <queues>");
- writer.write(" <queue>");
- writer.write(" <name>" + queueName + "</name>");
- writer.write(" <" + queueName + ">");
- if(exchangeName != null)
- {
- writer.write(" <exchange>" + exchangeName + "</exchange>");
- }
- for(String routingKey: routingKeys)
+ Map<String, Object> exchangeAttributes = new HashMap<String, Object>();
+ exchangeAttributes.put(org.apache.qpid.server.model.Exchange.NAME, exchangeName);
+ exchangeAttributes.put(org.apache.qpid.server.model.Exchange.TYPE, "direct");
+ exchangeAttributes.put(org.apache.qpid.server.model.Exchange.DURABLE, true);
+ store.create(exchangeId, org.apache.qpid.server.model.Exchange.class.getSimpleName(), exchangeAttributes);
+ }
+
+ UUID queueId = UUID.randomUUID();
+ Map<String, Object> queueAttributes = new HashMap<String, Object>();
+ queueAttributes.put(org.apache.qpid.server.model.Queue.NAME, queueName);
+ queueAttributes.put(org.apache.qpid.server.model.Queue.DURABLE, true);
+ store.create(queueId, org.apache.qpid.server.model.Queue.class.getSimpleName(), queueAttributes);
+
+ Map<String, Object> bindingAttributes = new HashMap<String, Object>();
+ bindingAttributes.put(org.apache.qpid.server.model.Binding.NAME, queueName);
+ bindingAttributes.put(org.apache.qpid.server.model.Binding.QUEUE, queueId);
+ bindingAttributes.put(org.apache.qpid.server.model.Binding.EXCHANGE, exchangeId );
+ store.create(UUID.randomUUID(), org.apache.qpid.server.model.Binding.class.getSimpleName(), bindingAttributes);
+
+ for (int i = 0; i < routingKeys.length; i++)
+ {
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(org.apache.qpid.server.model.Binding.NAME, routingKeys[i]);
+ attributes.put(org.apache.qpid.server.model.Binding.QUEUE, queueId);
+ attributes.put(org.apache.qpid.server.model.Binding.EXCHANGE, exchangeId );
+ if (bindingArguments != null && bindingArguments.containsKey(routingKeys[i]))
{
- writer.write(" <routingKey>" + routingKey + "</routingKey>\n");
- if (bindingArguments!= null && bindingArguments.containsKey(routingKey))
+ String[] args = (String[])bindingArguments.get(routingKeys[i]);
+ Map<String, Object> arguments = new HashMap<String, Object>();
+ for (int j = 0; j < args.length; j++)
{
- writer.write(" <" + routingKey + ">\n");
- String[] arguments = (String[])bindingArguments.get(routingKey);
- for (String argument : arguments)
+ int pos = args[j].indexOf('=');
+ if (pos == -1)
+ {
+ arguments.put(args[j], null);
+ }
+ else
{
- writer.write(" <bindingArgument>" + argument + "</bindingArgument>\n");
+ arguments.put(args[j].substring(0, pos), args[j].substring(pos + 1));
}
- writer.write(" </" + routingKey + ">\n");
}
+ attributes.put(org.apache.qpid.server.model.Binding.ARGUMENTS, arguments );
}
- writer.write(" </" + queueName + ">");
- writer.write(" </queue>");
- writer.write(" </queues>");
- writer.write(" </" + vhostName + ">");
- writer.write(" </virtualhost>");
- writer.write("</virtualhosts>");
-
- writer.flush();
- writer.close();
- }
- catch (IOException e)
- {
- fail("Unable to create virtualhost configuration");
+ store.create(UUID.randomUUID(), org.apache.qpid.server.model.Binding.class.getSimpleName(), attributes);
}
-
- return tmpFile;
+ store.close();
}
- private VirtualHost createVirtualHostUsingStoreType(String virtualHostName) throws ConfigurationException, Exception
- {
- Broker broker = BrokerTestHelper.createBrokerMock();
- _virtualHostRegistry = broker.getVirtualHostRegistry();
-
- Configuration config = new PropertiesConfiguration();
- VirtualHostConfiguration configuration = new VirtualHostConfiguration(virtualHostName, config, broker);
- final org.apache.qpid.server.model.VirtualHost virtualHost = mock(org.apache.qpid.server.model.VirtualHost.class);
- when(virtualHost.getAttribute(eq(org.apache.qpid.server.model.VirtualHost.STORE_TYPE))).thenReturn(TestMemoryMessageStore.TYPE);
- VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class), new SecurityManager(mock(Broker.class), false), configuration,
- virtualHost);
- _virtualHostRegistry.registerVirtualHost(host);
- return host;
- }
}
diff --git a/qpid/java/broker-core/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory b/qpid/java/broker-core/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory
index 9512fb8117..48241614d8 100644
--- a/qpid/java/broker-core/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory
+++ b/qpid/java/broker-core/src/test/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory
@@ -17,3 +17,4 @@
# under the License.
#
org.apache.qpid.server.store.TestMemoryMessageStoreFactory
+org.apache.qpid.server.store.TestableMemoryMessageStoreFactory \ No newline at end of file