[hibernate-commits] Hibernate SVN: r14213 - in core/trunk: testing/src/main/java/org/hibernate/test and 5 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Dec 4 12:38:28 EST 2007


Author: steve.ebersole at jboss.com
Date: 2007-12-04 12:38:27 -0500 (Tue, 04 Dec 2007)
New Revision: 14213

Added:
   core/trunk/testing/src/main/java/org/hibernate/test/
   core/trunk/testing/src/main/java/org/hibernate/test/tm/
   core/trunk/testing/src/main/java/org/hibernate/test/tm/ConnectionProviderImpl.java
   core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionImpl.java
   core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionManagerImpl.java
   core/trunk/testing/src/main/java/org/hibernate/test/tm/TransactionManagerLookupImpl.java
   core/trunk/testing/src/main/java/org/hibernate/test/tm/package.html
Removed:
   core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyConnectionProvider.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyJTAStyleTransationFactory.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransaction.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManager.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManagerLookup.java
Modified:
   core/trunk/testsuite/src/test/java/org/hibernate/test/cache/BaseCacheProviderTestCase.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/cache/treecache/optimistic/OptimisticTreeCacheTest.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/connections/AggressiveReleaseTest.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/tm/CMTTest.java
Log:
HHH-2863 : isolate testing TransactionManager for reuse

Added: core/trunk/testing/src/main/java/org/hibernate/test/tm/ConnectionProviderImpl.java
===================================================================
--- core/trunk/testing/src/main/java/org/hibernate/test/tm/ConnectionProviderImpl.java	                        (rev 0)
+++ core/trunk/testing/src/main/java/org/hibernate/test/tm/ConnectionProviderImpl.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -0,0 +1,84 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2007, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution statements
+ * applied by the authors.  All third-party contributions are distributed
+ * under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions of
+ * the GNU Lesser General Public License, as published by the Free Software
+ * Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.test.tm;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Properties;
+
+import org.hibernate.HibernateException;
+import org.hibernate.connection.ConnectionProvider;
+import org.hibernate.connection.ConnectionProviderFactory;
+
+/**
+ * A {@link ConnectionProvider} implementation adding JTA-style transactionality
+ * around the returned connections using the {@link SimpleJtaTransactionManagerImpl}.
+ *
+ * @author Gavin King
+ * @author Steve Ebersole
+ */
+public class ConnectionProviderImpl implements ConnectionProvider {
+	private static ConnectionProvider actualConnectionProvider = ConnectionProviderFactory.newConnectionProvider();
+
+	private boolean isTransactional;
+
+	public static ConnectionProvider getActualConnectionProvider() {
+		return actualConnectionProvider;
+	}
+
+	public void configure(Properties props) throws HibernateException {
+	}
+
+	public Connection getConnection() throws SQLException {
+		SimpleJtaTransactionImpl currentTransaction = SimpleJtaTransactionManagerImpl.getInstance().getCurrentTransaction();
+		if ( currentTransaction == null ) {
+			isTransactional = false;
+			return actualConnectionProvider.getConnection();
+		}
+		else {
+			isTransactional = true;
+			Connection connection = currentTransaction.getEnlistedConnection();
+			if ( connection == null ) {
+				connection = actualConnectionProvider.getConnection();
+				currentTransaction.enlistConnection( connection );
+			}
+			return connection;
+		}
+	}
+
+	public void closeConnection(Connection conn) throws SQLException {
+		if ( !isTransactional ) {
+			conn.close();
+		}
+	}
+
+	public void close() throws HibernateException {
+		actualConnectionProvider.close();
+	}
+
+	public boolean supportsAggressiveRelease() {
+		return true;
+	}
+}

Added: core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionImpl.java
===================================================================
--- core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionImpl.java	                        (rev 0)
+++ core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionImpl.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -0,0 +1,159 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2007, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.test.tm;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.LinkedList;
+import javax.transaction.HeuristicMixedException;
+import javax.transaction.HeuristicRollbackException;
+import javax.transaction.RollbackException;
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.xa.XAResource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * SimpleJtaTransactionImpl implementation
+ *
+ * @author Steve Ebersole
+ */
+public class SimpleJtaTransactionImpl implements Transaction {
+	private static final Logger log = LoggerFactory.getLogger( SimpleJtaTransactionImpl.class );
+
+	private int status;
+	private LinkedList synchronizations;
+	private Connection connection; // the only resource we care about is jdbc connection
+	private final SimpleJtaTransactionManagerImpl jtaTransactionManager;
+
+	public SimpleJtaTransactionImpl(SimpleJtaTransactionManagerImpl jtaTransactionManager) {
+		this.jtaTransactionManager = jtaTransactionManager;
+		this.status = Status.STATUS_ACTIVE;
+	}
+
+	public int getStatus() {
+		return status;
+	}
+
+	public void commit()
+			throws RollbackException, HeuristicMixedException, HeuristicRollbackException, IllegalStateException, SystemException {
+
+		if ( status == Status.STATUS_MARKED_ROLLBACK ) {
+			log.trace( "on commit, status was marked for rollback-only" );
+			rollback();
+		}
+		else {
+			status = Status.STATUS_PREPARING;
+
+			for ( int i = 0; i < synchronizations.size(); i++ ) {
+				Synchronization s = ( Synchronization ) synchronizations.get( i );
+				s.beforeCompletion();
+			}
+
+			status = Status.STATUS_COMMITTING;
+
+			if ( connection != null ) {
+				try {
+					connection.commit();
+					connection.close();
+				}
+				catch ( SQLException sqle ) {
+					status = Status.STATUS_UNKNOWN;
+					throw new SystemException();
+				}
+			}
+
+			status = Status.STATUS_COMMITTED;
+
+			for ( int i = 0; i < synchronizations.size(); i++ ) {
+				Synchronization s = ( Synchronization ) synchronizations.get( i );
+				s.afterCompletion( status );
+			}
+
+			//status = Status.STATUS_NO_TRANSACTION;
+			jtaTransactionManager.endCurrent( this );
+		}
+	}
+
+	public void rollback() throws IllegalStateException, SystemException {
+		status = Status.STATUS_ROLLEDBACK;
+
+		if ( connection != null ) {
+			try {
+				connection.rollback();
+				connection.close();
+			}
+			catch ( SQLException sqle ) {
+				status = Status.STATUS_UNKNOWN;
+				throw new SystemException();
+			}
+		}
+
+		for ( int i = 0; i < synchronizations.size(); i++ ) {
+			Synchronization s = ( Synchronization ) synchronizations.get( i );
+			s.afterCompletion( status );
+		}
+
+		//status = Status.STATUS_NO_TRANSACTION;
+		jtaTransactionManager.endCurrent( this );
+	}
+
+	public void setRollbackOnly() throws IllegalStateException, SystemException {
+		status = Status.STATUS_MARKED_ROLLBACK;
+	}
+
+	public void registerSynchronization(Synchronization synchronization)
+			throws RollbackException, IllegalStateException, SystemException {
+		// todo : find the spec-allowable statuses during which synch can be registered...
+		if ( synchronizations == null ) {
+			synchronizations = new LinkedList();
+		}
+		synchronizations.add( synchronization );
+	}
+
+	public void enlistConnection(Connection connection) {
+		if ( this.connection != null ) {
+			throw new IllegalStateException( "Connection already registered" );
+		}
+		this.connection = connection;
+	}
+
+	public Connection getEnlistedConnection() {
+		return connection;
+	}
+
+
+	public boolean enlistResource(XAResource xaResource)
+			throws RollbackException, IllegalStateException, SystemException {
+		return false;
+	}
+
+	public boolean delistResource(XAResource xaResource, int i) throws IllegalStateException, SystemException {
+		return false;
+	}
+}

