diff --git a/pom.xml b/pom.xml index 1f95a27c..2d1438d9 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 com.zaxxer @@ -40,26 +41,30 @@ UTF-8 - 3.0.0 + 3.0.1 5.4.0 - 5.0.2.Final + 5.0.7.Final 3.20.0-GA 0.11.4.1 - 2.5.1 + 2.5.3 3.1.2 1.10.19 - 4.6.0 - 2.4.3 - 1.7.12 - 2.4.1 + 4.8.0 + 2.4.5 + 1.7.16 + 2.5 org.sonatype.oss oss-parent - 7 + 9 + + 3.3.9 + + org.slf4j @@ -304,7 +309,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + 3.5.1 true 1.7 @@ -325,7 +330,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19 + 2.19.1 ${surefireArgLine} @@ -386,7 +391,7 @@ org.eluder.coveralls coveralls-maven-plugin - 4.0.0 + 4.1.0 coveralls diff --git a/src/main/java/com/zaxxer/hikari/HikariConfig.java b/src/main/java/com/zaxxer/hikari/HikariConfig.java index 849ea032..a05d8819 100644 --- a/src/main/java/com/zaxxer/hikari/HikariConfig.java +++ b/src/main/java/com/zaxxer/hikari/HikariConfig.java @@ -100,7 +100,7 @@ public class HikariConfig implements HikariConfigMXBean final Properties sysProps = System.getProperties(); AtomicInteger poolNumber = (AtomicInteger) sysProps.get("com.zaxxer.hikari.pool_number"); if (poolNumber == null) { - POOL_NUMBER = new AtomicInteger(); + POOL_NUMBER = new AtomicInteger(); sysProps.put("com.zaxxer.hikari.pool_number", POOL_NUMBER); } else { @@ -179,8 +179,8 @@ public class HikariConfig implements HikariConfigMXBean /** * Get the SQL query to be executed to test the validity of connections. - * - * @return the SQL query string, or null + * + * @return the SQL query string, or null */ public String getConnectionTestQuery() { @@ -190,7 +190,7 @@ public class HikariConfig implements HikariConfigMXBean /** * Set the SQL query to be executed to test the validity of connections. Using * the JDBC4 Connection.isValid() method to test connection validity can - * be more efficient on some databases and is recommended. See + * be more efficient on some databases and is recommended. See * {@link HikariConfig#setJdbc4ConnectionTest(boolean)}. * * @param connectionTestQuery a SQL query string @@ -498,7 +498,7 @@ public class HikariConfig implements HikariConfigMXBean if (metricRegistry instanceof String) { try { InitialContext initCtx = new InitialContext(); - metricRegistry = (MetricRegistry) initCtx.lookup((String) metricRegistry); + metricRegistry = initCtx.lookup((String) metricRegistry); } catch (NamingException e) { throw new IllegalArgumentException(e); @@ -534,7 +534,7 @@ public class HikariConfig implements HikariConfigMXBean if (healthCheckRegistry instanceof String) { try { InitialContext initCtx = new InitialContext(); - healthCheckRegistry = (HealthCheckRegistry) initCtx.lookup((String) healthCheckRegistry); + healthCheckRegistry = initCtx.lookup((String) healthCheckRegistry); } catch (NamingException e) { throw new IllegalArgumentException(e); @@ -709,7 +709,7 @@ public class HikariConfig implements HikariConfigMXBean /** * Set the default transaction isolation level. The specified value is the - * constant name from the Connection class, eg. + * constant name from the Connection class, eg. * TRANSACTION_REPEATABLE_READ. * * @param isolationLevel the name of the isolation level @@ -838,7 +838,7 @@ public class HikariConfig implements HikariConfigMXBean } if (leakDetectionThreshold > 0 && !unitTest) { - if (leakDetectionThreshold < TimeUnit.SECONDS.toMillis(2) || (leakDetectionThreshold > maxLifetime && maxLifetime > 0)) { + if (leakDetectionThreshold < TimeUnit.SECONDS.toMillis(2) || (leakDetectionThreshold > maxLifetime && maxLifetime > 0)) { LOGGER.warn("{} - leakDetectionThreshold is less than 2000ms or more than maxLifetime, disabling it.", poolName); leakDetectionThreshold = 0L; } diff --git a/src/main/java/com/zaxxer/hikari/HikariDataSource.java b/src/main/java/com/zaxxer/hikari/HikariDataSource.java index 9af78045..5588ccc5 100644 --- a/src/main/java/com/zaxxer/hikari/HikariDataSource.java +++ b/src/main/java/com/zaxxer/hikari/HikariDataSource.java @@ -166,7 +166,7 @@ public class HikariDataSource extends HikariConfig implements DataSource, Closea } if (unwrappedDataSource != null) { - return (T) unwrappedDataSource.unwrap(iface); + return unwrappedDataSource.unwrap(iface); } } diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 6a02de7f..5a761c6c 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -589,7 +589,7 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL // Detect retrograde time, allowing +128ms as per NTP spec. if (clockSource.plusMillis(now, 128) < clockSource.plusMillis(previous, HOUSEKEEPING_PERIOD_MS)) { - LOGGER.warn("{} - Retrograde clock change detected (housekeeper delta={}), soft-evicting connections from pool.", + LOGGER.warn("{} - Retrograde clock change detected (housekeeper delta={}), soft-evicting connections from pool.", clockSource.elapsedDisplayString(previous, now), poolName); previous = now; softEvictConnections(); @@ -609,8 +609,8 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL int removable = idleList.size() - config.getMinimumIdle(); if (removable > 0) { logPoolState("Before cleanup "); - afterPrefix = "After cleanup "; - + afterPrefix = "After cleanup "; + // Sort pool entries on lastAccessed Collections.sort(idleList, LASTACCESS_COMPARABLE); for (PoolEntry poolEntry : idleList) { @@ -618,9 +618,9 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL closeConnection(poolEntry, "(connection has passed idleTimeout)"); if (--removable == 0) { break; // keep min idle cons - }; + } } - } + } } } diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java index ef01bff9..c391729d 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java @@ -48,7 +48,7 @@ public abstract class ProxyConnection implements Connection static final int DIRTY_BIT_ISOLATION = 0b00100; static final int DIRTY_BIT_CATALOG = 0b01000; static final int DIRTY_BIT_NETTIMEOUT = 0b10000; - + private static final Logger LOGGER; private static final Set SQL_ERRORS; private static final ClockSource clockSource; @@ -58,7 +58,7 @@ public abstract class ProxyConnection implements Connection private final PoolEntry poolEntry; private final ProxyLeakTask leakTask; private final FastList openStatements; - + private int dirtyBits; private long lastAccess; private boolean isCommitStateDirty; @@ -171,7 +171,7 @@ public abstract class ProxyConnection implements Connection final void markCommitStateDirty() { if (isAutoCommit) { - lastAccess = clockSource.currentTime(); + lastAccess = clockSource.currentTime(); } else { isCommitStateDirty = true; @@ -179,7 +179,7 @@ public abstract class ProxyConnection implements Connection } /** - * + * */ void cancelLeakTask() { @@ -433,7 +433,7 @@ public abstract class ProxyConnection implements Connection return (T) delegate; } else if (delegate instanceof Wrapper) { - return (T) delegate.unwrap(iface); + return delegate.unwrap(iface); } throw new SQLException("Wrapped connection is not an instance of " + iface); @@ -450,12 +450,12 @@ public abstract class ProxyConnection implements Connection private static Connection getClosedConnection() { InvocationHandler handler = new InvocationHandler() { - + @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { final String methodName = method.getName(); - if ("abort".equals(methodName)) { + if ("abort".equals(methodName)) { return Void.TYPE; } else if ("isValid".equals(methodName)) { diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java b/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java index 63c075ae..19339790 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java @@ -98,9 +98,9 @@ public abstract class ProxyResultSet implements ResultSet return (T) delegate; } else if (delegate instanceof Wrapper) { - return (T) delegate.unwrap(iface); + return delegate.unwrap(iface); } throw new SQLException("Wrapped ResultSet is not an instance of " + iface); - } + } } diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java b/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java index ff706fd1..1d92cd82 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java @@ -109,7 +109,7 @@ public abstract class ProxyStatement implements Statement { connection.markCommitStateDirty(); ResultSet resultSet = delegate.executeQuery(sql); - return ProxyFactory.getProxyResultSet(connection, this, resultSet); + return ProxyFactory.getProxyResultSet(connection, this, resultSet); } /** {@inheritDoc} */ @@ -232,7 +232,7 @@ public abstract class ProxyStatement implements Statement return (T) delegate; } else if (delegate instanceof Wrapper) { - return (T) delegate.unwrap(iface); + return delegate.unwrap(iface); } throw new SQLException("Wrapped statement is not an instance of " + iface); diff --git a/src/main/java/com/zaxxer/hikari/util/ClockSource.java b/src/main/java/com/zaxxer/hikari/util/ClockSource.java index 221d2fc8..7a818053 100644 --- a/src/main/java/com/zaxxer/hikari/util/ClockSource.java +++ b/src/main/java/com/zaxxer/hikari/util/ClockSource.java @@ -30,12 +30,12 @@ import java.util.concurrent.TimeUnit; /** * A resolution-independent provider of current time-stamps and elapsed time * calculations. - * + * * @author Brett Wooldridge */ public interface ClockSource { - final ClockSource INSTANCE = Factory.create(); + ClockSource INSTANCE = Factory.create(); /** * Get the current time-stamp (resolution is opaque). @@ -94,7 +94,7 @@ public interface ClockSource /** * Return the specified opaque time-stamp plus the specified number of milliseconds. * - * @param time an opaque time-stamp + * @param time an opaque time-stamp * @param millis milliseconds to add * @return a new opaque time-stamp */ @@ -120,7 +120,7 @@ public interface ClockSource String[] TIMEUNIT_DISPLAY_VALUES = {"ns", "μs", "ms", "s", "m", "h", "d"}; /** - * Factory class used to create a platform-specific ClockSource. + * Factory class used to create a platform-specific ClockSource. */ class Factory { diff --git a/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java b/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java index 1955e988..3de61175 100644 --- a/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java +++ b/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java @@ -68,7 +68,7 @@ public final class JavassistProxyFactory generateProxyClass(Connection.class, ProxyConnection.class.getName(), methodBody); generateProxyClass(Statement.class, ProxyStatement.class.getName(), methodBody); generateProxyClass(ResultSet.class, ProxyResultSet.class.getName(), methodBody); - + // For these we have to cast the delegate methodBody = "{ try { return ((cast) delegate).method($$); } catch (SQLException e) { throw checkException(e); } }"; generateProxyClass(PreparedStatement.class, ProxyPreparedStatement.class.getName(), methodBody); @@ -119,7 +119,7 @@ public final class JavassistProxyFactory CtClass superCt = classPool.getCtClass(superClassName); CtClass targetCt = classPool.makeClass(newClassName, superCt); - targetCt.setModifiers(Modifier.FINAL); + targetCt.setModifiers(Modifier.FINAL); System.out.println("Generating " + newClassName); @@ -216,10 +216,10 @@ public final class JavassistProxyFactory return intf.getDeclaredMethod(intfMethod.getName(), paramTypes.toArray(new Class[paramTypes.size()])).toString().contains("default "); } - + private static Set> getAllInterfaces(Class clazz) { - Set> interfaces = new HashSet>(); + Set> interfaces = new HashSet<>(); for (Class intf : Arrays.asList(clazz.getInterfaces())) { if (intf.getInterfaces().length > 0) { interfaces.addAll(getAllInterfaces(intf)); diff --git a/src/main/java/com/zaxxer/hikari/util/Sequence.java b/src/main/java/com/zaxxer/hikari/util/Sequence.java index 9436f43b..1b58f518 100644 --- a/src/main/java/com/zaxxer/hikari/util/Sequence.java +++ b/src/main/java/com/zaxxer/hikari/util/Sequence.java @@ -45,7 +45,7 @@ public interface Sequence /** * Factory class used to create a platform-specific ClockSource. */ - public final class Factory + final class Factory { public static Sequence create() { diff --git a/src/test/java/com/zaxxer/hikari/pool/ConnectionRaceConditionTest.java b/src/test/java/com/zaxxer/hikari/pool/ConnectionRaceConditionTest.java index b44a43ce..eb2c0b8d 100644 --- a/src/test/java/com/zaxxer/hikari/pool/ConnectionRaceConditionTest.java +++ b/src/test/java/com/zaxxer/hikari/pool/ConnectionRaceConditionTest.java @@ -34,7 +34,7 @@ public class ConnectionRaceConditionTest TestElf.setSlf4jLogLevel(ConcurrentBag.class, Level.INFO); - final AtomicReference ref = new AtomicReference(null); + final AtomicReference ref = new AtomicReference<>(null); // Initialize HikariPool with no initial connections and room to grow try (final HikariDataSource ds = new HikariDataSource(config)) { diff --git a/src/test/java/com/zaxxer/hikari/pool/MiscTest.java b/src/test/java/com/zaxxer/hikari/pool/MiscTest.java index 6cf3bc2e..dd2746d7 100644 --- a/src/test/java/com/zaxxer/hikari/pool/MiscTest.java +++ b/src/test/java/com/zaxxer/hikari/pool/MiscTest.java @@ -47,8 +47,7 @@ public class MiscTest config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); TestElf.setConfigUnitTest(true); - final HikariDataSource ds = new HikariDataSource(config); - try { + try (HikariDataSource ds = new HikariDataSource(config)) { PrintWriter writer = new PrintWriter(System.out); ds.setLogWriter(writer); Assert.assertSame(writer, ds.getLogWriter()); @@ -57,7 +56,6 @@ public class MiscTest finally { TestElf.setConfigUnitTest(false); - ds.close(); } } @@ -102,8 +100,7 @@ public class MiscTest config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); TestElf.setConfigUnitTest(true); - final HikariDataSource ds = new HikariDataSource(config); - try { + try (HikariDataSource ds = new HikariDataSource(config)) { TestElf.setSlf4jLogLevel(HikariPool.class, Level.DEBUG); TestElf.getPool(ds).logPoolState(); @@ -119,7 +116,6 @@ public class MiscTest finally { TestElf.setConfigUnitTest(false); - ds.close(); } } } diff --git a/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java b/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java index 4867445a..25bf293a 100644 --- a/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java +++ b/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java @@ -92,7 +92,7 @@ public class PostgresTest try (Connection conn = ds.getConnection()) { System.err.println("\nGot a connection, and released it. Now, enable the firewall."); } - + TestElf.getPool(ds).logPoolState(); UtilityElf.quietlySleep(5000L); @@ -142,7 +142,7 @@ public class PostgresTest catch (SQLException e) { // expected } - }; + } }.start(); } @@ -189,10 +189,10 @@ public class PostgresTest e.printStackTrace(); // throw new RuntimeException(e); } - + // UtilityElf.quietlySleep(10L); //Math.max(50L, (long)(Math.random() * 250L))); } while (ClockSource.INSTANCE.elapsedMillis(start) < TimeUnit.MINUTES.toMillis(5)); - }; + } }); } diff --git a/src/test/java/com/zaxxer/hikari/pool/ShutdownTest.java b/src/test/java/com/zaxxer/hikari/pool/ShutdownTest.java index e664548a..bda16484 100644 --- a/src/test/java/com/zaxxer/hikari/pool/ShutdownTest.java +++ b/src/test/java/com/zaxxer/hikari/pool/ShutdownTest.java @@ -304,7 +304,7 @@ public class ShutdownTest try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } ds.close(); } - }; + } }; t.start(); @@ -318,7 +318,7 @@ public class ShutdownTest catch (IllegalStateException e) { Assert.fail(e.getMessage()); } - }; + } }; t2.start(); diff --git a/src/test/java/com/zaxxer/hikari/pool/TestConcurrentBag.java b/src/test/java/com/zaxxer/hikari/pool/TestConcurrentBag.java index c928e33b..51875888 100644 --- a/src/test/java/com/zaxxer/hikari/pool/TestConcurrentBag.java +++ b/src/test/java/com/zaxxer/hikari/pool/TestConcurrentBag.java @@ -63,7 +63,7 @@ public class TestConcurrentBag @Test public void testConcurrentBag() throws Exception { - ConcurrentBag bag = new ConcurrentBag( new IBagStateListener() { + ConcurrentBag bag = new ConcurrentBag<>(new IBagStateListener() { @Override public Future addBagItem() { diff --git a/src/test/java/com/zaxxer/hikari/pool/TestFastList.java b/src/test/java/com/zaxxer/hikari/pool/TestFastList.java index 7bb07530..7193e9df 100644 --- a/src/test/java/com/zaxxer/hikari/pool/TestFastList.java +++ b/src/test/java/com/zaxxer/hikari/pool/TestFastList.java @@ -14,9 +14,9 @@ public class TestFastList @Test public void testAddRemove() { - ArrayList verifyList = new ArrayList(); + ArrayList verifyList = new ArrayList<>(); - FastList list = new FastList(Statement.class); + FastList list = new FastList<>(Statement.class); for (int i = 0; i < 32; i++) { StubStatement statement = new StubStatement(null); @@ -36,9 +36,9 @@ public class TestFastList @Test public void testAddRemoveTail() { - ArrayList verifyList = new ArrayList(); + ArrayList verifyList = new ArrayList<>(); - FastList list = new FastList(Statement.class); + FastList list = new FastList<>(Statement.class); for (int i = 0; i < 32; i++) { StubStatement statement = new StubStatement(null); @@ -58,9 +58,9 @@ public class TestFastList @Test public void testOverflow() { - ArrayList verifyList = new ArrayList(); + ArrayList verifyList = new ArrayList<>(); - FastList list = new FastList(Statement.class); + FastList list = new FastList<>(Statement.class); for (int i = 0; i < 100; i++) { StubStatement statement = new StubStatement(null); @@ -78,7 +78,7 @@ public class TestFastList @Test public void testClear() { - FastList list = new FastList(Statement.class); + FastList list = new FastList<>(Statement.class); for (int i = 0; i < 100; i++) { StubStatement statement = new StubStatement(null); @@ -93,7 +93,7 @@ public class TestFastList @Test public void testRemoveLast() { - FastList list = new FastList(Statement.class); + FastList list = new FastList<>(Statement.class); Statement last = null; for (int i = 0; i < 100; i++) @@ -106,19 +106,19 @@ public class TestFastList Assert.assertEquals(last, list.removeLast()); Assert.assertEquals(99, list.size()); } - + @Test public void testPolyMorphism1() { class Foo implements Base2 { - + } class Bar extends Foo { - + } - FastList list = new FastList(Base.class, 2); + FastList list = new FastList<>(Base.class, 2); list.add(new Foo()); list.add(new Foo()); list.add(new Bar()); @@ -126,11 +126,11 @@ public class TestFastList interface Base { - + } interface Base2 extends Base { - + } } diff --git a/src/test/java/com/zaxxer/hikari/pool/TestProxies.java b/src/test/java/com/zaxxer/hikari/pool/TestProxies.java index 2375fd9c..49c677a6 100644 --- a/src/test/java/com/zaxxer/hikari/pool/TestProxies.java +++ b/src/test/java/com/zaxxer/hikari/pool/TestProxies.java @@ -25,8 +25,7 @@ public class TestProxies config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); - HikariDataSource ds = new HikariDataSource(config); - try { + try (HikariDataSource ds = new HikariDataSource(config)) { Connection conn = ds.getConnection(); Assert.assertNotNull(conn.createStatement(ResultSet.FETCH_FORWARD, ResultSet.TYPE_SCROLL_INSENSITIVE)); @@ -53,9 +52,6 @@ public class TestProxies // pass } } - finally { - ds.close(); - } } @Test @@ -67,8 +63,7 @@ public class TestProxies config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); - HikariDataSource ds = new HikariDataSource(config); - try { + try (HikariDataSource ds = new HikariDataSource(config)) { Connection conn = ds.getConnection(); PreparedStatement stmt = conn.prepareStatement("some sql"); @@ -87,9 +82,6 @@ public class TestProxies // pass } } - finally { - ds.close(); - } } @Test @@ -102,8 +94,7 @@ public class TestProxies config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); - HikariDataSource ds = new HikariDataSource(config); - try { + try (HikariDataSource ds = new HikariDataSource(config)) { Connection conn = ds.getConnection(); StubConnection stubConnection = conn.unwrap(StubConnection.class); stubConnection.throwException = true; @@ -204,9 +195,6 @@ public class TestProxies // pass } } - finally { - ds.close(); - } } @Test @@ -218,8 +206,7 @@ public class TestProxies config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); - HikariDataSource ds = new HikariDataSource(config); - try { + try (HikariDataSource ds = new HikariDataSource(config)) { Connection conn = ds.getConnection(); StubConnection stubConnection = conn.unwrap(StubConnection.class); stubConnection.throwException = true; @@ -311,8 +298,5 @@ public class TestProxies Assert.fail(); } } - finally { - ds.close(); - } } } diff --git a/src/test/java/com/zaxxer/hikari/pool/UnwrapTest.java b/src/test/java/com/zaxxer/hikari/pool/UnwrapTest.java index 0aff8ab5..699e4572 100644 --- a/src/test/java/com/zaxxer/hikari/pool/UnwrapTest.java +++ b/src/test/java/com/zaxxer/hikari/pool/UnwrapTest.java @@ -42,21 +42,16 @@ public class UnwrapTest config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); - HikariDataSource ds = new HikariDataSource(config); + try (HikariDataSource ds = new HikariDataSource(config)) { + ds.getConnection().close(); + Assert.assertSame("Idle connections not as expected", 1, TestElf.getPool(ds).getIdleConnections()); - try { - ds.getConnection().close(); - Assert.assertSame("Idle connections not as expected", 1, TestElf.getPool(ds).getIdleConnections()); - - Connection connection = ds.getConnection(); - Assert.assertNotNull(connection); - - StubConnection unwrapped = connection.unwrap(StubConnection.class); - Assert.assertTrue("unwrapped connection is not instance of StubConnection: " + unwrapped, (unwrapped != null && unwrapped instanceof StubConnection)); - } - finally { - ds.close(); - } + Connection connection = ds.getConnection(); + Assert.assertNotNull(connection); + + StubConnection unwrapped = connection.unwrap(StubConnection.class); + Assert.assertTrue("unwrapped connection is not instance of StubConnection: " + unwrapped, (unwrapped != null && unwrapped instanceof StubConnection)); + } } @Test @@ -69,8 +64,7 @@ public class UnwrapTest config.setConnectionTestQuery("VALUES 1"); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); - HikariDataSource ds = new HikariDataSource(config); - try { + try (HikariDataSource ds = new HikariDataSource(config)) { StubDataSource unwrap = ds.unwrap(StubDataSource.class); Assert.assertNotNull(unwrap); Assert.assertTrue(unwrap instanceof StubDataSource); @@ -86,8 +80,5 @@ public class UnwrapTest Assert.assertTrue(e.getMessage().contains("Wrapped DataSource")); } } - finally { - ds.close(); - } } }