From ed09efc652d2f8b1b0f62a274e5a4ea875af171a Mon Sep 17 00:00:00 2001 From: Mikhail Mazurskiy Date: Wed, 15 Apr 2015 22:49:48 +1000 Subject: [PATCH] Fix some issues found by Idea inspections --- .../java/com/zaxxer/hikari/HikariDataSource.java | 1 + .../java/com/zaxxer/hikari/HikariJNDIFactory.java | 2 +- .../com/zaxxer/hikari/metrics/MetricsTracker.java | 3 ++- src/main/java/com/zaxxer/hikari/pool/HikariPool.java | 7 ++++--- src/main/java/com/zaxxer/hikari/pool/LeakTask.java | 2 +- .../java/com/zaxxer/hikari/pool/PoolBagEntry.java | 1 + .../java/com/zaxxer/hikari/pool/PoolUtilities.java | 12 ++++-------- .../com/zaxxer/hikari/proxy/ConnectionProxy.java | 8 ++++---- .../zaxxer/hikari/proxy/JavassistProxyFactory.java | 4 ++-- .../java/com/zaxxer/hikari/util/ConcurrentBag.java | 11 ++++++----- .../com/zaxxer/hikari/util/DefaultThreadFactory.java | 4 ++-- .../com/zaxxer/hikari/util/DriverDataSource.java | 1 + src/test/java/com/zaxxer/hikari/TestConnections.java | 2 +- 13 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/HikariDataSource.java b/src/main/java/com/zaxxer/hikari/HikariDataSource.java index 61b31f54..f8b2d115 100644 --- a/src/main/java/com/zaxxer/hikari/HikariDataSource.java +++ b/src/main/java/com/zaxxer/hikari/HikariDataSource.java @@ -142,6 +142,7 @@ public class HikariDataSource extends HikariConfig implements DataSource, Closea } /** {@inheritDoc} */ + @Override public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new SQLFeatureNotSupportedException(); diff --git a/src/main/java/com/zaxxer/hikari/HikariJNDIFactory.java b/src/main/java/com/zaxxer/hikari/HikariJNDIFactory.java index 73cbf5a2..cdc0a53c 100644 --- a/src/main/java/com/zaxxer/hikari/HikariJNDIFactory.java +++ b/src/main/java/com/zaxxer/hikari/HikariJNDIFactory.java @@ -85,7 +85,7 @@ public class HikariJNDIFactory implements ObjectFactory String jndiName = properties.getProperty("dataSourceJNDI"); DataSource jndiDS = (DataSource) context.lookup(jndiName); if (jndiDS == null) { - context = (Context) (new InitialContext()); + context = new InitialContext(); jndiDS = (DataSource) context.lookup(jndiName); } diff --git a/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java b/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java index 8d2a3eb0..11ace8ce 100644 --- a/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java +++ b/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java @@ -24,7 +24,7 @@ import com.zaxxer.hikari.pool.PoolBagEntry; * * @author Brett Wooldridge */ -public class MetricsTracker +public class MetricsTracker implements AutoCloseable { public static final MetricsContext NO_CONTEXT = new MetricsContext(); @@ -44,6 +44,7 @@ public class MetricsTracker { } + @Override public void close() { } diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 235feebb..df3c2ba6 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -352,6 +352,7 @@ public class HikariPool implements HikariPoolMBean, IBagStateListener { class AddConnection implements Runnable { + @Override public void run() { long sleepBackoff = 200L; @@ -459,6 +460,7 @@ public class HikariPool implements HikariPoolMBean, IBagStateListener } closeConnectionExecutor.execute(new Runnable() { + @Override public void run() { poolUtils.quietlyCloseConnection(connection, closureReason); } @@ -473,7 +475,7 @@ public class HikariPool implements HikariPoolMBean, IBagStateListener /** * Create and add a single connection to the pool. */ - private final boolean addConnection() + private boolean addConnection() { // Speculative increment of totalConnections with expectation of success if (totalConnections.incrementAndGet() > configuration.getMaximumPoolSize()) { @@ -524,6 +526,7 @@ public class HikariPool implements HikariPoolMBean, IBagStateListener if (connectionsToAdd > 0 && LOGGER.isDebugEnabled()) { addConnectionExecutor.execute(new Runnable() { + @Override public void run() { logPoolState("After fill "); } @@ -569,8 +572,6 @@ public class HikariPool implements HikariPoolMBean, IBagStateListener /** * Attempt to abort() active connections, or close() them. - * - * @throws InterruptedException */ private void abortActiveConnections(final ExecutorService assassinExecutor) { diff --git a/src/main/java/com/zaxxer/hikari/pool/LeakTask.java b/src/main/java/com/zaxxer/hikari/pool/LeakTask.java index 21c9024d..b24ab5cc 100644 --- a/src/main/java/com/zaxxer/hikari/pool/LeakTask.java +++ b/src/main/java/com/zaxxer/hikari/pool/LeakTask.java @@ -44,7 +44,7 @@ public class LeakTask implements Runnable { NO_LEAK = new LeakTask() { @Override - public void cancel() {}; + public void cancel() {} @Override public LeakTask start(final PoolBagEntry bagEntry) diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolBagEntry.java b/src/main/java/com/zaxxer/hikari/pool/PoolBagEntry.java index e5eb3826..402c85ce 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolBagEntry.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolBagEntry.java @@ -47,6 +47,7 @@ public final class PoolBagEntry implements IConcurrentBagEntry final long maxLifetime = pool.configuration.getMaxLifetime(); if (maxLifetime > 0) { endOfLife = pool.houseKeepingExecutorService.schedule(new Runnable() { + @Override public void run() { // If we can reserve it, close it diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolUtilities.java b/src/main/java/com/zaxxer/hikari/pool/PoolUtilities.java index 184c5beb..1d371fba 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolUtilities.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolUtilities.java @@ -27,7 +27,7 @@ public final class PoolUtilities private Executor netTimeoutExecutor; - private String poolName; + private final String poolName; private volatile boolean isValidChecked; private volatile boolean isValidSupported; private boolean isNetworkTimeoutSupported; @@ -63,7 +63,7 @@ public final class PoolUtilities } } catch (Throwable e) { - LOGGER.debug("Exception closing connection {} in pool {}{}", connection.toString(), poolName, addendum, e); + LOGGER.debug("Exception closing connection {} in pool {}{}", connection, poolName, addendum, e); } } @@ -78,16 +78,12 @@ public final class PoolUtilities public void executeSql(final Connection connection, final String sql, final boolean isAutoCommit) throws SQLException { if (sql != null) { - Statement statement = connection.createStatement(); - try { + try (Statement statement = connection.createStatement()) { statement.execute(sql); if (!isAutoCommit) { connection.commit(); } } - finally { - statement.close(); - } } } @@ -272,7 +268,7 @@ public final class PoolUtilities command.run(); } catch (Throwable t) { - LOGGER.debug("Exception executing {}", command.toString(), t); + LOGGER.debug("Exception executing {}", command, t); } } } diff --git a/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java b/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java index 2670c1eb..7feb5406 100644 --- a/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java +++ b/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java @@ -112,8 +112,8 @@ public abstract class ConnectionProxy implements IHikariConnectionProxy boolean isForceClose = sqlState.startsWith("08") | SQL_ERRORS.contains(sqlState); if (isForceClose) { bagEntry.evicted = true; - LOGGER.warn("Connection {} ({}) marked as broken because of SQLSTATE({}), ErrorCode({}).", delegate.toString(), - parentPool.toString(), sqlState, sqle.getErrorCode(), sqle); + LOGGER.warn("Connection {} ({}) marked as broken because of SQLSTATE({}), ErrorCode({}).", delegate, + parentPool, sqlState, sqle.getErrorCode(), sqle); } else { SQLException nse = sqle.getNextException(); @@ -144,7 +144,7 @@ public abstract class ConnectionProxy implements IHikariConnectionProxy // Internal methods // *********************************************************************** - private final T trackStatement(final T statement) + private T trackStatement(final T statement) { lastAccessNano = System.nanoTime(); openStatements.add(statement); @@ -152,7 +152,7 @@ public abstract class ConnectionProxy implements IHikariConnectionProxy return statement; } - private final void resetConnectionState() throws SQLException + private void resetConnectionState() throws SQLException { if (isReadOnlyDirty) { delegate.setReadOnly(parentPool.isReadOnly); diff --git a/src/main/java/com/zaxxer/hikari/proxy/JavassistProxyFactory.java b/src/main/java/com/zaxxer/hikari/proxy/JavassistProxyFactory.java index 15f6344c..124099bb 100644 --- a/src/main/java/com/zaxxer/hikari/proxy/JavassistProxyFactory.java +++ b/src/main/java/com/zaxxer/hikari/proxy/JavassistProxyFactory.java @@ -47,7 +47,7 @@ import com.zaxxer.hikari.util.ClassLoaderUtils; */ public final class JavassistProxyFactory { - private ClassPool classPool; + private final ClassPool classPool; static { ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); @@ -224,7 +224,7 @@ public final class JavassistProxyFactory paramTypes.add(toJavaClass(pt)); } - return intf.getDeclaredMethod(intfMethod.getName(), paramTypes.toArray(new Class[0])).toString().contains("default "); + return intf.getDeclaredMethod(intfMethod.getName(), paramTypes.toArray(new Class[paramTypes.size()])).toString().contains("default "); } private Class toJavaClass(CtClass cls) throws Exception diff --git a/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java b/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java index 571c969f..ae8c2f40 100644 --- a/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java +++ b/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java @@ -52,7 +52,7 @@ import org.slf4j.LoggerFactory; * * @param the templated type to store in the bag */ -public class ConcurrentBag +public class ConcurrentBag implements AutoCloseable { private static final Logger LOGGER = LoggerFactory.getLogger(ConcurrentBag.class); @@ -152,7 +152,7 @@ public class ConcurrentBag synchronizer.releaseShared(sequence.incrementAndGet()); } else { - LOGGER.warn("Attempt to remove an object from the bag that does not exist: {}", bagEntry.toString()); + LOGGER.warn("Attempt to remove an object from the bag that does not exist: {}", bagEntry); } } @@ -184,13 +184,13 @@ public class ConcurrentBag public boolean remove(final T bagEntry) { if (!bagEntry.state().compareAndSet(STATE_IN_USE, STATE_REMOVED) && !bagEntry.state().compareAndSet(STATE_RESERVED, STATE_REMOVED) && !closed) { - LOGGER.warn("Attempt to remove an object from the bag that was not borrowed or reserved: {}", bagEntry.toString()); + LOGGER.warn("Attempt to remove an object from the bag that was not borrowed or reserved: {}", bagEntry); return false; } final boolean removed = sharedList.remove(bagEntry); if (!removed && !closed) { - LOGGER.warn("Attempt to remove an object from the bag that does not exist: {}", bagEntry.toString()); + LOGGER.warn("Attempt to remove an object from the bag that does not exist: {}", bagEntry); } return removed; } @@ -198,6 +198,7 @@ public class ConcurrentBag /** * Close the bag to further adds. */ + @Override public void close() { closed = true; @@ -255,7 +256,7 @@ public class ConcurrentBag synchronizer.releaseShared(checkInSeq); } else { - LOGGER.warn("Attempt to relinquish an object to the bag that was not reserved: {}", bagEntry.toString()); + LOGGER.warn("Attempt to relinquish an object to the bag that was not reserved: {}", bagEntry); } } diff --git a/src/main/java/com/zaxxer/hikari/util/DefaultThreadFactory.java b/src/main/java/com/zaxxer/hikari/util/DefaultThreadFactory.java index 64dc5179..2db11b3a 100644 --- a/src/main/java/com/zaxxer/hikari/util/DefaultThreadFactory.java +++ b/src/main/java/com/zaxxer/hikari/util/DefaultThreadFactory.java @@ -19,8 +19,8 @@ import java.util.concurrent.ThreadFactory; public class DefaultThreadFactory implements ThreadFactory { - private String threadName; - private boolean daemon; + private final String threadName; + private final boolean daemon; public DefaultThreadFactory(String threadName, boolean daemon) { this.threadName = threadName; diff --git a/src/main/java/com/zaxxer/hikari/util/DriverDataSource.java b/src/main/java/com/zaxxer/hikari/util/DriverDataSource.java index 031b6a0c..e880809c 100644 --- a/src/main/java/com/zaxxer/hikari/util/DriverDataSource.java +++ b/src/main/java/com/zaxxer/hikari/util/DriverDataSource.java @@ -113,6 +113,7 @@ public final class DriverDataSource implements DataSource return DriverManager.getLoginTimeout(); } + @Override public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { return driver.getParentLogger(); diff --git a/src/test/java/com/zaxxer/hikari/TestConnections.java b/src/test/java/com/zaxxer/hikari/TestConnections.java index 82bd64dc..ad9fef3c 100644 --- a/src/test/java/com/zaxxer/hikari/TestConnections.java +++ b/src/test/java/com/zaxxer/hikari/TestConnections.java @@ -209,7 +209,7 @@ public class TestConnections Assert.assertTrue("Connection should have closed", connection.isClosed()); Assert.assertFalse("Connection should have closed", connection.isValid(5)); - Assert.assertTrue("Expected to contain ClosedConnection, but was " + connection.toString(), connection.toString().contains("ClosedConnection")); + Assert.assertTrue("Expected to contain ClosedConnection, but was " + connection, connection.toString().contains("ClosedConnection")); connection.close(); }