Added: core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionManagerImpl.java
===================================================================
--- core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionManagerImpl.java	                        (rev 0)
+++ core/trunk/testing/src/main/java/org/hibernate/test/tm/SimpleJtaTransactionManagerImpl.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -0,0 +1,110 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2007, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.test.tm;
+
+import javax.transaction.HeuristicMixedException;
+import javax.transaction.HeuristicRollbackException;
+import javax.transaction.InvalidTransactionException;
+import javax.transaction.NotSupportedException;
+import javax.transaction.RollbackException;
+import javax.transaction.Status;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+
+/**
+ * TransactionManager implementation specifically designed for use in test suite and simple usage
+ * scenarios.  For example, it assumes that there is only ever a single transaction active at a
+ * given time.
+ *
+ * @author Gavin King
+ * @author Steve Ebersole
+ */
+public class SimpleJtaTransactionManagerImpl implements TransactionManager {
+	private static final SimpleJtaTransactionManagerImpl INSTANCE = new SimpleJtaTransactionManagerImpl();
+
+	private SimpleJtaTransactionImpl currentTransaction;
+
+	public static SimpleJtaTransactionManagerImpl getInstance() {
+		return INSTANCE;
+	}
+
+	public int getStatus() throws SystemException {
+		return currentTransaction == null ? Status.STATUS_NO_TRANSACTION : currentTransaction.getStatus();
+	}
+
+	public Transaction getTransaction() throws SystemException {
+		return currentTransaction;
+	}
+
+	public SimpleJtaTransactionImpl getCurrentTransaction() {
+		return currentTransaction;
+	}
+
+	public void begin() throws NotSupportedException, SystemException {
+		currentTransaction = new SimpleJtaTransactionImpl( this );
+	}
+
+	public Transaction suspend() throws SystemException {
+		SimpleJtaTransactionImpl suspended = currentTransaction;
+		currentTransaction = null;
+		return suspended;
+	}
+
+	public void resume(Transaction transaction)
+			throws InvalidTransactionException, IllegalStateException, SystemException {
+		currentTransaction = ( SimpleJtaTransactionImpl ) transaction;
+	}
+
+	public void commit()
+			throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException {
+		if ( currentTransaction == null ) {
+			throw new IllegalStateException( "no current transaction to commit" );
+		}
+		currentTransaction.commit();
+	}
+
+	public void rollback() throws IllegalStateException, SecurityException, SystemException {
+		if ( currentTransaction == null ) {
+			throw new IllegalStateException( "no current transaction" );
+		}
+		currentTransaction.rollback();
+	}
+
+	public void setRollbackOnly() throws IllegalStateException, SystemException {
+		if ( currentTransaction == null ) {
+			throw new IllegalStateException( "no current transaction" );
+		}
+		currentTransaction.setRollbackOnly();
+	}
+
+	public void setTransactionTimeout(int i) throws SystemException {
+	}
+
+	void endCurrent(SimpleJtaTransactionImpl transaction) {
+		if ( transaction == currentTransaction ) {
+			currentTransaction = null;
+		}
+	}
+}

Added: core/trunk/testing/src/main/java/org/hibernate/test/tm/TransactionManagerLookupImpl.java
===================================================================
--- core/trunk/testing/src/main/java/org/hibernate/test/tm/TransactionManagerLookupImpl.java	                        (rev 0)
+++ core/trunk/testing/src/main/java/org/hibernate/test/tm/TransactionManagerLookupImpl.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -0,0 +1,45 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2007, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.test.tm;
+
+import java.util.Properties;
+import javax.transaction.TransactionManager;
+
+import org.hibernate.transaction.TransactionManagerLookup;
+import org.hibernate.HibernateException;
+
+/**
+ * TransactionManagerLookupImpl implementation
+ *
+ * @author Steve Ebersole
+ */
+public class TransactionManagerLookupImpl implements TransactionManagerLookup {
+	public TransactionManager getTransactionManager(Properties props) throws HibernateException {
+		return SimpleJtaTransactionManagerImpl.getInstance();
+	}
+
+	public String getUserTransactionName() {
+		throw new UnsupportedOperationException( "jndi currently not implemented for these tests" );
+	}
+}

