You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2016/07/11 22:19:58 UTC

tomee git commit: https://issues.apache.org/jira/browse/TOMEE-1860 - Close & test

Repository: tomee
Updated Branches:
  refs/heads/master c2edc4d6a -> 0511ea245


https://issues.apache.org/jira/browse/TOMEE-1860 - Close & test


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0511ea24
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0511ea24
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0511ea24

Branch: refs/heads/master
Commit: 0511ea245a20a51e2de2319097716b24ba64f69b
Parents: c2edc4d
Author: AndyGee <an...@gmx.de>
Authored: Tue Jul 12 00:18:50 2016 +0200
Committer: AndyGee <an...@gmx.de>
Committed: Tue Jul 12 00:18:50 2016 +0200

----------------------------------------------------------------------
 .../resource/jdbc/dbcp/BasicManagedDataSource.java  | 16 +++++++++++++---
 .../resource/jdbc/DbcpNPEXAConnectionTest.java      |  8 ++++++--
 2 files changed, 19 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/0511ea24/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
index 6288b7f..67c06fb 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
@@ -88,10 +88,20 @@ public class BasicManagedDataSource extends org.apache.commons.dbcp2.managed.Bas
                 return new ManagedConnection<PoolableConnection>(getPool(), transactionRegistry, isAccessToUnderlyingConnectionAllowed()) {
                     @Override
                     public void close() throws SQLException {
-                        if (getDelegateInternal() == null) {
-                            return;
+                        if (!isClosedInternal()) {
+                            try {
+                                if (null != getDelegateInternal()) {
+                                    super.close();
+                                }
+                            } finally {
+                                setClosedInternal(true);
+                            }
                         }
-                        super.close();
+                    }
+
+                    @Override
+                    public boolean isClosed() throws SQLException {
+                        return isClosedInternal() || null != getDelegateInternal() && getDelegateInternal().isClosed();
                     }
                 };
             }

http://git-wip-us.apache.org/repos/asf/tomee/blob/0511ea24/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/DbcpNPEXAConnectionTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/DbcpNPEXAConnectionTest.java b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/DbcpNPEXAConnectionTest.java
index 4b32898..a662a1d 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/DbcpNPEXAConnectionTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/DbcpNPEXAConnectionTest.java
@@ -86,7 +86,9 @@ public class DbcpNPEXAConnectionTest {
 
     @Test
     public void check() throws SQLException {
-        ejb.newConn().close(); // no NPE
+        final Connection con = ejb.newConn();
+        con.close(); // no NPE
+        Assert.assertTrue("Connection was not closed", con.isClosed());
         final GenericObjectPool<PoolableConnection> pool =  GenericObjectPool.class.cast(Reflections.get(ds, "connectionPool"));
         assertEquals(0, pool.getNumActive());
     }
@@ -97,7 +99,9 @@ public class DbcpNPEXAConnectionTest {
         private DataSource ds;
 
         public Connection newConn() throws SQLException {
-            ds.getConnection().close(); // first connection is not "shared" so closes correctly
+            final Connection con = ds.getConnection();
+            con.close(); // first connection is not "shared" so closes correctly
+            Assert.assertTrue("Connection was not closed", con.isClosed());
             return use(ds.getConnection()); // this one is shared so delegate will be null and close outside JTA will fail
         }
     }