Re: [commons-dbutils] 04/04: DBUTILS-143 Use try-with-resources for all prepareConnection calls Remove closing of connection by private methods that are wrapped in convience methods

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [commons-dbutils] 04/04: DBUTILS-143 Use try-with-resources for all prepareConnection calls Remove closing of connection by private methods that are wrapped in convience methods

garydgregory
Should this code go in master or a 1.x branch?

Gary

On Thu, Jan 9, 2020, 01:18 <[hidden email]> wrote:

> This is an automated email from the ASF dual-hosted git repository.
>
> thecarlhall pushed a commit to annotated tag 1.8-RC2
> in repository https://gitbox.apache.org/repos/asf/commons-dbutils.git
>
> commit 3dc5efb853a4a64176664384d460e28f198c6101
> Author: Carl Hall <[hidden email]>
> AuthorDate: Wed Jan 8 22:14:42 2020 -0800
>
>     DBUTILS-143 Use try-with-resources for all prepareConnection calls
>     Remove closing of connection by private methods that are wrapped in
> convience methods
> ---
>  .../org/apache/commons/dbutils/QueryRunner.java    | 129
> +++++++--------------
>  .../apache/commons/dbutils/QueryRunnerTest.java    |  11 +-
>  2 files changed, 44 insertions(+), 96 deletions(-)
>
> diff --git a/src/main/java/org/apache/commons/dbutils/QueryRunner.java
> b/src/main/java/org/apache/commons/dbutils/QueryRunner.java
> index f76ce19..6c062f1 100644
> --- a/src/main/java/org/apache/commons/dbutils/QueryRunner.java
> +++ b/src/main/java/org/apache/commons/dbutils/QueryRunner.java
> @@ -146,9 +146,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @since DbUtils 1.1
>       */
>      public int[] batch(final String sql, final Object[][] params) throws
> SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.batch(conn, true, sql, params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.batch(conn, true, sql, params);
> +        }
>      }
>
>      /**
> @@ -167,16 +167,10 @@ public class QueryRunner extends AbstractQueryRunner
> {
>          }
>
>          if (sql == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null SQL statement");
>          }
>
>          if (params == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null parameters. If parameters aren't
> need, pass an empty array.");
>          }
>
> @@ -195,9 +189,6 @@ public class QueryRunner extends AbstractQueryRunner {
>              this.rethrow(e, sql, (Object[])params);
>          } finally {
>              close(stmt);
> -            if (closeConn) {
> -                close(conn);
> -            }
>          }
>
>          return rows;
> @@ -282,9 +273,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       */
>      @Deprecated
>      public <T> T query(final String sql, final Object param, final
> ResultSetHandler<T> rsh) throws SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.<T>query(conn, true, sql, rsh, param);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.<T>query(conn, true, sql, rsh, param);
> +        }
>      }
>
>      /**
> @@ -305,9 +296,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       */
>      @Deprecated
>      public <T> T query(final String sql, final Object[] params, final
> ResultSetHandler<T> rsh) throws SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.<T>query(conn, true, sql, rsh, params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.<T>query(conn, true, sql, rsh, params);
> +        }
>      }
>
>      /**
> @@ -324,9 +315,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @throws SQLException if a database access error occurs
>       */
>      public <T> T query(final String sql, final ResultSetHandler<T> rsh,
> final Object... params) throws SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.<T>query(conn, true, sql, rsh, params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.<T>query(conn, true, sql, rsh, params);
> +        }
>      }
>
>      /**
> @@ -342,9 +333,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @throws SQLException if a database access error occurs
>       */
>      public <T> T query(final String sql, final ResultSetHandler<T> rsh)
> throws SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.<T>query(conn, true, sql, rsh, (Object[]) null);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.<T>query(conn, true, sql, rsh, (Object[]) null);
> +        }
>      }
>
>      /**
> @@ -364,16 +355,10 @@ public class QueryRunner extends AbstractQueryRunner
> {
>          }
>
>          if (sql == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null SQL statement");
>          }
>
>          if (rsh == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null ResultSetHandler");
>          }
>
> @@ -399,9 +384,6 @@ public class QueryRunner extends AbstractQueryRunner {
>          } finally {
>              closeQuietly(rs);
>              closeQuietly(stmt);
> -            if (closeConn) {
> -                close(conn);
> -            }
>          }
>
>          return result;
> @@ -459,9 +441,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @return The number of rows updated.
>       */
>      public int update(final String sql) throws SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.update(conn, true, sql, (Object[]) null);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.update(conn, true, sql, (Object[]) null);
> +        }
>      }
>
>      /**
> @@ -477,9 +459,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @return The number of rows updated.
>       */
>      public int update(final String sql, final Object param) throws
> SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.update(conn, true, sql, param);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.update(conn, true, sql, param);
> +        }
>      }
>
>      /**
> @@ -495,9 +477,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @return The number of rows updated.
>       */
>      public int update(final String sql, final Object... params) throws
> SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.update(conn, true, sql, params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.update(conn, true, sql, params);
> +        }
>      }
>
>      /**
> @@ -516,9 +498,6 @@ public class QueryRunner extends AbstractQueryRunner {
>          }
>
>          if (sql == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null SQL statement");
>          }
>
> @@ -541,9 +520,6 @@ public class QueryRunner extends AbstractQueryRunner {
>
>          } finally {
>              close(stmt);
> -            if (closeConn) {
> -                close(conn);
> -            }
>          }
>
>          return rows;
> @@ -562,7 +538,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @since 1.6
>       */
>      public <T> T insert(final String sql, final ResultSetHandler<T> rsh)
> throws SQLException {
> -        return insert(this.prepareConnection(), true, sql, rsh,
> (Object[]) null);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return insert(conn, true, sql, rsh, (Object[]) null);
> +        }
>      }
>
>      /**
> @@ -580,7 +558,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @since 1.6
>       */
>      public <T> T insert(final String sql, final ResultSetHandler<T> rsh,
> final Object... params) throws SQLException {
> -        return insert(this.prepareConnection(), true, sql, rsh, params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return insert(conn, true, sql, rsh, params);
> +        }
>      }
>
>      /**
> @@ -633,16 +613,10 @@ public class QueryRunner extends AbstractQueryRunner
> {
>          }
>
>          if (sql == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null SQL statement");
>          }
>
>          if (rsh == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null ResultSetHandler");
>          }
>
> @@ -665,9 +639,6 @@ public class QueryRunner extends AbstractQueryRunner {
>              this.rethrow(e, sql, params);
>          } finally {
>              close(stmt);
> -            if (closeConn) {
> -                close(conn);
> -            }
>          }
>
>          return generatedKeys;
> @@ -688,7 +659,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @since 1.6
>       */
>      public <T> T insertBatch(final String sql, final ResultSetHandler<T>
> rsh, final Object[][] params) throws SQLException {
> -        return insertBatch(this.prepareConnection(), true, sql, rsh,
> params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return insertBatch(conn, true, sql, rsh, params);
> +        }
>      }
>
>      /**
> @@ -726,16 +699,10 @@ public class QueryRunner extends AbstractQueryRunner
> {
>          }
>
>          if (sql == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null SQL statement");
>          }
>
>          if (params == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null parameters. If parameters aren't
> need, pass an empty array.");
>          }
>
> @@ -756,9 +723,6 @@ public class QueryRunner extends AbstractQueryRunner {
>              this.rethrow(e, sql, (Object[])params);
>          } finally {
>              close(stmt);
> -            if (closeConn) {
> -                close(conn);
> -            }
>          }
>
>          return generatedKeys;
> @@ -810,9 +774,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @return The number of rows updated.
>       */
>      public int execute(final String sql, final Object... params) throws
> SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.execute(conn, true, sql, params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.execute(conn, true, sql, params);
> +        }
>      }
>
>      /**
> @@ -863,9 +827,9 @@ public class QueryRunner extends AbstractQueryRunner {
>       * @throws SQLException if a database access error occurs
>       */
>      public <T> List<T> execute(final String sql, final
> ResultSetHandler<T> rsh, final Object... params) throws SQLException {
> -        final Connection conn = this.prepareConnection();
> -
> -        return this.execute(conn, true, sql, rsh, params);
> +        try (final Connection conn = this.prepareConnection()) {
> +            return this.execute(conn, true, sql, rsh, params);
> +        }
>      }
>
>      /**
> @@ -885,9 +849,6 @@ public class QueryRunner extends AbstractQueryRunner {
>          }
>
>          if (sql == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null SQL statement");
>          }
>
> @@ -906,9 +867,6 @@ public class QueryRunner extends AbstractQueryRunner {
>
>          } finally {
>              close(stmt);
> -            if (closeConn) {
> -                close(conn);
> -            }
>          }
>
>          return rows;
> @@ -932,16 +890,10 @@ public class QueryRunner extends AbstractQueryRunner
> {
>          }
>
>          if (sql == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null SQL statement");
>          }
>
>          if (rsh == null) {
> -            if (closeConn) {
> -                close(conn);
> -            }
>              throw new SQLException("Null ResultSetHandler");
>          }
>
> @@ -972,9 +924,6 @@ public class QueryRunner extends AbstractQueryRunner {
>
>          } finally {
>              close(stmt);
> -            if (closeConn) {
> -                close(conn);
> -            }
>          }
>
>          return results;
> diff --git a/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
> b/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
> index 2802c16..c010858 100644
> --- a/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
> +++ b/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
> @@ -46,7 +46,6 @@ import org.junit.Assert;
>  import org.junit.Before;
>  import org.junit.Test;
>  import org.mockito.Mock;
> -import org.mockito.Mockito;
>  import org.mockito.MockitoAnnotations;
>  import org.mockito.invocation.InvocationOnMock;
>  import org.mockito.stubbing.Answer;
> @@ -645,7 +644,7 @@ public class QueryRunnerTest {
>
>          verify(call, times(1)).execute();
>          verify(call, times(1)).close();    // make sure we closed the
> statement
> -        verify(conn, times(1)).close();    // make sure we do not close
> the connection
> +        verify(conn, times(1)).close();    // make sure we closed the
> connection
>
>          // call the other variation of query
>          when(meta.getParameterCount()).thenReturn(0);
> @@ -655,7 +654,7 @@ public class QueryRunnerTest {
>
>          verify(call, times(2)).execute();
>          verify(call, times(2)).close();    // make sure we closed the
> statement
> -        verify(conn, times(2)).close();    // make sure we do not close
> the connection
> +        verify(conn, times(2)).close();    // make sure we closed the
> connection
>
>          // Test single OUT parameter
>          when(meta.getParameterCount()).thenReturn(1);
> @@ -669,7 +668,7 @@ public class QueryRunnerTest {
>
>          verify(call, times(3)).execute();
>          verify(call, times(3)).close();    // make sure we closed the
> statement
> -        verify(conn, times(3)).close();    // make sure we do not close
> the connection
> +        verify(conn, times(3)).close();    // make sure we closed the
> connection
>
>          // Test OUT parameters with IN parameters
>          when(meta.getParameterCount()).thenReturn(3);
> @@ -682,7 +681,7 @@ public class QueryRunnerTest {
>
>          verify(call, times(4)).execute();
>          verify(call, times(4)).close();    // make sure we closed the
> statement
> -        verify(conn, times(4)).close();    // make sure we do not close
> the connection
> +        verify(conn, times(4)).close();    // make sure we closed the
> connection
>
>          // Test INOUT parameters
>          when(meta.getParameterCount()).thenReturn(3);
> @@ -699,7 +698,7 @@ public class QueryRunnerTest {
>
>          verify(call, times(5)).execute();
>          verify(call, times(5)).close();    // make sure we closed the
> statement
> -        verify(conn, times(5)).close();    // make sure we do not close
> the connection
> +        verify(conn, times(5)).close();    // make sure we closed the
> connection
>      }
>
>      @Test
>
>
Reply | Threaded
Open this post in threaded view
|

Re: [commons-dbutils] 04/04: DBUTILS-143 Use try-with-resources for all prepareConnection calls Remove closing of connection by private methods that are wrapped in convience methods

Carl Hall
Both?
I’ll have to ask for a bit of guidance since it looks like DbUtils is heading towards having an o.a.c.dbutils2 package with the 2.0 work from Bill. Should we land 1.8 on master (currently on release branch) then move it to a 1.x branch and replace master with the 2.0 work?

> On Jan 9, 2020, at 5:01 AM, Gary Gregory <[hidden email]> wrote:
>
> Should this code go in master or a 1.x branch?
>
> Gary
>
> On Thu, Jan 9, 2020, 01:18 <[hidden email]> wrote:
>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> thecarlhall pushed a commit to annotated tag 1.8-RC2
>> in repository https://gitbox.apache.org/repos/asf/commons-dbutils.git
>>
>> commit 3dc5efb853a4a64176664384d460e28f198c6101
>> Author: Carl Hall <[hidden email]>
>> AuthorDate: Wed Jan 8 22:14:42 2020 -0800
>>
>>    DBUTILS-143 Use try-with-resources for all prepareConnection calls
>>    Remove closing of connection by private methods that are wrapped in
>> convience methods
>> ---
>> .../org/apache/commons/dbutils/QueryRunner.java    | 129
>> +++++++--------------
>> .../apache/commons/dbutils/QueryRunnerTest.java    |  11 +-
>> 2 files changed, 44 insertions(+), 96 deletions(-)
>>
>> diff --git a/src/main/java/org/apache/commons/dbutils/QueryRunner.java
>> b/src/main/java/org/apache/commons/dbutils/QueryRunner.java
>> index f76ce19..6c062f1 100644
>> --- a/src/main/java/org/apache/commons/dbutils/QueryRunner.java
>> +++ b/src/main/java/org/apache/commons/dbutils/QueryRunner.java
>> @@ -146,9 +146,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @since DbUtils 1.1
>>      */
>>     public int[] batch(final String sql, final Object[][] params) throws
>> SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.batch(conn, true, sql, params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.batch(conn, true, sql, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -167,16 +167,10 @@ public class QueryRunner extends AbstractQueryRunner
>> {
>>         }
>>
>>         if (sql == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null SQL statement");
>>         }
>>
>>         if (params == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null parameters. If parameters aren't
>> need, pass an empty array.");
>>         }
>>
>> @@ -195,9 +189,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>             this.rethrow(e, sql, (Object[])params);
>>         } finally {
>>             close(stmt);
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>         }
>>
>>         return rows;
>> @@ -282,9 +273,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      */
>>     @Deprecated
>>     public <T> T query(final String sql, final Object param, final
>> ResultSetHandler<T> rsh) throws SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.<T>query(conn, true, sql, rsh, param);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.<T>query(conn, true, sql, rsh, param);
>> +        }
>>     }
>>
>>     /**
>> @@ -305,9 +296,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      */
>>     @Deprecated
>>     public <T> T query(final String sql, final Object[] params, final
>> ResultSetHandler<T> rsh) throws SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.<T>query(conn, true, sql, rsh, params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.<T>query(conn, true, sql, rsh, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -324,9 +315,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @throws SQLException if a database access error occurs
>>      */
>>     public <T> T query(final String sql, final ResultSetHandler<T> rsh,
>> final Object... params) throws SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.<T>query(conn, true, sql, rsh, params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.<T>query(conn, true, sql, rsh, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -342,9 +333,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @throws SQLException if a database access error occurs
>>      */
>>     public <T> T query(final String sql, final ResultSetHandler<T> rsh)
>> throws SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.<T>query(conn, true, sql, rsh, (Object[]) null);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.<T>query(conn, true, sql, rsh, (Object[]) null);
>> +        }
>>     }
>>
>>     /**
>> @@ -364,16 +355,10 @@ public class QueryRunner extends AbstractQueryRunner
>> {
>>         }
>>
>>         if (sql == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null SQL statement");
>>         }
>>
>>         if (rsh == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null ResultSetHandler");
>>         }
>>
>> @@ -399,9 +384,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>         } finally {
>>             closeQuietly(rs);
>>             closeQuietly(stmt);
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>         }
>>
>>         return result;
>> @@ -459,9 +441,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @return The number of rows updated.
>>      */
>>     public int update(final String sql) throws SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.update(conn, true, sql, (Object[]) null);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.update(conn, true, sql, (Object[]) null);
>> +        }
>>     }
>>
>>     /**
>> @@ -477,9 +459,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @return The number of rows updated.
>>      */
>>     public int update(final String sql, final Object param) throws
>> SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.update(conn, true, sql, param);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.update(conn, true, sql, param);
>> +        }
>>     }
>>
>>     /**
>> @@ -495,9 +477,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @return The number of rows updated.
>>      */
>>     public int update(final String sql, final Object... params) throws
>> SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.update(conn, true, sql, params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.update(conn, true, sql, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -516,9 +498,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>         }
>>
>>         if (sql == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null SQL statement");
>>         }
>>
>> @@ -541,9 +520,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>
>>         } finally {
>>             close(stmt);
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>         }
>>
>>         return rows;
>> @@ -562,7 +538,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @since 1.6
>>      */
>>     public <T> T insert(final String sql, final ResultSetHandler<T> rsh)
>> throws SQLException {
>> -        return insert(this.prepareConnection(), true, sql, rsh,
>> (Object[]) null);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return insert(conn, true, sql, rsh, (Object[]) null);
>> +        }
>>     }
>>
>>     /**
>> @@ -580,7 +558,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @since 1.6
>>      */
>>     public <T> T insert(final String sql, final ResultSetHandler<T> rsh,
>> final Object... params) throws SQLException {
>> -        return insert(this.prepareConnection(), true, sql, rsh, params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return insert(conn, true, sql, rsh, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -633,16 +613,10 @@ public class QueryRunner extends AbstractQueryRunner
>> {
>>         }
>>
>>         if (sql == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null SQL statement");
>>         }
>>
>>         if (rsh == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null ResultSetHandler");
>>         }
>>
>> @@ -665,9 +639,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>             this.rethrow(e, sql, params);
>>         } finally {
>>             close(stmt);
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>         }
>>
>>         return generatedKeys;
>> @@ -688,7 +659,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @since 1.6
>>      */
>>     public <T> T insertBatch(final String sql, final ResultSetHandler<T>
>> rsh, final Object[][] params) throws SQLException {
>> -        return insertBatch(this.prepareConnection(), true, sql, rsh,
>> params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return insertBatch(conn, true, sql, rsh, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -726,16 +699,10 @@ public class QueryRunner extends AbstractQueryRunner
>> {
>>         }
>>
>>         if (sql == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null SQL statement");
>>         }
>>
>>         if (params == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null parameters. If parameters aren't
>> need, pass an empty array.");
>>         }
>>
>> @@ -756,9 +723,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>             this.rethrow(e, sql, (Object[])params);
>>         } finally {
>>             close(stmt);
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>         }
>>
>>         return generatedKeys;
>> @@ -810,9 +774,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @return The number of rows updated.
>>      */
>>     public int execute(final String sql, final Object... params) throws
>> SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.execute(conn, true, sql, params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.execute(conn, true, sql, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -863,9 +827,9 @@ public class QueryRunner extends AbstractQueryRunner {
>>      * @throws SQLException if a database access error occurs
>>      */
>>     public <T> List<T> execute(final String sql, final
>> ResultSetHandler<T> rsh, final Object... params) throws SQLException {
>> -        final Connection conn = this.prepareConnection();
>> -
>> -        return this.execute(conn, true, sql, rsh, params);
>> +        try (final Connection conn = this.prepareConnection()) {
>> +            return this.execute(conn, true, sql, rsh, params);
>> +        }
>>     }
>>
>>     /**
>> @@ -885,9 +849,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>         }
>>
>>         if (sql == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null SQL statement");
>>         }
>>
>> @@ -906,9 +867,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>
>>         } finally {
>>             close(stmt);
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>         }
>>
>>         return rows;
>> @@ -932,16 +890,10 @@ public class QueryRunner extends AbstractQueryRunner
>> {
>>         }
>>
>>         if (sql == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null SQL statement");
>>         }
>>
>>         if (rsh == null) {
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>             throw new SQLException("Null ResultSetHandler");
>>         }
>>
>> @@ -972,9 +924,6 @@ public class QueryRunner extends AbstractQueryRunner {
>>
>>         } finally {
>>             close(stmt);
>> -            if (closeConn) {
>> -                close(conn);
>> -            }
>>         }
>>
>>         return results;
>> diff --git a/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
>> b/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
>> index 2802c16..c010858 100644
>> --- a/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
>> +++ b/src/test/java/org/apache/commons/dbutils/QueryRunnerTest.java
>> @@ -46,7 +46,6 @@ import org.junit.Assert;
>> import org.junit.Before;
>> import org.junit.Test;
>> import org.mockito.Mock;
>> -import org.mockito.Mockito;
>> import org.mockito.MockitoAnnotations;
>> import org.mockito.invocation.InvocationOnMock;
>> import org.mockito.stubbing.Answer;
>> @@ -645,7 +644,7 @@ public class QueryRunnerTest {
>>
>>         verify(call, times(1)).execute();
>>         verify(call, times(1)).close();    // make sure we closed the
>> statement
>> -        verify(conn, times(1)).close();    // make sure we do not close
>> the connection
>> +        verify(conn, times(1)).close();    // make sure we closed the
>> connection
>>
>>         // call the other variation of query
>>         when(meta.getParameterCount()).thenReturn(0);
>> @@ -655,7 +654,7 @@ public class QueryRunnerTest {
>>
>>         verify(call, times(2)).execute();
>>         verify(call, times(2)).close();    // make sure we closed the
>> statement
>> -        verify(conn, times(2)).close();    // make sure we do not close
>> the connection
>> +        verify(conn, times(2)).close();    // make sure we closed the
>> connection
>>
>>         // Test single OUT parameter
>>         when(meta.getParameterCount()).thenReturn(1);
>> @@ -669,7 +668,7 @@ public class QueryRunnerTest {
>>
>>         verify(call, times(3)).execute();
>>         verify(call, times(3)).close();    // make sure we closed the
>> statement
>> -        verify(conn, times(3)).close();    // make sure we do not close
>> the connection
>> +        verify(conn, times(3)).close();    // make sure we closed the
>> connection
>>
>>         // Test OUT parameters with IN parameters
>>         when(meta.getParameterCount()).thenReturn(3);
>> @@ -682,7 +681,7 @@ public class QueryRunnerTest {
>>
>>         verify(call, times(4)).execute();
>>         verify(call, times(4)).close();    // make sure we closed the
>> statement
>> -        verify(conn, times(4)).close();    // make sure we do not close
>> the connection
>> +        verify(conn, times(4)).close();    // make sure we closed the
>> connection
>>
>>         // Test INOUT parameters
>>         when(meta.getParameterCount()).thenReturn(3);
>> @@ -699,7 +698,7 @@ public class QueryRunnerTest {
>>
>>         verify(call, times(5)).execute();
>>         verify(call, times(5)).close();    // make sure we closed the
>> statement
>> -        verify(conn, times(5)).close();    // make sure we do not close
>> the connection
>> +        verify(conn, times(5)).close();    // make sure we closed the
>> connection
>>     }
>>
>>     @Test
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]