On 16 April 2014 23:12, <[email protected]> wrote:
> Author: psteitz
> Date: Wed Apr 16 22:12:15 2014
> New Revision: 1588087
>
> URL: http://svn.apache.org/r1588087
> Log:
> Modified DelegatingStatement#close to a) null its delegate reference b) no-op
> on isClosed. JIRA: DBCP-415.
>
> Modified:
>
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingPreparedStatement.java
>
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java
>
> commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestPStmtPoolingBasicDataSource.java
>
> Modified:
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingPreparedStatement.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingPreparedStatement.java?rev=1588087&r1=1588086&r2=1588087&view=diff
> ==============================================================================
> ---
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingPreparedStatement.java
> (original)
> +++
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingPreparedStatement.java
> Wed Apr 16 22:12:15 2014
> @@ -27,6 +27,7 @@ import java.sql.Ref;
> import java.sql.ResultSet;
> import java.sql.ResultSetMetaData;
> import java.sql.SQLException;
> +import java.sql.Statement;
> import java.sql.Time;
> import java.sql.Timestamp;
> import java.util.Calendar;
> @@ -252,7 +253,8 @@ public class DelegatingPreparedStatement
> */
> @Override
> public String toString() {
> - return getDelegate().toString();
> + Statement statement = getDelegate();
> + return statement == null ? "NULL" : getDelegate().toString();
Why call getDelegate() again? I would expect to see:
return statement == null ? "NULL" : statement .toString();
Otherwise could get NPE if getDelegate() changes to return null ...
> }
>
> @Override
>
> Modified:
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java?rev=1588087&r1=1588086&r2=1588087&view=diff
> ==============================================================================
> ---
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java
> (original)
> +++
> commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java
> Wed Apr 16 22:12:15 2014
> @@ -129,6 +129,9 @@ public class DelegatingStatement extends
> */
> @Override
> public void close() throws SQLException {
> + if (isClosed()) {
> + return;
> + }
> try {
> try {
> if (_conn != null) {
> @@ -159,6 +162,7 @@ public class DelegatingStatement extends
> }
> finally {
> _closed = true;
> + _stmt = null;
> }
> }
>
> @@ -352,7 +356,7 @@ public class DelegatingStatement extends
> */
> @Override
> public String toString() {
> - return _stmt.toString();
> + return _stmt == null ? "NULL" : _stmt.toString();
> }
>
> @Override
>
> Modified:
> commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestPStmtPoolingBasicDataSource.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestPStmtPoolingBasicDataSource.java?rev=1588087&r1=1588086&r2=1588087&view=diff
> ==============================================================================
> ---
> commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestPStmtPoolingBasicDataSource.java
> (original)
> +++
> commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestPStmtPoolingBasicDataSource.java
> Wed Apr 16 22:12:15 2014
> @@ -155,7 +155,7 @@ public class TestPStmtPoolingBasicDataSo
>
> conn.setCatalog("catalog1");
> DelegatingPreparedStatement stmt3 = (DelegatingPreparedStatement)
> conn.prepareStatement("select 'a' from dual");
> - TesterPreparedStatement inner3 = (TesterPreparedStatement)
> stmt1.getInnermostDelegate();
> + TesterPreparedStatement inner3 = (TesterPreparedStatement)
> stmt3.getInnermostDelegate();
> assertEquals("catalog1", inner3.getCatalog());
> stmt3.close();
>
> @@ -231,7 +231,7 @@ public class TestPStmtPoolingBasicDataSo
>
> // currently fails with AssertionFailedError: Did not expect any threads
> to fail expected:<0> but was:<1>
> // The following appears in the console: Unexpected error: ResultSet is
> closed.
> - public void IGNOREDtestMultipleThreads1() throws Exception {
> + public void testMultipleThreads1() throws Exception {
> ds.setMaxWaitMillis(-1);
> ds.setMaxTotal(5);
> ds.setMaxOpenPreparedStatements(-1);
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]