On 4/16/14, 3:28 PM, sebb wrote:
> 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();

Thanks!  That's what I meant :)

Fixed in r1588090

Phil
>
> 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]
>
>


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

Reply via email to