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]

Reply via email to