You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2015/07/30 16:53:28 UTC
[17/17] tomee git commit: Fixing merge
Fixing merge
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/553b0fd5
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/553b0fd5
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/553b0fd5
Branch: refs/heads/tomee-1.7.x
Commit: 553b0fd56d69d99f05733406f8e26fe7e0acdd6f
Parents: 55c6895
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Thu Jul 30 15:52:35 2015 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Thu Jul 30 15:52:35 2015 +0100
----------------------------------------------------------------------
.../openejb/assembler/classic/Assembler.java | 5 --
.../persistence/PersistenceUnitInfoImpl.java | 8 +++-
.../jdbc/FlushableDataSourceHandler.java | 9 +---
.../resource/jdbc/SimpleDataSourceCreator.java | 8 ++--
.../jdbc/dbcp/DbcpDataSourceCreator.java | 8 ++--
.../managed/JTADataSourceWrapperFactory.java | 7 +--
.../jdbc/managed/local/ManagedConnection.java | 48 +++++++++++---------
.../jdbc/managed/local/ManagedDataSource.java | 47 ++++++++-----------
.../managed/xa/CommonDataSourceAdapter.java | 9 ++++
.../jdbc/managed/xa/DataSourceXADataSource.java | 7 +--
.../jdbc/managed/xa/ManagedXAConnection.java | 23 +++++-----
.../jdbc/managed/xa/ManagedXADataSource.java | 28 ++++++------
.../jdbc/pool/PoolDataSourceCreator.java | 20 ++++----
.../resource/jdbc/ManagedDataSourceTest.java | 27 +++--------
.../MultiThreadedManagedDataSourceTest.java | 26 +++--------
examples/datasource-versioning/pom.xml | 2 +-
.../openejb/bonecp/BoneCPDataSourceCreator.java | 4 +-
.../BoneCPPooledDataSourceFromPoolTest.java | 30 +++---------
.../bonecp/BoneCPPooledDataSourceTest.java | 27 ++++-------
.../org/apache/openejb/bonecp/XABoneCPTest.java | 4 +-
.../jdbc/TomcatDataSourceFromPoolTest.java | 27 +++--------
.../org/apache/tomee/jdbc/TomcatPoolTest.java | 27 +++--------
22 files changed, 163 insertions(+), 238 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index a2476ef..9913b64 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -1710,11 +1710,6 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
} catch (final Throwable t) {
//Ignore
}
-
- if (object instanceof ManagedDataSource) {
- ((ManagedDataSource) object).clean();
- }
-
} else if (object instanceof ConnectorReference) {
final ConnectorReference cr = (ConnectorReference) object;
try {
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java b/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
index c849ad6..3ed9aff 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
@@ -19,6 +19,7 @@ package org.apache.openejb.persistence;
import org.apache.openejb.OpenEJB;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.resource.jdbc.managed.xa.DataSourceXADataSource;
import org.apache.openejb.util.URLs;
import org.apache.openejb.util.classloader.URLClassLoaderFirst;
@@ -31,6 +32,7 @@ import javax.persistence.spi.PersistenceUnitTransactionType;
import javax.sql.CommonDataSource;
import javax.sql.DataSource;
import javax.sql.XADataSource;
+import javax.transaction.TransactionSynchronizationRegistry;
import java.io.File;
import java.io.IOException;
import java.lang.instrument.ClassFileTransformer;
@@ -194,7 +196,8 @@ public class PersistenceUnitInfoImpl implements PersistenceUnitInfo {
public void setJtaDataSource(final CommonDataSource jtaDataSource) {
if (XADataSource.class.isInstance(jtaDataSource)) {
- this.jtaDataSource = new DataSourceXADataSource(jtaDataSource, OpenEJB.getTransactionManager());
+ this.jtaDataSource = new DataSourceXADataSource(
+ jtaDataSource, OpenEJB.getTransactionManager(), SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
} else {
this.jtaDataSource = DataSource.class.cast(jtaDataSource);
}
@@ -206,7 +209,8 @@ public class PersistenceUnitInfoImpl implements PersistenceUnitInfo {
public void setNonJtaDataSource(final CommonDataSource nonJtaDataSource) {
if (XADataSource.class.isInstance(nonJtaDataSource)) {
- this.nonJtaDataSource = new DataSourceXADataSource(nonJtaDataSource, OpenEJB.getTransactionManager());
+ this.nonJtaDataSource = new DataSourceXADataSource(
+ nonJtaDataSource, OpenEJB.getTransactionManager(), SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
} else {
this.nonJtaDataSource = DataSource.class.cast(nonJtaDataSource);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/FlushableDataSourceHandler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/FlushableDataSourceHandler.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/FlushableDataSourceHandler.java
index 79c9510..5b974ed 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/FlushableDataSourceHandler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/FlushableDataSourceHandler.java
@@ -16,12 +16,10 @@
*/
package org.apache.openejb.resource.jdbc;
-import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
import org.apache.openejb.util.Duration;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
-import javax.sql.CommonDataSource;
import java.io.Flushable;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
@@ -29,6 +27,7 @@ import java.lang.reflect.Method;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import javax.sql.CommonDataSource;
public class FlushableDataSourceHandler implements InvocationHandler {
private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, FlushableDataSourceHandler.class);
@@ -58,10 +57,6 @@ public class FlushableDataSourceHandler implements InvocationHandler {
} catch (final Throwable t) {
//Ignore
}
-
- if (ManagedDataSource.class.isInstance(old)) {
- ManagedDataSource.class.cast(old).clean();
- }
}
}
@@ -120,4 +115,4 @@ public class FlushableDataSourceHandler implements InvocationHandler {
this.minEvictableIdleTime = minEvictableIdleTime;
}
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
index 47b774c..fd205e3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
@@ -18,6 +18,7 @@
package org.apache.openejb.resource.jdbc;
import org.apache.openejb.OpenEJB;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.resource.XAResourceWrapper;
import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
import org.apache.openejb.resource.jdbc.managed.xa.ManagedXADataSource;
@@ -28,6 +29,7 @@ import javax.sql.CommonDataSource;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
import java.util.Properties;
public class SimpleDataSourceCreator implements DataSourceCreator {
@@ -35,9 +37,9 @@ public class SimpleDataSourceCreator implements DataSourceCreator {
public DataSource managed(final String name, final CommonDataSource ds) {
final TransactionManager transactionManager = OpenEJB.getTransactionManager();
if (XADataSource.class.isInstance(ds)) {
- return new ManagedXADataSource(XADataSource.class.cast(ds), transactionManager);
+ return new ManagedXADataSource(XADataSource.class.cast(ds), transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
- return new ManagedDataSource(DataSource.class.cast(ds), transactionManager);
+ return new ManagedDataSource(DataSource.class.cast(ds), transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
@Override
@@ -75,4 +77,4 @@ public class SimpleDataSourceCreator implements DataSourceCreator {
public ObjectRecipe clearRecipe(final Object object) {
return null;
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
index 7306655..0c96dab 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
@@ -18,6 +18,7 @@
package org.apache.openejb.resource.jdbc.dbcp;
import org.apache.openejb.OpenEJB;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
import org.apache.openejb.resource.jdbc.managed.xa.ManagedXADataSource;
import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
@@ -27,6 +28,7 @@ import javax.sql.CommonDataSource;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
import java.util.Properties;
// just a sample showing how to implement a datasourcecreator
@@ -41,9 +43,9 @@ public class DbcpDataSourceCreator extends PoolDataSourceCreator {
public DataSource managed(final String name, final CommonDataSource ds) {
final TransactionManager transactionManager = OpenEJB.getTransactionManager();
if (ds instanceof XADataSource) {
- return new ManagedXADataSource(ds, transactionManager);
+ return new ManagedXADataSource(ds, transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
- return new ManagedDataSource(DataSource.class.cast(ds), transactionManager);
+ return new ManagedDataSource(DataSource.class.cast(ds), transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
@Override
@@ -91,4 +93,4 @@ public class DbcpDataSourceCreator extends PoolDataSourceCreator {
basicDataSource.setDriverClassLoader(contextClassLoader);
}
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/JTADataSourceWrapperFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/JTADataSourceWrapperFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/JTADataSourceWrapperFactory.java
index 48e29fc..6c0d2f4 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/JTADataSourceWrapperFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/JTADataSourceWrapperFactory.java
@@ -30,6 +30,7 @@ import javax.sql.CommonDataSource;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
public class JTADataSourceWrapperFactory {
private String delegate = "datasource";
@@ -41,9 +42,9 @@ public class JTADataSourceWrapperFactory {
CommonDataSource cds = findDelegate();
if (cds instanceof XADataSource) {
- cds = new ManagedXADataSource(cds, transactionManager);
+ cds = new ManagedXADataSource(cds, transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
} else {
- cds = new ManagedDataSource(DataSource.class.cast(cds), transactionManager);
+ cds = new ManagedDataSource(DataSource.class.cast(cds), transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
if (logSql) {
@@ -72,4 +73,4 @@ public class JTADataSourceWrapperFactory {
public void setLogPackages(final String logPackages) {
this.logPackages = logPackages;
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
index 335891a..fa6c7fe 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
@@ -17,48 +17,53 @@
package org.apache.openejb.resource.jdbc.managed.local;
-import org.apache.openejb.OpenEJB;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Wrapper;
+
import javax.sql.CommonDataSource;
+import javax.sql.DataSource;
+import javax.sql.XAConnection;
+import javax.sql.XADataSource;
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
import javax.transaction.xa.XAResource;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
public class ManagedConnection implements InvocationHandler {
- private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB_RESOURCE_JDBC, ManagedConnection.class);
-
- private static final Map<Integer, Map<Transaction, Connection>> CONNECTION_BY_TX_BY_DS = new ConcurrentHashMap<Integer, Map<Transaction, Connection>>();
-
private final TransactionManager transactionManager;
- private final LocalXAResource xaResource;
+ private final Key key;
+ private final TransactionSynchronizationRegistry registry;
+ protected XAResource xaResource;
protected Connection delegate;
+ protected XAConnection xaConnection;
private Transaction currentTransaction;
private boolean closed;
- private final Map<Transaction, Connection> connectionByTx;
-
- public ManagedConnection(final CommonDataSource ds, final Connection connection, final TransactionManager txMgr) {
- delegate = connection;
+ public ManagedConnection(final CommonDataSource ds,
+ final TransactionManager txMgr,
+ final TransactionSynchronizationRegistry txRegistry,
+ final String user, final String password) {
transactionManager = txMgr;
+ registry = txRegistry;
closed = false;
- xaResource = new LocalXAResource(delegate);
- connectionByTx = CONNECTION_BY_TX_BY_DS.get(ds.hashCode());
+ key = new Key(ds, user, password);
}
public XAResource getXAResource() throws SQLException {
+ if (xaResource == null) {
+ newConnection();
+ }
return xaResource;
}
@@ -174,7 +179,6 @@ public class ManagedConnection implements InvocationHandler {
}
delegate.setAutoCommit(value);
}
-
private static Object invoke(final Method method, final Connection delegate, final Object[] args) throws Throwable {
try {
return method.invoke(delegate, args);
@@ -226,7 +230,7 @@ public class ManagedConnection implements InvocationHandler {
}
}
- private static class ClosingSynchronization implements Synchronization {
+ private static class ClosingSynchronization implements Synchronization {
private final Connection connection;
public ClosingSynchronization(final Connection delegate) {
@@ -281,4 +285,4 @@ public class ManagedConnection implements InvocationHandler {
return hash;
}
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedDataSource.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedDataSource.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedDataSource.java
index 0c074f9..14dc99e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedDataSource.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedDataSource.java
@@ -17,44 +17,45 @@
package org.apache.openejb.resource.jdbc.managed.local;
-import org.apache.openejb.util.reflection.Reflections;
-
-import javax.sql.CommonDataSource;
-import javax.sql.DataSource;
-import javax.transaction.TransactionManager;
+import java.io.ObjectStreamException;
import java.io.PrintWriter;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.logging.Logger;
+import javax.sql.CommonDataSource;
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
public class ManagedDataSource implements DataSource {
private static final Class<?>[] CONNECTION_CLASS = new Class<?>[]{Connection.class};
- protected final DataSource delegate;
+ protected final CommonDataSource delegate;
protected final TransactionManager transactionManager;
+ protected final TransactionSynchronizationRegistry registry;
protected final int hashCode;
- protected ManagedDataSource(final DataSource ds, final TransactionManager txMgr, final int hc) {
+ protected ManagedDataSource(final CommonDataSource ds, final TransactionManager txMgr, final TransactionSynchronizationRegistry txRegistry, final int hc) {
delegate = ds;
hashCode = hc;
transactionManager = txMgr;
- ManagedConnection.pushDataSource(this);
+ registry = txRegistry;
}
- public ManagedDataSource(final DataSource ds, final TransactionManager txMgr) {
- this(ds, txMgr, ds.hashCode());
+ public ManagedDataSource(final DataSource ds, final TransactionManager txMgr, final TransactionSynchronizationRegistry txRegistry) {
+ this(ds, txMgr, txRegistry, ds.hashCode());
}
@Override
public Connection getConnection() throws SQLException {
- return managed(delegate.getConnection());
+ return managed(null, null);
}
@Override
public Connection getConnection(final String username, final String password) throws SQLException {
- return managed(delegate.getConnection(username, password));
+ return managed(username, password);
}
@Override
@@ -79,31 +80,23 @@ public class ManagedDataSource implements DataSource {
@Override
public <T> T unwrap(final Class<T> iface) throws SQLException {
- return delegate.unwrap(iface);
+ return DataSource.class.isInstance(delegate) ? DataSource.class.cast(delegate).unwrap(iface) : null;
}
@Override
public boolean isWrapperFor(final Class<?> iface) throws SQLException {
- return delegate.isWrapperFor(iface);
- }
-
- // @Override JDK7
- public Logger getParentLogger() throws SQLFeatureNotSupportedException {
- return (Logger) Reflections.invokeByReflection(delegate, "getParentLogger", new Class<?>[0], null);
+ return DataSource.class.isInstance(delegate) && DataSource.class.cast(delegate).isWrapperFor(iface);
}
- private Connection managed(final Connection connection) {
- return (Connection) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), CONNECTION_CLASS, new ManagedConnection(this, connection, transactionManager));
+ private Connection managed(final String u, final String p) {
+ return (Connection) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), CONNECTION_CLASS,
+ new ManagedConnection(delegate, transactionManager, registry, u, p));
}
- public DataSource getDelegate() {
+ public CommonDataSource getDelegate() {
return delegate;
}
- public void clean() {
- ManagedConnection.cleanDataSource(this);
- }
-
@Override
public boolean equals(final Object o) {
return CommonDataSource.class.isInstance(o) && hashCode == o.hashCode();
@@ -113,4 +106,4 @@ public class ManagedDataSource implements DataSource {
public int hashCode() {
return hashCode;
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/CommonDataSourceAdapter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/CommonDataSourceAdapter.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/CommonDataSourceAdapter.java
index bab9a55..59e7bb9 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/CommonDataSourceAdapter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/CommonDataSourceAdapter.java
@@ -36,6 +36,15 @@ public class CommonDataSourceAdapter implements InvocationHandler {
@Override
public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
+ if (Object.class == method.getDeclaringClass() && "equals".equals(method.getName())) {
+ if (delegate == args[0]) {
+ return true;
+ }
+ }
return method.invoke(delegate, args); // we suppose missing methods are not called - it is the case thanks to ManagedXADataSource
}
+
+ public CommonDataSource getDelegate() {
+ return delegate;
+ }
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/DataSourceXADataSource.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/DataSourceXADataSource.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/DataSourceXADataSource.java
index 5ec6aea..ac26f80 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/DataSourceXADataSource.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/DataSourceXADataSource.java
@@ -23,14 +23,15 @@ import javax.sql.CommonDataSource;
import javax.sql.XAConnection;
import javax.sql.XADataSource;
import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
import java.sql.Connection;
import java.sql.SQLException;
public class DataSourceXADataSource extends ManagedDataSource {
private final XADataSource xaDataSource;
- public DataSourceXADataSource(final CommonDataSource ds, final TransactionManager txMgr) {
- super(CommonDataSourceAdapter.wrap(ds), txMgr, ds.hashCode());
+ public DataSourceXADataSource(final CommonDataSource ds, final TransactionManager txMgr, final TransactionSynchronizationRegistry registry) {
+ super(CommonDataSourceAdapter.wrap(ds), txMgr, registry, ds.hashCode());
xaDataSource = XADataSource.class.cast(ds);
}
@@ -45,4 +46,4 @@ public class DataSourceXADataSource extends ManagedDataSource {
final XAConnection xaConnection = xaDataSource.getXAConnection(username, password);
return xaConnection.getConnection();
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java
index 9980793..cc6a591 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java
@@ -19,28 +19,29 @@ package org.apache.openejb.resource.jdbc.managed.xa;
import org.apache.openejb.resource.jdbc.managed.local.ManagedConnection;
-import javax.sql.DataSource;
-import javax.sql.XAConnection;
+import java.sql.SQLException;
+import javax.sql.CommonDataSource;
import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
import javax.transaction.xa.XAResource;
-import java.sql.Connection;
-import java.sql.SQLException;
public class ManagedXAConnection extends ManagedConnection {
- private final XAConnection xaConnection;
-
- public ManagedXAConnection(final DataSource ds, final XAConnection xa, final Connection connection, final TransactionManager txMgr) throws SQLException {
- super(ds, connection, txMgr);
- this.xaConnection = xa;
+ public ManagedXAConnection(final CommonDataSource ds, final TransactionManager txMgr,
+ final TransactionSynchronizationRegistry txRegistry,
+ final String user, final String password) throws SQLException {
+ super(ds, txMgr, txRegistry, user, password);
}
@Override
public XAResource getXAResource() throws SQLException {
- return xaConnection.getXAResource();
+ if (xaResource == null) {
+ newConnection();
+ }
+ return xaResource;
}
@Override
protected void setAutoCommit(final boolean value) throws SQLException {
// no-op
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXADataSource.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXADataSource.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXADataSource.java
index 6e51eb8..d0c972c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXADataSource.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXADataSource.java
@@ -19,37 +19,35 @@ package org.apache.openejb.resource.jdbc.managed.xa;
import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
-import javax.sql.CommonDataSource;
-import javax.sql.XAConnection;
-import javax.sql.XADataSource;
-import javax.transaction.TransactionManager;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.SQLException;
+import javax.sql.CommonDataSource;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
public class ManagedXADataSource extends ManagedDataSource {
private static final Class<?>[] CONNECTION_CLASS = new Class<?>[]{Connection.class};
- private final XADataSource xaDataSource;
+ private final TransactionManager txMgr;
- public ManagedXADataSource(final CommonDataSource ds, final TransactionManager txMgr) {
- super(CommonDataSourceAdapter.wrap(ds), txMgr, ds.hashCode());
- xaDataSource = XADataSource.class.cast(ds);
+ public ManagedXADataSource(final CommonDataSource ds, final TransactionManager txMgr, final TransactionSynchronizationRegistry registry) {
+ super(ds, txMgr, registry, ds.hashCode());
+ this.txMgr = txMgr; // ObjectRecipe and our logic will setTxMgr but we want the original one (wrapper)
}
@Override
public Connection getConnection() throws SQLException {
- final XAConnection xaConnection = xaDataSource.getXAConnection();
- return managedXA(xaConnection, xaConnection.getConnection());
+ return managedXA(null, null);
}
@Override
public Connection getConnection(final String username, final String password) throws SQLException {
- final XAConnection xaConnection = xaDataSource.getXAConnection(username, password);
- return managedXA(xaConnection, xaConnection.getConnection());
+ return managedXA(username, password);
}
- private Connection managedXA(final XAConnection xaConnection, final Connection connection) throws SQLException {
- return Connection.class.cast(Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), CONNECTION_CLASS, new ManagedXAConnection(delegate, xaConnection, connection, transactionManager)));
+ private Connection managedXA(final String u, final String p) throws SQLException {
+ return Connection.class.cast(Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), CONNECTION_CLASS,
+ new ManagedXAConnection(delegate, txMgr, registry, u, p)));
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
index f041a88..cc45c48 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
@@ -18,6 +18,7 @@
package org.apache.openejb.resource.jdbc.pool;
import org.apache.openejb.OpenEJB;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.resource.TransactionManagerWrapper;
import org.apache.openejb.resource.XAResourceWrapper;
import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
@@ -26,14 +27,15 @@ import org.apache.openejb.util.PassthroughFactory;
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
-import javax.sql.CommonDataSource;
-import javax.sql.DataSource;
-import javax.sql.XADataSource;
-import javax.transaction.TransactionManager;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
+import javax.sql.CommonDataSource;
+import javax.sql.DataSource;
+import javax.sql.XADataSource;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
public abstract class PoolDataSourceCreator implements DataSourceCreator {
protected final Map<Object, ObjectRecipe> recipes = new HashMap<Object, ObjectRecipe>();
@@ -53,9 +55,9 @@ public abstract class PoolDataSourceCreator implements DataSourceCreator {
public DataSource managed(final String name, final CommonDataSource ds) {
final TransactionManager transactionManager = OpenEJB.getTransactionManager();
if (ds instanceof XADataSource) {
- return new ManagedXADataSource(ds, transactionManager);
+ return new ManagedXADataSource(ds, transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
- return new ManagedDataSource(DataSource.class.cast(ds), transactionManager);
+ return new ManagedDataSource(DataSource.class.cast(ds), transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
@Override
@@ -63,9 +65,9 @@ public abstract class PoolDataSourceCreator implements DataSourceCreator {
final TransactionManager transactionManager = new TransactionManagerWrapper(OpenEJB.getTransactionManager(), name, xaResourceWrapper);
final CommonDataSource ds = pool(name, driver, properties);
if (ds instanceof XADataSource) {
- return new ManagedXADataSource(ds, transactionManager);
+ return new ManagedXADataSource(ds, transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
- return new ManagedDataSource(DataSource.class.cast(ds), transactionManager);
+ return new ManagedDataSource(DataSource.class.cast(ds), transactionManager, SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class));
}
@Override
@@ -122,4 +124,4 @@ public abstract class PoolDataSourceCreator implements DataSourceCreator {
return recipes.remove(object);
}
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java
index e959693..f2005f5 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java
@@ -19,14 +19,18 @@ package org.apache.openejb.resource.jdbc;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.SingletonBean;
import org.apache.openejb.junit.ApplicationComposer;
-import org.apache.openejb.resource.jdbc.managed.local.ManagedConnection;
import org.apache.openejb.testing.Configuration;
import org.apache.openejb.testing.Module;
-import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBContext;
@@ -35,17 +39,7 @@ import javax.ejb.Singleton;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.sql.DataSource;
-import javax.transaction.Transaction;
-import java.lang.reflect.Field;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Map;
-import java.util.Properties;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -198,15 +192,6 @@ public class ManagedDataSourceTest {
assertFalse(exists(12));
}
- @After
- public void checkTxMapIsEmpty() throws Exception { // avoid memory leak
- final Field map = ManagedConnection.class.getDeclaredField("CONNECTION_BY_TX_BY_DS");
- map.setAccessible(true);
- final Map<DataSource, Map<Transaction, Connection>> instance = (Map<DataSource, Map<Transaction, Connection>>) map.get(null);
- assertEquals(1, instance.size());
- assertEquals(0, instance.values().iterator().next().size());
- }
-
private static boolean exists(final int id) throws SQLException {
final Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
final Statement statement = connection.createStatement();
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/MultiThreadedManagedDataSourceTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/MultiThreadedManagedDataSourceTest.java b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/MultiThreadedManagedDataSourceTest.java
index 15288fe..7f908c6 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/MultiThreadedManagedDataSourceTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/MultiThreadedManagedDataSourceTest.java
@@ -19,35 +19,30 @@ package org.apache.openejb.resource.jdbc;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.SingletonBean;
import org.apache.openejb.junit.ApplicationComposer;
-import org.apache.openejb.resource.jdbc.managed.local.ManagedConnection;
import org.apache.openejb.testing.Configuration;
import org.apache.openejb.testing.Module;
-import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
-import javax.annotation.Resource;
-import javax.ejb.EJB;
-import javax.ejb.EJBContext;
-import javax.ejb.LocalBean;
-import javax.ejb.Singleton;
-import javax.sql.DataSource;
-import javax.transaction.Transaction;
-import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.EJBContext;
+import javax.ejb.LocalBean;
+import javax.ejb.Singleton;
+import javax.sql.DataSource;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -192,15 +187,6 @@ public class MultiThreadedManagedDataSourceTest {
assertEquals(ok.get(), count("") - count);
}
- @After
- public void checkTxMapIsEmpty() throws Exception { // avoid memory leak
- final Field map = ManagedConnection.class.getDeclaredField("CONNECTION_BY_TX_BY_DS");
- map.setAccessible(true);
- final Map<DataSource, Map<Transaction, Connection>> instance = (Map<DataSource, Map<Transaction, Connection>>) map.get(null);
- assertEquals(1, instance.size());
- assertEquals(0, instance.values().iterator().next().size());
- }
-
private static boolean exists(final int id) throws SQLException {
return count(" WHERE ID = " + id) == 1;
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/examples/datasource-versioning/pom.xml
----------------------------------------------------------------------
diff --git a/examples/datasource-versioning/pom.xml b/examples/datasource-versioning/pom.xml
index b97ad77..b56e7c9 100644
--- a/examples/datasource-versioning/pom.xml
+++ b/examples/datasource-versioning/pom.xml
@@ -166,7 +166,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.tomee</groupId>
+ <groupId>org.apache.openejb</groupId>
<artifactId>tomee-jdbc</artifactId>
<version>1.7.3-SNAPSHOT</version>
<scope>test</scope>
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java
----------------------------------------------------------------------
diff --git a/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java b/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java
index 0cdb584..37332dc 100644
--- a/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java
+++ b/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java
@@ -21,6 +21,7 @@ import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPDataSource;
import org.apache.openejb.OpenEJB;
import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.resource.jdbc.BasicDataSourceUtil;
import org.apache.openejb.resource.jdbc.managed.xa.ManagedXADataSource;
import org.apache.openejb.resource.jdbc.plugin.DataSourcePlugin;
@@ -32,6 +33,7 @@ import org.apache.openejb.util.Strings;
import javax.sql.CommonDataSource;
import javax.sql.DataSource;
import javax.sql.XADataSource;
+import javax.transaction.TransactionSynchronizationRegistry;
import java.lang.reflect.Field;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
@@ -128,7 +130,7 @@ public class BoneCPDataSourceCreator extends PoolDataSourceCreator {
cleanProperty(ds, "xadatasource");
final XADataSource xaDs = XADataSourceResource.proxy(Thread.currentThread().getContextClassLoader(), xa);
- ds.setDatasourceBean(new ManagedXADataSource(xaDs, OpenEJB.getTransactionManager()));
+ ds.setDatasourceBean(new ManagedXADataSource(xaDs, OpenEJB.getTransactionManager(), SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class)));
}
return ds;
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceFromPoolTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceFromPoolTest.java b/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceFromPoolTest.java
index e9eba6c..36f32b8 100644
--- a/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceFromPoolTest.java
+++ b/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceFromPoolTest.java
@@ -21,13 +21,16 @@ import org.apache.openejb.jee.SingletonBean;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.junit.Configuration;
import org.apache.openejb.junit.Module;
-import org.apache.openejb.resource.jdbc.managed.local.ManagedConnection;
-import org.hsqldb.jdbc.JDBCDataSource;
-import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
import javax.annotation.Resource;
import javax.annotation.sql.DataSourceDefinition;
import javax.ejb.EJB;
@@ -37,17 +40,7 @@ import javax.ejb.Singleton;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.sql.DataSource;
-import javax.transaction.Transaction;
-import java.lang.reflect.Field;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Map;
-import java.util.Properties;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -195,16 +188,7 @@ public class BoneCPPooledDataSourceFromPoolTest {
assertFalse(exists(12));
}
- @After
- public void checkTxMapIsEmpty() throws Exception { // avoid memory leak
- final Field map = ManagedConnection.class.getDeclaredField("CONNECTION_BY_TX_BY_DS");
- map.setAccessible(true);
- final Map<DataSource, Map<Transaction, Connection>> instance = (Map<DataSource, Map<Transaction, Connection>>) map.get(null);
- assertEquals(1, instance.size());
- assertEquals(0, instance.values().iterator().next().size());
- }
-
- private static boolean exists(final int id) throws SQLException {
+ private static boolean exists(int id) throws SQLException {
final Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
final Statement statement = connection.createStatement();
final ResultSet result = statement.executeQuery("SELECT count(*) AS NB FROM " + TABLE + " WHERE ID = " + id);
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceTest.java b/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceTest.java
index a2e705c..b5eb3aa 100644
--- a/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceTest.java
+++ b/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/BoneCPPooledDataSourceTest.java
@@ -27,6 +27,14 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.lang.reflect.Field;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Map;
+import java.util.Properties;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBContext;
@@ -36,14 +44,6 @@ import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.sql.DataSource;
import javax.transaction.Transaction;
-import java.lang.reflect.Field;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Map;
-import java.util.Properties;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -196,16 +196,7 @@ public class BoneCPPooledDataSourceTest {
assertFalse(exists(12));
}
- @After
- public void checkTxMapIsEmpty() throws Exception { // avoid memory leak
- final Field map = ManagedConnection.class.getDeclaredField("CONNECTION_BY_TX_BY_DS");
- map.setAccessible(true);
- final Map<DataSource, Map<Transaction, Connection>> instance = (Map<DataSource, Map<Transaction, Connection>>) map.get(null);
- assertEquals(1, instance.size());
- assertEquals(0, instance.values().iterator().next().size());
- }
-
- private static boolean exists(final int id) throws SQLException {
+ private static boolean exists(int id) throws SQLException {
final Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
final Statement statement = connection.createStatement();
final ResultSet result = statement.executeQuery("SELECT count(*) AS NB FROM " + TABLE + " WHERE ID = " + id);
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/XABoneCPTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/XABoneCPTest.java b/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/XABoneCPTest.java
index 8677b9f..b9d3279 100644
--- a/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/XABoneCPTest.java
+++ b/server/openejb-bonecp/src/test/java/org/apache/openejb/bonecp/XABoneCPTest.java
@@ -26,11 +26,11 @@ import org.hsqldb.jdbc.pool.JDBCXADataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
-import javax.annotation.Resource;
-import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
+import javax.annotation.Resource;
+import javax.sql.DataSource;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertNotNull;
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatDataSourceFromPoolTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatDataSourceFromPoolTest.java b/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatDataSourceFromPoolTest.java
index 856c8e3..6cc369b 100644
--- a/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatDataSourceFromPoolTest.java
+++ b/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatDataSourceFromPoolTest.java
@@ -21,12 +21,16 @@ import org.apache.openejb.jee.SingletonBean;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.junit.Configuration;
import org.apache.openejb.junit.Module;
-import org.apache.openejb.resource.jdbc.managed.local.ManagedConnection;
-import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
import javax.annotation.Resource;
import javax.annotation.sql.DataSourceDefinition;
import javax.ejb.EJB;
@@ -36,17 +40,7 @@ import javax.ejb.Singleton;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.sql.DataSource;
-import javax.transaction.Transaction;
-import java.lang.reflect.Field;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Map;
-import java.util.Properties;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -194,15 +188,6 @@ public class TomcatDataSourceFromPoolTest {
assertFalse(exists(12));
}
- @After
- public void checkTxMapIsEmpty() throws Exception { // avoid memory leak
- final Field map = ManagedConnection.class.getDeclaredField("CONNECTION_BY_TX_BY_DS");
- map.setAccessible(true);
- final Map<DataSource, Map<Transaction, Connection>> instance = (Map<DataSource, Map<Transaction, Connection>> ) map.get(null);
- assertEquals(1, instance.size());
- assertEquals(0, instance.values().iterator().next().size());
- }
-
private static boolean exists(final int id) throws SQLException {
final Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
final Statement statement = connection.createStatement();
http://git-wip-us.apache.org/repos/asf/tomee/blob/553b0fd5/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java b/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java
index 7c8e959..658333f 100644
--- a/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java
+++ b/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java
@@ -21,12 +21,16 @@ import org.apache.openejb.jee.SingletonBean;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.junit.Configuration;
import org.apache.openejb.junit.Module;
-import org.apache.openejb.resource.jdbc.managed.local.ManagedConnection;
-import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBContext;
@@ -35,17 +39,7 @@ import javax.ejb.Singleton;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.sql.DataSource;
-import javax.transaction.Transaction;
-import java.lang.reflect.Field;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Map;
-import java.util.Properties;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -196,15 +190,6 @@ public class TomcatPoolTest {
assertFalse(exists(12));
}
- @After
- public void checkTxMapIsEmpty() throws Exception { // avoid memory leak
- final Field map = ManagedConnection.class.getDeclaredField("CONNECTION_BY_TX_BY_DS");
- map.setAccessible(true);
- final Map<DataSource, Map<Transaction, Connection>> instance = (Map<DataSource, Map<Transaction, Connection>> ) map.get(null);
- assertEquals(1, instance.size());
- assertEquals(0, instance.values().iterator().next().size());
- }
-
private static boolean exists(final int id) throws SQLException {
final Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
final Statement statement = connection.createStatement();