summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/jdbc-store
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-03-14 16:39:47 +0000
committerKeith Wall <kwall@apache.org>2014-03-14 16:39:47 +0000
commitec486999608568e37a55dc9c81d9be133d95ebc3 (patch)
tree87d6446e97cfdca321b1faff6f24a3010df4cdff /qpid/java/broker-plugins/jdbc-store
parentdb26915f9b2edfa410c094162bec78b9d2010b24 (diff)
downloadqpid-python-ec486999608568e37a55dc9c81d9be133d95ebc3.tar.gz
QPID-5624: Introduce messageStoreSettings VH attribute and move all message store related attributes into messageStoreSettings map
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha2@1577606 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/jdbc-store')
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java2
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStore.java43
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java15
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java9
4 files changed, 46 insertions, 23 deletions
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 8fc7de12d0..cc7fda4c82 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
@@ -34,7 +34,7 @@ public class DefaultConnectionProviderFactory implements JDBCConnectionProviderF
@Override
public ConnectionProvider getConnectionProvider(String connectionUrl,
- VirtualHost virtualHost)
+ VirtualHost virtualHost, boolean configStoreOnly)
{
return new DefaultConnectionProvider(connectionUrl);
}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStore.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStore.java
index 621759ef85..d8fb124c69 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStore.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStore.java
@@ -29,6 +29,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
+
import org.apache.log4j.Logger;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory;
@@ -37,6 +38,7 @@ import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.StoreFuture;
import org.apache.qpid.server.store.Transaction;
+import org.apache.qpid.server.util.MapValueConverter;
/**
* An implementation of a {@link org.apache.qpid.server.store.MessageStore} that uses a JDBC database as the persistence
@@ -48,10 +50,14 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag
private static final Logger _logger = Logger.getLogger(JDBCMessageStore.class);
-
public static final String TYPE = "JDBC";
public static final String CONNECTION_URL = "connectionURL";
public static final String CONFIG_CONNECTION_URL = "configConnectionURL";
+ public static final String CONNECTION_POOL = "connectionPool";
+ public static final String JDBC_BIG_INT_TYPE = "jdbcBigIntType";
+ public static final String JDBC_BYTES_FOR_BLOB = "jdbcBytesForBlob";
+ public static final String JDBC_VARBINARY_TYPE = "jdbcVarbinaryType";
+ public static final String JDBC_BLOB_TYPE = "jdbcBlobType";
protected String _connectionURL;
private ConnectionProvider _connectionProvider;
@@ -280,19 +286,24 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag
VirtualHost virtualHost)
throws ClassNotFoundException, SQLException
{
+ Map<String, Object> messageStoreSettings = virtualHost.getMessageStoreSettings();
String connectionURL;
- if(!isConfigStoreOnly())
+ Object poolAttribute = null;
+ boolean configStoreOnly = isConfigStoreOnly();
+ if(!configStoreOnly)
{
- connectionURL = virtualHost.getAttribute(CONNECTION_URL) == null
- ? String.valueOf(virtualHost.getAttribute(VirtualHost.STORE_PATH))
- : String.valueOf(virtualHost.getAttribute(CONNECTION_URL));
+ connectionURL = messageStoreSettings.get(CONNECTION_URL) == null
+ ? String.valueOf(messageStoreSettings.get(MessageStore.STORE_PATH))
+ : String.valueOf(messageStoreSettings.get(CONNECTION_URL));
+ poolAttribute = messageStoreSettings.get(CONNECTION_POOL);
}
else
{
connectionURL = virtualHost.getAttribute(CONFIG_CONNECTION_URL) == null
? String.valueOf(virtualHost.getAttribute(VirtualHost.CONFIG_STORE_PATH))
: String.valueOf(virtualHost.getAttribute(CONFIG_CONNECTION_URL));
+ poolAttribute = virtualHost.getAttribute(CONNECTION_POOL);
}
JDBCDetails details = null;
@@ -312,8 +323,6 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag
details = DERBY_DETAILS;
}
-
- Object poolAttribute = virtualHost.getAttribute("connectionPool");
String connectionPoolType = poolAttribute == null ? "DEFAULT" : String.valueOf(poolAttribute);
JDBCConnectionProviderFactory connectionProviderFactory =
@@ -324,12 +333,22 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag
connectionProviderFactory = new DefaultConnectionProviderFactory();
}
- _connectionProvider = connectionProviderFactory.getConnectionProvider(connectionURL, virtualHost);
+ _connectionProvider = connectionProviderFactory.getConnectionProvider(connectionURL, virtualHost, configStoreOnly);
- _blobType = getStringAttribute(virtualHost, "jdbcBlobType",details.getBlobType());
- _varBinaryType = getStringAttribute(virtualHost, "jdbcVarbinaryType",details.getVarBinaryType());
- _useBytesMethodsForBlob = getBooleanAttribute(virtualHost, "jdbcBytesForBlob",details.isUseBytesMethodsForBlob());
- _bigIntType = getStringAttribute(virtualHost, "jdbcBigIntType", details.getBigintType());
+ if(!configStoreOnly)
+ {
+ _blobType = MapValueConverter.getStringAttribute(JDBC_BLOB_TYPE, messageStoreSettings, details.getBlobType());
+ _varBinaryType = MapValueConverter.getStringAttribute(JDBC_VARBINARY_TYPE, messageStoreSettings, details.getVarBinaryType());
+ _useBytesMethodsForBlob = MapValueConverter.getBooleanAttribute(JDBC_BYTES_FOR_BLOB, messageStoreSettings, details.isUseBytesMethodsForBlob());
+ _bigIntType = MapValueConverter.getStringAttribute(JDBC_BIG_INT_TYPE, messageStoreSettings, details.getBigintType());
+ }
+ else
+ {
+ _blobType = getStringAttribute(virtualHost, JDBC_BLOB_TYPE,details.getBlobType());
+ _varBinaryType = getStringAttribute(virtualHost, JDBC_VARBINARY_TYPE,details.getVarBinaryType());
+ _useBytesMethodsForBlob = getBooleanAttribute(virtualHost, JDBC_BYTES_FOR_BLOB,details.isUseBytesMethodsForBlob());
+ _bigIntType = getStringAttribute(virtualHost, JDBC_BIG_INT_TYPE, details.getBigintType());
+ }
}
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java
index d22fc21b74..0a8f682f16 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java
@@ -52,18 +52,17 @@ public class JDBCMessageStoreFactory implements MessageStoreFactory, DurableConf
@Override
public void validateAttributes(Map<String, Object> attributes)
{
- if(getType().equals(attributes.get(VirtualHost.STORE_TYPE)))
+ @SuppressWarnings("unchecked")
+ Map<String, Object> messageStoreSettings = (Map<String, Object>) attributes.get(VirtualHost.MESSAGE_STORE_SETTINGS);
+
+ if(getType().equals(messageStoreSettings.get(MessageStore.STORE_TYPE)))
{
- Object connectionURL = attributes.get(JDBCMessageStore.CONNECTION_URL);
+ Object connectionURL = messageStoreSettings.get(JDBCMessageStore.CONNECTION_URL);
if(!(connectionURL instanceof String))
{
- Object storePath = attributes.get(VirtualHost.STORE_PATH);
- if(!(storePath instanceof String))
- {
- throw new IllegalArgumentException("Attribute '"+ JDBCMessageStore.CONNECTION_URL
- +"' is required and must be of type String.");
+ throw new IllegalArgumentException("Setting '"+ JDBCMessageStore.CONNECTION_URL
+ +"' is required and must be of type String.");
- }
}
}
if(getType().equals(attributes.get(VirtualHost.CONFIG_STORE_TYPE)))
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 9c348383c6..65bf795045 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,12 +20,15 @@
*/
package org.apache.qpid.server.store.jdbc;
+import java.io.File;
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;
@@ -66,10 +69,12 @@ public class JDBCMessageStoreTest extends MessageStoreTestCase
protected void setUpStoreConfiguration(VirtualHost virtualHost) throws Exception
{
_connectionURL = "jdbc:derby:memory:/" + getTestName() + ";create=true";
-
- when(virtualHost.getAttribute(eq("connectionURL"))).thenReturn(_connectionURL);
+ Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
+ messageStoreSettings.put(JDBCMessageStore.CONNECTION_URL, _connectionURL);
+ when(virtualHost.getMessageStoreSettings()).thenReturn(messageStoreSettings);
}
+
@Override
protected MessageStore createMessageStore()
{