Added: core/trunk/testing/src/main/java/org/hibernate/test/tm/package.html
===================================================================
--- core/trunk/testing/src/main/java/org/hibernate/test/tm/package.html	                        (rev 0)
+++ core/trunk/testing/src/main/java/org/hibernate/test/tm/package.html	2007-12-04 17:38:27 UTC (rev 14213)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<!--
+  ~ Hibernate, Relational Persistence for Idiomatic Java
+  ~
+  ~ Copyright (c) 2007, Red Hat Middleware LLC or third-party contributors as
+  ~ indicated by the @author tags or express copyright attribution
+  ~ statements applied by the authors.  All third-party contributions are
+  ~ distributed under license by Red Hat Middleware LLC.
+  ~
+  ~ This copyrighted material is made available to anyone wishing to use, modify,
+  ~ copy, or redistribute it subject to the terms and conditions of the GNU
+  ~ Lesser General Public License, as published by the Free Software Foundation.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+  ~ or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+  ~ for more details.
+  ~
+  ~ You should have received a copy of the GNU Lesser General Public License
+  ~ along with this distribution; if not, write to:
+  ~ Free Software Foundation, Inc.
+  ~ 51 Franklin Street, Fifth Floor
+  ~ Boston, MA  02110-1301  USA
+  -->
+<HTML>
+<HEAD>
+    <TITLE>Package Information - org.hibernate.test.tm</TITLE>
+</HEAD>
+<BODY>
+<p>
+    Defines a simplified JTA TransactionManager and transactional connection pool
+    designed for use in test suite and simple usage scenarios. For example, it
+    is assumed that there is only ever a single transaction active at a given time.
+    Also, the only 'resource' that the transaction tracks is a single JDBC connection.
+</p>
+</BODY>
+</HTML>
\ No newline at end of file

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/cache/BaseCacheProviderTestCase.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/cache/BaseCacheProviderTestCase.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/cache/BaseCacheProviderTestCase.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -1,6 +1,5 @@
 package org.hibernate.test.cache;
 
-import java.util.HashMap;
 import java.util.Map;
 
 import org.hibernate.Session;
@@ -11,8 +10,8 @@
 import org.hibernate.junit.functional.FunctionalTestCase;
 import org.hibernate.stat.SecondLevelCacheStatistics;
 import org.hibernate.stat.Statistics;
