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
}
}