summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins
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 /qpid/java/broker-plugins
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
Diffstat (limited to 'qpid/java/broker-plugins')
-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
23 files changed, 408 insertions, 199 deletions
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();