summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/jdbc-provider-bone
diff options
context:
space:
mode:
authorAndrew MacBean <macbean@apache.org>2014-06-26 13:59:36 +0000
committerAndrew MacBean <macbean@apache.org>2014-06-26 13:59:36 +0000
commitebf13e02e7371a262d96a96a40ff34bbe9f47816 (patch)
tree8357c77b840137dbd6bc89f0151cdd469c06b9cc /qpid/java/broker-plugins/jdbc-provider-bone
parentcb2ad01319b3b812fb1438c2363ba0485b3d1c4f (diff)
downloadqpid-python-ebf13e02e7371a262d96a96a40ff34bbe9f47816.tar.gz
QPID-5821: [Java Broker] Make JDBC username and password separate attributes within the model
Work done by Keith Wall <kwall@apache.org> and me. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1605787 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/jdbc-provider-bone')
-rw-r--r--qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java27
-rw-r--r--qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java25
2 files changed, 35 insertions, 17 deletions
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 75efababc0..2687a32bf9 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
@@ -20,9 +20,12 @@
*/
package org.apache.qpid.server.store.jdbc.bonecp;
+import static org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProviderFactory.MAX_CONNECTIONS_PER_PARTITION;
+import static org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProviderFactory.MIN_CONNECTIONS_PER_PARTITION;
+import static org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProviderFactory.PARTITION_COUNT;
+
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 java.sql.Connection;
@@ -31,32 +34,30 @@ import java.util.Map;
public class BoneCPConnectionProvider implements ConnectionProvider
{
- public static final String PARTITION_COUNT = "qpid.jdbcstore.bonecp.partitionCount";
- public static final String MAX_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.maxConnectionsPerPartition";
- public static final String MIN_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.minConnectionsPerPartition";
-
-
public static final int DEFAULT_MIN_CONNECTIONS_PER_PARTITION = 5;
public static final int DEFAULT_MAX_CONNECTIONS_PER_PARTITION = 10;
public static final int DEFAULT_PARTITION_COUNT = 4;
private final BoneCP _connectionPool;
- public BoneCPConnectionProvider(String connectionUrl, ConfiguredObject<?> storeSettings) throws SQLException
+ public BoneCPConnectionProvider(String connectionUrl, String username, String password, Map<String, String> providerAttributes) throws SQLException
{
- // TODO change interface to pass through username and password
BoneCPConfig config = new BoneCPConfig();
config.setJdbcUrl(connectionUrl);
- Map<String, String> context = storeSettings.getContext();
+ if (username != null)
+ {
+ config.setUsername(username);
+ config.setPassword(password);
+ }
- 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));
+ config.setMinConnectionsPerPartition(convertToIntWithDefault(MIN_CONNECTIONS_PER_PARTITION, providerAttributes, DEFAULT_MIN_CONNECTIONS_PER_PARTITION));
+ config.setMaxConnectionsPerPartition(convertToIntWithDefault(MAX_CONNECTIONS_PER_PARTITION, providerAttributes, DEFAULT_MAX_CONNECTIONS_PER_PARTITION));
+ config.setPartitionCount(convertToIntWithDefault(PARTITION_COUNT, providerAttributes, DEFAULT_PARTITION_COUNT));
_connectionPool = new BoneCP(config);
}
- private int getContextValueAsInt(String key, Map<String, String> context, int defaultValue)
+ private int convertToIntWithDefault(String key, Map<String, String> context, int defaultValue)
{
if (context.containsKey(key))
{
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 e7dc8bd16c..f894a6a27a 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
@@ -20,25 +20,42 @@
*/
package org.apache.qpid.server.store.jdbc.bonecp;
-import java.sql.SQLException;
+import static java.util.Arrays.asList;
+import static java.util.Collections.unmodifiableSet;
-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;
+import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
@PluggableService
public class BoneCPConnectionProviderFactory implements JDBCConnectionProviderFactory
{
+ public static final String PARTITION_COUNT = "qpid.jdbcstore.bonecp.partitionCount";
+ public static final String MAX_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.maxConnectionsPerPartition";
+ public static final String MIN_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.minConnectionsPerPartition";
+
+ private final Set<String> _supportedAttributes = unmodifiableSet(new HashSet<String>(asList(PARTITION_COUNT, MAX_CONNECTIONS_PER_PARTITION, MIN_CONNECTIONS_PER_PARTITION)));
+
@Override
public String getType()
{
return "BONECP";
}
- public ConnectionProvider getConnectionProvider(ConfiguredObject<?> parent, String connectionUrl)
+ public ConnectionProvider getConnectionProvider(String connectionUrl, String username, String password, Map<String, String> providerAttributes)
throws SQLException
{
- return new BoneCPConnectionProvider(connectionUrl, parent);
+ return new BoneCPConnectionProvider(connectionUrl, username, password, providerAttributes);
+ }
+
+ @Override
+ public Set<String> getProviderAttributeNames()
+ {
+ return _supportedAttributes;
}
}