commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ma...@apache.org
Subject svn commit: r787049 - /commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java
Date Sun, 21 Jun 2009 16:41:18 GMT
Author: markt
Date: Sun Jun 21 16:41:18 2009
New Revision: 787049

URL: http://svn.apache.org/viewvc?rev=787049&view=rev
Log:
Fix DBCP-288. When passivating a DelegatingConnection, not all of the trace objects will be
statements so check each one before casting and closing.
Based on a patch provided by Marc Kannegie├čer

Modified:
    commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java

Modified: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java?rev=787049&r1=787048&r2=787049&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java (original)
+++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java Sun
Jun 21 16:41:18 2009
@@ -24,6 +24,7 @@
 import java.sql.SQLException;
 import java.sql.SQLWarning;
 import java.sql.Statement;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 /* JDBC_4_ANT_KEY_BEGIN */
@@ -410,12 +411,15 @@
         try {
             // The JDBC spec requires that a Connection close any open
             // Statement's when it is closed.
-            List statements = getTrace();
-            if( statements != null) {
-                Statement[] set = new Statement[statements.size()];
-                statements.toArray(set);
-                for (int i = 0; i < set.length; i++) {
-                    set[i].close();
+            // POOL-288. Not all the traced objects will be statements
+            List traces = getTrace();
+            if(traces != null) {
+                Iterator traceIter = traces.iterator();
+                while (traceIter.hasNext()) {
+                    Object trace = traceIter.next();
+                    if (trace instanceof Statement) {
+                        ((Statement) trace).close();
+                    }
                 }
                 clearTrace();
             }



Mime
View raw message