You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ws...@apache.org on 2013/02/25 21:55:30 UTC
svn commit: r1449890 - in /commons/proper/dbutils/branches/2_0/src:
main/java/org/apache/commons/dbutils/ test/java/org/apache/commons/dbutils/
Author: wspeirs
Date: Mon Feb 25 20:55:29 2013
New Revision: 1449890
URL: http://svn.apache.org/r1449890
Log:
- Removed all deprecated methods & fields
- Updated unit tests
Modified:
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AbstractQueryRunner.java
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AsyncQueryRunner.java
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BaseResultSetHandler.java
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/DbUtils.java
commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/QueryRunner.java
commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils/AsyncQueryRunnerTest.java
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AbstractQueryRunner.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AbstractQueryRunner.java?rev=1449890&r1=1449889&r2=1449890&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AbstractQueryRunner.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AbstractQueryRunner.java Mon Feb 25 20:55:29 2013
@@ -46,10 +46,8 @@ public abstract class AbstractQueryRunne
/**
* The DataSource to retrieve connections from.
- * @deprecated Access to this field should be through {@link #getDataSource()}.
*/
- @Deprecated
- protected final DataSource ds;
+ private final DataSource ds;
/**
* Default constructor, sets pmdKnownBroken to false and ds to null.
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AsyncQueryRunner.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AsyncQueryRunner.java?rev=1449890&r1=1449889&r2=1449890&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AsyncQueryRunner.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/AsyncQueryRunner.java Mon Feb 25 20:55:29 2013
@@ -17,15 +17,11 @@
package org.apache.commons.dbutils;
import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
-import javax.sql.DataSource;
-
/**
* Executes SQL queries with pluggable strategies for handling
* <code>ResultSet</code>s. This class is thread safe.
@@ -51,119 +47,6 @@ public class AsyncQueryRunner extends Ab
}
/**
- * Constructor for AsyncQueryRunner.
- *
- * @param executorService the {@code ExecutorService} instance used to run JDBC invocations concurrently.
- */
- public AsyncQueryRunner(ExecutorService executorService) {
- this(null, false, executorService);
- }
-
- /**
- * @deprecated Use {@link #AsyncQueryRunner(ExecutorService, QueryRunner)} instead.
- * Constructor for AsyncQueryRunner that controls the use of <code>ParameterMetaData</code>.
- *
- * @param pmdKnownBroken Some drivers don't support {@link java.sql.ParameterMetaData#getParameterType(int) };
- * if <code>pmdKnownBroken</code> is set to true, we won't even try it; if false, we'll try it,
- * and if it breaks, we'll remember not to use it again.
- * @param executorService the {@code ExecutorService} instance used to run JDBC invocations concurrently.
- */
- @Deprecated
- public AsyncQueryRunner(boolean pmdKnownBroken, ExecutorService executorService) {
- this(null, pmdKnownBroken, executorService);
- }
-
- /**
- * @deprecated Use {@link #AsyncQueryRunner(ExecutorService, QueryRunner)} instead.
- * Constructor for AsyncQueryRunner that takes a <code>DataSource</code>.
- *
- * Methods that do not take a <code>Connection</code> parameter will retrieve connections from this
- * <code>DataSource</code>.
- *
- * @param ds The <code>DataSource</code> to retrieve connections from.
- * @param executorService the {@code ExecutorService} instance used to run JDBC invocations concurrently.
- */
- @Deprecated
- public AsyncQueryRunner(DataSource ds, ExecutorService executorService) {
- this(ds, false, executorService);
- }
-
- /**
- * @deprecated Use {@link #AsyncQueryRunner(ExecutorService, QueryRunner)} instead.
- * Constructor for AsyncQueryRunner that take a <code>DataSource</code> and controls the use of <code>ParameterMetaData</code>.
- * Methods that do not take a <code>Connection</code> parameter will retrieve connections from this
- * <code>DataSource</code>.
- *
- * @param ds The <code>DataSource</code> to retrieve connections from.
- * @param pmdKnownBroken Some drivers don't support {@link java.sql.ParameterMetaData#getParameterType(int) };
- * if <code>pmdKnownBroken</code> is set to true, we won't even try it; if false, we'll try it,
- * and if it breaks, we'll remember not to use it again.
- * @param executorService the {@code ExecutorService} instance used to run JDBC invocations concurrently.
- */
- @Deprecated
- public AsyncQueryRunner(DataSource ds, boolean pmdKnownBroken, ExecutorService executorService) {
- super(ds, pmdKnownBroken);
- this.executorService = executorService;
- this.queryRunner = new QueryRunner(ds, pmdKnownBroken);
- }
-
- /**
- * @deprecated No longer used by this class. Will be removed in a future version.
- * Class that encapsulates the continuation for batch calls.
- */
- @Deprecated
- protected class BatchCallableStatement implements Callable<int[]> {
- private final String sql;
- private final Object[][] params;
- private final Connection conn;
- private final boolean closeConn;
- private final PreparedStatement ps;
-
- /**
- * Creates a new BatchCallableStatement instance.
- *
- * @param sql The SQL statement to execute.
- * @param params An array of query replacement parameters. Each row in
- * this array is one set of batch replacement values.
- * @param conn The connection to use for the batch call.
- * @param closeConn True if the connection should be closed, false otherwise.
- * @param ps The {@link PreparedStatement} to be executed.
- */
- public BatchCallableStatement(String sql, Object[][] params, Connection conn, boolean closeConn, PreparedStatement ps) {
- this.sql = sql;
- this.params = params.clone();
- this.conn = conn;
- this.closeConn = closeConn;
- this.ps = ps;
- }
-
- /**
- * The actual call to executeBatch.
- *
- * @return an array of update counts containing one element for each command in the batch.
- * @throws SQLException if a database access error occurs or one of the commands sent to the database fails.
- * @see PreparedStatement#executeBatch()
- */
- @Override
- public int[] call() throws SQLException {
- int[] ret = null;
-
- try {
- ret = ps.executeBatch();
- } catch (SQLException e) {
- rethrow(e, sql, (Object[])params);
- } finally {
- close(ps);
- if (closeConn) {
- close(conn);
- }
- }
-
- return ret;
- }
- }
-
- /**
* Execute a batch of SQL INSERT, UPDATE, or DELETE queries.
*
* @param conn The <code>Connection</code> to use to run the query. The caller is
@@ -209,72 +92,6 @@ public class AsyncQueryRunner extends Ab
}
/**
- * Class that encapsulates the continuation for query calls.
- * @param <T> The type of the result from the call to handle.
- */
- protected class QueryCallableStatement<T> implements Callable<T> {
- private final String sql;
- private final Object[] params;
- private final Connection conn;
- private final boolean closeConn;
- private final PreparedStatement ps;
- private final ResultSetHandler<T> rsh;
-
- /**
- * Creates a new {@code QueryCallableStatement} instance.
- *
- * @param conn The connection to use for the batch call.
- * @param closeConn True if the connection should be closed, false otherwise.
- * @param ps The {@link PreparedStatement} to be executed.
- * @param rsh The handler that converts the results into an object.
- * @param sql The SQL statement to execute.
- * @param params An array of query replacement parameters. Each row in
- * this array is one set of batch replacement values.
- */
- public QueryCallableStatement(Connection conn, boolean closeConn, PreparedStatement ps,
- ResultSetHandler<T> rsh, String sql, Object... params) {
- this.sql = sql;
- this.params = params;
- this.conn = conn;
- this.closeConn = closeConn;
- this.ps = ps;
- this.rsh = rsh;
- }
-
- /**
- * The actual call to {@code handle()} method.
- *
- * @return an array of update counts containing one element for each command in the batch.
- * @throws SQLException if a database access error occurs.
- * @see ResultSetHandler#handle(ResultSet)
- */
- @Override
- public T call() throws SQLException {
- ResultSet rs = null;
- T ret = null;
-
- try {
- rs = wrap(ps.executeQuery());
- ret = rsh.handle(rs);
- } catch (SQLException e) {
- rethrow(e, sql, params);
- } finally {
- try {
- close(rs);
- } finally {
- close(ps);
- if (closeConn) {
- close(conn);
- }
- }
- }
-
- return ret;
- }
-
- }
-
- /**
* Execute an SQL SELECT query with replacement parameters. The
* caller is responsible for closing the connection.
* @param <T> The type of object that the handler returns
@@ -366,64 +183,6 @@ public class AsyncQueryRunner extends Ab
}
/**
- * @deprecated No longer used by this class. Will be removed in a future version.
- * Class that encapsulates the continuation for update calls.
- */
- @Deprecated
- protected class UpdateCallableStatement implements Callable<Integer> {
- private final String sql;
- private final Object[] params;
- private final Connection conn;
- private final boolean closeConn;
- private final PreparedStatement ps;
-
- /**
- *
- *
- * @param conn The connection to use for the batch call.
- * @param closeConn True if the connection should be closed, false otherwise.
- * @param ps The {@link PreparedStatement} to be executed.
- * @param sql The SQL statement to execute.
- * @param params An array of query replacement parameters. Each row in
- * this array is one set of batch replacement values.
- */
- public UpdateCallableStatement(Connection conn, boolean closeConn, PreparedStatement ps, String sql, Object... params) {
- this.sql = sql;
- this.params = params;
- this.conn = conn;
- this.closeConn = closeConn;
- this.ps = ps;
- }
-
- /**
- * The actual call to {@code executeUpdate()} method.
- *
- * @return either (1) the row count for SQL Data Manipulation Language (DML) statements or
- * (2) 0 for SQL statements that return nothing
- * @throws SQLException if a database access error occurs.
- * @see PreparedStatement#executeUpdate()
- */
- @Override
- public Integer call() throws SQLException {
- int rows = 0;
-
- try {
- rows = ps.executeUpdate();
- } catch (SQLException e) {
- rethrow(e, sql, params);
- } finally {
- close(ps);
- if (closeConn) {
- close(conn);
- }
- }
-
- return Integer.valueOf(rows);
- }
-
- }
-
- /**
* Execute an SQL INSERT, UPDATE, or DELETE query without replacement
* parameters.
*
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BaseResultSetHandler.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BaseResultSetHandler.java?rev=1449890&r1=1449889&r2=1449890&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BaseResultSetHandler.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BaseResultSetHandler.java Mon Feb 25 20:55:29 2013
@@ -204,18 +204,6 @@ public abstract class BaseResultSetHandl
/**
* @param columnIndex
- * @param scale
- * @return
- * @throws SQLException
- * @deprecated
- * @see java.sql.ResultSet#getBigDecimal(int, int)
- */
- protected final BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException {
- return rs.getBigDecimal(columnIndex, scale);
- }
-
- /**
- * @param columnIndex
* @return
* @throws SQLException
* @see java.sql.ResultSet#getBigDecimal(int)
@@ -226,18 +214,6 @@ public abstract class BaseResultSetHandl
/**
* @param columnLabel
- * @param scale
- * @return
- * @throws SQLException
- * @deprecated
- * @see java.sql.ResultSet#getBigDecimal(java.lang.String, int)
- */
- protected final BigDecimal getBigDecimal(String columnLabel, int scale) throws SQLException {
- return rs.getBigDecimal(columnLabel, scale);
- }
-
- /**
- * @param columnLabel
* @return
* @throws SQLException
* @see java.sql.ResultSet#getBigDecimal(java.lang.String)
@@ -896,28 +872,6 @@ public abstract class BaseResultSetHandl
}
/**
- * @param columnIndex
- * @return
- * @throws SQLException
- * @deprecated
- * @see java.sql.ResultSet#getUnicodeStream(int)
- */
- protected final InputStream getUnicodeStream(int columnIndex) throws SQLException {
- return rs.getUnicodeStream(columnIndex);
- }
-
- /**
- * @param columnLabel
- * @return
- * @throws SQLException
- * @deprecated
- * @see java.sql.ResultSet#getUnicodeStream(java.lang.String)
- */
- protected final InputStream getUnicodeStream(String columnLabel) throws SQLException {
- return rs.getUnicodeStream(columnLabel);
- }
-
- /**
* @return
* @throws SQLException
* @see java.sql.ResultSet#getWarnings()
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java?rev=1449890&r1=1449889&r2=1449890&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java Mon Feb 25 20:55:29 2013
@@ -42,23 +42,6 @@ public class BasicRowProcessor implement
private static final BeanProcessor defaultConvert = new BeanProcessor();
/**
- * The Singleton instance of this class.
- */
- private static final BasicRowProcessor instance = new BasicRowProcessor();
-
- /**
- * Returns the Singleton instance of this class.
- *
- * @return The single instance of this class.
- * @deprecated Create instances with the constructors instead. This will
- * be removed after DbUtils 1.1.
- */
- @Deprecated
- public static BasicRowProcessor instance() {
- return instance;
- }
-
- /**
* Use this to process beans.
*/
private final BeanProcessor convert;
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/DbUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/DbUtils.java?rev=1449890&r1=1449889&r2=1449890&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/DbUtils.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/DbUtils.java Mon Feb 25 20:55:29 2013
@@ -17,7 +17,6 @@
package org.apache.commons.dbutils;
import static java.sql.DriverManager.registerDriver;
-
import java.io.PrintWriter;
import java.lang.reflect.Constructor;
import java.sql.Connection;
@@ -27,8 +26,8 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.sql.Statement;
-import java.util.logging.Logger;
import java.util.Properties;
+import java.util.logging.Logger;
/**
* A collection of JDBC helper methods. This class is thread safe.
@@ -36,14 +35,11 @@ import java.util.Properties;
public final class DbUtils {
/**
- * Default constructor.
- *
- * Utility classes should not have a public or default constructor,
- * but this one preserves retro-compatibility.
+ * Utility classes do not have a public default constructor.
*
* @since 1.4
*/
- public DbUtils() {
+ private DbUtils() {
// do nothing
}
@@ -400,6 +396,7 @@ public final class DbUtils {
/**
* Java 1.7 method.
*/
+ @SuppressWarnings("unused")
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
throw new SQLFeatureNotSupportedException();
}
Modified: commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/QueryRunner.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/QueryRunner.java?rev=1449890&r1=1449889&r2=1449890&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/QueryRunner.java (original)
+++ commons/proper/dbutils/branches/2_0/src/main/java/org/apache/commons/dbutils/QueryRunner.java Mon Feb 25 20:55:29 2013
@@ -164,40 +164,6 @@ public class QueryRunner extends Abstrac
}
/**
- * Execute an SQL SELECT query with a single replacement parameter. The
- * caller is responsible for closing the connection.
- * @param <T> The type of object that the handler returns
- * @param conn The connection to execute the query in.
- * @param sql The query to execute.
- * @param param The replacement parameter.
- * @param rsh The handler that converts the results into an object.
- * @return The object returned by the handler.
- * @throws SQLException if a database access error occurs
- * @deprecated Use {@link #query(Connection, String, ResultSetHandler, Object...)}
- */
- @Deprecated
- public <T> T query(Connection conn, String sql, Object param, ResultSetHandler<T> rsh) throws SQLException {
- return this.<T>query(conn, false, sql, rsh, new Object[]{param});
- }
-
- /**
- * Execute an SQL SELECT query with replacement parameters. The
- * caller is responsible for closing the connection.
- * @param <T> The type of object that the handler returns
- * @param conn The connection to execute the query in.
- * @param sql The query to execute.
- * @param params The replacement parameters.
- * @param rsh The handler that converts the results into an object.
- * @return The object returned by the handler.
- * @throws SQLException if a database access error occurs
- * @deprecated Use {@link #query(Connection,String,ResultSetHandler,Object...)} instead
- */
- @Deprecated
- public <T> T query(Connection conn, String sql, Object[] params, ResultSetHandler<T> rsh) throws SQLException {
- return this.<T>query(conn, false, sql, rsh, params);
- }
-
- /**
* Execute an SQL SELECT query with replacement parameters. The
* caller is responsible for closing the connection.
* @param <T> The type of object that the handler returns
@@ -227,50 +193,6 @@ public class QueryRunner extends Abstrac
}
/**
- * Executes the given SELECT SQL with a single replacement parameter.
- * The <code>Connection</code> is retrieved from the
- * <code>DataSource</code> set in the constructor.
- * @param <T> The type of object that the handler returns
- * @param sql The SQL statement to execute.
- * @param param The replacement parameter.
- * @param rsh The handler used to create the result object from
- * the <code>ResultSet</code>.
- *
- * @return An object generated by the handler.
- * @throws SQLException if a database access error occurs
- * @deprecated Use {@link #query(String, ResultSetHandler, Object...)}
- */
- @Deprecated
- public <T> T query(String sql, Object param, ResultSetHandler<T> rsh) throws SQLException {
- Connection conn = this.prepareConnection();
-
- return this.<T>query(conn, true, sql, rsh, new Object[]{param});
- }
-
- /**
- * Executes the given SELECT SQL query and returns a result object.
- * The <code>Connection</code> is retrieved from the
- * <code>DataSource</code> set in the constructor.
- * @param <T> The type of object that the handler returns
- * @param sql The SQL statement to execute.
- * @param params Initialize the PreparedStatement's IN parameters with
- * this array.
- *
- * @param rsh The handler used to create the result object from
- * the <code>ResultSet</code>.
- *
- * @return An object generated by the handler.
- * @throws SQLException if a database access error occurs
- * @deprecated Use {@link #query(String, ResultSetHandler, Object...)}
- */
- @Deprecated
- public <T> T query(String sql, Object[] params, ResultSetHandler<T> rsh) throws SQLException {
- Connection conn = this.prepareConnection();
-
- return this.<T>query(conn, true, sql, rsh, params);
- }
-
- /**
* Executes the given SELECT SQL query and returns a result object.
* The <code>Connection</code> is retrieved from the
* <code>DataSource</code> set in the constructor.
Modified: commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils/AsyncQueryRunnerTest.java
URL: http://svn.apache.org/viewvc/commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils/AsyncQueryRunnerTest.java?rev=1449890&r1=1449889&r2=1449890&view=diff
==============================================================================
--- commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils/AsyncQueryRunnerTest.java (original)
+++ commons/proper/dbutils/branches/2_0/src/test/java/org/apache/commons/dbutils/AsyncQueryRunnerTest.java Mon Feb 25 20:55:29 2013
@@ -18,23 +18,15 @@ package org.apache.commons.dbutils;
import static org.junit.Assert.fail;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import java.sql.Connection;
-import java.sql.ParameterMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-
-import javax.sql.DataSource;
-
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.junit.Before;
import org.junit.Test;
@@ -46,52 +38,34 @@ public class AsyncQueryRunnerTest {
AsyncQueryRunner runner;
ArrayHandler handler;
- @Mock DataSource dataSource;
+ @Mock QueryRunner qRunner;
@Mock Connection conn;
- @Mock PreparedStatement stmt;
- @Mock ParameterMetaData meta;
- @Mock ResultSet results;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); // init the mocks
- when(dataSource.getConnection()).thenReturn(conn);
- when(conn.prepareStatement(any(String.class))).thenReturn(stmt);
- when(stmt.getParameterMetaData()).thenReturn(meta);
- when(stmt.getResultSet()).thenReturn(results);
- when(stmt.executeQuery()).thenReturn(results);
- when(results.next()).thenReturn(false);
-
handler = new ArrayHandler();
- runner = new AsyncQueryRunner(dataSource, Executors.newFixedThreadPool(1));
+ runner = new AsyncQueryRunner(Executors.newFixedThreadPool(1), qRunner);
}
//
// Batch test cases
//
private void callGoodBatch(Connection conn, Object[][] params) throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
Future<int[]> future = runner.batch(conn, "select * from blah where ? = ?", params);
future.get();
- verify(stmt, times(2)).addBatch();
- verify(stmt, times(1)).executeBatch();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(0)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).batch(eq(conn), any(String.class), eq(params));
}
private void callGoodBatch(Object[][] params) throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
Future<int[]> future = runner.batch("select * from blah where ? = ?", params);
future.get();
- verify(stmt, times(2)).addBatch();
- verify(stmt, times(1)).executeBatch();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(1)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).batch(any(String.class), eq(params));
}
@Test
@@ -103,7 +77,6 @@ public class AsyncQueryRunnerTest {
@Test
public void testGoodBatchPmdTrue() throws Exception {
- runner = new AsyncQueryRunner(dataSource, true, Executors.newFixedThreadPool(1));
String[][] params = new String[][] { { "unit", "unit" }, { "test", "test" } };
callGoodBatch(params);
@@ -111,7 +84,6 @@ public class AsyncQueryRunnerTest {
@Test
public void testGoodBatchDefaultConstructor() throws Exception {
- runner = new AsyncQueryRunner(Executors.newFixedThreadPool(1));
String[][] params = new String[][] { { "unit", "unit" }, { "test", "test" } };
callGoodBatch(conn, params);
@@ -135,11 +107,8 @@ public class AsyncQueryRunnerTest {
future = runner.batch(sql, params);
future.get();
-
- verify(stmt, times(2)).addBatch();
- verify(stmt, times(1)).executeBatch();
- verify(stmt, times(1)).close(); // make sure the statement is closed
- verify(conn, times(1)).close(); // make sure the connection is closed
+
+ verify(qRunner, times(1)).batch(any(String.class), params);
} catch(Exception e) {
caught = true;
}
@@ -163,45 +132,16 @@ public class AsyncQueryRunnerTest {
}
@Test(expected=ExecutionException.class)
- public void testNullConnectionBatch() throws Exception {
- String[][] params = new String[][] { { "unit", "unit" }, { "test", "test" } };
-
- when(meta.getParameterCount()).thenReturn(2);
- when(dataSource.getConnection()).thenReturn(null);
-
- runner.batch("select * from blah where ? = ?", params).get();
- }
-
- @Test(expected=ExecutionException.class)
- public void testNullSqlBatch() throws Exception {
- String[][] params = new String[][] { { "unit", "unit" }, { "test", "test" } };
-
- when(meta.getParameterCount()).thenReturn(2);
-
- runner.batch(null, params).get();
- }
-
- @Test(expected=ExecutionException.class)
- public void testNullParamsArgBatch() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
-
+ public void testExceptionBatch() throws Exception {
+ doThrow(ExecutionException.class).when(qRunner).batch(any(String.class), any(Object[][].class));
runner.batch("select * from blah where ? = ?", null).get();
}
@Test
- public void testAddBatchException() throws Exception {
- String[][] params = new String[][] { { "unit", "unit" }, { "test", "test" } };
-
- doThrow(new SQLException()).when(stmt).addBatch();
-
- callBatchWithException("select * from blah where ? = ?", params);
- }
-
- @Test
- public void testExecuteBatchException() throws Exception {
+ public void testBatchException() throws Exception {
String[][] params = new String[][] { { "unit", "unit" }, { "test", "test" } };
- doThrow(new SQLException()).when(stmt).executeBatch();
+ doThrow(new SQLException()).when(qRunner).batch(any(String.class), any(Object[][].class));
callBatchWithException("select * from blah where ? = ?", params);
}
@@ -211,41 +151,25 @@ public class AsyncQueryRunnerTest {
// Query test cases
//
private void callGoodQuery(Connection conn) throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
runner.query(conn, "select * from blah where ? = ?", handler, "unit", "test").get();
-
- verify(stmt, times(1)).executeQuery();
- verify(results, times(1)).close();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(0)).close(); // make sure we closed the connection
+
+ verify(qRunner, times(1)).query(eq(conn), any(String.class), eq(handler), any(String.class), any(String.class));
// call the other variation of query
- when(meta.getParameterCount()).thenReturn(0);
runner.query(conn, "select * from blah", handler).get();
- verify(stmt, times(2)).executeQuery();
- verify(results, times(2)).close();
- verify(stmt, times(2)).close(); // make sure we closed the statement
- verify(conn, times(0)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).query(eq(conn), any(String.class), eq(handler));
}
private void callGoodQuery() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
runner.query("select * from blah where ? = ?", handler, "unit", "test").get();
- verify(stmt, times(1)).executeQuery();
- verify(results, times(1)).close();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(1)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).query(any(String.class), eq(handler), any(String.class), any(String.class));
// call the other variation of query
- when(meta.getParameterCount()).thenReturn(0);
runner.query("select * from blah", handler).get();
- verify(stmt, times(2)).executeQuery();
- verify(results, times(2)).close();
- verify(stmt, times(2)).close(); // make sure we closed the statement
- verify(conn, times(2)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).query(any(String.class), eq(handler));
}
@Test
@@ -254,80 +178,15 @@ public class AsyncQueryRunnerTest {
}
@Test
- public void testGoodQueryPmdTrue() throws Exception {
- runner = new AsyncQueryRunner(true, Executors.newFixedThreadPool(1));
+ public void testGoodQueryWithConn() throws Exception {
callGoodQuery(conn);
}
- @Test
- public void testGoodQueryDefaultConstructor() throws Exception {
- runner = new AsyncQueryRunner(Executors.newFixedThreadPool(1));
- callGoodQuery(conn);
- }
-
-
- // helper method for calling batch when an exception is expected
- private void callQueryWithException(Object... params) throws Exception {
- boolean caught = false;
-
- try {
- when(meta.getParameterCount()).thenReturn(2);
- runner.query("select * from blah where ? = ?", handler, params).get();
-
- verify(stmt, times(1)).executeQuery();
- verify(results, times(1)).close();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(1)).close(); // make sure we closed the connection
- } catch(Exception e) {
- caught = true;
- }
-
- if(!caught)
- fail("Exception never thrown, but expected");
- }
-
- @Test
- public void testNoParamsQuery() throws Exception {
- callQueryWithException();
- }
-
- @Test
- public void testTooFewParamsQuery() throws Exception {
- callQueryWithException("unit");
- }
-
- @Test
- public void testTooManyParamsQuery() throws Exception {
- callQueryWithException("unit", "test", "fail");
- }
-
@Test(expected=ExecutionException.class)
- public void testNullConnectionQuery() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
- when(dataSource.getConnection()).thenReturn(null);
-
- runner.query("select * from blah where ? = ?", handler, "unit", "test").get();
- }
-
- @Test(expected=ExecutionException.class)
- public void testNullSqlQuery() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
-
- runner.query(null, handler).get();
- }
-
- @Test(expected=ExecutionException.class)
- public void testNullHandlerQuery() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
-
- runner.query("select * from blah where ? = ?", null).get();
- }
-
- @Test
public void testExecuteQueryException() throws Exception {
- doThrow(new SQLException()).when(stmt).executeQuery();
+ doThrow(new SQLException()).when(qRunner).query(any(String.class), eq(handler), any(String.class), any(String.class));
- callQueryWithException(handler, "unit", "test");
+ runner.query("select * from blah where ? = ?", handler, "unit", "test").get();
}
@@ -335,53 +194,35 @@ public class AsyncQueryRunnerTest {
// Update test cases
//
private void callGoodUpdate(Connection conn) throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
runner.update(conn, "update blah set ? = ?", "unit", "test").get();
- verify(stmt, times(1)).executeUpdate();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(0)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).update(eq(conn), any(String.class), any(String.class), any(String.class));
// call the other variation
- when(meta.getParameterCount()).thenReturn(0);
runner.update(conn, "update blah set unit = test").get();
- verify(stmt, times(2)).executeUpdate();
- verify(stmt, times(2)).close(); // make sure we closed the statement
- verify(conn, times(0)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).update(eq(conn), any(String.class));
// call the other variation
- when(meta.getParameterCount()).thenReturn(1);
runner.update(conn, "update blah set unit = ?", "test").get();
- verify(stmt, times(3)).executeUpdate();
- verify(stmt, times(3)).close(); // make sure we closed the statement
- verify(conn, times(0)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).update(eq(conn), any(String.class), any(String.class));
}
private void callGoodUpdate() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
runner.update("update blah set ? = ?", "unit", "test").get();
- verify(stmt, times(1)).executeUpdate();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(1)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).update(any(String.class), any(String.class), any(String.class));
// call the other variation
- when(meta.getParameterCount()).thenReturn(0);
runner.update("update blah set unit = test").get();
- verify(stmt, times(2)).executeUpdate();
- verify(stmt, times(2)).close(); // make sure we closed the statement
- verify(conn, times(2)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).update(any(String.class));
// call the other variation
- when(meta.getParameterCount()).thenReturn(1);
runner.update("update blah set unit = ?", "test").get();
- verify(stmt, times(3)).executeUpdate();
- verify(stmt, times(3)).close(); // make sure we closed the statement
- verify(conn, times(3)).close(); // make sure we closed the connection
+ verify(qRunner, times(1)).update(any(String.class), any(String.class));
}
@Test
@@ -390,95 +231,31 @@ public class AsyncQueryRunnerTest {
}
@Test
- public void testGoodUpdatePmdTrue() throws Exception {
- runner = new AsyncQueryRunner(true, Executors.newFixedThreadPool(1));
- callGoodUpdate(conn);
- }
-
- @Test
- public void testGoodUpdateDefaultConstructor() throws Exception {
- runner = new AsyncQueryRunner(Executors.newFixedThreadPool(1));
+ public void testGoodUpdateConnection() throws Exception {
callGoodUpdate(conn);
}
- // helper method for calling batch when an exception is expected
- private void callUpdateWithException(Object... params) throws Exception {
- boolean caught = false;
-
- try {
- when(meta.getParameterCount()).thenReturn(2);
- runner.update("select * from blah where ? = ?", params).get();
-
- verify(stmt, times(1)).executeUpdate();
- verify(stmt, times(1)).close(); // make sure we closed the statement
- verify(conn, times(1)).close(); // make sure we closed the connection
- } catch(Exception e) {
- caught = true;
- }
-
- if(!caught)
- fail("Exception never thrown, but expected");
- }
-
- @Test
- public void testNoParamsUpdate() throws Exception {
- callUpdateWithException();
- }
-
- @Test
- public void testTooFewParamsUpdate() throws Exception {
- callUpdateWithException("unit");
- }
-
- @Test
- public void testTooManyParamsUpdate() throws Exception {
- callUpdateWithException("unit", "test", "fail");
- }
@Test
public void testInsertUsesGivenQueryRunner() throws Exception {
- QueryRunner mockQueryRunner = mock(QueryRunner.class);
- runner = new AsyncQueryRunner(Executors.newSingleThreadExecutor(), mockQueryRunner);
-
runner.insert("1", handler);
runner.insert("2", handler, "param1");
runner.insert(conn, "3", handler);
runner.insert(conn, "4", handler, "param1");
- verify(mockQueryRunner).insert("1", handler);
- verify(mockQueryRunner).insert("2", handler, "param1");
- verify(mockQueryRunner).insert(conn, "3", handler);
- verify(mockQueryRunner).insert(conn, "4", handler, "param1");
+ verify(qRunner).insert("1", handler);
+ verify(qRunner).insert("2", handler, "param1");
+ verify(qRunner).insert(conn, "3", handler);
+ verify(qRunner).insert(conn, "4", handler, "param1");
}
@Test(expected=ExecutionException.class)
- public void testNullConnectionUpdate() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
- when(dataSource.getConnection()).thenReturn(null);
-
+ public void testExceptionUpdate() throws Exception {
+ doThrow(new SQLException()).when(qRunner).update(any(String.class), any(String.class), any(String.class));
+
runner.update("select * from blah where ? = ?", "unit", "test").get();
+
+ verify(qRunner, times(1)).update(any(String.class), any(String.class), any(String.class));
}
- @Test(expected=ExecutionException.class)
- public void testNullSqlUpdate() throws Exception {
- when(meta.getParameterCount()).thenReturn(2);
-
- runner.update(null).get();
- }
-
- @Test
- public void testExecuteUpdateException() throws Exception {
- doThrow(new SQLException()).when(stmt).executeUpdate();
-
- callUpdateWithException("unit", "test");
- }
-
- //
- // Random tests
- //
- @Test(expected=ExecutionException.class)
- public void testBadPrepareConnection() throws Exception {
- runner = new AsyncQueryRunner(Executors.newFixedThreadPool(1));
- runner.update("update blah set unit = test").get();
- }
}