-import org.hibernate.test.tm.DummyConnectionProvider;
-import org.hibernate.test.tm.DummyTransactionManagerLookup;
+import org.hibernate.test.tm.ConnectionProviderImpl;
+import org.hibernate.test.tm.TransactionManagerLookupImpl;
 import org.hibernate.transaction.JDBCTransactionFactory;
 
 /**
@@ -47,8 +46,8 @@
 		}
 
 		if ( useTransactionManager() ) {
-			cfg.setProperty( Environment.CONNECTION_PROVIDER, DummyConnectionProvider.class.getName() );
-			cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, DummyTransactionManagerLookup.class.getName() );
+			cfg.setProperty( Environment.CONNECTION_PROVIDER, ConnectionProviderImpl.class.getName() );
+			cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, TransactionManagerLookupImpl.class.getName() );
 		}
 		else {
 			cfg.setProperty( Environment.TRANSACTION_STRATEGY, JDBCTransactionFactory.class.getName() );

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/cache/treecache/optimistic/OptimisticTreeCacheTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/cache/treecache/optimistic/OptimisticTreeCacheTest.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/cache/treecache/optimistic/OptimisticTreeCacheTest.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -11,7 +11,7 @@
 import org.hibernate.cfg.Environment;
 import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
 import org.hibernate.test.cache.BaseCacheProviderTestCase;
-import org.hibernate.test.tm.DummyTransactionManager;
+import org.hibernate.test.tm.SimpleJtaTransactionManagerImpl;
 
 /**
  * @author Steve Ebersole
@@ -59,25 +59,25 @@
 
 		try {
 			System.out.println( "****************************************************************" );
-			DummyTransactionManager.INSTANCE.begin();
+			SimpleJtaTransactionManagerImpl.getInstance().begin();
 			treeCache.put( fqn, "ITEM", long1, ManualDataVersion.gen( 1 ) );
-			DummyTransactionManager.INSTANCE.commit();
+			SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 			System.out.println( "****************************************************************" );
-			DummyTransactionManager.INSTANCE.begin();
+			SimpleJtaTransactionManagerImpl.getInstance().begin();
 			treeCache.put( fqn, "ITEM", long2, ManualDataVersion.gen( 2 ) );
-			DummyTransactionManager.INSTANCE.commit();
+			SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 			try {
 				System.out.println( "****************************************************************" );
-				DummyTransactionManager.INSTANCE.begin();
+				SimpleJtaTransactionManagerImpl.getInstance().begin();
 				treeCache.put( fqn, "ITEM", long1, ManualDataVersion.gen( 1 ) );
-				DummyTransactionManager.INSTANCE.commit();
+				SimpleJtaTransactionManagerImpl.getInstance().commit();
 				fail( "stale write allowed" );
 			}
 			catch( Throwable ignore ) {
 				// expected behavior
-				DummyTransactionManager.INSTANCE.rollback();
+				SimpleJtaTransactionManagerImpl.getInstance().rollback();
 			}
 
 			Long current = ( Long ) treeCache.get( fqn, "ITEM" );

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/connections/AggressiveReleaseTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/connections/AggressiveReleaseTest.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/connections/AggressiveReleaseTest.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -16,9 +16,9 @@
 import org.hibernate.cfg.Environment;
 import org.hibernate.impl.SessionImpl;
 import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
-import org.hibernate.test.tm.DummyConnectionProvider;
-import org.hibernate.test.tm.DummyTransactionManager;
-import org.hibernate.test.tm.DummyTransactionManagerLookup;
+import org.hibernate.test.tm.ConnectionProviderImpl;
+import org.hibernate.test.tm.SimpleJtaTransactionManagerImpl;
+import org.hibernate.test.tm.TransactionManagerLookupImpl;
 import org.hibernate.transaction.CMTTransactionFactory;
 import org.hibernate.util.SerializationHelper;
 
@@ -39,10 +39,10 @@
 
 	public void configure(Configuration cfg) {
 		super.configure( cfg );
+		cfg.setProperty( Environment.CONNECTION_PROVIDER, ConnectionProviderImpl.class.getName() );
+		cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, TransactionManagerLookupImpl.class.getName() );
+		cfg.setProperty( Environment.TRANSACTION_STRATEGY, CMTTransactionFactory.class.getName() );
 		cfg.setProperty( Environment.RELEASE_CONNECTIONS, ConnectionReleaseMode.AFTER_STATEMENT.toString() );
-		cfg.setProperty( Environment.CONNECTION_PROVIDER, DummyConnectionProvider.class.getName() );
-		cfg.setProperty( Environment.TRANSACTION_STRATEGY, CMTTransactionFactory.class.getName() );
-		cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, DummyTransactionManagerLookup.class.getName() );
 		cfg.setProperty( Environment.GENERATE_STATISTICS, "true" );
 		cfg.setProperty( Environment.STATEMENT_BATCH_SIZE, "0" );
 	}
@@ -56,11 +56,11 @@
 	}
 
 	protected void prepare() throws Throwable {
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 	}
 
 	protected void done() throws Throwable {
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 	}
 
 	// Some additional tests specifically for the aggressive-release functionality...
@@ -184,7 +184,7 @@
 	public void testSuppliedConnection() throws Throwable {
 		prepare();
 
-		Connection originalConnection = DummyTransactionManager.INSTANCE.getCurrent().getConnection();
+		Connection originalConnection = ConnectionProviderImpl.getActualConnectionProvider().getConnection();
 		Session session = getSessions().openSession( originalConnection );
 
 		Silly silly = new Silly( "silly" );
@@ -201,6 +201,8 @@
 
 		release( session );
 		done();
+
+		ConnectionProviderImpl.getActualConnectionProvider().closeConnection( originalConnection );
 	}
 
 	public void testBorrowedConnections() throws Throwable {

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/tm/CMTTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/tm/CMTTest.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/tm/CMTTest.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -16,7 +16,6 @@
 import org.hibernate.cfg.Configuration;
 import org.hibernate.cfg.Environment;
 import org.hibernate.criterion.Order;
-import org.hibernate.dialect.SybaseDialect;
 import org.hibernate.junit.functional.FunctionalTestCase;
 import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
 import org.hibernate.transaction.CMTTransactionFactory;
@@ -36,8 +35,8 @@
 	}
 
 	public void configure(Configuration cfg) {
-		cfg.setProperty( Environment.CONNECTION_PROVIDER, DummyConnectionProvider.class.getName() );
-		cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, DummyTransactionManagerLookup.class.getName() );
+		cfg.setProperty( Environment.CONNECTION_PROVIDER, ConnectionProviderImpl.class.getName() );
+		cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, TransactionManagerLookupImpl.class.getName() );
 		cfg.setProperty( Environment.TRANSACTION_STRATEGY, CMTTransactionFactory.class.getName() );
 		cfg.setProperty( Environment.AUTO_CLOSE_SESSION, "true" );
 		cfg.setProperty( Environment.FLUSH_BEFORE_COMPLETION, "true" );
@@ -58,7 +57,7 @@
 	public void testConcurrent() throws Exception {
 		getSessions().getStatistics().clear();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = openSession();
 		Map foo = new HashMap();
 		foo.put( "name", "Foo" );
@@ -68,46 +67,46 @@
 		bar.put( "name", "Bar" );
 		bar.put( "description", "a small bar" );
 		s.persist( "Item", bar );
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		getSessions().evictEntity( "Item" );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s1 = openSession();
 		foo = ( Map ) s1.get( "Item", "Foo" );
 		//foo.put("description", "a big red foo");
 		//s1.flush();
-		Transaction tx1 = DummyTransactionManager.INSTANCE.suspend();
+		Transaction tx1 = SimpleJtaTransactionManagerImpl.getInstance().suspend();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s2 = openSession();
 		foo = ( Map ) s2.get( "Item", "Foo" );
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
-		DummyTransactionManager.INSTANCE.resume( tx1 );
+		SimpleJtaTransactionManagerImpl.getInstance().resume( tx1 );
 		tx1.commit();
 
 		getSessions().evictEntity( "Item" );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s1 = openSession();
 		s1.createCriteria( "Item" ).list();
 		//foo.put("description", "a big red foo");
 		//s1.flush();
-		tx1 = DummyTransactionManager.INSTANCE.suspend();
+		tx1 = SimpleJtaTransactionManagerImpl.getInstance().suspend();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s2 = openSession();
 		s2.createCriteria( "Item" ).list();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
-		DummyTransactionManager.INSTANCE.resume( tx1 );
+		SimpleJtaTransactionManagerImpl.getInstance().resume( tx1 );
 		tx1.commit();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s2 = openSession();
 		s2.createCriteria( "Item" ).list();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		assertEquals( getSessions().getStatistics().getEntityLoadCount(), 7 );
 		assertEquals( getSessions().getStatistics().getEntityFetchCount(), 0 );
@@ -115,15 +114,15 @@
 		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 0 );
 		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 0 );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
 		s.createQuery( "delete from Item" ).executeUpdate();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 	}
 
 	public void testConcurrentCachedQueries() throws Exception {
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = openSession();
 		Map foo = new HashMap();
 		foo.put( "name", "Foo" );
@@ -133,7 +132,7 @@
 		bar.put( "name", "Bar" );
 		bar.put( "description", "a small bar" );
 		s.persist( "Item", bar );
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		synchronized ( this ) {
 			wait( 1000 );
@@ -143,23 +142,23 @@
 
 		getSessions().evictEntity( "Item" );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s4 = openSession();
-		Transaction tx4 = DummyTransactionManager.INSTANCE.suspend();
+		Transaction tx4 = SimpleJtaTransactionManagerImpl.getInstance().suspend();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s1 = openSession();
 		List r1 = s1.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
 		assertEquals( r1.size(), 2 );
-		Transaction tx1 = DummyTransactionManager.INSTANCE.suspend();
+		Transaction tx1 = SimpleJtaTransactionManagerImpl.getInstance().suspend();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s2 = openSession();
 		List r2 = s2.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
 		assertEquals( r2.size(), 2 );
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheHitCount(), 2 );
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheMissCount(), 0 );
@@ -170,14 +169,14 @@
 		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 1 );
 		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 1 );
 
-		DummyTransactionManager.INSTANCE.resume( tx1 );
+		SimpleJtaTransactionManagerImpl.getInstance().resume( tx1 );
 		tx1.commit();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s3 = openSession();
 		s3.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheHitCount(), 4 );
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheMissCount(), 0 );
@@ -188,7 +187,7 @@
 		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 2 );
 		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 1 );
 
-		DummyTransactionManager.INSTANCE.resume( tx4 );
+		SimpleJtaTransactionManagerImpl.getInstance().resume( tx4 );
 		List r4 = s4.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
 		assertEquals( r4.size(), 2 );
@@ -203,10 +202,10 @@
 		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 3 );
 		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 1 );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
 		s.createQuery( "delete from Item" ).executeUpdate();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 	}
 
 	public void testConcurrentCachedDirtyQueries() throws Exception {
@@ -215,7 +214,7 @@
 			return;
 		}
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = openSession();
 		Map foo = new HashMap();
 		foo.put( "name", "Foo" );
@@ -225,7 +224,7 @@
 		bar.put( "name", "Bar" );
 		bar.put( "description", "a small bar" );
 		s.persist( "Item", bar );
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		synchronized ( this ) {
 			wait( 1000 );
@@ -235,11 +234,11 @@
 
 		getSessions().evictEntity( "Item" );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s4 = openSession();
-		Transaction tx4 = DummyTransactionManager.INSTANCE.suspend();
+		Transaction tx4 = SimpleJtaTransactionManagerImpl.getInstance().suspend();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s1 = openSession();
 		List r1 = s1.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
@@ -247,14 +246,14 @@
 		foo = ( Map ) r1.get( 0 );
 		foo.put( "description", "a big red foo" );
 		s1.flush();
-		Transaction tx1 = DummyTransactionManager.INSTANCE.suspend();
+		Transaction tx1 = SimpleJtaTransactionManagerImpl.getInstance().suspend();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s2 = openSession();
 		List r2 = s2.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
 		assertEquals( r2.size(), 2 );
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheHitCount(), 0 );
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheMissCount(), 0 );
@@ -265,14 +264,14 @@
 		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 0 );
 		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 2 );
 
-		DummyTransactionManager.INSTANCE.resume( tx1 );
+		SimpleJtaTransactionManagerImpl.getInstance().resume( tx1 );
 		tx1.commit();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s3 = openSession();
 		s3.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheHitCount(), 0 );
 		assertEquals( getSessions().getStatistics().getSecondLevelCacheMissCount(), 0 );
@@ -283,7 +282,7 @@
 		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 0 );
 		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 3 );
 
-		DummyTransactionManager.INSTANCE.resume( tx4 );
+		SimpleJtaTransactionManagerImpl.getInstance().resume( tx4 );
 		List r4 = s4.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
 				.setCacheable( true ).list();
 		assertEquals( r4.size(), 2 );
@@ -298,42 +297,42 @@
 		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 1 );
 		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 3 );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
 		s.createQuery( "delete from Item" ).executeUpdate();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 	}
 
 	public void testCMT() throws Exception {
 		getSessions().getStatistics().clear();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = openSession();
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 		assertFalse( s.isOpen() );
 
 		assertEquals( getSessions().getStatistics().getFlushCount(), 0 );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
-		DummyTransactionManager.INSTANCE.getTransaction().rollback();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().rollback();
 		assertFalse( s.isOpen() );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
 		Map item = new HashMap();
 		item.put( "name", "The Item" );
 		item.put( "description", "The only item we have" );
 		s.persist( "Item", item );
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 		assertFalse( s.isOpen() );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
 		item = ( Map ) s.createQuery( "from Item" ).uniqueResult();
 		assertNotNull( item );
 		s.delete( item );
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 		assertFalse( s.isOpen() );
 
 		assertEquals( getSessions().getStatistics().getTransactionCount(), 4 );
@@ -345,19 +344,19 @@
 		assertEquals( getSessions().getStatistics().getQueryExecutionCount(), 1 );
 		assertEquals( getSessions().getStatistics().getFlushCount(), 2 );
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
 		s.createQuery( "delete from Item" ).executeUpdate();
-		DummyTransactionManager.INSTANCE.commit();
+		SimpleJtaTransactionManagerImpl.getInstance().commit();
 
 	}
 
 	public void testCurrentSession() throws Exception {
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = getSessions().getCurrentSession();
 		Session s2 = getSessions().getCurrentSession();
 		assertSame( s, s2 );
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 		assertFalse( s.isOpen() );
 
 		// TODO : would be nice to automate-test that the SF internal map actually gets cleaned up
@@ -365,7 +364,7 @@
 	}
 
 	public void testCurrentSessionWithIterate() throws Exception {
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = openSession();
 		Map item1 = new HashMap();
 		item1.put( "name", "Item - 1" );
@@ -376,11 +375,11 @@
 		item2.put( "name", "Item - 2" );
 		item2.put( "description", "The second item" );
 		s.persist( "Item", item2 );
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
 		// First, test iterating the partial iterator; iterate to past
 		// the first, but not the second, item
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = getSessions().getCurrentSession();
 		Iterator itr = s.createQuery( "from Item" ).iterate();
 		if ( !itr.hasNext() ) {
@@ -390,10 +389,10 @@
 		if ( !itr.hasNext() ) {
 			fail( "Only one result in iterator" );
 		}
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
 		// Next, iterate the entire result
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = getSessions().getCurrentSession();
 		itr = s.createQuery( "from Item" ).iterate();
 		if ( !itr.hasNext() ) {
@@ -402,16 +401,16 @@
 		while ( itr.hasNext() ) {
 			itr.next();
 		}
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = openSession();
 		s.createQuery( "delete from Item" ).executeUpdate();
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 	}
 
 	public void testCurrentSessionWithScroll() throws Exception {
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = getSessions().getCurrentSession();
 		Map item1 = new HashMap();
 		item1.put( "name", "Item - 1" );
@@ -422,50 +421,50 @@
 		item2.put( "name", "Item - 2" );
 		item2.put( "description", "The second item" );
 		s.persist( "Item", item2 );
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
 		// First, test partially scrolling the result with out closing
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = getSessions().getCurrentSession();
 		ScrollableResults results = s.createQuery( "from Item" ).scroll();
 		results.next();
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
 		// Next, test partially scrolling the result with closing
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = getSessions().getCurrentSession();
 		results = s.createQuery( "from Item" ).scroll();
 		results.next();
 		results.close();
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
 		// Next, scroll the entire result (w/o closing)
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = getSessions().getCurrentSession();
 		results = s.createQuery( "from Item" ).scroll();
 		while ( !results.isLast() ) {
 			results.next();
 		}
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
 		// Next, scroll the entire result (closing)
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = getSessions().getCurrentSession();
 		results = s.createQuery( "from Item" ).scroll();
 		while ( !results.isLast() ) {
 			results.next();
 		}
 		results.close();
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		s = getSessions().getCurrentSession();
 		s.createQuery( "delete from Item" ).executeUpdate();
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 	}
 
 	public void testAggressiveReleaseWithExplicitDisconnectReconnect() throws Exception {
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = getSessions().getCurrentSession();
 
 		s.createQuery( "from Item" ).list();
@@ -477,11 +476,11 @@
 
 		s.createQuery( "from Item" ).list();
 
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 	}
 
 	public void testAggressiveReleaseWithConnectionRetreival() throws Exception {
-		DummyTransactionManager.INSTANCE.begin();
+		SimpleJtaTransactionManagerImpl.getInstance().begin();
 		Session s = openSession();
 		Map item1 = new HashMap();
 		item1.put( "name", "Item - 1" );
@@ -492,20 +491,20 @@
 		item2.put( "name", "Item - 2" );
 		item2.put( "description", "The second item" );
 		s.save( "Item", item2 );
-		DummyTransactionManager.INSTANCE.getTransaction().commit();
+		SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 
 		try {
-			DummyTransactionManager.INSTANCE.begin();
+			SimpleJtaTransactionManagerImpl.getInstance().begin();
 			s = getSessions().getCurrentSession();
 			s.createQuery( "from Item" ).scroll().next();
 			s.connection();
-			DummyTransactionManager.INSTANCE.getTransaction().commit();
+			SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 		}
 		finally {
-			DummyTransactionManager.INSTANCE.begin();
+			SimpleJtaTransactionManagerImpl.getInstance().begin();
 			s = openSession();
 			s.createQuery( "delete from Item" ).executeUpdate();
-			DummyTransactionManager.INSTANCE.getTransaction().commit();
+			SimpleJtaTransactionManagerImpl.getInstance().getTransaction().commit();
 		}
 	}
 

Deleted: core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyConnectionProvider.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyConnectionProvider.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyConnectionProvider.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -1,48 +0,0 @@
-//$Id: DummyConnectionProvider.java 6501 2005-04-24 00:18:28Z oneovthafew $
-package org.hibernate.test.tm;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Properties;
-
-import org.hibernate.HibernateException;
-import org.hibernate.connection.ConnectionProvider;
-import org.hibernate.connection.ConnectionProviderFactory;
-
-/**
- * @author Gavin King
- */
-public class DummyConnectionProvider implements ConnectionProvider {
-	
-	ConnectionProvider cp;
-	boolean isTransaction;
-
-	public void configure(Properties props) throws HibernateException {
-		cp = ConnectionProviderFactory.newConnectionProvider();
-	}
-	
-	public Connection getConnection() throws SQLException {
-		DummyTransactionManager dtm = DummyTransactionManager.INSTANCE;
-		if ( dtm!=null && dtm.getCurrent()!=null && dtm.getCurrent().getConnection()!=null ) {
-			isTransaction = true;
-			return dtm.getCurrent().getConnection();
-		}
-		else {
-			isTransaction = false;
-			return cp.getConnection();
-		}
-	}
-
-	public void closeConnection(Connection conn) throws SQLException {
-		if (!isTransaction) conn.close();
-	}
-
-	public void close() throws HibernateException {
-
-	}
-
-	public boolean supportsAggressiveRelease() {
-		return true;
-	}
-
-}

