summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew MacBean <macbean@apache.org>2014-06-26 11:19:54 +0000
committerAndrew MacBean <macbean@apache.org>2014-06-26 11:19:54 +0000
commit8a1190a3bc398233b3cb9a295add11eef0f3cec4 (patch)
tree15ecfb671967401f81b9dce15e46aa9f1a33489c
parent4ad072fd1cca374bcf36292bcf83aba74f18f08c (diff)
downloadqpid-python-8a1190a3bc398233b3cb9a295add11eef0f3cec4.tar.gz
QPID-5821: [Java Broker] Refactor MessageStore and DurableConfigurationStore interfaces to remove message store settings map.
VirtualHost model objects now have attributes. Work done by Keith Wall <kwall@apache.org> and me. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1605737 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java21
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java18
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java3
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/HASettings.java (renamed from qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/MessageStoreProvidingVirtualHostNode.java)25
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java9
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java22
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java9
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java10
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java22
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java38
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java78
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java7
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java14
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java9
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java7
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java14
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java35
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java16
-rw-r--r--qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java7
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java3
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/FileBasedSettings.java24
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java15
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java11
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/Settings.java24
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitorSettings.java26
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitoringSettings.java26
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java19
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java54
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHostImpl.java91
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java13
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java43
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNode.java (renamed from qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/FileBasedVirtualHostNode.java)12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java9
-rw-r--r--qpid/java/broker-core/src/main/resources/initial-config.json2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java32
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java17
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java3
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreConfigurationTest.java19
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java61
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MemoryMessageStoreTest.java11
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java14
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java15
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java7
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java4
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java28
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java20
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java12
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java38
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java78
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java45
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java72
-rw-r--r--qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreConfigurationTest.java14
-rw-r--r--qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java36
-rw-r--r--qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java16
-rw-r--r--qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java31
-rw-r--r--qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java6
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java5
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericAbstractJDBCMessageStore.java7
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java17
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java17
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java29
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java38
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java68
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java4
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java5
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java16
-rw-r--r--qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java5
-rw-r--r--qpid/java/pom.xml6
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java10
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java3
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java9
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java4
-rwxr-xr-xqpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java9
86 files changed, 1004 insertions, 613 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
index e8555dd819..7fb973d089 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
@@ -46,6 +46,7 @@ import org.apache.qpid.server.store.ConfiguredObjectRecord;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.MessageStoreProvider;
+import org.apache.qpid.server.store.SizeMonitorSettings;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.berkeleydb.entry.HierarchyKey;
import org.apache.qpid.server.store.berkeleydb.tuple.ConfiguredObjectBinding;
@@ -89,7 +90,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
}
@Override
- public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
+ public void openConfigurationStore(ConfiguredObject<?> parent)
{
if (_configurationStoreOpen.compareAndSet(false, true))
{
@@ -97,7 +98,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
if (_environmentFacade == null)
{
- _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent, storeSettings);
+ _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent);
_storeLocation = _environmentFacade.getStoreLocation();
}
else
@@ -500,23 +501,15 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
private ConfiguredObject<?> _parent;
@Override
- public void openMessageStore(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ public void openMessageStore(final ConfiguredObject<?> parent)
{
if (_messageStoreOpen.compareAndSet(false, true))
{
_parent = parent;
- Object overfullAttr = messageStoreSettings.get(OVERFULL_SIZE);
- Object underfullAttr = messageStoreSettings.get(UNDERFULL_SIZE);
-
- _persistentSizeHighThreshold = overfullAttr == null ? -1l :
- overfullAttr instanceof Number
- ? ((Number) overfullAttr).longValue()
- : Long.parseLong(overfullAttr.toString());
- _persistentSizeLowThreshold = underfullAttr == null ? _persistentSizeHighThreshold :
- underfullAttr instanceof Number
- ? ((Number) underfullAttr).longValue()
- : Long.parseLong(underfullAttr.toString());
+ final SizeMonitorSettings sizeMonitorSettings = (SizeMonitorSettings) parent;
+ _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize();
+ _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize();
if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l)
{
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
index c3969090be..5b7573c17f 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
@@ -21,13 +21,13 @@ package org.apache.qpid.server.store.berkeleydb;
import java.io.File;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import com.sleepycat.je.DatabaseException;
import org.apache.log4j.Logger;
import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.store.SizeMonitorSettings;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.util.FileUtils;
@@ -61,26 +61,22 @@ public class BDBMessageStore extends AbstractBDBMessageStore
}
@Override
- public void openMessageStore(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ public void openMessageStore(final ConfiguredObject<?> parent)
{
if (_messageStoreOpen.compareAndSet(false, true))
{
_parent = parent;
- Object overfullAttr = messageStoreSettings.get(OVERFULL_SIZE);
- Object underfullAttr = messageStoreSettings.get(UNDERFULL_SIZE);
+ final SizeMonitorSettings sizeMonitorSettings = (SizeMonitorSettings) parent;
+ _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize();
+ _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize();
- _persistentSizeHighThreshold = overfullAttr == null ? -1l :
- overfullAttr instanceof Number ? ((Number) overfullAttr).longValue() : Long.parseLong(overfullAttr.toString());
- _persistentSizeLowThreshold = underfullAttr == null ? _persistentSizeHighThreshold :
- underfullAttr instanceof Number ? ((Number) underfullAttr).longValue() : Long.parseLong(underfullAttr.toString());
-
- if(_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l)
+ if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l)
{
_persistentSizeLowThreshold = _persistentSizeHighThreshold;
}
- _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent, messageStoreSettings);
+ _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent);
_storeLocation = _environmentFacade.getStoreLocation();
}
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java
index 3a4ace2238..39f8827754 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java
@@ -26,7 +26,6 @@ import org.apache.qpid.server.model.ConfiguredObject;
public interface EnvironmentFacadeFactory
{
- EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent,
- Map<String, Object> storeSettings);
+ EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/MessageStoreProvidingVirtualHostNode.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/HASettings.java
index 4cb85dafd4..31e9987182 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/MessageStoreProvidingVirtualHostNode.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/HASettings.java
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,17 +15,23 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
-package org.apache.qpid.server.virtualhostnode;
-import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.store.MessageStore;
+package org.apache.qpid.server.store.berkeleydb;
-@ManagedObject( category = false )
-public interface MessageStoreProvidingVirtualHostNode<X extends MessageStoreProvidingVirtualHostNode<X>>
- extends VirtualHostNode<X>
+import org.apache.qpid.server.store.FileBasedSettings;
+
+public interface HASettings extends FileBasedSettings
{
- MessageStore getProvidedMessageStore();
+ String getGroupName();
+
+ String getAddress();
+
+ String getHelperAddress();
+
+ boolean isDesignatedPrimary();
+
+ int getPriority();
+
+ int getQuorumOverride();
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
index 9c760d12e3..ab0d1ab9ef 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
@@ -28,17 +28,16 @@ import com.sleepycat.je.config.ConfigParam;
import com.sleepycat.je.config.EnvironmentParams;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.FileBasedSettings;
public class StandardEnvironmentFacadeFactory implements EnvironmentFacadeFactory
{
-
@SuppressWarnings("unchecked")
@Override
- public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent,
- final Map<String, Object> messageStoreSettings)
+ public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent)
{
- final String storeLocation = (String) messageStoreSettings.get(MessageStore.STORE_PATH);
+ final FileBasedSettings settings = (FileBasedSettings)parent;
+ final String storeLocation = settings.getStorePath();
StandardEnvironmentConfiguration sec = new StandardEnvironmentConfiguration()
{
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
index 6bab0db62b..d7b01bc829 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
@@ -30,25 +30,27 @@ import com.sleepycat.je.config.EnvironmentParams;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.store.berkeleydb.EnvironmentFacade;
import org.apache.qpid.server.store.berkeleydb.EnvironmentFacadeFactory;
-import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
+import org.apache.qpid.server.store.berkeleydb.HASettings;
public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFactory
{
@Override
- public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent)
{
+ final HASettings settings = (HASettings) parent;
+
ReplicatedEnvironmentConfiguration configuration = new ReplicatedEnvironmentConfiguration()
{
@Override
public boolean isDesignatedPrimary()
{
- return (Boolean)messageStoreSettings.get(BDBHAVirtualHostNode.DESIGNATED_PRIMARY);
+ return settings.isDesignatedPrimary();
}
@Override
public String getStorePath()
{
- return (String) messageStoreSettings.get(BDBHAVirtualHostNode.STORE_PATH);
+ return settings.getStorePath();
}
@Override
@@ -66,37 +68,37 @@ public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFact
@Override
public int getQuorumOverride()
{
- return (Integer)messageStoreSettings.get(BDBHAVirtualHostNode.QUORUM_OVERRIDE);
+ return settings.getQuorumOverride();
}
@Override
public int getPriority()
{
- return (Integer)messageStoreSettings.get(BDBHAVirtualHostNode.PRIORITY);
+ return settings.getPriority();
}
@Override
public String getName()
{
- return (String)messageStoreSettings.get(BDBHAVirtualHostNode.NAME);
+ return parent.getName();
}
@Override
public String getHostPort()
{
- return (String)messageStoreSettings.get(BDBHAVirtualHostNode.ADDRESS);
+ return settings.getAddress();
}
@Override
public String getHelperHostPort()
{
- return (String)messageStoreSettings.get(BDBHAVirtualHostNode.HELPER_ADDRESS);
+ return settings.getHelperAddress();
}
@Override
public String getGroupName()
{
- return (String)messageStoreSettings.get(BDBHAVirtualHostNode.GROUP_NAME);
+ return settings.getGroupName();
}
};
return new ReplicatedEnvironmentFacade(configuration);
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java
index ab81755f53..74242df7c6 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java
@@ -66,9 +66,6 @@ public class BDBHAReplicaVirtualHost extends AbstractConfiguredObject<BDBHARepli
private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
@ManagedAttributeField
- private Map<String, Object> _messageStoreSettings;
-
- @ManagedAttributeField
private boolean _queue_deadLetterQueueEnabled;
@ManagedAttributeField
@@ -220,12 +217,6 @@ public class BDBHAReplicaVirtualHost extends AbstractConfiguredObject<BDBHARepli
}
@Override
- public Map<String, Object> getMessageStoreSettings()
- {
- return null;
- }
-
- @Override
public long getQueueCount()
{
return 0;
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java
index 8cecbe172e..600aa66be6 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java
@@ -24,14 +24,16 @@ import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.DerivedAttribute;
import org.apache.qpid.server.model.ManagedAttribute;
import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.store.SizeMonitorSettings;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>
+public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, SizeMonitorSettings
{
String REMOTE_TRANSACTION_SYNCHRONIZATION_POLICY = "remoteTransactionSynchronizationPolicy";
String LOCAL_TRANSACTION_SYNCHRONIZATION_POLICY = "localTransactionSynchronizationPolicy";
String COALESCING_SYNC = "coalescingSync";
String DURABILITY = "durability";
+ String STORE_PATH = "storePath";
@ManagedAttribute( defaultValue = "SYNC")
String getLocalTransactionSynchronizationPolicy();
@@ -44,4 +46,10 @@ public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> extends Virtual
@DerivedAttribute
String getDurability();
+
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreUnderfullSize();
+
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreOverfullSize();
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java
index d28435b484..ba210b470c 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java
@@ -35,10 +35,10 @@ import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
import com.sleepycat.je.Durability.SyncPolicy;
-@ManagedObject( category = false, type = "BDB_HA" )
+@ManagedObject( category = false, type = BDBHAVirtualHostImpl.VIRTUAL_HOST_TYPE )
public class BDBHAVirtualHostImpl extends AbstractVirtualHost<BDBHAVirtualHostImpl> implements BDBHAVirtualHost<BDBHAVirtualHostImpl>
{
- public static final String TYPE = "BDB_HA";
+ public static final String VIRTUAL_HOST_TYPE = "BDB_HA";
private final BDBConfigurationStore _configurationStore;
@@ -48,6 +48,12 @@ public class BDBHAVirtualHostImpl extends AbstractVirtualHost<BDBHAVirtualHostIm
@ManagedAttributeField
private String _remoteTransactionSynchronizationPolicy;
+ @ManagedAttributeField
+ private Long _storeUnderfullSize;
+
+ @ManagedAttributeField
+ private Long _storeOverfullSize;
+
@ManagedObjectFactoryConstructor
public BDBHAVirtualHostImpl(final Map<String, Object> attributes, VirtualHostNode<?> virtualHostNode)
{
@@ -140,4 +146,16 @@ public class BDBHAVirtualHostImpl extends AbstractVirtualHost<BDBHAVirtualHostIm
return (ReplicatedEnvironmentFacade) _configurationStore.getEnvironmentFacade();
}
+ @Override
+ public Long getStoreUnderfullSize()
+ {
+ return _storeUnderfullSize;
+ }
+
+ @Override
+ public Long getStoreOverfullSize()
+ {
+ return _storeOverfullSize;
+ }
+
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java
index 7c2dcc507d..335b39def3 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,36 +15,27 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
+
package org.apache.qpid.server.virtualhost.berkeleydb;
-import java.util.Map;
-import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.berkeleydb.BDBConfigurationStore;
-import org.apache.qpid.server.store.berkeleydb.BDBMessageStore;
-import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.model.ManagedAttribute;
+import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-@ManagedObject(category = false, type = BDBVirtualHost.VIRTUAL_HOST_TYPE)
-public class BDBVirtualHost extends AbstractVirtualHost<BDBVirtualHost>
+public interface BDBVirtualHost<X extends BDBVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, org.apache.qpid.server.store.FileBasedSettings, org.apache.qpid.server.store.SizeMonitorSettings
{
- public static final String VIRTUAL_HOST_TYPE = "BDB";
- @ManagedObjectFactoryConstructor
- public BDBVirtualHost(final Map<String, Object> attributes,
- final VirtualHostNode<?> virtualHostNode)
- {
- super(attributes, virtualHostNode);
- }
+ String STORE_PATH = "storePath";
+
+ @ManagedAttribute(mandatory = true)
+ String getStorePath();
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreUnderfullSize();
- @Override
- protected MessageStore createMessageStore()
- {
- return new BDBMessageStore();
- }
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreOverfullSize();
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java
new file mode 100644
index 0000000000..ad1398ae76
--- /dev/null
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java
@@ -0,0 +1,78 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.virtualhost.berkeleydb;
+
+import java.util.Map;
+
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.berkeleydb.BDBMessageStore;
+import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
+
+@ManagedObject(category = false, type = BDBVirtualHostImpl.VIRTUAL_HOST_TYPE)
+public class BDBVirtualHostImpl extends AbstractVirtualHost<BDBVirtualHostImpl> implements BDBVirtualHost<BDBVirtualHostImpl>
+{
+ public static final String VIRTUAL_HOST_TYPE = "BDB";
+
+ @ManagedAttributeField
+ private String _storePath;
+
+ @ManagedAttributeField
+ private Long _storeUnderfullSize;
+
+ @ManagedAttributeField
+ private Long _storeOverfullSize;
+
+ @ManagedObjectFactoryConstructor
+ public BDBVirtualHostImpl(final Map<String, Object> attributes,
+ final VirtualHostNode<?> virtualHostNode)
+ {
+ super(attributes, virtualHostNode);
+ }
+
+
+ @Override
+ protected MessageStore createMessageStore()
+ {
+ return new BDBMessageStore();
+ }
+
+ @Override
+ public String getStorePath()
+ {
+ return _storePath;
+ }
+
+ @Override
+ public Long getStoreUnderfullSize()
+ {
+ return _storeUnderfullSize;
+ }
+
+ @Override
+ public Long getStoreOverfullSize()
+ {
+ return _storeOverfullSize;
+ }
+}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java
index fbf3041054..5e738e7701 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java
@@ -24,8 +24,9 @@ import java.util.Map;
import org.apache.qpid.server.model.DerivedAttribute;
import org.apache.qpid.server.model.ManagedAttribute;
+import org.apache.qpid.server.store.berkeleydb.HASettings;
-public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends BDBVirtualHostNode<X>
+public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends BDBVirtualHostNode<X>, HASettings
{
public static final String GROUP_NAME = "groupName";
public static final String ADDRESS = "address";
@@ -35,7 +36,6 @@ public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends
public static final String PRIORITY = "priority";
public static final String QUORUM_OVERRIDE = "quorumOverride";
public static final String ROLE = "role";
- public static final String REPLICATED_ENVIRONMENT_CONFIGURATION = "replicatedEnvironmentConfiguration";
public static final String LAST_KNOWN_REPLICATION_TRANSACTION_ID = "lastKnownReplicationTransactionId";
public static final String JOIN_TIME = "joinTime";
@@ -60,9 +60,6 @@ public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends
@ManagedAttribute(persist = false)
String getRole();
- @ManagedAttribute
- Map<String, String> getReplicatedEnvironmentConfiguration();
-
@DerivedAttribute
Long getLastKnownReplicationTransactionId();
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
index 74d273a660..cf1cea3efa 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
@@ -107,10 +107,6 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
@ManagedAttributeField(afterSet="postSetRole")
private String _role;
- @ManagedAttributeField
- private Map<String, String> _replicatedEnvironmentConfiguration;
-
-
@ManagedObjectFactoryConstructor
public BDBHAVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?> broker)
{
@@ -206,12 +202,6 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
return -1L;
}
- @Override
- public Map<String, String> getReplicatedEnvironmentConfiguration()
- {
- return _replicatedEnvironmentConfiguration;
- }
-
@SuppressWarnings("rawtypes")
@Override
public Collection<? extends RemoteReplicationNode> getRemoteReplicationNodes()
@@ -264,9 +254,7 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
LOGGER.debug("Activating virtualhost node " + this);
}
- Map<String, Object> attributes = buildAttributesForStore();
-
- getConfigurationStore().openConfigurationStore(this, attributes);
+ getConfigurationStore().openConfigurationStore(this);
getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.CREATED());
getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(getStorePath()));
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java
index 65a2fc1d30..763b59146b 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java
@@ -20,11 +20,12 @@
*/
package org.apache.qpid.server.virtualhostnode.berkeleydb;
-import java.util.Map;
-
import org.apache.qpid.server.model.ManagedAttribute;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
-public interface BDBVirtualHostNode<X extends BDBVirtualHostNode<X>> extends FileBasedVirtualHostNode<X>
+public interface BDBVirtualHostNode<X extends BDBVirtualHostNode<X>> extends org.apache.qpid.server.model.VirtualHostNode<X>, org.apache.qpid.server.store.FileBasedSettings
{
+ String STORE_PATH = "storePath";
+
+ @ManagedAttribute(mandatory = true)
+ String getStorePath();
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
index d37c626b57..27a2177b80 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
@@ -22,6 +22,7 @@ package org.apache.qpid.server.virtualhostnode.berkeleydb;
import java.util.Map;
+import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObject;
@@ -45,6 +46,12 @@ public class BDBVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<BDBV
}
@Override
+ protected void writeLocationEventLog()
+ {
+ getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(getStorePath()));
+ }
+
+ @Override
protected DurableConfigurationStore createConfigurationStore()
{
return new BDBConfigurationStore();
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java
index 8657a3a0b1..e4e7286e5a 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java
@@ -20,12 +20,26 @@
*/
package org.apache.qpid.server.store.berkeleydb;
+import org.apache.qpid.server.model.ConfiguredObjectFactory;
+import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.store.AbstractDurableConfigurationStoreTestCase;
import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBVirtualHostNode;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class BDBMessageStoreConfigurationTest extends AbstractDurableConfigurationStoreTestCase
{
@Override
+ protected VirtualHostNode createVirtualHostNode(String storeLocation, ConfiguredObjectFactory factory)
+ {
+ final BDBVirtualHostNode parent = mock(BDBVirtualHostNode.class);
+ when(parent.getStorePath()).thenReturn(storeLocation);
+ return parent;
+ }
+
+ @Override
protected DurableConfigurationStore createConfigStore() throws Exception
{
return new BDBConfigurationStore();
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java
index 65fc0e9168..847f857491 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java
@@ -21,17 +21,17 @@
package org.apache.qpid.server.store.berkeleydb;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.log4j.Logger;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.MessageStoreQuotaEventsTestBase;
+import org.apache.qpid.server.virtualhost.berkeleydb.BDBVirtualHost;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class BDBMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestBase
{
- private static final Logger _logger = Logger.getLogger(BDBMessageStoreQuotaEventsTest.class);
-
/*
* Notes on calculation of quota limits.
*
@@ -47,8 +47,8 @@ public class BDBMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestB
private static final int NUMBER_OF_MESSAGES_TO_OVERFILL_STORE = 150;
- private static final int OVERFULL_SIZE = 4000000; // ~4MB
- private static final int UNDERFULL_SIZE = 3500000; // ~3.5MB
+ private static final long OVERFULL_SIZE = 4000000; // ~4MB
+ private static final long UNDERFULL_SIZE = 3500000; // ~3.5MB
@Override
protected int getNumberOfMessagesToFillStore()
@@ -56,24 +56,17 @@ public class BDBMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestB
return NUMBER_OF_MESSAGES_TO_OVERFILL_STORE;
}
-
@Override
- protected Map<String, Object>createStoreSettings(String storeLocation)
+ protected VirtualHost createVirtualHost(String storeLocation)
{
- _logger.debug("Applying store specific config. overfull-size=" + OVERFULL_SIZE + ", underfull-size=" + UNDERFULL_SIZE);
-
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(MessageStore.STORE_PATH, storeLocation);
- messageStoreSettings.put(MessageStore.OVERFULL_SIZE, OVERFULL_SIZE);
- messageStoreSettings.put(MessageStore.UNDERFULL_SIZE, UNDERFULL_SIZE);
- return messageStoreSettings;
+ final BDBVirtualHost parent = mock(BDBVirtualHost.class);
+ when(parent.getContext()).thenReturn(Collections.singletonMap("je.log.fileMax", MAX_BDB_LOG_SIZE));
+ when(parent.getStorePath()).thenReturn(storeLocation);
+ when(parent.getStoreOverfullSize()).thenReturn(OVERFULL_SIZE);
+ when(parent.getStoreUnderfullSize()).thenReturn(UNDERFULL_SIZE);
+ return parent;
}
- @Override
- protected Map<String, String> createContextSettings()
- {
- return Collections.singletonMap("je.log.fileMax", MAX_BDB_LOG_SIZE);
- }
@Override
protected MessageStore createStore() throws Exception
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
index e40c6213cf..a96dc8b142 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
@@ -23,8 +23,6 @@ package org.apache.qpid.server.store.berkeleydb;
import java.io.File;
import java.nio.ByteBuffer;
import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicContentHeaderProperties;
@@ -32,6 +30,7 @@ import org.apache.qpid.framing.ContentHeaderBody;
import org.apache.qpid.framing.MethodRegistry;
import org.apache.qpid.framing.ProtocolVersion;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.protocol.v0_10.MessageMetaDataType_0_10;
import org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10;
import org.apache.qpid.server.protocol.v0_8.MessageMetaData;
@@ -41,6 +40,7 @@ import org.apache.qpid.server.store.MessageStoreTestCase;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.StoredMessage;
+import org.apache.qpid.server.virtualhost.berkeleydb.BDBVirtualHost;
import org.apache.qpid.transport.DeliveryProperties;
import org.apache.qpid.transport.Header;
import org.apache.qpid.transport.MessageAcceptMode;
@@ -50,7 +50,9 @@ import org.apache.qpid.transport.MessageDeliveryPriority;
import org.apache.qpid.transport.MessageProperties;
import org.apache.qpid.transport.MessageTransfer;
import org.apache.qpid.util.FileUtils;
-import org.apache.qpid.server.store.berkeleydb.BDBMessageStore;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
/**
* Subclass of MessageStoreTestCase which runs the standard tests from the superclass against
@@ -406,14 +408,14 @@ public class BDBMessageStoreTest extends MessageStoreTestCase
@Override
- protected Map<String, Object> getStoreSettings() throws Exception
+ protected VirtualHost createVirtualHost()
{
_storeLocation = TMP_FOLDER + File.separator + getTestName();
deleteStoreIfExists();
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(MessageStore.STORE_PATH, _storeLocation);
- return messageStoreSettings;
+ final BDBVirtualHost parent = mock(BDBVirtualHost.class);
+ when(parent.getStorePath()).thenReturn(_storeLocation);
+ return parent;
}
private void deleteStoreIfExists()
diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
index 1ac4c681ff..209a5145e2 100644
--- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
+++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
@@ -48,6 +48,7 @@ import org.apache.qpid.server.management.plugin.HttpManagement;
import org.apache.qpid.server.model.Plugin;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeImpl;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java
index 78adb46622..1bbeaaca9d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java
@@ -25,7 +25,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
-import java.util.Collections;
import java.util.List;
import java.util.Properties;
import java.util.Set;
@@ -150,7 +149,7 @@ public class Broker
store = new ManagementModeStoreHandler(store, options);
}
- store.openConfigurationStore(systemContext, Collections.<String, Object>emptyMap());
+ store.openConfigurationStore(systemContext);
_applicationRegistry = new ApplicationRegistry(store,systemContext);
try
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java
index 2ee4d3500b..db8af346a6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java
@@ -23,7 +23,6 @@ package org.apache.qpid.server.configuration.store;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.Map;
import java.util.UUID;
@@ -144,7 +143,7 @@ public class JsonConfigurationEntryStore extends MemoryConfigurationEntryStore
}
};
- initialStore.openConfigurationStore(_parentObject, Collections.<String,Object>emptyMap());
+ initialStore.openConfigurationStore(_parentObject);
initialStore.visitConfiguredObjectRecords(replayHandler);
update(true, records.toArray(new ConfiguredObjectRecord[records.size()]));
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
index d5bbd51fe1..04ca68efae 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
@@ -73,11 +73,11 @@ public class ManagementModeStoreHandler implements DurableConfigurationStore
}
@Override
- public void openConfigurationStore(final ConfiguredObject<?> parent, final Map<String, Object> storeSettings)
+ public void openConfigurationStore(final ConfiguredObject<?> parent)
throws StoreException
{
_parent = parent;
- _store.openConfigurationStore(parent,storeSettings);
+ _store.openConfigurationStore(parent);
_records = new HashMap<UUID, ConfiguredObjectRecord>();
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 d95d58a9cf..d13fb29c2b 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
@@ -141,7 +141,7 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore
}
};
- initialStore.openConfigurationStore(parentObject, Collections.<String,Object>emptyMap());
+ initialStore.openConfigurationStore(parentObject);
initialStore.visitConfiguredObjectRecords(replayHandler);
update(true, records.toArray(new ConfiguredObjectRecord[records.size()]));
@@ -344,7 +344,7 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore
}
@Override
- public void openConfigurationStore(final ConfiguredObject<?> parent, final Map<String, Object> storeSettings)
+ public void openConfigurationStore(final ConfiguredObject<?> parent)
throws StoreException
{
_parent = parent;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
index f568422d99..e084ea0f1d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
@@ -30,6 +30,7 @@ import java.lang.reflect.Proxy;
import java.security.AccessControlException;
import java.security.PrivilegedAction;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -308,7 +309,11 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
case 1:
return candidates.iterator().next();
default:
- throw new ServerScopedRuntimeException("The configured object class " + getClass().getSimpleName() + " implements no single common interface which extends ConfiguredObject");
+ ArrayList<Class<? extends ConfiguredObject>> list = new ArrayList<>(candidates);
+
+ throw new ServerScopedRuntimeException("The configured object class " + getClass().getSimpleName()
+ + " implements no single common interface which extends ConfiguredObject"
+ + " Identified candidates were : " + Arrays.toString(list.toArray()));
}
}
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 6608b57024..518141a21d 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
@@ -43,7 +43,6 @@ public interface VirtualHost<X extends VirtualHost<X, Q, E>, Q extends Queue<?>,
String SUPPORTED_EXCHANGE_TYPES = "supportedExchangeTypes";
String SUPPORTED_QUEUE_TYPES = "supportedQueueTypes";
String HOUSE_KEEPING_THREAD_COUNT = "houseKeepingThreadCount";
- String MESSAGE_STORE_SETTINGS = "messageStoreSettings";
String MODEL_VERSION = "modelVersion";
// TODO - this isn't really an attribute
@@ -104,9 +103,6 @@ public interface VirtualHost<X extends VirtualHost<X, Q, E>, Q extends Queue<?>,
@ManagedAttribute( defaultValue = "${virtualhost.housekeepingThreadCount}")
int getHousekeepingThreadCount();
- @ManagedAttribute
- Map<String, Object> getMessageStoreSettings();
-
@DerivedAttribute( persist = true )
String getModelVersion();
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 c6b350d65b..f2ab47bfbb 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
@@ -27,13 +27,14 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.store.jdbc.ConnectionProvider;
public interface JDBCConnectionProviderFactory extends Pluggable
{
String getType();
- ConnectionProvider getConnectionProvider(String connectionUrl, Map<String, Object> storeSettings)
+ ConnectionProvider getConnectionProvider(ConfiguredObject<?> parent, String connectionUrl)
throws SQLException;
static final class TYPES
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
index 48608dde4f..92184e9b81 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
@@ -22,7 +22,6 @@ package org.apache.qpid.server.store;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@@ -73,7 +72,7 @@ abstract class AbstractMemoryStore implements DurableConfigurationStore, Message
}
@Override
- public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
+ public void openConfigurationStore(ConfiguredObject<?> parent)
{
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
index e353b55e68..1efd415e6a 100755
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
@@ -28,16 +28,12 @@ import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
public interface DurableConfigurationStore
{
- String STORE_TYPE = "storeType";
- String STORE_PATH = "storePath";
-
/**
* Initializes and opens the configuration store.
+ * @param parent
*
- * @param parent
- * @param storeSettings store settings
*/
- void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) throws StoreException;
+ void openConfigurationStore(ConfiguredObject<?> parent) throws StoreException;
/**
* Requests that the store performs any upgrade work on the store's structure. If there is no
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/FileBasedSettings.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/FileBasedSettings.java
new file mode 100644
index 0000000000..a061f9c45d
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/FileBasedSettings.java
@@ -0,0 +1,24 @@
+/*
+ * 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.store;
+
+public interface FileBasedSettings extends Settings
+{
+ public String getStorePath();
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
index f787bd63ad..d733c351c4 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
@@ -55,9 +55,6 @@ import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
public class JsonFileConfigStore implements DurableConfigurationStore
{
-
- public static final String TYPE = "JSON";
-
private final Map<UUID, ConfiguredObjectRecord> _objectsById = new HashMap<UUID, ConfiguredObjectRecord>();
private final Map<String, List<UUID>> _idsByType = new HashMap<String, List<UUID>>();
private final ObjectMapper _objectMapper = new ObjectMapper();
@@ -112,12 +109,13 @@ public class JsonFileConfigStore implements DurableConfigurationStore
}
@Override
- public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
+ public void openConfigurationStore(ConfiguredObject<?> parent)
{
_parent = parent;
_name = parent.getName();
_classNameMapping = generateClassNameMap(_parent.getModel(), _rootClass);
- setup(storeSettings);
+ FileBasedSettings fileBasedSettings = (FileBasedSettings)_parent;
+ setup(fileBasedSettings);
load();
}
@@ -138,14 +136,13 @@ public class JsonFileConfigStore implements DurableConfigurationStore
}
- private void setup(final Map<String, Object> configurationStoreSettings)
+ private void setup(final FileBasedSettings configurationStoreSettings)
{
- Object storePathAttr = configurationStoreSettings.get(DurableConfigurationStore.STORE_PATH);
- if(!(storePathAttr instanceof String))
+ if(configurationStoreSettings.getStorePath() == null)
{
throw new StoreException("Cannot determine path for configuration storage");
}
- _directoryName = (String) storePathAttr;
+ _directoryName = configurationStoreSettings.getStorePath();
_configFileName = _name + ".json";
_backupFileName = _name + ".bak";
checkDirectoryIsWritable(_directoryName);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java
index 21a94113cf..3df1ffb6bc 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java
@@ -181,7 +181,7 @@ public class MemoryMessageStore implements MessageStore
@Override
- public void openMessageStore(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ public void openMessageStore(final ConfiguredObject<?> parent)
{
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
index e82f9dbbb0..642fcbdc54 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.store;
-import java.util.Map;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.store.handler.DistributedTransactionHandler;
@@ -33,22 +32,16 @@ import org.apache.qpid.server.store.handler.MessageInstanceHandler;
*/
public interface MessageStore
{
- String STORE_TYPE = "storeType";
- String STORE_PATH = "storePath";
- String UNDERFULL_SIZE = "storeUnderfullSize";
- String OVERFULL_SIZE = "storeOverfullSize";
-
String getStoreLocation();
void addEventListener(EventListener eventListener, Event... events);
/**
* Initializes and opens the message store.
+ * @param parent parent object
*
- * @param parent parent object
- * @param messageStoreSettings store settings
*/
- void openMessageStore(ConfiguredObject<?> parent, Map<String, Object> messageStoreSettings);
+ void openMessageStore(ConfiguredObject<?> parent);
/**
* Requests that the store performs any upgrade work on the store's structure. If there is no
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java
index a6657f48a8..8848dcdd94 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java
@@ -19,7 +19,6 @@
*/
package org.apache.qpid.server.store;
-import java.util.Map;
import java.util.UUID;
import org.apache.qpid.server.model.ConfiguredObject;
@@ -37,7 +36,7 @@ public abstract class NullMessageStore implements MessageStore, DurableConfigura
}
@Override
- public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
+ public void openConfigurationStore(ConfiguredObject<?> parent)
{
}
@@ -63,7 +62,7 @@ public abstract class NullMessageStore implements MessageStore, DurableConfigura
}
@Override
- public void openMessageStore(ConfiguredObject<?> parent, Map<String, Object> messageStoreSettings)
+ public void openMessageStore(ConfiguredObject<?> parent)
{
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/Settings.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/Settings.java
new file mode 100644
index 0000000000..6d0ffe0b82
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/Settings.java
@@ -0,0 +1,24 @@
+/*
+ * 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.store;
+
+public interface Settings
+{
+
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitorSettings.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitorSettings.java
new file mode 100644
index 0000000000..189e06a6d7
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitorSettings.java
@@ -0,0 +1,26 @@
+/*
+ * 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.store;
+
+public interface SizeMonitorSettings extends Settings
+{
+ public Long getStoreUnderfullSize();
+ public Long getStoreOverfullSize();
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitoringSettings.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitoringSettings.java
new file mode 100644
index 0000000000..dc05889e5e
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/SizeMonitoringSettings.java
@@ -0,0 +1,26 @@
+/*
+ * 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.store;
+
+public interface SizeMonitoringSettings extends Settings
+{
+ public Long getStoreUnderfullSize();
+ public Long getStoreOverfullSize();
+}
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 6e3f9bd643..3c63c5b869 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
@@ -86,8 +86,7 @@ import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.apache.qpid.server.util.MapValueConverter;
public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> extends AbstractConfiguredObject<X>
- implements VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, IConnectionRegistry.RegistryChangeListener, EventListener,
- VirtualHost<X,AMQQueue<?>, ExchangeImpl<?>>
+ implements VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, IConnectionRegistry.RegistryChangeListener, EventListener
{
public static final String DEFAULT_DLQ_NAME_SUFFIX = "_DLQ";
public static final String DLQ_ROUTING_KEY = "dlq";
@@ -130,9 +129,6 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
private MessageStoreLogSubject _messageStoreLogSubject;
@ManagedAttributeField
- private Map<String, Object> _messageStoreSettings;
-
- @ManagedAttributeField
private boolean _queue_deadLetterQueueEnabled;
@ManagedAttributeField
@@ -1082,12 +1078,6 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
}
@Override
- public Map<String, Object> getMessageStoreSettings()
- {
- return _messageStoreSettings;
- }
-
- @Override
public long getQueueCount()
{
return getQueues().size();
@@ -1328,12 +1318,7 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
_houseKeepingTasks = new ScheduledThreadPoolExecutor(getHousekeepingThreadCount());
MessageStore messageStore = getMessageStore();
- Map<String, Object> messageStoreSettings = getMessageStoreSettings();
- if (messageStoreSettings == null)
- {
- messageStoreSettings = Collections.emptyMap();
- }
- messageStore.openMessageStore(this, messageStoreSettings);
+ messageStore.openMessageStore(this);
if (!(_virtualHostNode.getConfigurationStore() instanceof MessageStoreProvider))
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java
index 347ef820d3..8f6fbea80f 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,55 +15,20 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
-package org.apache.qpid.server.virtualhost;
-import java.util.Map;
+package org.apache.qpid.server.virtualhost;
-import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.MessageStoreProvider;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.model.ManagedAttribute;
+import org.apache.qpid.server.queue.AMQQueue;
-@ManagedObject(category = false, type = ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE)
-public class ProvidedStoreVirtualHost extends AbstractVirtualHost<ProvidedStoreVirtualHost>
+public interface ProvidedStoreVirtualHost<X extends ProvidedStoreVirtualHost<X>> extends VirtualHostImpl<X,AMQQueue<?>,ExchangeImpl<?>>, org.apache.qpid.server.store.SizeMonitorSettings
{
- public static final String VIRTUAL_HOST_TYPE = "ProvidedStore";
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreUnderfullSize();
- @ManagedObjectFactoryConstructor
- public ProvidedStoreVirtualHost(final Map<String, Object> attributes,
- final VirtualHostNode<?> virtualHostNode)
- {
- super(attributes, virtualHostNode);
- }
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreOverfullSize();
- @Override
- public void onValidate()
- {
- super.onValidate();
-
- VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
- DurableConfigurationStore configurationStore = virtualHostNode.getConfigurationStore();
- if (!(configurationStore instanceof MessageStoreProvider))
- {
- throw new IllegalConfigurationException(VIRTUAL_HOST_TYPE +
- " virtual host can only be used where the node's store ("
- + configurationStore.getClass().getName()
- + ") is a message store provider. ");
- }
- }
-
- @Override
- protected MessageStore createMessageStore()
- {
- VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
- MessageStoreProvider messageStoreProvider = (MessageStoreProvider) virtualHostNode.getConfigurationStore();
- return messageStoreProvider.getMessageStore();
- }
}
-
-
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHostImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHostImpl.java
new file mode 100644
index 0000000000..8586f32828
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHostImpl.java
@@ -0,0 +1,91 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.virtualhost;
+
+import java.util.Map;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.MessageStoreProvider;
+
+@ManagedObject(category = false, type = ProvidedStoreVirtualHostImpl.VIRTUAL_HOST_TYPE)
+public class ProvidedStoreVirtualHostImpl extends AbstractVirtualHost<ProvidedStoreVirtualHostImpl> implements ProvidedStoreVirtualHost<ProvidedStoreVirtualHostImpl>
+{
+ public static final String VIRTUAL_HOST_TYPE = "ProvidedStore";
+ public static final String STORE_PATH = "storePath";
+
+ @ManagedAttributeField
+ private Long _storeUnderfullSize;
+
+ @ManagedAttributeField
+ private Long _storeOverfullSize;
+
+ @ManagedObjectFactoryConstructor
+ public ProvidedStoreVirtualHostImpl(final Map<String, Object> attributes,
+ final VirtualHostNode<?> virtualHostNode)
+ {
+ super(attributes, virtualHostNode);
+ }
+
+ @Override
+ public void onValidate()
+ {
+ super.onValidate();
+
+ VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
+ DurableConfigurationStore configurationStore = virtualHostNode.getConfigurationStore();
+ if (!(configurationStore instanceof MessageStoreProvider))
+ {
+ throw new IllegalConfigurationException(VIRTUAL_HOST_TYPE +
+ " virtual host can only be used where the node's store ("
+ + configurationStore.getClass().getName()
+ + ") is a message store provider. ");
+ }
+ }
+
+ @Override
+ protected MessageStore createMessageStore()
+ {
+ VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
+ MessageStoreProvider messageStoreProvider = (MessageStoreProvider) virtualHostNode.getConfigurationStore();
+ return messageStoreProvider.getMessageStore();
+ }
+
+ @Override
+ public Long getStoreUnderfullSize()
+ {
+ return _storeUnderfullSize;
+ }
+
+ @Override
+ public Long getStoreOverfullSize()
+ {
+ return _storeOverfullSize;
+ }
+
+}
+
+
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
index 6705185637..2a286379f4 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
@@ -73,19 +73,12 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard
LOGGER.debug("Activating virtualhost node " + this);
}
- Map<String, Object> attributes = buildAttributesForStore();
-
- getConfigurationStore().openConfigurationStore(this, attributes);
+ getConfigurationStore().openConfigurationStore(this);
getConfigurationStore().upgradeStoreStructure();
getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.CREATED());
- if (this instanceof FileBasedVirtualHostNode)
- {
- @SuppressWarnings("rawtypes")
- FileBasedVirtualHostNode fileBasedVirtualHostNode = (FileBasedVirtualHostNode) this;
- getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(fileBasedVirtualHostNode.getStorePath()));
- }
+ writeLocationEventLog();
getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.RECOVERY_START());
@@ -151,6 +144,8 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard
}
}
+ protected abstract void writeLocationEventLog();
+
@Override
public String toString()
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
index d0a065438e..44bc923f0e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
@@ -20,19 +20,7 @@
*/
package org.apache.qpid.server.virtualhostnode;
-import java.security.AccessControlException;
-import java.security.PrivilegedAction;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.security.auth.Subject;
-
import org.apache.log4j.Logger;
-
import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
@@ -40,17 +28,20 @@ import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.StateTransition;
import org.apache.qpid.server.model.SystemContext;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.MessageStoreProvider;
+
+import java.security.AccessControlException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
public abstract class AbstractVirtualHostNode<X extends AbstractVirtualHostNode<X>> extends AbstractConfiguredObject<X> implements VirtualHostNode<X>
{
@@ -163,26 +154,6 @@ public abstract class AbstractVirtualHostNode<X extends AbstractVirtualHostNode<
return _configurationStoreLogSubject;
}
- protected Map<String, Object> buildAttributesForStore()
- {
- final Map<String, Object> attributes = new HashMap<String, Object>();
- Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), new PrivilegedAction<Object>()
- {
- @Override
- public Object run()
- {
- for (String attributeName : getAttributeNames())
- {
- Object value = getAttribute(attributeName);
- attributes.put(attributeName, value);
- }
- return null;
- }
- });
-
- return attributes;
- }
-
@StateTransition( currentState = { State.ACTIVE, State.STOPPED, State.ERRORED}, desiredState = State.DELETED )
protected void doDelete()
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/FileBasedVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNode.java
index 6274ee6c21..34a18c884f 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/FileBasedVirtualHostNode.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNode.java
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,18 +15,17 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
+
package org.apache.qpid.server.virtualhostnode;
import org.apache.qpid.server.model.ManagedAttribute;
-import org.apache.qpid.server.model.VirtualHostNode;
-public interface FileBasedVirtualHostNode<X extends FileBasedVirtualHostNode<X>> extends VirtualHostNode<X>
+public interface JsonVirtualHostNode<X extends JsonVirtualHostNode<X>> extends org.apache.qpid.server.model.VirtualHostNode<X>, org.apache.qpid.server.store.FileBasedSettings
{
- public static final String STORE_PATH = "storePath";
- @ManagedAttribute(mandatory = true)
- public String getStorePath();
+ String STORE_PATH = "storePath";
+ @ManagedAttribute(mandatory = true)
+ String getStorePath();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java
index 6d26decd72..004ad652f4 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java
@@ -22,6 +22,7 @@ package org.apache.qpid.server.virtualhostnode;
import java.util.Map;
+import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObject;
@@ -30,7 +31,7 @@ import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.JsonFileConfigStore;
@ManagedObject(type=JsonVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category=false)
-public class JsonVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JsonVirtualHostNodeImpl> implements FileBasedVirtualHostNode<JsonVirtualHostNodeImpl>
+public class JsonVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JsonVirtualHostNodeImpl> implements JsonVirtualHostNode<JsonVirtualHostNodeImpl>
{
public static final String VIRTUAL_HOST_NODE_TYPE = "JSON";
@@ -44,6 +45,12 @@ public class JsonVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<Jso
}
@Override
+ protected void writeLocationEventLog()
+ {
+ getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(getStorePath()));
+ }
+
+ @Override
protected DurableConfigurationStore createConfigurationStore()
{
return new JsonFileConfigStore();
diff --git a/qpid/java/broker-core/src/main/resources/initial-config.json b/qpid/java/broker-core/src/main/resources/initial-config.json
index d220fefa50..a7c00da02e 100644
--- a/qpid/java/broker-core/src/main/resources/initial-config.json
+++ b/qpid/java/broker-core/src/main/resources/initial-config.json
@@ -57,7 +57,7 @@
"type" : "JSON",
"storePath" : "${qpid.work_dir}/default/config",
"context" : {
- "virtualhostBlueprint" : "{ \"type\" : \"DERBY\", \"messageStoreSettings\" : { \"storePath\" : \"${qpid.work_dir}/default/messages\" }}"
+ "virtualhostBlueprint" : "{ \"type\" : \"DERBY\", \"storePath\" : \"${qpid.work_dir}/default/messages\" }"
}
} ],
"plugins" : [ {
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 45290d506d..c648011116 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
@@ -111,7 +111,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
_options = new BrokerOptions();
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
}
@Override
@@ -153,7 +153,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeHttpPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord root = getRootEntry();
assertEquals("Unexpected root id", _rootId, root.getId());
Collection<UUID> childrenIds = getChildrenIds(root);
@@ -165,7 +165,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeRmiPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord root = getRootEntry();
assertEquals("Unexpected root id", _rootId, root.getId());
@@ -178,7 +178,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeJmxPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord root = getRootEntry();
assertEquals("Unexpected root id", _rootId, root.getId());
@@ -193,7 +193,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
_options.setManagementModeRmiPortOverride(2000);
_options.setManagementModeJmxPortOverride(3000);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord root = getRootEntry();
assertEquals("Unexpected root id", _rootId, root.getId());
@@ -221,7 +221,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeJmxPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
UUID optionsPort = getOptionsPortId();
@@ -233,7 +233,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeHttpPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
UUID optionsPort = getOptionsPortId();
@@ -248,7 +248,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
when(_portEntry.getAttributes()).thenReturn(attributes);
_options.setManagementModeHttpPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord portEntry = getEntry(_portEntryId);
@@ -262,7 +262,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
when(_portEntry.getAttributes()).thenReturn(attributes);
_options.setManagementModeRmiPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord portEntry = getEntry(_portEntryId);
@@ -276,7 +276,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
when(_portEntry.getAttributes()).thenReturn(attributes);
_options.setManagementModeRmiPortOverride(9090);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord portEntry = getEntry(_portEntryId);
@@ -327,7 +327,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
}
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord hostEntry = getEntry(virtualHostId);
Map<String, Object> hostAttributes = new HashMap<String, Object>(hostEntry.getAttributes());
@@ -353,7 +353,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
_options.setManagementModeRmiPortOverride(2000);
_options.setManagementModeJmxPortOverride(3000);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(Port.NAME, "TEST");
@@ -370,7 +370,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
_options.setManagementModeRmiPortOverride(2000);
_options.setManagementModeJmxPortOverride(3000);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord root = getRootEntry();
Map<String, Object> attributes = new HashMap<String, Object>();
@@ -385,7 +385,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeHttpPortOverride(1000);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
UUID portId = getOptionsPortId();
Map<String, Object> attributes = new HashMap<String, Object>();
@@ -409,7 +409,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeHttpPortOverride(1000);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
ConfiguredObjectRecord record = new ConfiguredObjectRecord()
{
@@ -445,7 +445,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase
{
_options.setManagementModeHttpPortOverride(1000);
_handler = new ManagementModeStoreHandler(_store, _options);
- _handler.openConfigurationStore(_systemContext,Collections.<String,Object>emptyMap());
+ _handler.openConfigurationStore(_systemContext);
UUID portId = getOptionsPortId();
ConfiguredObjectRecord record = mock(ConfiguredObjectRecord.class);
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 96ee8195a2..6b6de5b66a 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
@@ -34,6 +34,8 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
+import org.apache.qpid.server.model.ConfiguredObjectFactory;
+import org.apache.qpid.server.model.VirtualHostNode;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatcher;
import org.mockito.invocation.InvocationOnMock;
@@ -83,7 +85,6 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
private UUID _queueId;
private UUID _exchangeId;
private DurableConfigurationStore _configStore;
- protected Map<String, Object> _configurationStoreSettings;
private ConfiguredObjectFactoryImpl _factory;
private ConfiguredObject<?> _parent;
@@ -94,13 +95,11 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
{
super.setUp();
- _configurationStoreSettings = new HashMap<String, Object>();
_queueId = UUIDGenerator.generateRandomUUID();
_exchangeId = UUIDGenerator.generateRandomUUID();
_factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance());
_storeName = getName();
_storePath = TMP_FOLDER + File.separator + _storeName;
- _configurationStoreSettings.put(MessageStore.STORE_PATH, _storePath);
FileUtils.delete(new File(_storePath), true);
setTestSystemProperty("QPID_WORK", TMP_FOLDER);
@@ -112,18 +111,16 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
String argValue = "some selector expression";
_bindingArgs.put(argKey, argValue);
-
- _parent = mock(ConfiguredObject.class);
- when(_parent.getName()).thenReturn("testName");
- when(_parent.getObjectFactory()).thenReturn(_factory);
- when(_parent.getModel()).thenReturn(_factory.getModel());
+ _parent = createVirtualHostNode(_storePath, _factory);
_configStore = createConfigStore();
- _configStore.openConfigurationStore(_parent, _configurationStoreSettings);
+ _configStore.openConfigurationStore(_parent);
_rootRecord = new ConfiguredObjectRecordImpl(UUID.randomUUID(), VirtualHost.class.getSimpleName(), Collections.<String, Object>emptyMap());
_configStore.create(_rootRecord);
}
+ protected abstract VirtualHostNode createVirtualHostNode(String storeLocation, ConfiguredObjectFactory factory);
+
public void tearDown() throws Exception
{
try
@@ -529,7 +526,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
{
closeConfigStore();
_configStore = createConfigStore();
- _configStore.openConfigurationStore(_parent, _configurationStoreSettings);
+ _configStore.openConfigurationStore(_parent);
}
protected abstract DurableConfigurationStore createConfigStore() throws Exception;
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
index 2c9583490a..7eb5e3b63c 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.store;
-import static org.mockito.Matchers.contains;
import static org.mockito.Mockito.mock;
import java.util.Collections;
@@ -273,7 +272,7 @@ public class BrokerStoreUpgraderAndRecovererTest extends QpidTestCase
}
@Override
- public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) throws StoreException
+ public void openConfigurationStore(ConfiguredObject<?> parent) throws StoreException
{
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreConfigurationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreConfigurationTest.java
index 2400a68c93..62cbe409a9 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreConfigurationTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreConfigurationTest.java
@@ -20,9 +20,28 @@
*/
package org.apache.qpid.server.store;
+import org.apache.qpid.server.model.ConfiguredObjectFactory;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
public class JsonFileConfigStoreConfigurationTest extends AbstractDurableConfigurationStoreTestCase
{
@Override
+ protected VirtualHostNode createVirtualHostNode(String storeLocation, ConfiguredObjectFactory factory)
+ {
+ final JsonVirtualHostNode parent = mock(JsonVirtualHostNode.class);
+ when(parent.getStorePath()).thenReturn(storeLocation);
+ when(parent.getName()).thenReturn("testName");
+ when(parent.getObjectFactory()).thenReturn(factory);
+ when(parent.getModel()).thenReturn(factory.getModel());
+
+ return parent;
+ }
+
+ @Override
protected DurableConfigurationStore createConfigStore() throws Exception
{
return new JsonFileConfigStore();
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
index 6012b1802d..e9f3ba3d21 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
@@ -35,12 +35,12 @@ import java.util.Map;
import java.util.UUID;
import org.apache.qpid.server.model.BrokerModel;
-import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ConfiguredObjectFactory;
import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.test.utils.TestFileUtils;
import org.apache.qpid.util.FileUtils;
@@ -50,8 +50,7 @@ import org.mockito.InOrder;
public class JsonFileConfigStoreTest extends QpidTestCase
{
private JsonFileConfigStore _store;
- private HashMap<String, Object> _configurationStoreSettings;
- private ConfiguredObject<?> _parent;
+ private JsonVirtualHostNode<?> _parent;
private File _storeLocation;
private ConfiguredObjectRecordHandler _handler;
@@ -68,14 +67,13 @@ public class JsonFileConfigStoreTest extends QpidTestCase
ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance());
- _parent = mock(ConfiguredObject.class);
+ _parent = mock(JsonVirtualHostNode.class);
when(_parent.getName()).thenReturn(getName());
when(_parent.getObjectFactory()).thenReturn(factory);
when(_parent.getModel()).thenReturn(factory.getModel());
_storeLocation = TestFileUtils.createTestDirectory("json", true);
- _configurationStoreSettings = new HashMap<String, Object>();
- _configurationStoreSettings.put(JsonFileConfigStore.STORE_TYPE, JsonFileConfigStore.TYPE);
- _configurationStoreSettings.put(JsonFileConfigStore.STORE_PATH, _storeLocation.getAbsolutePath());
+ when(_parent.getStorePath()).thenReturn(_storeLocation.getAbsolutePath());
+
_store = new JsonFileConfigStore();
_handler = mock(ConfiguredObjectRecordHandler.class);
@@ -97,10 +95,11 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testNoStorePath() throws Exception
{
- _configurationStoreSettings.put(JsonFileConfigStore.STORE_PATH, null);
+ when(_parent.getStorePath()).thenReturn(null);
+
try
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
fail("Store should not successfully configure if there is no path set");
}
catch (ServerScopedRuntimeException e)
@@ -112,10 +111,10 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testInvalidStorePath() throws Exception
{
- _configurationStoreSettings.put(JsonFileConfigStore.STORE_PATH, System.getProperty("file.separator"));
+ when(_parent.getStorePath()).thenReturn(System.getProperty("file.separator"));
try
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
fail("Store should not successfully configure if there is an invalid path set");
}
catch (ServerScopedRuntimeException e)
@@ -126,7 +125,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testVisitEmptyStore()
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
_store.visitConfiguredObjectRecords(_handler);
InOrder inorder = inOrder(_handler);
@@ -139,17 +138,17 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testInsertAndUpdateTopLevelObject() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
_store.closeConfigurationStore();
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
Map<String, Object> newAttributes = new HashMap<String, Object>(_rootRecord.getAttributes());
newAttributes.put("attributeName", "attributeValue");
_store.update(false, new ConfiguredObjectRecordImpl(_rootRecord.getId(), _rootRecord.getType(), newAttributes));
_store.closeConfigurationStore();
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
_store.visitConfiguredObjectRecords(_handler);
@@ -160,7 +159,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testCreateObject() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
final UUID queueId = new UUID(0, 1);
@@ -170,7 +169,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
_store.create(new ConfiguredObjectRecordImpl(queueId, queueType, queueAttr, getRootAsParentMap()));
_store.closeConfigurationStore();
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
_store.visitConfiguredObjectRecords(_handler);
verify(_handler).handle(matchesRecord(queueId, queueType, queueAttr));
@@ -180,7 +179,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testCreateAndUpdateObject() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
final UUID queueId = new UUID(0, 1);
@@ -195,7 +194,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
_store.closeConfigurationStore();
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
_store.visitConfiguredObjectRecords(_handler);
verify(_handler, times(1)).handle(matchesRecord(queueId, queueType, queueAttr));
_store.closeConfigurationStore();
@@ -204,7 +203,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testCreateAndRemoveObject() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
final UUID queueId = new UUID(0, 1);
@@ -219,7 +218,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
_store.closeConfigurationStore();
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
_store.visitConfiguredObjectRecords(_handler);
verify(_handler, times(1)).handle(matchesRecord(ANY_UUID, VIRTUAL_HOST_TYPE, ANY_MAP));
_store.closeConfigurationStore();
@@ -227,7 +226,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testCreateUnknownObjectType() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
try
@@ -243,7 +242,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testTwoObjectsWithSameId() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
final UUID id = UUID.randomUUID();
@@ -262,13 +261,13 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testChangeTypeOfObject() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
final UUID id = UUID.randomUUID();
_store.create(new ConfiguredObjectRecordImpl(id, "Queue", Collections.<String, Object>emptyMap(), getRootAsParentMap()));
_store.closeConfigurationStore();
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
try
{
@@ -283,13 +282,13 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testLockFileGuaranteesExclusiveAccess() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
JsonFileConfigStore secondStore = new JsonFileConfigStore();
try
{
- secondStore.openConfigurationStore(_parent, _configurationStoreSettings);
+ secondStore.openConfigurationStore(_parent);
fail("Should not be able to open a second store with the same path");
}
catch(ServerScopedRuntimeException e)
@@ -297,7 +296,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
// pass
}
_store.closeConfigurationStore();
- secondStore.openConfigurationStore(_parent, _configurationStoreSettings);
+ secondStore.openConfigurationStore(_parent);
}
public void testStoreFileLifecycle()
@@ -308,7 +307,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
assertFalse("JSON store should not exist", expectedJsonFile.exists());
assertFalse("JSON backup should not exist", expectedJsonFileBak.exists());
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
assertTrue("JSON store should exist after open", expectedJsonFile.exists());
assertFalse("JSON backup should not exist after open", expectedJsonFileBak.exists());
@@ -322,7 +321,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
public void testCreatedNestedObjects() throws Exception
{
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
createRootRecord();
final UUID queueId = new UUID(0, 1);
@@ -355,7 +354,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
new ConfiguredObjectRecordImpl(binding2Id, "Binding", EMPTY_ATTR, binding2Parents);
_store.update(true, bindingRecord, binding2Record);
_store.closeConfigurationStore();
- _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ _store.openConfigurationStore(_parent);
_store.visitConfiguredObjectRecords(_handler);
verify(_handler).handle(matchesRecord(queueId, "Queue", EMPTY_ATTR));
verify(_handler).handle(matchesRecord(queue2Id, "Queue", EMPTY_ATTR));
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MemoryMessageStoreTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MemoryMessageStoreTest.java
index 8fd3cbb1fe..f05da247ea 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MemoryMessageStoreTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MemoryMessageStoreTest.java
@@ -20,16 +20,19 @@
*/
package org.apache.qpid.server.store;
-import java.util.Collections;
-import java.util.Map;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
+
+import static org.mockito.Mockito.mock;
public class MemoryMessageStoreTest extends MessageStoreTestCase
{
@Override
- protected Map<String, Object> getStoreSettings() throws Exception
+ protected VirtualHost createVirtualHost()
{
- return Collections.<String, Object>emptyMap();
+ final TestMemoryVirtualHost parent = mock(TestMemoryVirtualHost.class);
+ return parent;
}
@Override
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java
index baab5dd6d3..51b33276ec 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java
@@ -21,7 +21,6 @@
package org.apache.qpid.server.store;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
import java.io.File;
import java.nio.ByteBuffer;
@@ -33,6 +32,7 @@ import java.util.UUID;
import org.apache.log4j.Logger;
import org.apache.qpid.server.message.EnqueueableMessage;
import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.util.FileUtils;
@@ -49,8 +49,6 @@ public abstract class MessageStoreQuotaEventsTestBase extends QpidTestCase imple
private UUID _transactionResource;
protected abstract MessageStore createStore() throws Exception;
- protected abstract Map<String, Object> createStoreSettings(String storeLocation);
- protected abstract Map<String, String> createContextSettings();
protected abstract int getNumberOfMessagesToFillStore();
@Override
@@ -61,22 +59,18 @@ public abstract class MessageStoreQuotaEventsTestBase extends QpidTestCase imple
_storeLocation = new File(new File(TMP_FOLDER), getTestName());
FileUtils.delete(_storeLocation, true);
-
- Map<String, Object> storeSettings = createStoreSettings(_storeLocation.getAbsolutePath());
-
_store = createStore();
- ConfiguredObject<?> parent = mock(ConfiguredObject.class);
- when(parent.getName()).thenReturn("test");
- when(parent.getContext()).thenReturn(createContextSettings());
+ ConfiguredObject<?> parent = createVirtualHost(_storeLocation.getAbsolutePath());
- _store.openMessageStore(parent, storeSettings);
+ _store.openMessageStore(parent);
_transactionResource = UUID.randomUUID();
_events = new ArrayList<Event>();
_store.addEventListener(this, Event.PERSISTENT_MESSAGE_SIZE_OVERFULL, Event.PERSISTENT_MESSAGE_SIZE_UNDERFULL);
}
+ protected abstract VirtualHost createVirtualHost(String storeLocation);
@Override
public void tearDown() throws Exception
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java
index c0968794f5..d4b990da07 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -37,6 +38,7 @@ import java.util.concurrent.atomic.AtomicReference;
import org.apache.qpid.server.message.EnqueueableMessage;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.UUIDGenerator;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.Transaction.Record;
import org.apache.qpid.server.store.handler.DistributedTransactionHandler;
import org.apache.qpid.server.store.handler.MessageHandler;
@@ -49,25 +51,20 @@ import org.mockito.ArgumentMatcher;
public abstract class MessageStoreTestCase extends QpidTestCase
{
private MessageStore _store;
- private Map<String, Object> _storeSettings;
private ConfiguredObject<?> _parent;
public void setUp() throws Exception
{
super.setUp();
- _parent = mock(ConfiguredObject.class);
- when(_parent.getName()).thenReturn("test");
-
- _storeSettings = getStoreSettings();
+ _parent = createVirtualHost();
_store = createMessageStore();
- _store.openMessageStore(_parent, _storeSettings);
-
+ _store.openMessageStore(_parent);
}
- protected abstract Map<String, Object> getStoreSettings() throws Exception;
+ protected abstract VirtualHost createVirtualHost();
protected abstract MessageStore createMessageStore();
@@ -81,7 +78,7 @@ public abstract class MessageStoreTestCase extends QpidTestCase
_store.closeMessageStore();
_store = createMessageStore();
- _store.openMessageStore(_parent, _storeSettings);
+ _store.openMessageStore(_parent);
}
public void testAddAndRemoveRecordXid() throws Exception
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 321a050747..e151391142 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
@@ -52,8 +52,6 @@ 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.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.TestMemoryMessageStore;
import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
import org.apache.qpid.server.virtualhost.QueueExistsException;
import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
@@ -134,11 +132,6 @@ public class BrokerTestHelper
{
Map<String,Object> attributes = new HashMap<String, Object>();
attributes.put(org.apache.qpid.server.model.VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
-
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(MessageStore.STORE_TYPE, TestMemoryMessageStore.TYPE);
-
- attributes.put(org.apache.qpid.server.model.VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings);
attributes.put(org.apache.qpid.server.model.VirtualHost.NAME, name);
return createVirtualHost(attributes);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java
index 18d394d4f7..277ef8b400 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java
@@ -52,4 +52,8 @@ public class TestVirtualHostNode extends AbstractStandardVirtualHostNode<TestVir
return _store;
}
+ @Override
+ protected void writeLocationEventLog()
+ {
+ }
}
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java
index 0a121ad476..e75a4c8065 100644
--- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/AbstractDerbyMessageStore.java
@@ -28,15 +28,10 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.store.AbstractJDBCMessageStore;
-import org.apache.qpid.server.store.Event;
-import org.apache.qpid.server.store.JdbcUtils;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.StoreException;
+import org.apache.qpid.server.store.*;
public abstract class AbstractDerbyMessageStore extends AbstractJDBCMessageStore
{
@@ -50,7 +45,7 @@ public abstract class AbstractDerbyMessageStore extends AbstractJDBCMessageStore
private ConfiguredObject<?> _parent;
@Override
- public final void openMessageStore(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ public final void openMessageStore(final ConfiguredObject<?> parent)
{
if (_messageStoreOpen.compareAndSet(false, true))
{
@@ -58,33 +53,24 @@ public abstract class AbstractDerbyMessageStore extends AbstractJDBCMessageStore
DerbyUtils.loadDerbyDriver();
- doOpen(parent, messageStoreSettings);
+ doOpen(parent);
- Object overfullAttr = messageStoreSettings.get(MessageStore.OVERFULL_SIZE);
- Object underfullAttr = messageStoreSettings.get(MessageStore.UNDERFULL_SIZE);
-
- _persistentSizeHighThreshold = overfullAttr == null ? -1l :
- overfullAttr instanceof Number
- ? ((Number) overfullAttr).longValue()
- : Long.parseLong(overfullAttr.toString());
- _persistentSizeLowThreshold = underfullAttr == null ? _persistentSizeHighThreshold :
- underfullAttr instanceof Number
- ? ((Number) underfullAttr).longValue()
- : Long.parseLong(underfullAttr.toString());
+ final SizeMonitorSettings sizeMonitorSettings = (SizeMonitorSettings) parent;
+ _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize();
+ _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize();
if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l)
{
_persistentSizeLowThreshold = _persistentSizeHighThreshold;
}
-
createOrOpenMessageStoreDatabase();
setInitialSize();
setMaximumMessageId();
}
}
- protected abstract void doOpen(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings);
+ protected abstract void doOpen(final ConfiguredObject<?> parent);
@Override
public final void upgradeStoreStructure() throws StoreException
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
index 6596b5b621..fdf08a9940 100644
--- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
@@ -25,21 +25,16 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.log4j.Logger;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.store.AbstractJDBCConfigurationStore;
-import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.MessageStoreProvider;
-import org.apache.qpid.server.store.StoreException;
+import org.apache.qpid.server.store.*;
/**
* Implementation of a DurableConfigurationStore backed by Apache Derby
- * that also provides a MessageStore.
+ * that also provides a MessageStore.A
*/
public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
implements MessageStoreProvider, DurableConfigurationStore
@@ -55,7 +50,7 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
private ConfiguredObject<?> _parent;
@Override
- public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
+ public void openConfigurationStore(ConfiguredObject<?> parent)
throws StoreException
{
if (_configurationStoreOpen.compareAndSet(false, true))
@@ -63,10 +58,9 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
_parent = parent;
DerbyUtils.loadDerbyDriver();
- String databasePath = (String) storeSettings.get(MessageStore.STORE_PATH);
-
- _storeLocation = databasePath;
- _connectionURL = DerbyUtils.createConnectionUrl(parent.getName(), databasePath);
+ final FileBasedSettings settings = (FileBasedSettings)parent;
+ _storeLocation = settings.getStorePath();
+ _connectionURL = DerbyUtils.createConnectionUrl(parent.getName(), _storeLocation);
createOrOpenConfigurationStoreDatabase();
}
@@ -188,7 +182,7 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
private class ProvidedMessageStore extends AbstractDerbyMessageStore
{
@Override
- protected void doOpen(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ protected void doOpen(final ConfiguredObject<?> parent)
{
// Nothing to do, store provided by DerbyConfigurationStore
}
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
index 9e2a2f63d4..d9948fe21e 100644
--- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
@@ -24,12 +24,11 @@ package org.apache.qpid.server.store.derby;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
-import java.util.Map;
import org.apache.log4j.Logger;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.FileBasedSettings;
import org.apache.qpid.server.store.StoreException;
/**
@@ -43,13 +42,12 @@ public class DerbyMessageStore extends AbstractDerbyMessageStore
private String _storeLocation;
@Override
- protected void doOpen(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ protected void doOpen(final ConfiguredObject<?> parent)
{
- String databasePath = (String) messageStoreSettings.get(MessageStore.STORE_PATH);
- String name = parent.getName();
+ final FileBasedSettings settings = (FileBasedSettings)parent;
+ _storeLocation = settings.getStorePath();
- _storeLocation = databasePath;
- _connectionURL = DerbyUtils.createConnectionUrl(name, databasePath);
+ _connectionURL = DerbyUtils.createConnectionUrl(parent.getName(), _storeLocation);
}
@Override
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java
index fc67d2fa50..4355447971 100644
--- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,36 +15,25 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
-package org.apache.qpid.server.virtualhost.derby;
-import java.util.Map;
+package org.apache.qpid.server.virtualhost.derby;
-import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.derby.DerbyMessageStore;
-import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.model.ManagedAttribute;
+import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-@ManagedObject(category = false, type = DerbyVirtualHost.VIRTUAL_HOST_TYPE)
-public class DerbyVirtualHost extends AbstractVirtualHost<DerbyVirtualHost>
+public interface DerbyVirtualHost<X extends DerbyVirtualHost<X>> extends VirtualHostImpl<X,AMQQueue<?>,ExchangeImpl<?>>, org.apache.qpid.server.store.FileBasedSettings, org.apache.qpid.server.store.SizeMonitorSettings
{
- public static final String VIRTUAL_HOST_TYPE = "DERBY";
-
- @ManagedObjectFactoryConstructor
- public DerbyVirtualHost(final Map<String, Object> attributes,
- final VirtualHostNode<?> virtualHostNode)
- {
- super(attributes, virtualHostNode);
- }
+ String STORE_PATH = "storePath";
+ @ManagedAttribute(mandatory = true)
+ String getStorePath();
- @Override
- protected MessageStore createMessageStore()
- {
- return new DerbyMessageStore();
- }
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreUnderfullSize();
+ @ManagedAttribute(mandatory = true, defaultValue = "0")
+ Long getStoreOverfullSize();
}
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java
new file mode 100644
index 0000000000..5089090643
--- /dev/null
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java
@@ -0,0 +1,78 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.virtualhost.derby;
+
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.derby.DerbyMessageStore;
+import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
+
+import java.util.Map;
+
+@ManagedObject(category = false, type = DerbyVirtualHostImpl.VIRTUAL_HOST_TYPE)
+public class DerbyVirtualHostImpl extends AbstractVirtualHost<DerbyVirtualHostImpl> implements DerbyVirtualHost<DerbyVirtualHostImpl>
+{
+ public static final String VIRTUAL_HOST_TYPE = "DERBY";
+
+ @ManagedAttributeField
+ private String _storePath;
+
+ @ManagedAttributeField
+ private Long _storeUnderfullSize;
+
+ @ManagedAttributeField
+ private Long _storeOverfullSize;
+
+ @ManagedObjectFactoryConstructor
+ public DerbyVirtualHostImpl(final Map<String, Object> attributes,
+ final VirtualHostNode<?> virtualHostNode)
+ {
+ super(attributes, virtualHostNode);
+ }
+
+
+ @Override
+ protected MessageStore createMessageStore()
+ {
+ return new DerbyMessageStore();
+ }
+
+ @Override
+ public String getStorePath()
+ {
+ return _storePath;
+ }
+
+ @Override
+ public Long getStoreUnderfullSize()
+ {
+ return _storeUnderfullSize;
+ }
+
+ @Override
+ public Long getStoreOverfullSize()
+ {
+ return _storeOverfullSize;
+ }
+}
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java
index 340d046033..3b31f4e7e0 100644
--- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,51 +15,17 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
package org.apache.qpid.server.virtualhostnode.derby;
-import java.util.Map;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ManagedAttributeField;
-import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.derby.DerbyConfigurationStore;
-import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
+import org.apache.qpid.server.model.ManagedAttribute;
-@ManagedObject( category = false, type = DerbyVirtualHostNode.VIRTUAL_HOST_NODE_TYPE )
-public class DerbyVirtualHostNode extends AbstractStandardVirtualHostNode<DerbyVirtualHostNode> implements FileBasedVirtualHostNode<DerbyVirtualHostNode>
+public interface DerbyVirtualHostNode<X extends DerbyVirtualHostNode<X>> extends org.apache.qpid.server.model.VirtualHostNode<X>, org.apache.qpid.server.store.FileBasedSettings
{
- public static final String VIRTUAL_HOST_NODE_TYPE = "DERBY";
-
- @ManagedAttributeField
- private String _storePath;
-
- @ManagedObjectFactoryConstructor
- public DerbyVirtualHostNode(Map<String, Object> attributes, Broker<?> parent)
- {
- super(attributes, parent);
- }
-
- @Override
- protected DurableConfigurationStore createConfigurationStore()
- {
- return new DerbyConfigurationStore();
- }
-
- @Override
- public String getStorePath()
- {
- return _storePath;
- }
+ String STORE_PATH = "storePath";
- @Override
- public String toString()
- {
- return getClass().getSimpleName() + " [id=" + getId() + ", name=" + getName() + ", storePath=" + getStorePath() + "]";
- }
+ @ManagedAttribute(mandatory = true)
+ String getStorePath();
}
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java
new file mode 100644
index 0000000000..ae440014c7
--- /dev/null
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java
@@ -0,0 +1,72 @@
+/*
+ *
+ * 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.virtualhostnode.derby;
+
+import java.util.Map;
+
+import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.store.derby.DerbyConfigurationStore;
+import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
+
+@ManagedObject( category = false, type = DerbyVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE )
+public class DerbyVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<DerbyVirtualHostNodeImpl> implements DerbyVirtualHostNode<DerbyVirtualHostNodeImpl>
+{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "DERBY";
+
+ @ManagedAttributeField
+ private String _storePath;
+
+ @ManagedObjectFactoryConstructor
+ public DerbyVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?> parent)
+ {
+ super(attributes, parent);
+ }
+
+ @Override
+ protected void writeLocationEventLog()
+ {
+ getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(getStorePath()));
+ }
+
+ @Override
+ protected DurableConfigurationStore createConfigurationStore()
+ {
+ return new DerbyConfigurationStore();
+ }
+
+ @Override
+ public String getStorePath()
+ {
+ return _storePath;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getClass().getSimpleName() + " [id=" + getId() + ", name=" + getName() + ", storePath=" + getStorePath() + "]";
+ }
+}
diff --git a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreConfigurationTest.java b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreConfigurationTest.java
index 08c421b606..849bd066c7 100644
--- a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreConfigurationTest.java
+++ b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreConfigurationTest.java
@@ -20,12 +20,26 @@
*/
package org.apache.qpid.server.store.derby;
+import org.apache.qpid.server.model.ConfiguredObjectFactory;
+import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.store.AbstractDurableConfigurationStoreTestCase;
+import org.apache.qpid.server.virtualhostnode.derby.DerbyVirtualHostNode;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class DerbyMessageStoreConfigurationTest extends AbstractDurableConfigurationStoreTestCase
{
@Override
+ protected VirtualHostNode createVirtualHostNode(String storeLocation, ConfiguredObjectFactory factory)
+ {
+ final DerbyVirtualHostNode parent = mock(DerbyVirtualHostNode.class);
+ when(parent.getStorePath()).thenReturn(storeLocation);
+ return parent;
+ }
+
+ @Override
protected DerbyConfigurationStore createConfigStore() throws Exception
{
return new DerbyConfigurationStore();
diff --git a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java
index 348d81fadd..5c8eb94d91 100644
--- a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java
+++ b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java
@@ -21,26 +21,27 @@
package org.apache.qpid.server.store.derby;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
-import org.apache.log4j.Logger;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.MessageStoreQuotaEventsTestBase;
+import org.apache.qpid.server.virtualhost.derby.DerbyVirtualHost;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class DerbyMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestBase
{
- private static final Logger _logger = Logger.getLogger(DerbyMessageStoreQuotaEventsTest.class);
-
private static final int NUMBER_OF_MESSAGES_TO_OVERFILL_STORE = 10;
/**
* Estimated using an assumption that a physical disk space occupied by a
* message is 3 times bigger then a message size
*/
- private static final int OVERFULL_SIZE = (int) (MESSAGE_DATA.length * 3 * NUMBER_OF_MESSAGES_TO_OVERFILL_STORE * 0.8);
+ private static final long OVERFULL_SIZE = (long) (MESSAGE_DATA.length * 3 * NUMBER_OF_MESSAGES_TO_OVERFILL_STORE * 0.8);
- private static final int UNDERFULL_SIZE = (int) (OVERFULL_SIZE * 0.8);
+ private static final long UNDERFULL_SIZE = (long) (OVERFULL_SIZE * 0.8);
@Override
protected int getNumberOfMessagesToFillStore()
@@ -49,27 +50,26 @@ public class DerbyMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTes
}
@Override
- protected MessageStore createStore() throws Exception
+ protected VirtualHost createVirtualHost(String storeLocation)
{
- return new DerbyMessageStore();
+ final DerbyVirtualHost parent = mock(DerbyVirtualHost.class);
+ when(parent.getContext()).thenReturn(createContextSettings());
+ when(parent.getStorePath()).thenReturn(storeLocation);
+ when(parent.getStoreOverfullSize()).thenReturn(OVERFULL_SIZE);
+ when(parent.getStoreUnderfullSize()).thenReturn(UNDERFULL_SIZE);
+ return parent;
}
@Override
- protected Map<String, Object> createStoreSettings(String storeLocation)
+ protected MessageStore createStore() throws Exception
{
- _logger.debug("Applying store specific config. overfull-size=" + OVERFULL_SIZE + ", underfull-size=" + UNDERFULL_SIZE);
-
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(MessageStore.STORE_PATH, storeLocation);
- messageStoreSettings.put(MessageStore.OVERFULL_SIZE, OVERFULL_SIZE);
- messageStoreSettings.put(MessageStore.UNDERFULL_SIZE, UNDERFULL_SIZE);
- return messageStoreSettings;
+ return new DerbyMessageStore();
}
- @Override
- protected Map<String, String> createContextSettings()
+ private Map<String, String> createContextSettings()
{
return Collections.emptyMap();
}
+
}
diff --git a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java
index 9a2d945494..ad3246290c 100644
--- a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java
+++ b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java
@@ -22,13 +22,16 @@ package org.apache.qpid.server.store.derby;
import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.MessageStoreTestCase;
+import org.apache.qpid.server.virtualhost.derby.DerbyVirtualHost;
import org.apache.qpid.util.FileUtils;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
public class DerbyMessageStoreTest extends MessageStoreTestCase
{
private String _storeLocation;
@@ -59,13 +62,14 @@ public class DerbyMessageStoreTest extends MessageStoreTestCase
}
@Override
- protected Map<String, Object> getStoreSettings() throws Exception
+ protected VirtualHost createVirtualHost()
{
_storeLocation = TMP_FOLDER + File.separator + getTestName();
deleteStoreIfExists();
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(MessageStore.STORE_PATH, _storeLocation);
- return messageStoreSettings;
+
+ final DerbyVirtualHost parent = mock(DerbyVirtualHost.class);
+ when(parent.getStorePath()).thenReturn(_storeLocation);
+ return parent;
}
private void deleteStoreIfExists()
diff --git a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
index 4dfb05ff4f..75efababc0 100644
--- a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
+++ b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
@@ -22,8 +22,8 @@ package org.apache.qpid.server.store.jdbc.bonecp;
import com.jolbox.bonecp.BoneCP;
import com.jolbox.bonecp.BoneCPConfig;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.store.jdbc.ConnectionProvider;
-import org.apache.qpid.server.util.MapValueConverter;
import java.sql.Connection;
import java.sql.SQLException;
@@ -42,17 +42,38 @@ public class BoneCPConnectionProvider implements ConnectionProvider
private final BoneCP _connectionPool;
- public BoneCPConnectionProvider(String connectionUrl, Map<String, Object> storeSettings) throws SQLException
+ public BoneCPConnectionProvider(String connectionUrl, ConfiguredObject<?> storeSettings) throws SQLException
{
// TODO change interface to pass through username and password
BoneCPConfig config = new BoneCPConfig();
config.setJdbcUrl(connectionUrl);
- config.setMinConnectionsPerPartition(MapValueConverter.getIntegerAttribute(MIN_CONNECTIONS_PER_PARTITION, storeSettings, DEFAULT_MIN_CONNECTIONS_PER_PARTITION));
- config.setMaxConnectionsPerPartition(MapValueConverter.getIntegerAttribute(MAX_CONNECTIONS_PER_PARTITION, storeSettings, DEFAULT_MAX_CONNECTIONS_PER_PARTITION));
- config.setPartitionCount(MapValueConverter.getIntegerAttribute(PARTITION_COUNT, storeSettings, DEFAULT_PARTITION_COUNT));
+ Map<String, String> context = storeSettings.getContext();
+
+ config.setMinConnectionsPerPartition(getContextValueAsInt(MIN_CONNECTIONS_PER_PARTITION, context, DEFAULT_MIN_CONNECTIONS_PER_PARTITION));
+ config.setMaxConnectionsPerPartition(getContextValueAsInt(MAX_CONNECTIONS_PER_PARTITION, context, DEFAULT_MAX_CONNECTIONS_PER_PARTITION));
+ config.setPartitionCount(getContextValueAsInt(PARTITION_COUNT, context, DEFAULT_PARTITION_COUNT));
+
_connectionPool = new BoneCP(config);
}
+ private int getContextValueAsInt(String key, Map<String, String> context, int defaultValue)
+ {
+ if (context.containsKey(key))
+ {
+ try
+ {
+ return Integer.parseInt(context.get(key));
+ }
+ catch (NumberFormatException e)
+ {
+ return defaultValue;
+ }
+ }
+ else
+ {
+ return defaultValue;
+ }
+ }
@Override
public Connection getConnection() throws SQLException
{
diff --git a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
index c1345cfe54..e7dc8bd16c 100644
--- a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
+++ b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
@@ -21,8 +21,8 @@
package org.apache.qpid.server.store.jdbc.bonecp;
import java.sql.SQLException;
-import java.util.Map;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory;
import org.apache.qpid.server.plugin.PluggableService;
import org.apache.qpid.server.store.jdbc.ConnectionProvider;
@@ -36,9 +36,9 @@ public class BoneCPConnectionProviderFactory implements JDBCConnectionProviderFa
return "BONECP";
}
- public ConnectionProvider getConnectionProvider(String connectionUrl, Map<String, Object> storeSettings)
+ public ConnectionProvider getConnectionProvider(ConfiguredObject<?> parent, String connectionUrl)
throws SQLException
{
- return new BoneCPConnectionProvider(connectionUrl, storeSettings);
+ return new BoneCPConnectionProvider(connectionUrl, parent);
}
}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
index d528ab9253..2d8eec2021 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
@@ -20,8 +20,7 @@
*/
package org.apache.qpid.server.store.jdbc;
-import java.util.Map;
-
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory;
import org.apache.qpid.server.plugin.PluggableService;
@@ -38,7 +37,7 @@ public class DefaultConnectionProviderFactory implements JDBCConnectionProviderF
}
@Override
- public ConnectionProvider getConnectionProvider(String connectionUrl, Map<String, Object> settings)
+ public ConnectionProvider getConnectionProvider(ConfiguredObject<?> parent, String connectionUrl)
{
return new DefaultConnectionProvider(connectionUrl);
}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericAbstractJDBCMessageStore.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericAbstractJDBCMessageStore.java
index bd245fa4f4..ce612ec0b6 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericAbstractJDBCMessageStore.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericAbstractJDBCMessageStore.java
@@ -20,7 +20,6 @@ package org.apache.qpid.server.store.jdbc;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -37,20 +36,20 @@ public abstract class GenericAbstractJDBCMessageStore extends org.apache.qpid.se
private ConfiguredObject<?> _parent;
@Override
- public final void openMessageStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
+ public final void openMessageStore(ConfiguredObject<?> parent)
{
if (_messageStoreOpen.compareAndSet(false, true))
{
_parent = parent;
- doOpen(parent, storeSettings);
+ doOpen(parent);
createOrOpenMessageStoreDatabase();
setMaximumMessageId();
}
}
- protected abstract void doOpen(final ConfiguredObject<?> parent, final Map<String, Object> storeSettings)
+ protected abstract void doOpen(final ConfiguredObject<?> parent)
throws StoreException;
@Override
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
index aa8c38cbb0..479ebd953b 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
@@ -24,7 +24,6 @@ import java.sql.Blob;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.log4j.Logger;
@@ -43,9 +42,6 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
private static final Logger LOGGER = Logger.getLogger(GenericJDBCConfigurationStore.class);
- public static final String CONNECTION_URL = "connectionUrl";
- public static final String CONNECTION_POOL_TYPE = "connectionPoolType";
-
private final AtomicBoolean _configurationStoreOpen = new AtomicBoolean();
private final MessageStore _providedMessageStore = new ProvidedMessageStore();
@@ -60,14 +56,15 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
private ConfiguredObject<?> _parent;
@Override
- public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
+ public void openConfigurationStore(ConfiguredObject<?> parent)
throws StoreException
{
if (_configurationStoreOpen.compareAndSet(false, true))
{
_parent = parent;
- _connectionURL = String.valueOf(storeSettings.get(CONNECTION_URL));
- Object poolAttribute = storeSettings.get(CONNECTION_POOL_TYPE);
+
+ JDBCSettings settings = (JDBCSettings)parent;
+ _connectionURL = settings.getConnectionUrl();
JDBCDetails details = JDBCDetails.getDetailsForJdbcUrl(_connectionURL, parent.getContext());
@@ -82,7 +79,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
+ " Using settings : " + details);
}
- String connectionPoolType = poolAttribute == null ? DefaultConnectionProviderFactory.TYPE : String.valueOf(poolAttribute);
+ String connectionPoolType = settings.getConnectionPoolType() == null ? DefaultConnectionProviderFactory.TYPE : settings.getConnectionPoolType();
JDBCConnectionProviderFactory connectionProviderFactory =
JDBCConnectionProviderFactory.FACTORIES.get(connectionPoolType);
@@ -96,7 +93,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
try
{
- _connectionProvider = connectionProviderFactory.getConnectionProvider(_connectionURL, storeSettings);
+ _connectionProvider = connectionProviderFactory.getConnectionProvider(parent, _connectionURL);
}
catch (SQLException e)
{
@@ -218,7 +215,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
private class ProvidedMessageStore extends GenericAbstractJDBCMessageStore
{
@Override
- protected void doOpen(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
+ protected void doOpen(final ConfiguredObject<?> parent)
{
// Nothing to do, store provided by DerbyConfigurationStore
}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
index 680f6b5d10..aa8964f84f 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
@@ -25,15 +25,12 @@ import java.sql.Blob;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Collections;
-import java.util.Map;
import org.apache.log4j.Logger;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory;
import org.apache.qpid.server.store.StoreException;
-import org.apache.qpid.server.util.MapValueConverter;
/**
* Implementation of a MessageStore backed by a Generic JDBC Database.
@@ -43,9 +40,6 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
private static final Logger _logger = Logger.getLogger(GenericJDBCMessageStore.class);
- public static final String CONNECTION_URL = "connectionUrl";
- public static final String CONNECTION_POOL_TYPE = "connectionPoolType";
-
protected String _connectionURL;
private ConnectionProvider _connectionProvider;
@@ -55,9 +49,10 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
private boolean _useBytesMethodsForBlob;
@Override
- protected void doOpen(final ConfiguredObject<?> parent, final Map<String, Object> storeSettings) throws StoreException
+ protected void doOpen(final ConfiguredObject<?> parent) throws StoreException
{
- _connectionURL = String.valueOf(storeSettings.get(CONNECTION_URL));
+ JDBCSettings settings = (JDBCSettings)parent;
+ _connectionURL = settings.getConnectionUrl();
JDBCDetails details = JDBCDetails.getDetailsForJdbcUrl(_connectionURL, parent.getContext());
@@ -77,9 +72,7 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
_useBytesMethodsForBlob = details.isUseBytesMethodsForBlob();
_bigIntType = details.getBigintType();
-
- Object poolAttribute = storeSettings.get(CONNECTION_POOL_TYPE);
- String connectionPoolType = poolAttribute == null ? DefaultConnectionProviderFactory.TYPE : String.valueOf(poolAttribute);
+ String connectionPoolType = settings.getConnectionPoolType() == null ? DefaultConnectionProviderFactory.TYPE : settings.getConnectionPoolType();
JDBCConnectionProviderFactory connectionProviderFactory =
JDBCConnectionProviderFactory.FACTORIES.get(connectionPoolType);
@@ -92,7 +85,7 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
try
{
// TODO: Pass parent to the connenction provider?
- _connectionProvider = connectionProviderFactory.getConnectionProvider(_connectionURL, storeSettings);
+ _connectionProvider = connectionProviderFactory.getConnectionProvider(parent, _connectionURL);
}
catch (SQLException e)
{
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java
new file mode 100644
index 0000000000..3f3b53eb06
--- /dev/null
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java
@@ -0,0 +1,29 @@
+/*
+ * 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.store.jdbc;
+
+import org.apache.qpid.server.store.Settings;
+
+public interface JDBCSettings extends Settings
+{
+ String getConnectionUrl();
+
+ String getConnectionPoolType();
+}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java
index 85e8f89dbe..9f794ac707 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java
@@ -1,5 +1,4 @@
/*
- *
* 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
@@ -16,35 +15,24 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
-package org.apache.qpid.server.virtualhost.jdbc;
-import java.util.Map;
+package org.apache.qpid.server.virtualhost.jdbc;
-import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.jdbc.GenericJDBCMessageStore;
-import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.model.ManagedAttribute;
+import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.store.jdbc.DefaultConnectionProviderFactory;
+import org.apache.qpid.server.store.jdbc.JDBCSettings;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-@ManagedObject(category = false, type = JDBCVirtualHost.VIRTUAL_HOST_TYPE)
-public class JDBCVirtualHost extends AbstractVirtualHost<JDBCVirtualHost>
+public interface JDBCVirtualHost<X extends JDBCVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>,
+ JDBCSettings
{
- public static final String VIRTUAL_HOST_TYPE = "JDBC";
-
- @ManagedObjectFactoryConstructor
- public JDBCVirtualHost(final Map<String, Object> attributes,
- final VirtualHostNode<?> virtualHostNode)
- {
- super(attributes, virtualHostNode);
- }
+ @ManagedAttribute(mandatory=true)
+ String getConnectionUrl();
+ @ManagedAttribute(defaultValue= DefaultConnectionProviderFactory.TYPE)
+ String getConnectionPoolType();
- @Override
- protected MessageStore createMessageStore()
- {
- return new GenericJDBCMessageStore();
- }
}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
new file mode 100644
index 0000000000..f4e597c6a1
--- /dev/null
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
@@ -0,0 +1,68 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.virtualhost.jdbc;
+
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.jdbc.GenericJDBCMessageStore;
+import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
+
+import java.util.Map;
+
+@ManagedObject(category = false, type = JDBCVirtualHostImpl.VIRTUAL_HOST_TYPE)
+public class JDBCVirtualHostImpl extends AbstractVirtualHost<JDBCVirtualHostImpl> implements JDBCVirtualHost<JDBCVirtualHostImpl>
+{
+ public static final String VIRTUAL_HOST_TYPE = "JDBC";
+
+ @ManagedAttributeField
+ private String _connectionUrl;
+
+ @ManagedAttributeField
+ private String _connectionPoolType;
+
+ @ManagedObjectFactoryConstructor
+ public JDBCVirtualHostImpl(final Map<String, Object> attributes,
+ final VirtualHostNode<?> virtualHostNode)
+ {
+ super(attributes, virtualHostNode);
+ }
+
+ @Override
+ protected MessageStore createMessageStore()
+ {
+ return new GenericJDBCMessageStore();
+ }
+
+ @Override
+ public String getConnectionUrl()
+ {
+ return _connectionUrl;
+ }
+
+ @Override
+ public String getConnectionPoolType()
+ {
+ return _connectionPoolType;
+ }
+}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java
index f9756fec65..a649dc1048 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java
@@ -23,8 +23,9 @@ package org.apache.qpid.server.virtualhostnode.jdbc;
import org.apache.qpid.server.model.ManagedAttribute;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.store.jdbc.DefaultConnectionProviderFactory;
+import org.apache.qpid.server.store.jdbc.JDBCSettings;
-public interface JDBCVirtualHostNode<X extends JDBCVirtualHostNode<X>> extends VirtualHostNode<X>
+public interface JDBCVirtualHostNode<X extends JDBCVirtualHostNode<X>> extends VirtualHostNode<X>, JDBCSettings
{
//TODO: Split this attribute into connectionUrl, username and password. Make the password attribute secure.
@ManagedAttribute(mandatory=true)
@@ -33,4 +34,5 @@ public interface JDBCVirtualHostNode<X extends JDBCVirtualHostNode<X>> extends V
@ManagedAttribute(defaultValue=DefaultConnectionProviderFactory.TYPE)
String getConnectionPoolType();
+ //add username and passwd managed attrs
}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
index 9098434b69..0c51d397bf 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
@@ -48,6 +48,11 @@ public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDB
}
@Override
+ protected void writeLocationEventLog()
+ {
+ }
+
+ @Override
protected DurableConfigurationStore createConfigurationStore()
{
return new GenericJDBCConfigurationStore();
diff --git a/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java b/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
index 8261e93347..3f48a8fc5a 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
@@ -20,18 +20,21 @@
*/
package org.apache.qpid.server.store.jdbc;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.MessageStoreTestCase;
+import org.apache.qpid.server.virtualhost.jdbc.JDBCVirtualHost;
public class JDBCMessageStoreTest extends MessageStoreTestCase
{
@@ -61,12 +64,13 @@ public class JDBCMessageStoreTest extends MessageStoreTestCase
}
@Override
- protected Map<String, Object> getStoreSettings()
+ protected VirtualHost createVirtualHost()
{
_connectionURL = "jdbc:derby:memory:/" + getTestName() + ";create=true";
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(GenericJDBCMessageStore.CONNECTION_URL, _connectionURL);
- return messageStoreSettings;
+
+ final JDBCVirtualHost jdbcVirtualHost = mock(JDBCVirtualHost.class);
+ when(jdbcVirtualHost.getConnectionUrl()).thenReturn(_connectionURL);
+ return jdbcVirtualHost;
}
diff --git a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java
index fec2432d5b..d9b564305c 100644
--- a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java
+++ b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java
@@ -41,6 +41,11 @@ public class MemoryVirtualHostNode extends AbstractStandardVirtualHostNode<Memor
}
@Override
+ protected void writeLocationEventLog()
+ {
+ }
+
+ @Override
protected DurableConfigurationStore createConfigurationStore()
{
return new MemoryConfigurationStore();
diff --git a/qpid/java/pom.xml b/qpid/java/pom.xml
index 71984fe9ed..af0247f20d 100644
--- a/qpid/java/pom.xml
+++ b/qpid/java/pom.xml
@@ -617,7 +617,7 @@
<!--
Split store profiles.
Virtual host configuration can be overridden by setting blueprint property like below
- -Dprofile.virtualhostnode.context.blueprint='{"type":"BDB","messageStoreSettings":{"storePath":"${QPID_WORK}/${this:name}/bdb"}}'
+ -Dprofile.virtualhostnode.context.blueprint='{"type":"BDB","storePath":"${QPID_WORK}/${this:name}/bdb"}'
-->
<profile>
<id>java-json.0-9-1</id>
@@ -634,7 +634,7 @@
<profile.qpid.broker_default_amqp_protocol_excludes>AMQP_1_0,AMQP_0_10</profile.qpid.broker_default_amqp_protocol_excludes>
<profile.broker.persistent>true</profile.broker.persistent>
<profile.virtualhostnode.type>JSON</profile.virtualhostnode.type>
- <profile.virtualhostnode.context.blueprint>{"type":"DERBY","messageStoreSettings":{"storePath":"${dollar.sign}{QPID_WORK}/${dollar.sign}{this:name}/derby"}}</profile.virtualhostnode.context.blueprint>
+ <profile.virtualhostnode.context.blueprint>{"type":"DERBY","storePath":"${dollar.sign}{QPID_WORK}/${dollar.sign}{this:name}/derby"}</profile.virtualhostnode.context.blueprint>
</properties>
</profile>
@@ -653,7 +653,7 @@
<profile.qpid.broker_default_amqp_protocol_excludes>AMQP_1_0</profile.qpid.broker_default_amqp_protocol_excludes>
<profile.broker.persistent>true</profile.broker.persistent>
<profile.virtualhostnode.type>JSON</profile.virtualhostnode.type>
- <profile.virtualhostnode.context.blueprint>{"type":"DERBY","messageStoreSettings":{"storePath":"${dollar.sign}{QPID_WORK}/${dollar.sign}{this:name}/derby"}}</profile.virtualhostnode.context.blueprint>
+ <profile.virtualhostnode.context.blueprint>{"type":"DERBY","storePath":"${dollar.sign}{QPID_WORK}/${dollar.sign}{this:name}/derby"}</profile.virtualhostnode.context.blueprint>
</properties>
</profile>
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java
index 7605c8a024..dcab2cbe76 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java
@@ -22,7 +22,6 @@ package org.apache.qpid.server.store;
import java.io.File;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
import javax.jms.Connection;
@@ -34,7 +33,8 @@ import javax.jms.Session;
import org.apache.qpid.configuration.ClientProperties;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNodeImpl;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
import org.apache.qpid.test.utils.TestFileUtils;
@@ -76,7 +76,7 @@ public class SplitStoreTest extends QpidBrokerTestCase
public void testJsonConfigurationStoreWithPersistentMessageStore() throws Exception
{
- doTest(JsonFileConfigStore.TYPE, getTestProfileVirtualHostNodeType());
+ doTest(JsonVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, getTestProfileVirtualHostNodeType());
}
public void testSeparateConfigurationAndMessageStoresOfTheSameType() throws Exception
@@ -87,14 +87,14 @@ public class SplitStoreTest extends QpidBrokerTestCase
private void configureAndStartBroker(String virtualHostNodeType, String virtualHostType) throws Exception
{
final String blueprint = String.format(
- "{ \"type\" : \"%s\", \"messageStoreSettings\" : { \"storePath\" : \"%s\" } }", virtualHostType, _messageStorePath);
+ "{ \"type\" : \"%s\", \"storePath\" : \"%s\" }", virtualHostType, _messageStorePath);
final Map<String, String> contextMap = Collections.singletonMap(AbstractStandardVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR,
blueprint);
TestBrokerConfiguration config = getBrokerConfiguration();
config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.TYPE, virtualHostNodeType);
config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.CONTEXT, contextMap);
- config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, FileBasedVirtualHostNode.STORE_PATH, _configStorePath);
+ config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, JsonVirtualHostNode.STORE_PATH, _configStorePath);
super.startBroker();
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java
index 278de6cf41..2c38a04895 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java
@@ -74,8 +74,7 @@ import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.BrokerTestHelper;
import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.util.FileUtils;
import org.codehaus.jackson.map.ObjectMapper;
@@ -138,7 +137,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase
ConfiguredObjectFactory factory = broker.getObjectFactory();
Map<String, Object> nodeAttributes = new HashMap<>();
nodeAttributes.put(ConfiguredObject.TYPE, getTestProfileVirtualHostNodeType());
- nodeAttributes.put(FileBasedVirtualHostNode.STORE_PATH, _storePath);
+ nodeAttributes.put(JsonVirtualHostNode.STORE_PATH, _storePath);
nodeAttributes.put(VirtualHostNode.NAME, nodeName);
_node = factory.create(VirtualHostNode.class, nodeAttributes, broker);
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java
index efbd68f9e0..71f911627e 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java
@@ -36,7 +36,7 @@ import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
-import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHost;
+import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHostImpl;
import org.apache.qpid.server.virtualhostnode.memory.MemoryVirtualHostNode;
import org.apache.qpid.systest.rest.QpidRestTestCase;
import org.apache.qpid.test.utils.JMXTestUtils;
@@ -97,7 +97,7 @@ public class MBeanLifeCycleTest extends QpidRestTestCase
Map<String, Object> virtualhostData = new HashMap<>();
virtualhostData.put(VirtualHost.NAME, nodeName);
- virtualhostData.put(VirtualHost.TYPE, ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE);
+ virtualhostData.put(VirtualHost.TYPE, ProvidedStoreVirtualHostImpl.VIRTUAL_HOST_TYPE);
getRestTestHelper().submitRequest("virtualhost/" + nodeName + "/" + hostName,
"PUT",
virtualhostData,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
index 666409048c..3ac79076d6 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
@@ -77,8 +77,7 @@ public class Asserts
ConfiguredObject.CONTEXT,
ConfiguredObject.DESIRED_STATE,
VirtualHost.SUPPORTED_QUEUE_TYPES,
- VirtualHost.TYPE,
- VirtualHost.MESSAGE_STORE_SETTINGS);
+ VirtualHost.TYPE);
assertEquals("Unexpected value of attribute " + VirtualHost.NAME,
virtualHostName,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
index 8004a91168..3e49f63cff 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
@@ -31,7 +31,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
/**
@@ -149,7 +149,7 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase
Map<String, Object> nodeData = new HashMap<String, Object>();
nodeData.put(VirtualHostNode.NAME, nodeName);
nodeData.put(VirtualHostNode.TYPE, storeType);
- nodeData.put(FileBasedVirtualHostNode.STORE_PATH, configStorePath);
+ nodeData.put(JsonVirtualHostNode.STORE_PATH, configStorePath);
getRestTestHelper().submitRequest("virtualhostnode/" + nodeName,
"PUT",
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
index e287c9d5c1..da89772a22 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
@@ -30,10 +30,11 @@ import java.util.Map;
import javax.jms.Session;
import javax.servlet.http.HttpServletResponse;
-import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
+import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHostImpl;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.Queue;
@@ -43,7 +44,7 @@ import org.apache.qpid.server.queue.LastValueQueue;
import org.apache.qpid.server.queue.PriorityQueue;
import org.apache.qpid.server.queue.SortedQueue;
import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
+
import org.apache.qpid.util.FileUtils;
public class VirtualHostRestTest extends QpidRestTestCase
@@ -534,13 +535,13 @@ public class VirtualHostRestTest extends QpidRestTestCase
Map<String, Object> nodeData = new HashMap<>();
nodeData.put(VirtualHostNode.NAME, virtualHostName);
nodeData.put(VirtualHostNode.TYPE, virtualHostNodeType);
- nodeData.put(FileBasedVirtualHostNode.STORE_PATH, storePath);
+ nodeData.put(JsonVirtualHostNode.STORE_PATH, storePath);
getRestTestHelper().submitRequest("virtualhostnode/" + virtualHostName, "PUT", nodeData, HttpServletResponse.SC_CREATED);
Map<String, Object> virtualhostData = new HashMap<>();
virtualhostData.put(VirtualHost.NAME, virtualHostName);
- virtualhostData.put(VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
+ virtualhostData.put(VirtualHost.TYPE, ProvidedStoreVirtualHostImpl.VIRTUAL_HOST_TYPE);
getRestTestHelper().submitRequest("virtualhost/" + virtualHostName + "/" + virtualHostName,
"PUT",
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
index 4fd0695545..a7874155df 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
@@ -27,6 +27,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.apache.qpid.server.management.plugin.HttpManagement;
@@ -49,7 +50,6 @@ import org.apache.qpid.server.security.access.FileAccessControlProviderConstants
import org.apache.qpid.server.security.acl.AbstractACLTestCase;
import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
import org.apache.qpid.server.security.auth.manager.PlainPasswordDatabaseAuthenticationManager;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
import org.apache.qpid.systest.rest.QpidRestTestCase;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
import org.apache.qpid.test.utils.TestFileUtils;
@@ -982,7 +982,7 @@ public class BrokerACLTest extends QpidRestTestCase
Map<String, Object> data = new HashMap<String, Object>();
data.put(VirtualHostNode.NAME, virtualHostNodeName);
data.put(VirtualHostNode.TYPE, getTestProfileVirtualHostNodeType());
- data.put(FileBasedVirtualHostNode.STORE_PATH, getStoreLocation(virtualHostNodeName));
+ data.put(JsonVirtualHostNode.STORE_PATH, getStoreLocation(virtualHostNodeName));
return getRestTestHelper().submitRequest("virtualhostnode/" + virtualHostNodeName, "PUT", data);
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
index 92d163f05a..31f740c82e 100755
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
@@ -68,10 +68,9 @@ import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.MemoryConfigurationStore;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
-import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
import org.apache.qpid.url.URLSyntaxException;
import org.apache.qpid.util.FileUtils;
import org.apache.qpid.util.SystemUtils;
@@ -251,7 +250,7 @@ public class QpidBrokerTestCase extends QpidTestCase
configuration.setObjectAttribute(Port.class, TestBrokerConfiguration.ENTRY_NAME_JMX_PORT, Port.PORT, getManagementPort(actualPort) + JMXPORT_CONNECTORSERVER_OFFSET);
String workDir = System.getProperty("QPID_WORK") + File.separator + TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST + File.separator + actualPort;
- configuration.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, DurableConfigurationStore.STORE_PATH, workDir);
+ configuration.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, JsonVirtualHostNode.STORE_PATH, workDir);
}
return configuration;
@@ -869,9 +868,11 @@ public class QpidBrokerTestCase extends QpidTestCase
attributes.put(VirtualHostNode.TYPE, storeType);
if (storeDir != null)
{
- attributes.put(FileBasedVirtualHostNode.STORE_PATH, storeDir);
+ attributes.put(JsonVirtualHostNode.STORE_PATH, storeDir);
}
+
final String blueprint = getTestProfileVirtualHostNodeBlueprint();
+
attributes.put(ConfiguredObject.CONTEXT, Collections.singletonMap(AbstractStandardVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR,
blueprint));