Author: steve.ebersole(a)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();
- }
-
-}