Deleted: core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyJTAStyleTransationFactory.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyJTAStyleTransationFactory.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyJTAStyleTransationFactory.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -1,138 +0,0 @@
-package org.hibernate.test.tm;
-
-import org.hibernate.transaction.TransactionFactory;
-import org.hibernate.Transaction;
-import org.hibernate.HibernateException;
-import org.hibernate.ConnectionReleaseMode;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.cfg.Environment;
-import org.hibernate.util.JTAHelper;
-import org.hibernate.jdbc.JDBCContext;
-
-import javax.transaction.SystemException;
-import javax.transaction.Synchronization;
-import java.util.Properties;
-
-/**
- * todo: describe DummyJTAStyleTransationFactory
- *
- * @author Steve Ebersole
- */
-public class DummyJTAStyleTransationFactory implements TransactionFactory {
-	public Transaction createTransaction(
-			JDBCContext jdbcContext,
-			Context context) throws HibernateException {
-		return new DummyTransactionAdapter();
-	}
-
-	public void configure(Properties props) throws HibernateException {
-	}
-
-	public ConnectionReleaseMode getDefaultReleaseMode() {
-		return ConnectionReleaseMode.AFTER_STATEMENT;
-	}
-
-	public boolean isTransactionManagerRequired() {
-		return true;
-	}
-
-	public boolean areCallbacksLocalToHibernateTransactions() {
-		return false;
-	}
-
-	public boolean isTransactionInProgress(
-			JDBCContext jdbcContext,
-			Context transactionContext,
-			Transaction transaction) {
-		try {
-			return JTAHelper.isTransactionInProgress( DummyTransactionManager.INSTANCE.getCurrent() )
-			       && ! JTAHelper.isMarkedForRollback( DummyTransactionManager.INSTANCE.getCurrent() );
-		}
-		catch( SystemException e ) {
-			throw new HibernateException( e );
-		}
-	}
-
-	private static class DummyTransactionAdapter implements Transaction {
-
-		private boolean started;
-		private boolean committed;
-		private boolean rolledback;
-
-		public void begin() throws HibernateException {
-			started = true;
-			committed = false;
-			rolledback = false;
-			try {
-				DummyTransactionManager.INSTANCE.begin();
-			}
-			catch( Throwable t ) {
-				throw new HibernateException( "error on begin()", t );
-			}
-		}
-
-		public void commit() throws HibernateException {
-			if ( !started ) {
-				throw new HibernateException( "not yet started!" );
-			}
-			started = false;
-			rolledback = false;
-			committed = false;
-			try {
-				DummyTransactionManager.INSTANCE.commit();
-				committed = true;
-			}
-			catch( Throwable t ) {
-				throw new HibernateException( "error on commit()", t );
-			}
-		}
-
-		public void rollback() throws HibernateException {
-			if ( !started ) {
-				throw new HibernateException( "not yet started!" );
-			}
-			started = false;
-			rolledback = false;
-			committed = false;
-			try {
-				DummyTransactionManager.INSTANCE.rollback();
-				rolledback = true;
-			}
-			catch( Throwable t ) {
-				throw new HibernateException( "error on rollback()", t );
-			}
-		}
-
-		public boolean wasRolledBack() throws HibernateException {
-			return rolledback;
-		}
-
-		public boolean wasCommitted() throws HibernateException {
-			return committed;
-		}
-
-		public boolean isActive() throws HibernateException {
-			return started;
-		}
-
-		public void registerSynchronization(Synchronization synchronization) throws HibernateException {
-			try {
-				DummyTransactionManager.INSTANCE.getCurrent().registerSynchronization( synchronization );
-			}
-			catch( Throwable t ) {
-				throw new HibernateException( "error on registerSynchronization()", t );
-			}
-		}
-
-		public void setTimeout(int seconds) {
-			// ignore...
-		}
-	}
-
-	public static void setup(Configuration cfg) {
-		cfg.setProperty( Environment.CONNECTION_PROVIDER, DummyConnectionProvider.class.getName() );
-		cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, DummyTransactionManagerLookup.class.getName() );
-		cfg.setProperty( Environment.TRANSACTION_STRATEGY, DummyJTAStyleTransationFactory.class.getName() );
-		cfg.setProperty( Environment.FLUSH_BEFORE_COMPLETION, "true" );
-	}
-}

