This is an automated email from the ASF dual-hosted git repository.
vavrtom pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git
The following commit(s) were added to refs/heads/main by this push:
new 3fcd6961b0 QPID-8666: [Broker-J] Broker plugin jdbc-provider-bone
replacement (#235)
3fcd6961b0 is described below
commit 3fcd6961b0c0f45086daaef18f125fb6618e5af4
Author: Daniil Kirilyuk <[email protected]>
AuthorDate: Fri Jan 26 14:50:07 2024 +0100
QPID-8666: [Broker-J] Broker plugin jdbc-provider-bone replacement (#235)
* QPID-8666: [Broker-J] Broker plugin jdbc-provider-bone replacement
* QPID-8666: [Broker-J] Update HikariCPConnectionProviderTest.java
---------
Co-authored-by: vavrtom <[email protected]>
---
.../dependency-verification/DEPENDENCIES_REFERENCE | 14 +--
.../store/BrokerStoreUpgraderAndRecoverer.java | 9 +-
.../store/BrokerStoreUpgraderAndRecovererTest.java | 16 ++--
broker-plugins/jdbc-provider-bone/pom.xml | 84 -----------------
.../jdbc/bonecp/BoneCPConnectionProvider.java | 104 ---------------------
.../bonecp/BoneCPConnectionProviderFactory.java | 84 -----------------
.../jdbc/bonecp/BoneCPConnectionProviderTest.java | 68 --------------
broker-plugins/jdbc-provider-hikari/pom.xml | 77 +++++++++++++++
.../jdbc/hikaricp/HikariCPConnectionProvider.java | 102 ++++++++++++++++++++
.../HikariCPConnectionProviderFactory.java | 87 +++++++++++++++++
.../js/qpid/management/store/pool/hikaricp}/add.js | 5 +-
.../qpid/management/store/pool/hikaricp}/edit.js | 0
.../qpid/management/store/pool/hikaricp}/show.js | 14 +--
.../java/resources/store/pool/hikaricp}/show.html | 14 +--
.../HikariCPConnectionProviderFactoryTest.java} | 16 ++--
.../hikaricp/HikariCPConnectionProviderTest.java | 59 ++++++++++++
broker/pom.xml | 2 +-
pom.xml | 12 +--
qpid-test-utils/pom.xml | 6 ++
19 files changed, 377 insertions(+), 396 deletions(-)
diff --git
a/apache-qpid-broker-j/src/main/assembly/dependency-verification/DEPENDENCIES_REFERENCE
b/apache-qpid-broker-j/src/main/assembly/dependency-verification/DEPENDENCIES_REFERENCE
index 9a3fb5093f..08263adc73 100644
---
a/apache-qpid-broker-j/src/main/assembly/dependency-verification/DEPENDENCIES_REFERENCE
+++
b/apache-qpid-broker-j/src/main/assembly/dependency-verification/DEPENDENCIES_REFERENCE
@@ -84,12 +84,6 @@ From: 'FasterXML' (http://fasterxml.com/)
License: The Apache Software License, Version 2.0
(https://www.apache.org/licenses/LICENSE-2.0.txt)
-From: 'JolBox' (http://jolbox.com)
-
- - BoneCP :: Core Library (http://jolbox.com/bonecp)
com.jolbox:bonecp:bundle:0.8.0.RELEASE
- License: Apache v2 (http://www.apache.org/licenses/LICENSE-2.0.html)
-
-
From: 'Mort Bay Consulting' (http://www.mortbay.com)
- Jetty :: Jakarta Servlet API and Schemas for JPMS and OSGi
(https://eclipse.org/jetty/jetty-jakarta-servlet-api)
org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api:jar:5.0.2
@@ -187,7 +181,7 @@ From: 'The Apache Software Foundation'
(https://www.apache.org/)
- Apache Qpid Broker-J LogBack JDBC Logging Plug-in
(http://qpid.apache.org/components/broker-plugins/qpid-broker-plugins-jdbc-logging-logback)
org.apache.qpid:qpid-broker-plugins-jdbc-logging-logback:jar
License: Apache-2.0 (https://www.apache.org/licenses/LICENSE-2.0.txt)
- - Apache Qpid Broker-J JDBC Message Store Connection Pooling Plug-in
(http://qpid.apache.org/components/broker-plugins/qpid-broker-plugins-jdbc-provider-bone)
org.apache.qpid:qpid-broker-plugins-jdbc-provider-bone:jar
+ - Apache Qpid Broker-J JDBC Message Store Connection Pooling Plug-in
(http://qpid.apache.org/components/broker-plugins/qpid-broker-plugins-jdbc-provider-hikari)
org.apache.qpid:qpid-broker-plugins-jdbc-provider-hikari:jar
License: Apache-2.0 (https://www.apache.org/licenses/LICENSE-2.0.txt)
- Apache Qpid Broker-J JDBC Message Store Plug-in
(http://qpid.apache.org/components/broker-plugins/qpid-broker-plugins-jdbc-store)
org.apache.qpid:qpid-broker-plugins-jdbc-store:jar
@@ -289,6 +283,12 @@ From: 'Webtide' (https://webtide.com)
License: Apache Software License - Version 2.0
(https://www.apache.org/licenses/LICENSE-2.0)
+From: 'Zaxxer.com' (https://github.com/brettwooldridge)
+
+ - HikariCP (https://github.com/brettwooldridge/HikariCP)
com.zaxxer:HikariCP:bundle:5.1.0
+ License: The Apache Software License, Version 2.0
(https://www.apache.org/licenses/LICENSE-2.0.txt)
+
+
diff --git
a/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
b/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
index b8b3488b9f..c78884cbe8 100644
---
a/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
+++
b/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
@@ -805,11 +805,10 @@ public class BrokerStoreUpgraderAndRecoverer extends
AbstractConfigurationStoreU
addAttributeTransformer("jdbcBytesForBlob",
addContextVar("qpid.jdbcstore.useBytesForBlob")).
addAttributeTransformer("jdbcBlobType",
addContextVar("qpid.jdbcstore.blobType")).
addAttributeTransformer("jdbcVarbinaryType",
addContextVar("qpid.jdbcstore.varBinaryType")).
- addAttributeTransformer("partitionCount",
addContextVar("qpid.jdbcstore.bonecp.partitionCount")).
- addAttributeTransformer("maxConnectionsPerPartition",
-
addContextVar("qpid.jdbcstore.bonecp.maxConnectionsPerPartition")).
- addAttributeTransformer("minConnectionsPerPartition",
-
addContextVar("qpid.jdbcstore.bonecp.minConnectionsPerPartition")),
+ addAttributeTransformer("maximumPoolSize",
+
addContextVar("qpid.jdbcstore.hikaricp.maximumPoolSize")).
+ addAttributeTransformer("minimumIdle",
+
addContextVar("qpid.jdbcstore.hikaricp.minimumIdle")),
"BDB_HA", new AttributesTransformer().
addAttributeTransformer("id", copyAttribute()).
addAttributeTransformer("createdTime", copyAttribute()).
diff --git
a/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
b/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
index 9d2232ba30..cc34fd03c4 100644
---
a/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
+++
b/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
@@ -90,18 +90,17 @@ public class BrokerStoreUpgraderAndRecovererTest extends
UnitTestBase
}
@Test
- public void testUpgradeVirtualHostWithJDBCStoreAndBoneCPPool()
+ public void testUpgradeVirtualHostWithJDBCStoreAndHikariCPPool()
{
final Map<String, Object> hostAttributes = ImmutableMap.<String,
Object>builder()
.put("name", VIRTUALHOST_NAME)
.put("modelVersion", "0.4")
- .put("connectionPool", "BONECP")
+ .put("connectionPool", "HIKARICP")
.put("connectionURL",
"jdbc:derby://localhost:1527/tmp/vh/test;create=true")
.put("createdBy", VIRTUALHOST_CREATED_BY)
.put("createdTime", VIRTUALHOST_CREATE_TIME)
- .put("maxConnectionsPerPartition", 7)
- .put("minConnectionsPerPartition", 6)
- .put("partitionCount", 2)
+ .put("maximumPoolSize", 7)
+ .put("minimumIdle", 6)
.put("storeType", "jdbc")
.put("type", "STANDARD")
.put("jdbcBigIntType", "mybigint")
@@ -122,10 +121,9 @@ public class BrokerStoreUpgraderAndRecovererTest extends
UnitTestBase
"qpid.jdbcstore.varBinaryType", "myvarbinary",
"qpid.jdbcstore.blobType", "myblob",
"qpid.jdbcstore.useBytesForBlob", true,
- "qpid.jdbcstore.bonecp.maxConnectionsPerPartition", 7,
- "qpid.jdbcstore.bonecp.minConnectionsPerPartition", 6,
- "qpid.jdbcstore.bonecp.partitionCount", 2);
- final Map<String,Object> expectedAttributes =
Map.of("connectionPoolType", "BONECP",
+ "qpid.jdbcstore.hikaricp.maximumPoolSize", 7,
+ "qpid.jdbcstore.hikaricp.minimumIdle", 6);
+ final Map<String,Object> expectedAttributes =
Map.of("connectionPoolType", "HIKARICP",
"connectionUrl",
"jdbc:derby://localhost:1527/tmp/vh/test;create=true",
"createdBy", VIRTUALHOST_CREATED_BY,
"createdTime", VIRTUALHOST_CREATE_TIME,
diff --git a/broker-plugins/jdbc-provider-bone/pom.xml
b/broker-plugins/jdbc-provider-bone/pom.xml
deleted file mode 100644
index 94164a0f10..0000000000
--- a/broker-plugins/jdbc-provider-bone/pom.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.qpid</groupId>
- <artifactId>qpid-broker-parent</artifactId>
- <version>9.1.1-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
- </parent>
-
- <artifactId>qpid-broker-plugins-jdbc-provider-bone</artifactId>
- <name>Apache Qpid Broker-J JDBC Message Store Connection Pooling
Plug-in</name>
- <description>JDBC Message Store Connection Pooling broker plug-in using
BoneCP</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.qpid</groupId>
- <artifactId>qpid-broker-plugins-jdbc-store</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.qpid</groupId>
- <artifactId>qpid-broker-codegen</artifactId>
- <optional>true</optional>
- </dependency>
-
- <dependency>
- <groupId>com.jolbox</groupId>
- <artifactId>bonecp</artifactId>
- <exclusions>
- <exclusion>
- <!-- exclude and specify a fixed version below -->
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.qpid</groupId>
- <artifactId>qpid-test-utils</artifactId>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-
- <build>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- <resource>
- <directory>src/main/java</directory>
- <includes>
- <include>resources/</include>
- </includes>
- </resource>
- </resources>
- </build>
-
-</project>
diff --git
a/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
b/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
deleted file mode 100644
index bcfa0db8ce..0000000000
---
a/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *
- * 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.bonecp;
-
-import static
org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProviderFactory.JDBCSTORE_PREFIX;
-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 java.sql.Connection;
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.stream.Collectors;
-
-import com.jolbox.bonecp.BoneCP;
-import com.jolbox.bonecp.BoneCPConfig;
-
-import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.store.jdbc.ConnectionProvider;
-import org.apache.qpid.server.util.ServerScopedRuntimeException;
-
-public class BoneCPConnectionProvider implements ConnectionProvider
-{
- 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, String username,
String password, Map<String, String> providerAttributes) throws SQLException
- {
- _connectionPool = new BoneCP(createBoneCPConfig(connectionUrl,
username, password, providerAttributes));
- }
-
- static BoneCPConfig createBoneCPConfig(final String connectionUrl,
- final String username,
- final String password,
- final Map<String, String>
providerAttributes)
- {
- BoneCPConfig config = new BoneCPConfig();
- config.setJdbcUrl(connectionUrl);
- if (username != null)
- {
- config.setUsername(username);
- config.setPassword(password);
- }
-
- Map<String, String> attributes = new HashMap<>(providerAttributes);
- attributes.putIfAbsent(MIN_CONNECTIONS_PER_PARTITION,
String.valueOf(DEFAULT_MIN_CONNECTIONS_PER_PARTITION));
- attributes.putIfAbsent(MAX_CONNECTIONS_PER_PARTITION,
String.valueOf(DEFAULT_MAX_CONNECTIONS_PER_PARTITION));
- attributes.putIfAbsent(PARTITION_COUNT,
String.valueOf(DEFAULT_PARTITION_COUNT));
-
- Map<String, String> propertiesMap =
- attributes.entrySet()
- .stream()
- .collect(Collectors.toMap(p ->
p.getKey().substring(JDBCSTORE_PREFIX.length()),
- Map.Entry::getValue));
-
- Properties properties = new Properties();
- properties.putAll(propertiesMap);
-
- try
- {
- config.setProperties(properties);
- }
- catch (Exception e)
- {
- throw new IllegalConfigurationException("Unexpected exception on
applying BoneCP configuration", e);
- }
- return config;
- }
-
- @Override
- public Connection getConnection() throws SQLException
- {
- return _connectionPool.getConnection();
- }
-
- @Override
- public void close() throws SQLException
- {
- _connectionPool.shutdown();
- }
-}
diff --git
a/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
b/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
deleted file mode 100644
index 9040fb428a..0000000000
---
a/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *
- * 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.bonecp;
-
-import static java.util.Collections.unmodifiableSet;
-
-import java.lang.reflect.Modifier;
-import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import com.jolbox.bonecp.BoneCPConfig;
-
-import org.apache.qpid.server.plugin.PluggableService;
-import org.apache.qpid.server.store.jdbc.ConnectionProvider;
-import org.apache.qpid.server.store.jdbc.JDBCConnectionProviderFactory;
-
-@PluggableService
-public class BoneCPConnectionProviderFactory implements
JDBCConnectionProviderFactory
-{
- static final String JDBCSTORE_PREFIX = "qpid.jdbcstore.";
- static final String BONECP_SETTING_PREFIX = JDBCSTORE_PREFIX + "bonecp.";
- static final String PARTITION_COUNT = BONECP_SETTING_PREFIX +
"partitionCount";
- static final String MAX_CONNECTIONS_PER_PARTITION = BONECP_SETTING_PREFIX
+ "maxConnectionsPerPartition";
- static final String MIN_CONNECTIONS_PER_PARTITION = BONECP_SETTING_PREFIX
+ "minConnectionsPerPartition";
-
- private final Set<String> _supportedAttributes;
-
- public BoneCPConnectionProviderFactory()
- {
- Set<String> names = Arrays.stream(BoneCPConfig.class.getMethods())
- .filter(m -> m.getName().startsWith("set")
- && m.getName().length() > 3
- &&
Modifier.isPublic(m.getModifiers())
- && m.getParameterCount() == 1
- &&
(m.getParameterTypes()[0].isPrimitive()
- || m.getParameterTypes()[0]
== String.class))
- .map(m -> {
- String n = m.getName().substring(3);
- n = BONECP_SETTING_PREFIX +
Character.toLowerCase(n.charAt(0)) + n.substring(1);
- return n;
- }).collect(Collectors.toSet());
- _supportedAttributes = unmodifiableSet(names);
- }
-
- @Override
- public String getType()
- {
- return "BONECP";
- }
-
- @Override
- public ConnectionProvider getConnectionProvider(String connectionUrl,
String username, String password, Map<String, String> providerAttributes)
- throws SQLException
- {
- return new BoneCPConnectionProvider(connectionUrl, username, password,
providerAttributes);
- }
-
- @Override
- public Set<String> getProviderAttributeNames()
- {
- return _supportedAttributes;
- }
-}
diff --git
a/broker-plugins/jdbc-provider-bone/src/test/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderTest.java
b/broker-plugins/jdbc-provider-bone/src/test/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderTest.java
deleted file mode 100644
index 2b8ce8b62a..0000000000
---
a/broker-plugins/jdbc-provider-bone/src/test/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *
- * 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.bonecp;
-
-import static
org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProvider.DEFAULT_MAX_CONNECTIONS_PER_PARTITION;
-import static
org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProvider.DEFAULT_MIN_CONNECTIONS_PER_PARTITION;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.jolbox.bonecp.BoneCPConfig;
-
-import org.junit.jupiter.api.Test;
-
-import org.apache.qpid.test.utils.UnitTestBase;
-
-public class BoneCPConnectionProviderTest extends UnitTestBase
-{
- @Test
- public void testCreateBoneCPConfig()
- {
-
- final Map<String, String> attributes = new HashMap<>();
- attributes.put("qpid.jdbcstore.bonecp.idleMaxAgeInMinutes", "123");
- attributes.put("qpid.jdbcstore.bonecp.connectionTimeoutInMs", "1234");
- attributes.put("qpid.jdbcstore.bonecp.connectionTestStatement",
"select 1");
- attributes.put("qpid.jdbcstore.bonecp.logStatementsEnabled", "true");
- attributes.put("qpid.jdbcstore.bonecp.partitionCount", "12");
-
- String connectionUrl = "jdbc:mariadb://localhost:3306/test";
- String username = "usr";
- String password = "pwd";
- BoneCPConfig config =
- BoneCPConnectionProvider.createBoneCPConfig(connectionUrl,
username, password, attributes);
- assertEquals(connectionUrl, config.getJdbcUrl());
- assertEquals(username, config.getUsername());
- assertEquals(password, config.getPassword());
- assertEquals(123, config.getIdleMaxAgeInMinutes(), "Unexpected
idleMaxAgeInMinutes");
- assertEquals(1234, config.getConnectionTimeoutInMs(), "Unexpected
connectionTimeout");
- assertEquals("select 1", config.getConnectionTestStatement(),
"Unexpected connectionTestStatement");
- assertTrue(config.isLogStatementsEnabled(), "Unexpected
logStatementsEnabled");
- assertEquals(DEFAULT_MAX_CONNECTIONS_PER_PARTITION,
config.getMaxConnectionsPerPartition(),
- "Unexpected maxConnectionsPerPartition");
- assertEquals(DEFAULT_MIN_CONNECTIONS_PER_PARTITION,
config.getMinConnectionsPerPartition(),
- "Unexpected minConnectionsPerPartition");
- assertEquals(12, config.getPartitionCount(), "Unexpected
partitionCount");
- }
-}
diff --git a/broker-plugins/jdbc-provider-hikari/pom.xml
b/broker-plugins/jdbc-provider-hikari/pom.xml
new file mode 100644
index 0000000000..4e9df568c7
--- /dev/null
+++ b/broker-plugins/jdbc-provider-hikari/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-parent</artifactId>
+ <version>9.1.1-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>qpid-broker-plugins-jdbc-provider-hikari</artifactId>
+ <name>Apache Qpid Broker-J JDBC Message Store Connection Pooling
Plug-in</name>
+ <description>JDBC Message Store Connection Pooling broker plug-in using
HikariCP</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-plugins-jdbc-store</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-codegen</artifactId>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>com.zaxxer</groupId>
+ <artifactId>HikariCP</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-test-utils</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>resources/</include>
+ </includes>
+ </resource>
+ </resources>
+ </build>
+
+</project>
diff --git
a/broker-plugins/jdbc-provider-hikari/src/main/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProvider.java
b/broker-plugins/jdbc-provider-hikari/src/main/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProvider.java
new file mode 100644
index 0000000000..62b5c68e4c
--- /dev/null
+++
b/broker-plugins/jdbc-provider-hikari/src/main/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProvider.java
@@ -0,0 +1,102 @@
+/*
+ *
+ * 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.hikaricp;
+
+import static
org.apache.qpid.server.store.jdbc.hikaricp.HikariCPConnectionProviderFactory.JDBC_STORE_PREFIX;
+import static
org.apache.qpid.server.store.jdbc.hikaricp.HikariCPConnectionProviderFactory.MAX_POOLSIZE;
+import static
org.apache.qpid.server.store.jdbc.hikaricp.HikariCPConnectionProviderFactory.MIN_IDLE;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.stream.Collectors;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.store.jdbc.ConnectionProvider;
+
+public class HikariCPConnectionProvider implements ConnectionProvider
+{
+ public static final int DEFAULT_MIN_IDLE = 20;
+ public static final int DEFAULT_MAX_POOLSIZE = 40;
+
+ private final HikariDataSource _dataSource;
+
+ public HikariCPConnectionProvider(final String connectionUrl,
+ final String username,
+ final String password,
+ final Map<String, String>
providerAttributes)
+ {
+ final HikariConfig config = createHikariCPConfig(connectionUrl,
username, password, providerAttributes);
+ _dataSource = new HikariDataSource(config);
+ }
+
+ static HikariConfig createHikariCPConfig(final String connectionUrl,
+ final String username,
+ final String password,
+ final Map<String, String>
providerAttributes)
+ {
+ final Map<String, String> attributes = new
HashMap<>(providerAttributes);
+ attributes.putIfAbsent(MIN_IDLE, String.valueOf(DEFAULT_MIN_IDLE));
+ attributes.putIfAbsent(MAX_POOLSIZE,
String.valueOf(DEFAULT_MAX_POOLSIZE));
+
+ final int prefixLength = (JDBC_STORE_PREFIX + "hikaricp.").length();
+ final Map<String, String> propertiesMap = attributes.entrySet()
+ .stream()
+ .collect(Collectors.toMap(entry ->
entry.getKey().substring(prefixLength), Map.Entry::getValue));
+
+ final Properties properties = new Properties();
+ properties.putAll(propertiesMap);
+
+ try
+ {
+ final HikariConfig config = new HikariConfig(properties);
+ config.setJdbcUrl(connectionUrl);
+ if (username != null)
+ {
+ config.setUsername(username);
+ config.setPassword(password);
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new IllegalConfigurationException("Unexpected exception on
applying HikariCP configuration", e);
+ }
+
+ }
+
+ @Override
+ public Connection getConnection() throws SQLException
+ {
+ return _dataSource.getConnection();
+ }
+
+ @Override
+ public void close()
+ {
+ _dataSource.close();
+ }
+}
diff --git
a/broker-plugins/jdbc-provider-hikari/src/main/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderFactory.java
b/broker-plugins/jdbc-provider-hikari/src/main/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderFactory.java
new file mode 100644
index 0000000000..fad7577b77
--- /dev/null
+++
b/broker-plugins/jdbc-provider-hikari/src/main/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderFactory.java
@@ -0,0 +1,87 @@
+/*
+ *
+ * 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.hikaricp;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.zaxxer.hikari.HikariConfig;
+
+import org.apache.qpid.server.plugin.PluggableService;
+import org.apache.qpid.server.store.jdbc.ConnectionProvider;
+import org.apache.qpid.server.store.jdbc.JDBCConnectionProviderFactory;
+
+@PluggableService
+public class HikariCPConnectionProviderFactory implements
JDBCConnectionProviderFactory
+{
+ static final String JDBC_STORE_PREFIX = "qpid.jdbcstore.";
+ static final String HIKARICP_SETTING_PREFIX = JDBC_STORE_PREFIX +
"hikaricp.";
+ static final String MAX_POOLSIZE = HIKARICP_SETTING_PREFIX +
"maximumPoolSize";
+ static final String MIN_IDLE = HIKARICP_SETTING_PREFIX + "minimumIdle";
+
+ private final Set<String> _supportedAttributes;
+
+ public HikariCPConnectionProviderFactory()
+ {
+ _supportedAttributes = Arrays.stream(HikariConfig.class.getMethods())
+ .filter(method -> isSetter(method) &&
+ Modifier.isPublic(method.getModifiers()) &&
method.getParameterCount() == 1 &&
+ isPrimitiveOrString(method.getParameterTypes()[0]))
+ .map(method ->
+ {
+ String name = method.getName().substring(3);
+ name = HIKARICP_SETTING_PREFIX +
Character.toLowerCase(name.charAt(0)) + name.substring(1);
+ return name;
+ }).collect(Collectors.toUnmodifiableSet());
+ }
+
+ @Override
+ public String getType()
+ {
+ return "HIKARICP";
+ }
+
+ @Override
+ public ConnectionProvider getConnectionProvider(String connectionUrl,
String username, String password, Map<String, String> providerAttributes)
+ {
+ return new HikariCPConnectionProvider(connectionUrl, username,
password, providerAttributes);
+ }
+
+ @Override
+ public Set<String> getProviderAttributeNames()
+ {
+ return _supportedAttributes;
+ }
+
+ private boolean isSetter(Method method)
+ {
+ return method.getName().startsWith("set") && method.getName().length()
> 3;
+ }
+
+ private boolean isPrimitiveOrString(Class<?> parameterType)
+ {
+ return parameterType.isPrimitive() || parameterType == String.class;
+ }
+}
diff --git
a/broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/add.js
b/broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/add.js
similarity index 86%
rename from
broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/add.js
rename to
broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/add.js
index 1a40d86918..9e723e7490 100644
---
a/broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/add.js
+++
b/broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/add.js
@@ -37,9 +37,8 @@ define(["dojo/_base/xhr",
show: function (data)
{
data.context.addInheritedContext({
- "qpid.jdbcstore.bonecp.partitionCount": "4",
- "qpid.jdbcstore.bonecp.minConnectionsPerPartition": "5",
- "qpid.jdbcstore.bonecp.maxConnectionsPerPartition": "10"
+ "qpid.jdbcstore.hikaricp.minIdle": "5",
+ "qpid.jdbcstore.hikaricp.maxPoolsize": "10"
});
}
};
diff --git
a/broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/edit.js
b/broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/edit.js
similarity index 100%
rename from
broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/edit.js
rename to
broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/edit.js
diff --git
a/broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/show.js
b/broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/show.js
similarity index 88%
rename from
broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/show.js
rename to
broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/show.js
index 9cc166aba4..9ddd17ab6f 100644
---
a/broker-plugins/jdbc-provider-bone/src/main/java/resources/js/qpid/management/store/pool/bonecp/show.js
+++
b/broker-plugins/jdbc-provider-hikari/src/main/java/resources/js/qpid/management/store/pool/hikaricp/show.js
@@ -21,16 +21,16 @@
define(["dojo/_base/xhr", "dojo/parser", "dojox/html/entities", "dojo/query",
"dojo/_base/lang", "dojo/domReady!"],
function (xhr, parser, entities, query, lang)
{
- var fieldNames = ["maxConnectionsPerPartition",
"minConnectionsPerPartition", "partitionCount"];
+ var fieldNames = ["maxPoolsize", "minIdle"];
- function BoneCP(data)
+ function HikariCP(data)
{
var containerNode = data.containerNode;
this.management = data.management ? data.management :
data.parent.management;
this.modelObj = data.modelObj ? data.modelObj :
data.parent.modelObj;
var that = this;
xhr.get({
- url: "store/pool/bonecp/show.html",
+ url: "store/pool/hikaricp/show.html",
load: function (template)
{
containerNode.innerHTML = template;
@@ -48,7 +48,7 @@ define(["dojo/_base/xhr", "dojo/parser",
"dojox/html/entities", "dojo/query", "d
});
}
- BoneCP.prototype.update = function (data)
+ HikariCP.prototype.update = function (data)
{
if (this._initialized)
{
@@ -56,7 +56,7 @@ define(["dojo/_base/xhr", "dojo/parser",
"dojox/html/entities", "dojo/query", "d
}
};
- BoneCP.prototype._update = function (data)
+ HikariCP.prototype._update = function (data)
{
this.management.load(this.modelObj,
{
@@ -68,12 +68,12 @@ define(["dojo/_base/xhr", "dojo/parser",
"dojox/html/entities", "dojo/query", "d
for (var i = 0; i < fieldNames.length; i++)
{
var fieldName = fieldNames[i];
- var value = context ? context["qpid.jdbcstore.bonecp." +
fieldName] : "";
+ var value = context ? context["qpid.jdbcstore.hikaricp." +
fieldName] : "";
this[fieldName].innerHTML = value ?
entities.encode(String(value)) : "";
}
}));
};
- return BoneCP;
+ return HikariCP;
});
diff --git
a/broker-plugins/jdbc-provider-bone/src/main/java/resources/store/pool/bonecp/show.html
b/broker-plugins/jdbc-provider-hikari/src/main/java/resources/store/pool/hikaricp/show.html
similarity index 68%
rename from
broker-plugins/jdbc-provider-bone/src/main/java/resources/store/pool/bonecp/show.html
rename to
broker-plugins/jdbc-provider-hikari/src/main/java/resources/store/pool/hikaricp/show.html
index f4e59bfa9a..a7f8f24d1d 100644
---
a/broker-plugins/jdbc-provider-bone/src/main/java/resources/store/pool/bonecp/show.html
+++
b/broker-plugins/jdbc-provider-hikari/src/main/java/resources/store/pool/hikaricp/show.html
@@ -18,18 +18,14 @@
-->
<div>
<br/>
- <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Bone
Connection Pool Settings', open: false">
+ <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Hikari
Connection Pool Settings', open: false">
<div class="clear">
- <div class="formLabel-labelCell">Partition Count:</div>
- <div class="partitionCount"></div>
+ <div class="formLabel-labelCell">Minimum Idle Connections:</div>
+ <div class="minIdle"></div>
</div>
<div class="clear">
- <div class="formLabel-labelCell">Minimum connections per
Partition:</div>
- <div class="minConnectionsPerPartition"></div>
- </div>
- <div class="clear">
- <div class="formLabel-labelCell">Maximum connections per
Partition:</div>
- <div class="maxConnectionsPerPartition"></div>
+ <div class="formLabel-labelCell">Maximum Pool Size:</div>
+ <div class="maxPoolsize"></div>
</div>
<div class="clear"></div>
</div>
diff --git
a/broker-plugins/jdbc-provider-bone/src/test/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactoryTest.java
b/broker-plugins/jdbc-provider-hikari/src/test/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderFactoryTest.java
similarity index 59%
rename from
broker-plugins/jdbc-provider-bone/src/test/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactoryTest.java
rename to
broker-plugins/jdbc-provider-hikari/src/test/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderFactoryTest.java
index 22e9d91f42..2ffae7a95c 100644
---
a/broker-plugins/jdbc-provider-bone/src/test/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactoryTest.java
+++
b/broker-plugins/jdbc-provider-hikari/src/test/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderFactoryTest.java
@@ -18,11 +18,10 @@
* under the License.
*
*/
-package org.apache.qpid.server.store.jdbc.bonecp;
+package org.apache.qpid.server.store.jdbc.hikaricp;
-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 static
org.apache.qpid.server.store.jdbc.hikaricp.HikariCPConnectionProviderFactory.MAX_POOLSIZE;
+import static
org.apache.qpid.server.store.jdbc.hikaricp.HikariCPConnectionProviderFactory.MIN_IDLE;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -32,17 +31,16 @@ import org.junit.jupiter.api.Test;
import org.apache.qpid.test.utils.UnitTestBase;
-public class BoneCPConnectionProviderFactoryTest extends UnitTestBase
+public class HikariCPConnectionProviderFactoryTest extends UnitTestBase
{
@Test
public void testGetProviderAttributeNames()
{
- BoneCPConnectionProviderFactory factory = new
BoneCPConnectionProviderFactory();
+ HikariCPConnectionProviderFactory factory = new
HikariCPConnectionProviderFactory();
Set<String> supported = factory.getProviderAttributeNames();
assertFalse(supported.isEmpty(), "Supported settings cannot be empty");
- assertTrue(supported.contains(PARTITION_COUNT), "partitionCount is not
found");
- assertTrue(supported.contains(MAX_CONNECTIONS_PER_PARTITION),
"maxConnectionsPerPartition is not found");
- assertTrue(supported.contains(MIN_CONNECTIONS_PER_PARTITION),
"minConnectionsPerPartition is not found");
+ assertTrue(supported.contains(MAX_POOLSIZE), "maximumPoolSize is not
found");
+ assertTrue(supported.contains(MIN_IDLE), "minimumIdle is not found");
}
}
diff --git
a/broker-plugins/jdbc-provider-hikari/src/test/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderTest.java
b/broker-plugins/jdbc-provider-hikari/src/test/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderTest.java
new file mode 100644
index 0000000000..f34eb19dc0
--- /dev/null
+++
b/broker-plugins/jdbc-provider-hikari/src/test/java/org/apache/qpid/server/store/jdbc/hikaricp/HikariCPConnectionProviderTest.java
@@ -0,0 +1,59 @@
+/*
+ *
+ * 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.hikaricp;
+
+import static
org.apache.qpid.server.store.jdbc.hikaricp.HikariCPConnectionProvider.DEFAULT_MAX_POOLSIZE;
+import static
org.apache.qpid.server.store.jdbc.hikaricp.HikariCPConnectionProvider.DEFAULT_MIN_IDLE;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.zaxxer.hikari.HikariConfig;
+import org.junit.jupiter.api.Test;
+
+import org.apache.qpid.test.utils.UnitTestBase;
+
+public class HikariCPConnectionProviderTest extends UnitTestBase
+{
+ @Test
+ public void testCreateHikariCPConfig()
+ {
+ final Map<String, String> attributes = new HashMap<>();
+ attributes.put("qpid.jdbcstore.hikaricp.idleTimeout", "123");
+ attributes.put("qpid.jdbcstore.hikaricp.connectionTimeout", "1234");
+ attributes.put("qpid.jdbcstore.hikaricp.connectionTestQuery", "select
1");
+
+ String connectionUrl = "jdbc:mariadb://localhost:3306/test";
+ String username = "usr";
+ String password = "pwd";
+ HikariConfig config =
+ HikariCPConnectionProvider.createHikariCPConfig(connectionUrl,
username, password, attributes);
+ assertEquals(connectionUrl, config.getJdbcUrl());
+ assertEquals(username, config.getUsername());
+ assertEquals(password, config.getPassword());
+ assertEquals(123, config.getIdleTimeout(), "Unexpected idleTimeout");
+ assertEquals(1234, config.getConnectionTimeout(), "Unexpected
connectionTimeout");
+ assertEquals("select 1", config.getConnectionTestQuery(), "Unexpected
connectionTestQuery()");
+ assertEquals(DEFAULT_MAX_POOLSIZE, config.getMaximumPoolSize(),
"Unexpected maximumPoolSize");
+ assertEquals(DEFAULT_MIN_IDLE, config.getMinimumIdle(), "Unexpected
minimumIdle");
+ }
+}
diff --git a/broker/pom.xml b/broker/pom.xml
index ccf9c9554f..08cbc12132 100644
--- a/broker/pom.xml
+++ b/broker/pom.xml
@@ -111,7 +111,7 @@
<dependency>
<groupId>org.apache.qpid</groupId>
- <artifactId>qpid-broker-plugins-jdbc-provider-bone</artifactId>
+ <artifactId>qpid-broker-plugins-jdbc-provider-hikari</artifactId>
<scope>runtime</scope>
</dependency>
diff --git a/pom.xml b/pom.xml
index b8ba6eb28b..d6888c5ecd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,7 +113,7 @@
<jetty-version>11.0.18</jetty-version>
<!-- dependency version numbers -->
- <bonecp-version>0.8.0.RELEASE</bonecp-version>
+ <hikari-cp-version>5.1.0</hikari-cp-version>
<commons-cli-version>1.6.0</commons-cli-version>
<geronimo-jms-1-1-version>1.1.1</geronimo-jms-1-1-version>
@@ -184,7 +184,7 @@
<module>broker-plugins/amqp-msg-conv-0-10-to-1-0</module>
<module>broker-plugins/query-engine</module>
<module>broker-plugins/derby-store</module>
- <module>broker-plugins/jdbc-provider-bone</module>
+ <module>broker-plugins/jdbc-provider-hikari</module>
<module>broker-plugins/jdbc-store</module>
<module>broker-plugins/jdbc-logging-logback</module>
<module>broker-plugins/logging-logback</module>
@@ -318,7 +318,7 @@
<dependency>
<groupId>org.apache.qpid</groupId>
- <artifactId>qpid-broker-plugins-jdbc-provider-bone</artifactId>
+ <artifactId>qpid-broker-plugins-jdbc-provider-hikari</artifactId>
<version>${project.version}</version>
</dependency>
@@ -623,9 +623,9 @@
<version>${slf4j-version}</version>
</dependency>
<dependency>
- <groupId>com.jolbox</groupId>
- <artifactId>bonecp</artifactId>
- <version>${bonecp-version}</version>
+ <groupId>com.zaxxer</groupId>
+ <artifactId>HikariCP</artifactId>
+ <version>${hikari-cp-version}</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
diff --git a/qpid-test-utils/pom.xml b/qpid-test-utils/pom.xml
index 11f4f43489..24bd4401b4 100644
--- a/qpid-test-utils/pom.xml
+++ b/qpid-test-utils/pom.xml
@@ -101,6 +101,12 @@
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-core-annotations</artifactId>
<scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.kerby</groupId>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]