diff options
| author | Keith Wall <kwall@apache.org> | 2014-03-17 17:04:05 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-03-17 17:04:05 +0000 |
| commit | 8ad99bd6b07efe9f91ed9cde2b2121028005c317 (patch) | |
| tree | 8a9b33c0294fe1745b617ca1399fccd654de1759 /qpid/java/broker-plugins | |
| parent | ec486999608568e37a55dc9c81d9be133d95ebc3 (diff) | |
| download | qpid-python-8ad99bd6b07efe9f91ed9cde2b2121028005c317.tar.gz | |
QPID-5624: Introduce configurationStoreSettings VH attributes
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha2@1578463 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins')
9 files changed, 59 insertions, 133 deletions
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 25ce3b8adc..f7b65075f7 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 @@ -132,12 +132,13 @@ public class DerbyMessageStore extends AbstractJDBCMessageStore implements Messa //Update to pick up QPID_WORK and use that as the default location not just derbyDB Map<String, Object> messageStoreSettings = virtualHost.getMessageStoreSettings(); + Map<String, Object> configurationStoreSettings = virtualHost.getConfigurationStoreSettings(); _driverClass = (Class<Driver>) Class.forName(SQL_DRIVER_NAME); String databasePath = null; if (isConfigStoreOnly()) { - databasePath = (String) virtualHost.getAttribute(VirtualHost.CONFIG_STORE_PATH); + databasePath = (String) configurationStoreSettings.get(DurableConfigurationStore.STORE_PATH); } else { diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java index 4e81c4e9ba..a3610901c5 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java +++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java @@ -65,12 +65,15 @@ public class DerbyMessageStoreFactory implements MessageStoreFactory, DurableCon } } - if(getType().equals(attributes.get(VirtualHost.CONFIG_STORE_TYPE))) + + @SuppressWarnings("unchecked") + Map<String, Object> configurationStoreSettings = (Map<String, Object>) attributes.get(VirtualHost.CONFIGURATION_STORE_SETTINGS); + if(getType().equals(configurationStoreSettings.get(DurableConfigurationStore.STORE_TYPE))) { - Object storePath = attributes.get(VirtualHost.CONFIG_STORE_PATH); + Object storePath = configurationStoreSettings.get(DurableConfigurationStore.STORE_PATH); if(!(storePath instanceof String)) { - throw new IllegalArgumentException("Attribute '"+ VirtualHost.CONFIG_STORE_PATH + throw new IllegalArgumentException("Setting '"+ DurableConfigurationStore.STORE_PATH +"' is required and must be of type String."); } 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 370f92651c..2b45aad5e5 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 @@ -24,7 +24,6 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.Map; -import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.jdbc.ConnectionProvider; import org.apache.qpid.server.util.MapValueConverter; @@ -43,52 +42,16 @@ public class BoneCPConnectionProvider implements ConnectionProvider private final BoneCP _connectionPool; - public BoneCPConnectionProvider(String connectionUrl, VirtualHost virtualHost, boolean configStoreOnly) throws SQLException + public BoneCPConnectionProvider(String connectionUrl, Map<String, Object> storeSettings) throws SQLException { BoneCPConfig config = new BoneCPConfig(); config.setJdbcUrl(connectionUrl); - - if (configStoreOnly) - { - config.setMinConnectionsPerPartition(getIntegerAttribute(virtualHost, MIN_CONNECTIONS_PER_PARTITION, DEFAULT_MIN_CONNECTIONS_PER_PARTITION)); - config.setMaxConnectionsPerPartition(getIntegerAttribute(virtualHost, MAX_CONNECTIONS_PER_PARTITION, DEFAULT_MAX_CONNECTIONS_PER_PARTITION)); - config.setPartitionCount(getIntegerAttribute(virtualHost, PARTITION_COUNT,DEFAULT_PARTITION_COUNT)); - } - else - { - Map<String, Object> storeSettings = virtualHost.getMessageStoreSettings(); - 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)); - } + 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)); _connectionPool = new BoneCP(config); } - private int getIntegerAttribute(VirtualHost virtualHost, String attributeName, int defaultVal) - { - Object attrValue = virtualHost.getAttribute(attributeName); - if(attrValue != null) - { - if(attrValue instanceof Number) - { - return ((Number) attrValue).intValue(); - } - else if(attrValue instanceof String) - { - try - { - return Integer.parseInt((String)attrValue); - } - catch (NumberFormatException e) - { - return defaultVal; - } - } - - } - return defaultVal; - } - @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 f12e7f35e6..58206b270c 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.VirtualHost; import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory; import org.apache.qpid.server.store.jdbc.ConnectionProvider; @@ -35,9 +35,9 @@ public class BoneCPConnectionProviderFactory implements JDBCConnectionProviderFa } @Override - public ConnectionProvider getConnectionProvider(String connectionUrl, VirtualHost virtualHost, boolean configStoreOnly) + public ConnectionProvider getConnectionProvider(String connectionUrl, Map<String, Object> storeSettings) throws SQLException { - return new BoneCPConnectionProvider(connectionUrl, virtualHost, configStoreOnly); + return new BoneCPConnectionProvider(connectionUrl, storeSettings); } } 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 cc7fda4c82..191cc2ab7a 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,21 +20,23 @@ */ package org.apache.qpid.server.store.jdbc; -import org.apache.qpid.server.model.VirtualHost; +import java.util.Map; + import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory; public class DefaultConnectionProviderFactory implements JDBCConnectionProviderFactory { + public static final String TYPE = "DEFAULT"; + @Override public String getType() { - return "NONE"; + return TYPE; } @Override - public ConnectionProvider getConnectionProvider(String connectionUrl, - VirtualHost virtualHost, boolean configStoreOnly) + public ConnectionProvider getConnectionProvider(String connectionUrl, Map<String, Object> settings) { 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 d8fb124c69..2c2b701c61 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 @@ -52,7 +52,6 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag 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"; @@ -286,26 +285,10 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag VirtualHost virtualHost) throws ClassNotFoundException, SQLException { - Map<String, Object> messageStoreSettings = virtualHost.getMessageStoreSettings(); + Map<String, Object> storeSettings = isConfigStoreOnly() ? virtualHost.getConfigurationStoreSettings() : virtualHost.getMessageStoreSettings(); + String connectionURL = String.valueOf(storeSettings.get(CONNECTION_URL)); + Object poolAttribute = storeSettings.get(CONNECTION_POOL); - String connectionURL; - Object poolAttribute = null; - boolean configStoreOnly = isConfigStoreOnly(); - if(!configStoreOnly) - { - 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; String[] components = connectionURL.split(":",3); @@ -323,7 +306,7 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag details = DERBY_DETAILS; } - String connectionPoolType = poolAttribute == null ? "DEFAULT" : String.valueOf(poolAttribute); + String connectionPoolType = poolAttribute == null ? DefaultConnectionProviderFactory.TYPE : String.valueOf(poolAttribute); JDBCConnectionProviderFactory connectionProviderFactory = JDBCConnectionProviderFactory.FACTORIES.get(connectionPoolType); @@ -333,54 +316,14 @@ public class JDBCMessageStore extends AbstractJDBCMessageStore implements Messag connectionProviderFactory = new DefaultConnectionProviderFactory(); } - _connectionProvider = connectionProviderFactory.getConnectionProvider(connectionURL, virtualHost, configStoreOnly); - - 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()); - } - } - - - private String getStringAttribute(VirtualHost virtualHost, String attributeName, String defaultVal) - { - Object attrValue = virtualHost.getAttribute(attributeName); - if(attrValue != null) - { - return attrValue.toString(); - } - return defaultVal; - } - - private boolean getBooleanAttribute(VirtualHost virtualHost, String attributeName, boolean defaultVal) - { - Object attrValue = virtualHost.getAttribute(attributeName); - if(attrValue != null) - { - if(attrValue instanceof Boolean) - { - return ((Boolean) attrValue).booleanValue(); - } - else if(attrValue instanceof String) - { - return Boolean.parseBoolean((String)attrValue); - } - - } - return defaultVal; + _connectionProvider = connectionProviderFactory.getConnectionProvider(connectionURL, storeSettings); + _blobType = MapValueConverter.getStringAttribute(JDBC_BLOB_TYPE, storeSettings, details.getBlobType()); + _varBinaryType = MapValueConverter.getStringAttribute(JDBC_VARBINARY_TYPE, storeSettings, details.getVarBinaryType()); + _useBytesMethodsForBlob = MapValueConverter.getBooleanAttribute(JDBC_BYTES_FOR_BLOB, storeSettings, details.isUseBytesMethodsForBlob()); + _bigIntType = MapValueConverter.getStringAttribute(JDBC_BIG_INT_TYPE, storeSettings, details.getBigintType()); } - + @Override protected void storedSizeChange(int contentSize) { } 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 0a8f682f16..acce1b75a2 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 @@ -54,7 +54,6 @@ public class JDBCMessageStoreFactory implements MessageStoreFactory, DurableConf { @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 = messageStoreSettings.get(JDBCMessageStore.CONNECTION_URL); @@ -65,18 +64,16 @@ public class JDBCMessageStoreFactory implements MessageStoreFactory, DurableConf } } - if(getType().equals(attributes.get(VirtualHost.CONFIG_STORE_TYPE))) + + @SuppressWarnings("unchecked") + Map<String, Object> configurationStoreSettings = (Map<String, Object>) attributes.get(VirtualHost.CONFIGURATION_STORE_SETTINGS); + if(configurationStoreSettings != null && getType().equals(configurationStoreSettings.get(DurableConfigurationStore.STORE_TYPE))) { - Object connectionURL = attributes.get(JDBCMessageStore.CONFIG_CONNECTION_URL); + Object connectionURL = configurationStoreSettings.get(JDBCMessageStore.CONNECTION_URL); if(!(connectionURL instanceof String)) { - Object storePath = attributes.get(VirtualHost.CONFIG_STORE_PATH); - if(!(storePath instanceof String)) - { - throw new IllegalArgumentException("Attribute '"+ JDBCMessageStore.CONFIG_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."); } } } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.JDBCConnectionProviderFactory b/qpid/java/broker-plugins/jdbc-store/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.JDBCConnectionProviderFactory new file mode 100644 index 0000000000..e0ae6e97cc --- /dev/null +++ b/qpid/java/broker-plugins/jdbc-store/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.JDBCConnectionProviderFactory @@ -0,0 +1,19 @@ +# +# 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. +# +org.apache.qpid.server.store.jdbc.DefaultConnectionProviderFactory 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 65bf795045..dc6bb0158d 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,7 +20,8 @@ */ package org.apache.qpid.server.store.jdbc; -import java.io.File; +import static org.mockito.Mockito.when; + import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; @@ -35,9 +36,6 @@ import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreTestCase; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.when; - public class JDBCMessageStoreTest extends MessageStoreTestCase { private String _connectionURL; |