Deleted: core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransaction.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransaction.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransaction.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -1,146 +0,0 @@
-//$Id: DummyTransaction.java 8411 2005-10-14 23:29:04Z maxcsaucdk $
-package org.hibernate.test.tm;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.xa.XAResource;
-
-/**
- * @author Gavin King
- */
-public class DummyTransaction implements Transaction {
-	
-	int status;
-	private Connection connection;
-	List synchronizations = new ArrayList();
-	private DummyTransactionManager transactionManager;
-	
-	DummyTransaction(DummyTransactionManager transactionManager) {
-		status = Status.STATUS_NO_TRANSACTION;
-		this.transactionManager = transactionManager;
-	}
-	
-	public void begin() throws SystemException {
-		try {
-			connection = transactionManager.connections.getConnection();
-		}
-		catch (SQLException sqle) {
-			
-			sqle.printStackTrace();
-			throw new SystemException(sqle.toString());
-		}
-		status = Status.STATUS_ACTIVE;
-	}
-
-	public void commit() throws RollbackException, HeuristicMixedException,
-			HeuristicRollbackException, SecurityException,
-			IllegalStateException, SystemException {
-		
-		if (status == Status.STATUS_MARKED_ROLLBACK) {
-			rollback();
-		}
-		else {
-			status = Status.STATUS_PREPARING;
-			
-			for ( int i=0; i<synchronizations.size(); i++ ) {
-				Synchronization s = (Synchronization) synchronizations.get(i);
-				s.beforeCompletion();
-			}
-			
-			status = Status.STATUS_COMMITTING;
-			
-			try {
-				connection.commit();
-				connection.close();
-			}
-			catch (SQLException sqle) {
-				status = Status.STATUS_UNKNOWN;
-				throw new SystemException();
-			}
-			
-			status = Status.STATUS_COMMITTED;
-
-			for ( int i=0; i<synchronizations.size(); i++ ) {
-				Synchronization s = (Synchronization) synchronizations.get(i);
-				s.afterCompletion(status);
-			}
-			
-			//status = Status.STATUS_NO_TRANSACTION;
-			transactionManager.endCurrent(this);
-		}
-
-	}
-	
-	public boolean delistResource(XAResource arg0, int arg1)
-			throws IllegalStateException, SystemException {
-		// TODO Auto-generated method stub
-		return false;
-	}
-	
-	public boolean enlistResource(XAResource arg0) throws RollbackException,
-			IllegalStateException, SystemException {
-		// TODO Auto-generated method stub
-		return false;
-	}
-	
-	public int getStatus() throws SystemException {
-		return status;
-	}
-	
-	public void registerSynchronization(Synchronization sync)
-			throws RollbackException, IllegalStateException, SystemException {
-		synchronizations.add(sync);
-	}
-	
-	public void rollback() throws IllegalStateException, SystemException {
-
-		status = Status.STATUS_ROLLING_BACK;
-
-// Synch.beforeCompletion() should *not* be called for rollbacks
-//		for ( int i=0; i<synchronizations.size(); i++ ) {
-//			Synchronization s = (Synchronization) synchronizations.get(i);
-//			s.beforeCompletion();
-//		}
-		
-		status = Status.STATUS_ROLLEDBACK;
-		
-		try {
-			connection.rollback();
-			connection.close();
-		}
-		catch (SQLException sqle) {
-			status = Status.STATUS_UNKNOWN;
-			throw new SystemException();
-		}
-		
-		for ( int i=0; i<synchronizations.size(); i++ ) {
-			Synchronization s = (Synchronization) synchronizations.get(i);
-			s.afterCompletion(status);
-		}
-		
-		//status = Status.STATUS_NO_TRANSACTION;
-		transactionManager.endCurrent(this);
-	}
-	
-	public void setRollbackOnly() throws IllegalStateException, SystemException {
-		status = Status.STATUS_MARKED_ROLLBACK;
-	}
-
-	void setConnection(Connection connection) {
-		this.connection = connection;
-	}
-
-	public Connection getConnection() {
-		return connection;
-	}
-}

