diff options
| author | Keith Wall <kwall@apache.org> | 2014-03-14 16:39:47 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-03-14 16:39:47 +0000 |
| commit | ec486999608568e37a55dc9c81d9be133d95ebc3 (patch) | |
| tree | 87d6446e97cfdca321b1faff6f24a3010df4cdff /qpid/java/broker-plugins/jdbc-store | |
| parent | db26915f9b2edfa410c094162bec78b9d2010b24 (diff) | |
| download | qpid-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')
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() { |