Deleted: core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManager.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManager.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManager.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -1,84 +0,0 @@
-//$Id: DummyTransactionManager.java 7003 2005-06-03 16:09:59Z steveebersole $
-package org.hibernate.test.tm;
-
-import java.util.Properties;
-
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-
-import org.hibernate.connection.ConnectionProvider;
-import org.hibernate.connection.ConnectionProviderFactory;
-
-/**
- * @author Gavin King
- */
-public class DummyTransactionManager implements TransactionManager {
-
-	public static DummyTransactionManager INSTANCE;
-
-	private DummyTransaction current;
-	ConnectionProvider connections;
-	
-	public DummyTransactionManager(Properties props) {
-		connections = ConnectionProviderFactory.newConnectionProvider();
-	}
-	
-	public void begin() throws NotSupportedException, SystemException {
-		current = new DummyTransaction(this);
-		current.begin();
-	}
-
-	public void commit() throws RollbackException, HeuristicMixedException,
-			HeuristicRollbackException, SecurityException,
-			IllegalStateException, SystemException {
-		current.commit();
-	}
-
-
-	public int getStatus() throws SystemException {
-		return current.getStatus();
-	}
-
-	public Transaction getTransaction() throws SystemException {
-		return current;
-	}
-
-	public void resume(Transaction tx) throws InvalidTransactionException,
-			IllegalStateException, SystemException {
-		current = (DummyTransaction) tx;
-	}
-
-	public void rollback() throws IllegalStateException, SecurityException,
-			SystemException {
-		current.rollback();
-
-	}
-
-	public void setRollbackOnly() throws IllegalStateException, SystemException {
-		current.setRollbackOnly();
-	}
-
-	public void setTransactionTimeout(int t) throws SystemException {
-	}
-	
-	public Transaction suspend() throws SystemException {
-		Transaction result = current;
-		current = null;
-		return result;
-	}
-
-	public DummyTransaction getCurrent() {
-		return current;
-	}
-	
-	void endCurrent(DummyTransaction tx) {
-		if (current==tx) current=null;
-	}
-
-}

Deleted: core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManagerLookup.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManagerLookup.java	2007-12-04 17:26:17 UTC (rev 14212)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/tm/DummyTransactionManagerLookup.java	2007-12-04 17:38:27 UTC (rev 14213)
@@ -1,28 +0,0 @@
-//$Id: DummyTransactionManagerLookup.java 5693 2005-02-13 01:59:07Z oneovthafew $
-package org.hibernate.test.tm;
-
-import java.util.Properties;
-
-import javax.transaction.TransactionManager;
-
-import org.hibernate.HibernateException;
-import org.hibernate.transaction.TransactionManagerLookup;
-
-/**
- * @author Gavin King
- */
-public class DummyTransactionManagerLookup implements TransactionManagerLookup {
-
-	public TransactionManager getTransactionManager(Properties props)
-	throws HibernateException {
-		if ( DummyTransactionManager.INSTANCE == null ) {
-			DummyTransactionManager.INSTANCE = new DummyTransactionManager(props);
-		}
-		return DummyTransactionManager.INSTANCE;
-	}
-
-	public String getUserTransactionName() {
-		throw new UnsupportedOperationException();
-	}
-
-}




More information about the hibernate-commits mailing list