From b4a440e8d365c8cbc2bbce77cd9f89e009d761c4 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Wed, 2 Mar 2011 16:46:08 -0600 Subject: [PATCH] HHH-5949 - Migrate, complete and integrate TransactionFactory as a service --- .../ejb/AbstractEntityManagerImpl.java | 307 +++++++++--------- .../org/hibernate/ejb/Ejb3Configuration.java | 4 +- .../transaction/JoinableCMTTransaction.java | 83 ++--- .../JoinableCMTTransactionFactory.java | 56 ++-- .../AbstractDelegateSessionImplementor.java | 19 +- .../tm/HibernateTransactionManagerLookup.java | 36 +- ...bstractEntityCollectionRegionTestCase.java | 8 +- .../AbstractGeneralDataRegionTestCase.java | 8 +- ...ollectionRegionAccessStrategyTestCase.java | 7 +- .../TransactionalExtraAPITestCase.java | 14 +- ...actEntityRegionAccessStrategyTestCase.java | 10 +- .../entity/TransactionalExtraAPITestCase.java | 20 +- .../BasicJdbcTransactionalTestCase.java | 6 +- .../functional/SingleNodeTestCase.java | 6 +- .../bulk/BulkOperationsTestCase.java | 4 +- .../functional/cluster/DualNodeTestCase.java | 3 +- .../query/QueryRegionImplTestCase.java | 4 +- .../TimestampsRegionImplTestCase.java | 4 +- .../tm/JBossStandaloneJtaExampleTest.java | 2 +- .../cache/infinispan/util/CacheTestUtil.java | 19 +- 20 files changed, 279 insertions(+), 341 deletions(-) diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/AbstractEntityManagerImpl.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/AbstractEntityManagerImpl.java index aca398a737..ed1c48cc97 100755 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/AbstractEntityManagerImpl.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/AbstractEntityManagerImpl.java @@ -1,4 +1,3 @@ -// $Id$ /* * Hibernate, Relational Persistence for Idiomatic Java * @@ -24,15 +23,51 @@ */ package org.hibernate.ejb; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import org.hibernate.AssertionFailure; +import org.hibernate.CacheMode; +import org.hibernate.FlushMode; +import org.hibernate.HibernateException; +import org.hibernate.LockMode; +import org.hibernate.LockOptions; +import org.hibernate.MappingException; +import org.hibernate.ObjectDeletedException; +import org.hibernate.ObjectNotFoundException; +import org.hibernate.QueryException; +import org.hibernate.SQLQuery; +import org.hibernate.Session; +import org.hibernate.StaleObjectStateException; +import org.hibernate.StaleStateException; +import org.hibernate.TransientObjectException; +import org.hibernate.TypeMismatchException; +import org.hibernate.UnresolvableObjectException; +import org.hibernate.cfg.Environment; +import org.hibernate.ejb.criteria.CriteriaQueryCompiler; +import org.hibernate.ejb.criteria.ValueHandlerFactory; +import org.hibernate.ejb.criteria.expression.CompoundSelectionImpl; +import org.hibernate.ejb.util.CacheModeHelper; +import org.hibernate.ejb.util.ConfigurationHelper; +import org.hibernate.ejb.util.LockModeTypeHelper; +import org.hibernate.engine.NamedSQLQueryDefinition; +import org.hibernate.engine.ResultSetMappingDefinition; +import org.hibernate.engine.SessionFactoryImplementor; +import org.hibernate.engine.SessionImplementor; +import org.hibernate.engine.query.sql.NativeSQLQueryReturn; +import org.hibernate.engine.query.sql.NativeSQLQueryRootReturn; +import org.hibernate.engine.transaction.internal.jta.JtaStatusHelper; +import org.hibernate.engine.transaction.spi.JoinStatus; +import org.hibernate.engine.transaction.spi.TransactionCoordinator; +import org.hibernate.engine.transaction.spi.TransactionImplementor; +import org.hibernate.engine.transaction.synchronization.spi.AfterCompletionAction; +import org.hibernate.engine.transaction.synchronization.spi.ExceptionMapper; +import org.hibernate.engine.transaction.synchronization.spi.ManagedFlushChecker; +import org.hibernate.engine.transaction.synchronization.spi.SynchronizationCallbackCoordinator; +import org.hibernate.proxy.HibernateProxy; +import org.hibernate.service.jta.platform.spi.JtaPlatform; +import org.hibernate.transform.BasicTransformerAdapter; +import org.hibernate.util.ReflectHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.persistence.CacheRetrieveMode; import javax.persistence.CacheStoreMode; import javax.persistence.EntityManager; @@ -59,55 +94,17 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Selection; import javax.persistence.metamodel.Metamodel; import javax.persistence.spi.PersistenceUnitTransactionType; -import javax.transaction.Status; -import javax.transaction.Synchronization; import javax.transaction.SystemException; import javax.transaction.TransactionManager; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.hibernate.AssertionFailure; -import org.hibernate.CacheMode; -import org.hibernate.FlushMode; -import org.hibernate.HibernateException; -import org.hibernate.LockMode; -import org.hibernate.LockOptions; -import org.hibernate.MappingException; -import org.hibernate.ObjectDeletedException; -import org.hibernate.ObjectNotFoundException; -import org.hibernate.QueryException; -import org.hibernate.SQLQuery; -import org.hibernate.Session; -import org.hibernate.StaleObjectStateException; -import org.hibernate.StaleStateException; -import org.hibernate.Transaction; -import org.hibernate.TransientObjectException; -import org.hibernate.TypeMismatchException; -import org.hibernate.UnresolvableObjectException; -import org.hibernate.cfg.Environment; -import org.hibernate.ejb.criteria.CriteriaQueryCompiler; -import org.hibernate.ejb.criteria.ValueHandlerFactory; -import org.hibernate.ejb.criteria.expression.CompoundSelectionImpl; -import org.hibernate.ejb.transaction.JoinableCMTTransaction; -import org.hibernate.ejb.util.CacheModeHelper; -import org.hibernate.ejb.util.ConfigurationHelper; -import org.hibernate.ejb.util.LockModeTypeHelper; -import org.hibernate.engine.NamedSQLQueryDefinition; -import org.hibernate.engine.ResultSetMappingDefinition; -import org.hibernate.engine.SessionFactoryImplementor; -import org.hibernate.engine.SessionImplementor; -import org.hibernate.engine.query.sql.NativeSQLQueryReturn; -import org.hibernate.engine.query.sql.NativeSQLQueryRootReturn; -import org.hibernate.proxy.HibernateProxy; -import org.hibernate.transaction.TransactionFactory; -import org.hibernate.transaction.synchronization.AfterCompletionAction; -import org.hibernate.transaction.synchronization.BeforeCompletionManagedFlushChecker; -import org.hibernate.transaction.synchronization.CallbackCoordinator; -import org.hibernate.transaction.synchronization.ExceptionMapper; -import org.hibernate.transform.BasicTransformerAdapter; -import org.hibernate.util.JTAHelper; -import org.hibernate.util.ReflectHelper; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author Gavin King @@ -944,6 +941,10 @@ public abstract class AbstractEntityManagerImpl implements HibernateEntityManage return ( ( SessionImplementor ) getRawSession() ).isTransactionInProgress(); } + private SessionFactoryImplementor sfi() { + return ( SessionFactoryImplementor ) getRawSession().getSessionFactory(); + } + protected void markAsRollback() { log.debug( "mark transaction for rollback" ); if ( tx.isActive() ) { @@ -952,8 +953,7 @@ public abstract class AbstractEntityManagerImpl implements HibernateEntityManage else { //no explicit use of the tx. boundaries methods if ( PersistenceUnitTransactionType.JTA == transactionType ) { - TransactionManager transactionManager = - ( ( SessionFactoryImplementor ) getRawSession().getSessionFactory() ).getTransactionManager(); + TransactionManager transactionManager = sfi().getServiceRegistry().getService( JtaPlatform.class ).retrieveTransactionManager(); if ( transactionManager == null ) { throw new PersistenceException( "Using a JTA persistence context wo setting hibernate.transaction.manager_lookup_class" @@ -987,105 +987,52 @@ public abstract class AbstractEntityManagerImpl implements HibernateEntityManage } private void joinTransaction(boolean ignoreNotJoining) { - //set the joined status - getSession().isOpen(); //for sync - if ( transactionType == PersistenceUnitTransactionType.JTA ) { - try { - log.debug( "Looking for a JTA transaction to join" ); - final Session session = getSession(); - final Transaction transaction = session.getTransaction(); - if ( transaction != null && transaction instanceof JoinableCMTTransaction ) { - //can't handle it if not a joinnable transaction - final JoinableCMTTransaction joinableCMTTransaction = ( JoinableCMTTransaction ) transaction; - - if ( joinableCMTTransaction.getStatus() == JoinableCMTTransaction.JoinStatus.JOINED ) { - log.debug( "Transaction already joined" ); - return; //no-op - } - joinableCMTTransaction.markForJoined(); - session.isOpen(); //register to the Tx - if ( joinableCMTTransaction.getStatus() == JoinableCMTTransaction.JoinStatus.NOT_JOINED ) { - if ( ignoreNotJoining ) { - log.debug( "No JTA transaction found" ); - return; - } - else { - throw new TransactionRequiredException( - "No active JTA transaction on joinTransaction call" - ); - } - } - else if ( joinableCMTTransaction.getStatus() == JoinableCMTTransaction.JoinStatus.MARKED_FOR_JOINED ) { - throw new AssertionFailure( "Transaction MARKED_FOR_JOINED after isOpen() call" ); - } - //flush before completion and - //register clear on rollback - log.trace( "Adding flush() and close() synchronization" ); - CallbackCoordinator callbackCoordinator = ( (SessionImplementor ) getSession() ).getJDBCContext().getJtaSynchronizationCallbackCoordinator(); - if ( callbackCoordinator == null ) { - throw new AssertionFailure( "Expecting CallbackCoordinator to be non-null" ); - } - callbackCoordinator.setBeforeCompletionManagedFlushChecker( - new BeforeCompletionManagedFlushChecker() { - public boolean shouldDoManagedFlush(TransactionFactory.Context ctx, javax.transaction.Transaction jtaTransaction) - throws SystemException { - if ( transaction == null ) { - log.warn( "Transaction not available on beforeCompletion: assuming valid" ); - } - return !ctx.isFlushModeNever() - && ( jtaTransaction == null || !JTAHelper.isRollback( jtaTransaction.getStatus() ) ); - } - } - ); - callbackCoordinator.setAfterCompletionAction( - new AfterCompletionAction() { - public void doAction(TransactionFactory.Context ctx, int status) { - try { - if ( !ctx.isClosed() ) { - if ( Status.STATUS_ROLLEDBACK == status - && transactionType == PersistenceUnitTransactionType.JTA ) { - session.clear(); - } - JoinableCMTTransaction joinable = ( JoinableCMTTransaction ) session.getTransaction(); - joinable.resetStatus(); - } - } - catch ( HibernateException e ) { - throw convert( e ); - } - } - } - ); - callbackCoordinator.setExceptionMapper( - new ExceptionMapper() { - public RuntimeException mapStatusCheckFailure(String message, SystemException systemException) { - throw new PersistenceException( message, systemException ); - } - - public RuntimeException mapManagedFlushFailure(String message, RuntimeException failure) { - if ( HibernateException.class.isInstance( failure ) ) { - throw convert( failure ); - } - if ( PersistenceException.class.isInstance( failure ) ) { - throw failure; - } - throw new PersistenceException( message, failure ); - } - } - ); - } - else { - log.warn( "Cannot join transaction: do not override {}", Environment.TRANSACTION_STRATEGY ); - } - } - catch ( HibernateException he ) { - throw convert( he ); - } - } - else { + if ( transactionType != PersistenceUnitTransactionType.JTA ) { if ( !ignoreNotJoining ) { log.warn( "Calling joinTransaction() on a non JTA EntityManager" ); } + return; + } + + final SessionImplementor session = (SessionImplementor) getSession(); + session.getTransactionCoordinator().pulse(); + + log.debug( "Looking for a JTA transaction to join" ); + if ( ! session.getTransactionCoordinator().isTransactionJoinable() ) { + log.warn( "Cannot join transaction: do not override {}", Environment.TRANSACTION_STRATEGY ); + } + + try { + final TransactionImplementor transaction = session.getTransactionCoordinator().getTransaction(); + + if ( transaction.getJoinStatus() == JoinStatus.JOINED ) { + log.debug( "Transaction already joined" ); + return; // noop + } + + // join the transaction and then recheck the status + transaction.join(); + if ( transaction.getJoinStatus() == JoinStatus.NOT_JOINED ) { + if ( ignoreNotJoining ) { + log.debug( "No JTA transaction found" ); + return; + } + else { + throw new TransactionRequiredException( "No active JTA transaction on joinTransaction call" ); + } + } + else if ( transaction.getJoinStatus() == JoinStatus.MARKED_FOR_JOINED ) { + throw new AssertionFailure( "Transaction MARKED_FOR_JOINED after isOpen() call" ); + } + + // register behavior changes + SynchronizationCallbackCoordinator callbackCoordinator = session.getTransactionCoordinator().getSynchronizationCallbackCoordinator(); + callbackCoordinator.setManagedFlushChecker( new ManagedFlushCheckerImpl() ); + callbackCoordinator.setExceptionMapper( new CallbackExceptionMapperImpl() ); + callbackCoordinator.setAfterCompletionAction( new AfterCompletionActionImpl( session, transactionType ) ); + } + catch ( HibernateException he ) { + throw convert( he ); } } @@ -1278,4 +1225,54 @@ public abstract class AbstractEntityManagerImpl implements HibernateEntityManage } return pe; } + + private static class AfterCompletionActionImpl implements AfterCompletionAction { + private final SessionImplementor session; + private final PersistenceUnitTransactionType transactionType; + + private AfterCompletionActionImpl(SessionImplementor session, PersistenceUnitTransactionType transactionType) { + this.session = session; + this.transactionType = transactionType; + } + + @Override + public void doAction(TransactionCoordinator transactionCoordinator, int status) { + if ( session.isClosed() ) { + log.trace( "Session was closed; nothing to do" ); + return; + } + + final boolean successful = JtaStatusHelper.isCommitted( status ); + if ( !successful && transactionType == PersistenceUnitTransactionType.JTA ) { + ( (Session) session ).clear(); + } + session.getTransactionCoordinator().resetJoinStatus(); + } + } + + private static class ManagedFlushCheckerImpl implements ManagedFlushChecker { + @Override + public boolean shouldDoManagedFlush(TransactionCoordinator coordinator, int jtaStatus) { + return ! coordinator.getTransactionContext().isFlushModeNever() && + ! JtaStatusHelper.isRollback( jtaStatus ); + } + } + + private class CallbackExceptionMapperImpl implements ExceptionMapper { + @Override + public RuntimeException mapStatusCheckFailure(String message, SystemException systemException) { + throw new PersistenceException( message, systemException ); + } + + @Override + public RuntimeException mapManagedFlushFailure(String message, RuntimeException failure) { + if ( HibernateException.class.isInstance( failure ) ) { + throw convert( failure ); + } + if ( PersistenceException.class.isInstance( failure ) ) { + throw failure; + } + throw new PersistenceException( message, failure ); + } + } } diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java index c61d3a2a0a..07eaa01b90 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java @@ -87,6 +87,7 @@ import org.hibernate.ejb.util.ConfigurationHelper; import org.hibernate.ejb.util.LogHelper; import org.hibernate.ejb.util.NamingHelper; import org.hibernate.engine.FilterDefinition; +import org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory; import org.hibernate.event.EventListeners; import org.hibernate.mapping.AuxiliaryDatabaseObject; import org.hibernate.mapping.PersistentClass; @@ -95,7 +96,6 @@ import org.hibernate.proxy.EntityNotFoundDelegate; import org.hibernate.secure.JACCConfiguration; import org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator; import org.hibernate.service.spi.ServiceRegistry; -import org.hibernate.transaction.JDBCTransactionFactory; import org.hibernate.util.CollectionHelper; import org.hibernate.util.ReflectHelper; import org.hibernate.util.StringHelper; @@ -1256,7 +1256,7 @@ public class Ejb3Configuration implements Serializable, Referenceable { ); } else if ( ! hasTxStrategy && transactionType == PersistenceUnitTransactionType.RESOURCE_LOCAL ) { - preparedProperties.setProperty( Environment.TRANSACTION_STRATEGY, JDBCTransactionFactory.class.getName() ); + preparedProperties.setProperty( Environment.TRANSACTION_STRATEGY, JdbcTransactionFactory.class.getName() ); } if ( hasTxStrategy ) { log.warn( diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java index d4531a0739..19df58762c 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java @@ -21,79 +21,63 @@ */ package org.hibernate.ejb.transaction; -import javax.transaction.SystemException; -import javax.transaction.Transaction; - import org.hibernate.HibernateException; -import org.hibernate.TransactionException; -import org.hibernate.engine.jdbc.spi.JDBCContext; -import org.hibernate.transaction.CMTTransaction; -import org.hibernate.transaction.TransactionFactory; -import org.hibernate.util.JTAHelper; +import org.hibernate.engine.transaction.internal.jta.CMTTransaction; +import org.hibernate.engine.transaction.internal.jta.JtaStatusHelper; +import org.hibernate.engine.transaction.spi.JoinStatus; +import org.hibernate.engine.transaction.spi.TransactionCoordinator; /** * Implements a joinable transaction. Until the transaction is marked for joined, the TM.isTransactionInProgress() * must return false * * @author Emmanuel Bernard + * @author Steve Ebersole */ public class JoinableCMTTransaction extends CMTTransaction { - private JoinStatus status; + private JoinStatus joinStatus = JoinStatus.NOT_JOINED; - public JoinableCMTTransaction(JDBCContext jdbcContext, TransactionFactory.Context transactionContext) { - super( jdbcContext, transactionContext ); - //status = JoinStatus.MARKED_FOR_JOINED; - //tryJoiningTransaction(); + public JoinableCMTTransaction(TransactionCoordinator transactionCoordinator) { + super( transactionCoordinator ); } - public boolean isTransactionInProgress( - JDBCContext jdbcContext, - TransactionFactory.Context transactionContext) { - try { - return status == JoinStatus.JOINED && isTransactionInProgress( - transactionContext.getFactory().getTransactionManager().getTransaction() - ); - } - catch (SystemException se) { - throw new TransactionException( "Unable to check transaction status", se ); - } + boolean isJoinable() { + return joinStatus == JoinStatus.JOINED && JtaStatusHelper.isActive( transactionManager() ); } - private boolean isTransactionInProgress() { - try { - Transaction transaction = transactionContext.getFactory().getTransactionManager().getTransaction(); - return isTransactionInProgress(transaction); - } - catch (SystemException se) { - throw new TransactionException( "Unable to check transaction status", se ); - } + public JoinStatus getJoinStatus() { + return joinStatus; } - private boolean isTransactionInProgress(Transaction tx) throws SystemException { - return JTAHelper.isTransactionInProgress(tx) && ! JTAHelper.isRollback( tx.getStatus() ); - } - - void tryJoiningTransaction() { - if ( status == JoinStatus.MARKED_FOR_JOINED ) { - if ( isTransactionInProgress() ) { - status = JoinStatus.JOINED; + @Override + public void join() { + if ( joinStatus == JoinStatus.MARKED_FOR_JOINED ) { + if ( JtaStatusHelper.isActive( transactionManager() ) ) { + joinStatus = JoinStatus.JOINED; + // register synchronization if needed + transactionCoordinator().pulse(); } else { - status = JoinStatus.NOT_JOINED; + joinStatus = JoinStatus.NOT_JOINED; } } } + @Override + public void resetJoinStatus() { + joinStatus = JoinStatus.NOT_JOINED; + } + @Override public void begin() throws HibernateException { super.begin(); - status = JoinStatus.JOINED; + joinStatus = JoinStatus.JOINED; } @Override public void commit() throws HibernateException { /* this method is not supposed to be called - * it breaks the flushBeforeCompletion flag optimizeation + * it breaks the flushBeforeCompletion flag optimization * regarding flushing skip. * In its current form, it will generate too much flush() calls */ @@ -102,20 +86,11 @@ public class JoinableCMTTransaction extends CMTTransaction { public JoinStatus getStatus() { - return status; + return joinStatus; } public void resetStatus() { - status = JoinStatus.NOT_JOINED; + joinStatus = JoinStatus.NOT_JOINED; } - public void markForJoined() { - if ( status != JoinStatus.JOINED ) status = JoinStatus.MARKED_FOR_JOINED; - } - - public static enum JoinStatus { - NOT_JOINED, - MARKED_FOR_JOINED, - JOINED - } } diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransactionFactory.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransactionFactory.java index b4f3239342..95832b763e 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransactionFactory.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/transaction/JoinableCMTTransactionFactory.java @@ -1,8 +1,10 @@ /* - * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2009-2011, Red Hat Inc. 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. + * distributed under license by Red Hat Inc. * * 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 @@ -21,34 +23,46 @@ */ package org.hibernate.ejb.transaction; -import org.hibernate.HibernateException; -import org.hibernate.Transaction; -import org.hibernate.engine.jdbc.spi.JDBCContext; -import org.hibernate.transaction.CMTTransactionFactory; +import org.hibernate.ConnectionReleaseMode; +import org.hibernate.engine.transaction.spi.JoinStatus; +import org.hibernate.engine.transaction.spi.TransactionCoordinator; +import org.hibernate.engine.transaction.spi.TransactionFactory; /** * A transaction is in progress if the underlying JTA tx is in progress and if the Tx is marked as * MARKED_FOR_JOINED * * @author Emmanuel Bernard + * @author Steve Ebersole */ -public class JoinableCMTTransactionFactory extends CMTTransactionFactory { - public Transaction createTransaction( - JDBCContext jdbcContext, - Context transactionContext) throws HibernateException { - return new JoinableCMTTransaction( jdbcContext, transactionContext ); +public class JoinableCMTTransactionFactory implements TransactionFactory { + @Override + public boolean compatibleWithJtaSynchronization() { + return true; } @Override - public boolean isTransactionInProgress( - JDBCContext jdbcContext, - Context transactionContext, - Transaction transaction) { - if ( transaction == null ) { - return false; //should not happen though - } - JoinableCMTTransaction joinableCMTTransaction = ( (JoinableCMTTransaction) transaction ); - joinableCMTTransaction.tryJoiningTransaction(); - return joinableCMTTransaction.isTransactionInProgress( jdbcContext, transactionContext ); + public boolean canBeDriver() { + return false; + } + + @Override + public JoinableCMTTransaction createTransaction(TransactionCoordinator transactionCoordinator) { + return new JoinableCMTTransaction( transactionCoordinator ); + } + + @Override + public boolean isJoinableJtaTransaction(TransactionCoordinator transactionCoordinator, JoinableCMTTransaction transaction) { + return transaction.isJoinable(); + } + + @Override + public JoinStatus getJoinStatus(TransactionCoordinator transactionCoordinator, JoinableCMTTransaction transaction) { + return transaction.getJoinStatus(); + } + + @Override + public ConnectionReleaseMode getDefaultReleaseMode() { + return ConnectionReleaseMode.AFTER_STATEMENT; } } diff --git a/hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/AbstractDelegateSessionImplementor.java b/hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/AbstractDelegateSessionImplementor.java index 5de4173e21..8fa33710df 100644 --- a/hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/AbstractDelegateSessionImplementor.java +++ b/hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/AbstractDelegateSessionImplementor.java @@ -46,8 +46,8 @@ import org.hibernate.engine.QueryParameters; import org.hibernate.engine.SessionFactoryImplementor; import org.hibernate.engine.SessionImplementor; import org.hibernate.engine.NonFlushedChanges; -import org.hibernate.engine.jdbc.spi.JDBCContext; import org.hibernate.engine.query.sql.NativeSQLQuerySpecification; +import org.hibernate.engine.transaction.spi.TransactionCoordinator; import org.hibernate.event.EventListeners; import org.hibernate.impl.CriteriaImpl; import org.hibernate.loader.custom.CustomQuery; @@ -140,14 +140,6 @@ public abstract class AbstractDelegateSessionImplementor implements SessionImple return delegate.getEntityUsingInterceptor(key); } - public void afterTransactionCompletion(boolean successful, Transaction tx) { - delegate.afterTransactionCompletion(successful, tx); - } - - public void beforeTransactionCompletion(Transaction tx) { - delegate.beforeTransactionCompletion(tx); - } - public Serializable getContextEntityIdentifier(Object object) { return delegate.getContextEntityIdentifier(object); } @@ -280,11 +272,12 @@ public abstract class AbstractDelegateSessionImplementor implements SessionImple return delegate.getFetchProfile(); } - public JDBCContext getJDBCContext() { - return delegate.getJDBCContext(); - } + @Override + public TransactionCoordinator getTransactionCoordinator() { + return delegate.getTransactionCoordinator(); + } - public boolean isClosed() { + public boolean isClosed() { return delegate.isClosed(); } } diff --git a/hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/tm/HibernateTransactionManagerLookup.java b/hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/tm/HibernateTransactionManagerLookup.java index ea8d7b0993..ef80e7c300 100644 --- a/hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/tm/HibernateTransactionManagerLookup.java +++ b/hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/tm/HibernateTransactionManagerLookup.java @@ -21,12 +21,11 @@ */ package org.hibernate.cache.infinispan.tm; -import java.util.Properties; +import org.hibernate.cfg.Settings; +import org.hibernate.service.jta.platform.spi.JtaPlatform; import javax.transaction.TransactionManager; - -import org.hibernate.cfg.Settings; -import org.hibernate.transaction.TransactionManagerLookup; +import java.util.Properties; /** * HibernateTransactionManagerLookup. @@ -35,20 +34,19 @@ import org.hibernate.transaction.TransactionManagerLookup; * @since 3.5 */ public class HibernateTransactionManagerLookup implements org.infinispan.transaction.lookup.TransactionManagerLookup { - private final TransactionManagerLookup hibernateLookup; - - private final Properties properties; - - public HibernateTransactionManagerLookup(Settings settings, Properties properties) { - if (settings != null) - this.hibernateLookup = settings.getTransactionManagerLookup(); - else - this.hibernateLookup = null; - this.properties = properties; - } - - public TransactionManager getTransactionManager() throws Exception { - return hibernateLookup == null ? null : hibernateLookup.getTransactionManager(properties); - } + private final JtaPlatform jtaPlatform; + + public HibernateTransactionManagerLookup(Settings settings, Properties properties) { + if ( settings != null ) { + jtaPlatform = settings.getJtaPlatform(); + } + else { + jtaPlatform = null; + } + } + + public TransactionManager getTransactionManager() throws Exception { + return jtaPlatform == null ? null : jtaPlatform.retrieveTransactionManager(); + } } diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractEntityCollectionRegionTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractEntityCollectionRegionTestCase.java index 2ce1305f9f..9d806489d5 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractEntityCollectionRegionTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractEntityCollectionRegionTestCase.java @@ -65,7 +65,7 @@ public abstract class AbstractEntityCollectionRegionTestCase extends AbstractReg String entityCfg = "entity"; cfg.setProperty(InfinispanRegionFactory.ENTITY_CACHE_RESOURCE_PROP, entityCfg); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); supportedAccessTypeTest(regionFactory, cfg.getProperties()); } @@ -85,7 +85,7 @@ public abstract class AbstractEntityCollectionRegionTestCase extends AbstractReg public void testIsTransactionAware() throws Exception { Configuration cfg = CacheTestUtil.buildConfiguration("test", InfinispanRegionFactory.class, true, false); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); TransactionalDataRegion region = (TransactionalDataRegion) createRegion(regionFactory, "test/test", cfg.getProperties(), getCacheDataDescription()); assertTrue("Region is transaction-aware", region.isTransactionAware()); @@ -94,7 +94,7 @@ public abstract class AbstractEntityCollectionRegionTestCase extends AbstractReg // Make it non-transactional cfg.getProperties().remove(Environment.TRANSACTION_MANAGER_STRATEGY); regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); region = (TransactionalDataRegion) createRegion(regionFactory, "test/test", cfg.getProperties(), getCacheDataDescription()); assertFalse("Region is not transaction-aware", region.isTransactionAware()); @@ -104,7 +104,7 @@ public abstract class AbstractEntityCollectionRegionTestCase extends AbstractReg public void testGetCacheDataDescription() throws Exception { Configuration cfg = CacheTestUtil.buildConfiguration("test", InfinispanRegionFactory.class, true, false); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); TransactionalDataRegion region = (TransactionalDataRegion) createRegion(regionFactory, "test/test", cfg.getProperties(), getCacheDataDescription()); CacheDataDescription cdd = region.getCacheDataDescription(); diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractGeneralDataRegionTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractGeneralDataRegionTestCase.java index 7f959ab380..eaa6a6ec7e 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractGeneralDataRegionTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/AbstractGeneralDataRegionTestCase.java @@ -73,7 +73,7 @@ public abstract class AbstractGeneralDataRegionTestCase extends AbstractRegionIm private void evictOrRemoveTest() throws Exception { Configuration cfg = createConfiguration(); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); CacheAdapter localCache = getInfinispanCache(regionFactory); boolean invalidation = localCache.isClusteredInvalidation(); @@ -86,7 +86,7 @@ public abstract class AbstractGeneralDataRegionTestCase extends AbstractRegionIm cfg = createConfiguration(); regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); GeneralDataRegion remoteRegion = (GeneralDataRegion) createRegion(regionFactory, @@ -126,7 +126,7 @@ public abstract class AbstractGeneralDataRegionTestCase extends AbstractRegionIm private void evictOrRemoveAllTest(String configName) throws Exception { Configuration cfg = createConfiguration(); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); CacheAdapter localCache = getInfinispanCache(regionFactory); @@ -138,7 +138,7 @@ public abstract class AbstractGeneralDataRegionTestCase extends AbstractRegionIm cfg = createConfiguration(); regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); CacheAdapter remoteCache = getInfinispanCache(regionFactory); diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/AbstractCollectionRegionAccessStrategyTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/AbstractCollectionRegionAccessStrategyTestCase.java index d63e697314..b92c7456f9 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/AbstractCollectionRegionAccessStrategyTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/AbstractCollectionRegionAccessStrategyTestCase.java @@ -542,14 +542,11 @@ public abstract class AbstractCollectionRegionAccessStrategyTestCase extends Abs serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() ); localCfg = createConfiguration(configName, configResource); - localRegionFactory = CacheTestUtil.startRegionFactory( - serviceRegistry.getService( JdbcServices.class ), - localCfg - ); + localRegionFactory = CacheTestUtil.startRegionFactory( serviceRegistry, localCfg ); remoteCfg = createConfiguration(configName, configResource); remoteRegionFactory = CacheTestUtil.startRegionFactory( - serviceRegistry.getService( JdbcServices.class ), + serviceRegistry, remoteCfg ); } diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/TransactionalExtraAPITestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/TransactionalExtraAPITestCase.java index 70ce3a30c0..16bbbff6c0 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/TransactionalExtraAPITestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/collection/TransactionalExtraAPITestCase.java @@ -55,7 +55,7 @@ public class TransactionalExtraAPITestCase extends AbstractNonFunctionalTestCase if (getCollectionAccessStrategy() == null) { Configuration cfg = createConfiguration(); InfinispanRegionFactory rf = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); // Sleep a bit to avoid concurrent FLUSH problem @@ -93,30 +93,18 @@ public class TransactionalExtraAPITestCase extends AbstractNonFunctionalTestCase localAccessStrategy = strategy; } - /** - * Test method for {@link TransactionalAccess#lockItem(java.lang.Object, java.lang.Object)}. - */ public void testLockItem() { assertNull(getCollectionAccessStrategy().lockItem(KEY, new Integer(1))); } - /** - * Test method for {@link TransactionalAccess#lockRegion()}. - */ public void testLockRegion() { assertNull(getCollectionAccessStrategy().lockRegion()); } - /** - * Test method for {@link TransactionalAccess#unlockItem(java.lang.Object, org.hibernate.cache.access.SoftLock)}. - */ public void testUnlockItem() { getCollectionAccessStrategy().unlockItem(KEY, new MockSoftLock()); } - /** - * Test method for {@link TransactionalAccess#unlockRegion(org.hibernate.cache.access.SoftLock)}. - */ public void testUnlockRegion() { getCollectionAccessStrategy().unlockItem(KEY, new MockSoftLock()); } diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/AbstractEntityRegionAccessStrategyTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/AbstractEntityRegionAccessStrategyTestCase.java index b70c41ffd6..f7197cdf3a 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/AbstractEntityRegionAccessStrategyTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/AbstractEntityRegionAccessStrategyTestCase.java @@ -666,16 +666,10 @@ public abstract class AbstractEntityRegionAccessStrategyTestCase extends Abstrac serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() ); localCfg = createConfiguration(configName); - localRegionFactory = CacheTestUtil.startRegionFactory( - serviceRegistry.getService( JdbcServices.class ), - localCfg - ); + localRegionFactory = CacheTestUtil.startRegionFactory( serviceRegistry, localCfg ); remoteCfg = createConfiguration(configName); - remoteRegionFactory = CacheTestUtil.startRegionFactory( - serviceRegistry.getService( JdbcServices.class ), - remoteCfg - ); + remoteRegionFactory = CacheTestUtil.startRegionFactory( serviceRegistry, remoteCfg ); } @Override diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/TransactionalExtraAPITestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/TransactionalExtraAPITestCase.java index 0aac7c9792..bc04f1a625 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/TransactionalExtraAPITestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/entity/TransactionalExtraAPITestCase.java @@ -61,7 +61,7 @@ public class TransactionalExtraAPITestCase extends AbstractNonFunctionalTestCase if (getEntityAccessStrategy() == null) { Configuration cfg = createConfiguration(); InfinispanRegionFactory rf = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); // Sleep a bit to avoid concurrent FLUSH problem @@ -99,44 +99,26 @@ public class TransactionalExtraAPITestCase extends AbstractNonFunctionalTestCase localAccessStrategy = strategy; } - /** - * Test method for {@link TransactionalAccess#lockItem(java.lang.Object, java.lang.Object)}. - */ public void testLockItem() { assertNull(getEntityAccessStrategy().lockItem(KEY, new Integer(1))); } - /** - * Test method for {@link TransactionalAccess#lockRegion()}. - */ public void testLockRegion() { assertNull(getEntityAccessStrategy().lockRegion()); } - /** - * Test method for {@link TransactionalAccess#unlockItem(java.lang.Object, org.hibernate.cache.access.SoftLock)}. - */ public void testUnlockItem() { getEntityAccessStrategy().unlockItem(KEY, new MockSoftLock()); } - /** - * Test method for {@link TransactionalAccess#unlockRegion(org.hibernate.cache.access.SoftLock)}. - */ public void testUnlockRegion() { getEntityAccessStrategy().unlockItem(KEY, new MockSoftLock()); } - /** - * Test method for {@link TransactionalAccess#afterInsert(java.lang.Object, java.lang.Object, java.lang.Object)}. - */ public void testAfterInsert() { assertFalse("afterInsert always returns false", getEntityAccessStrategy().afterInsert(KEY, VALUE1, new Integer(1))); } - /** - * Test method for {@link TransactionalAccess#afterUpdate(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, org.hibernate.cache.access.SoftLock)}. - */ public void testAfterUpdate() { assertFalse("afterInsert always returns false", getEntityAccessStrategy().afterUpdate(KEY, VALUE2, new Integer(1), new Integer(2), new MockSoftLock())); } diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicJdbcTransactionalTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicJdbcTransactionalTestCase.java index e04b63b49f..9413afc309 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicJdbcTransactionalTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicJdbcTransactionalTestCase.java @@ -25,10 +25,10 @@ package org.hibernate.test.cache.infinispan.functional; import java.util.Map; import org.hibernate.Session; +import org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory; +import org.hibernate.engine.transaction.spi.TransactionFactory; import org.hibernate.stat.SecondLevelCacheStatistics; import org.hibernate.stat.Statistics; -import org.hibernate.transaction.JDBCTransactionFactory; -import org.hibernate.transaction.TransactionFactory; import org.hibernate.transaction.TransactionManagerLookup; import org.infinispan.util.logging.Log; import org.infinispan.util.logging.LogFactory; @@ -47,7 +47,7 @@ public class BasicJdbcTransactionalTestCase extends SingleNodeTestCase { } protected Class getTransactionFactoryClass() { - return JDBCTransactionFactory.class; + return JdbcTransactionFactory.class; } protected Class getTransactionManagerLookupClass() { diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/SingleNodeTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/SingleNodeTestCase.java index 88ad695cfb..e692ac149c 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/SingleNodeTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/SingleNodeTestCase.java @@ -7,12 +7,10 @@ import org.hibernate.cache.RegionFactory; import org.hibernate.cache.infinispan.InfinispanRegionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; +import org.hibernate.engine.transaction.spi.TransactionFactory; import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; import org.hibernate.testing.junit.functional.FunctionalTestCase; -import org.hibernate.stat.SecondLevelCacheStatistics; -import org.hibernate.stat.Statistics; -import org.hibernate.transaction.CMTTransactionFactory; -import org.hibernate.transaction.TransactionFactory; +import org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory; import org.hibernate.transaction.TransactionManagerLookup; import org.infinispan.util.logging.Log; import org.infinispan.util.logging.LogFactory; diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/bulk/BulkOperationsTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/bulk/BulkOperationsTestCase.java index d737cd6c4c..1f11835053 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/bulk/BulkOperationsTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/bulk/BulkOperationsTestCase.java @@ -34,13 +34,13 @@ import org.hibernate.cache.infinispan.InfinispanRegionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.classic.Session; +import org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory; +import org.hibernate.engine.transaction.spi.TransactionFactory; import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; import org.hibernate.testing.junit.functional.FunctionalTestCase; import org.hibernate.stat.SecondLevelCacheStatistics; import org.hibernate.test.cache.infinispan.functional.Contact; import org.hibernate.test.cache.infinispan.functional.Customer; -import org.hibernate.transaction.CMTTransactionFactory; -import org.hibernate.transaction.TransactionFactory; import org.hibernate.transaction.TransactionManagerLookup; import org.infinispan.util.logging.Log; import org.infinispan.util.logging.LogFactory; diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/cluster/DualNodeTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/cluster/DualNodeTestCase.java index a63d0ea325..2aa7b0c741 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/cluster/DualNodeTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/cluster/DualNodeTestCase.java @@ -30,9 +30,10 @@ import org.hibernate.cfg.Environment; import org.hibernate.cfg.Mappings; import org.hibernate.dialect.Dialect; import org.hibernate.engine.SessionFactoryImplementor; +import org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory; import org.hibernate.testing.junit.functional.ExecutionEnvironment; import org.hibernate.testing.junit.functional.FunctionalTestCase; -import org.hibernate.transaction.CMTTransactionFactory; + import org.infinispan.util.logging.Log; import org.infinispan.util.logging.LogFactory; diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/query/QueryRegionImplTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/query/QueryRegionImplTestCase.java index e1180116d9..ed711b955b 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/query/QueryRegionImplTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/query/QueryRegionImplTestCase.java @@ -91,7 +91,7 @@ public class QueryRegionImplTestCase extends AbstractGeneralDataRegionTestCase { private void putDoesNotBlockGetTest() throws Exception { Configuration cfg = createConfiguration(); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport()); + getServiceRegistry(), cfg, getCacheTestSupport()); // Sleep a bit to avoid concurrent FLUSH problem avoidConcurrentFlush(); @@ -177,7 +177,7 @@ public class QueryRegionImplTestCase extends AbstractGeneralDataRegionTestCase { private void getDoesNotBlockPutTest() throws Exception { Configuration cfg = createConfiguration(); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); // Sleep a bit to avoid concurrent FLUSH problem diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/timestamp/TimestampsRegionImplTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/timestamp/TimestampsRegionImplTestCase.java index afd8dfc663..c27080f2f0 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/timestamp/TimestampsRegionImplTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/timestamp/TimestampsRegionImplTestCase.java @@ -87,14 +87,14 @@ public class TimestampsRegionImplTestCase extends AbstractGeneralDataRegionTestC public void testClearTimestampsRegionInIsolated() throws Exception { Configuration cfg = createConfiguration(); InfinispanRegionFactory regionFactory = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg, getCacheTestSupport() + getServiceRegistry(), cfg, getCacheTestSupport() ); // Sleep a bit to avoid concurrent FLUSH problem avoidConcurrentFlush(); Configuration cfg2 = createConfiguration(); InfinispanRegionFactory regionFactory2 = CacheTestUtil.startRegionFactory( - getJdbcServices(), cfg2, getCacheTestSupport() + getServiceRegistry(), cfg2, getCacheTestSupport() ); // Sleep a bit to avoid concurrent FLUSH problem avoidConcurrentFlush(); diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/tm/JBossStandaloneJtaExampleTest.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/tm/JBossStandaloneJtaExampleTest.java index 170655a2aa..cebf648378 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/tm/JBossStandaloneJtaExampleTest.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/tm/JBossStandaloneJtaExampleTest.java @@ -226,7 +226,7 @@ public class JBossStandaloneJtaExampleTest extends TestCase { } private void bindUserTransaction() throws Exception { - // also the UserTransaction must be registered on jndi: org.hibernate.transaction.JTATransactionFactory#getUserTransaction() requires this + // also the UserTransaction must be registered on jndi: org.hibernate.engine.transaction.internal.jta.JtaTransactionFactory#getUserTransaction() requires this bind("UserTransaction", lookup.getUserTransaction(), lookup.getUserTransaction().getClass(), ctx); } diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/util/CacheTestUtil.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/util/CacheTestUtil.java index 1db018c176..d53b95e9d1 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/util/CacheTestUtil.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/util/CacheTestUtil.java @@ -37,6 +37,7 @@ import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.cfg.Settings; import org.hibernate.engine.jdbc.spi.JdbcServices; +import org.hibernate.service.spi.ServiceRegistry; /** * Utilities for cache testing. @@ -72,11 +73,11 @@ public class CacheTestUtil { return cfg; } - public static InfinispanRegionFactory startRegionFactory(JdbcServices jdbcServices, - Configuration cfg) - throws ClassNotFoundException, InstantiationException, IllegalAccessException { + public static InfinispanRegionFactory startRegionFactory( + ServiceRegistry serviceRegistry, + Configuration cfg) throws ClassNotFoundException, InstantiationException, IllegalAccessException { - Settings settings = cfg.buildSettings( jdbcServices ); + Settings settings = cfg.buildSettings( serviceRegistry ); Properties properties = cfg.getProperties(); String factoryType = cfg.getProperty(Environment.CACHE_REGION_FACTORY); @@ -88,11 +89,11 @@ public class CacheTestUtil { return regionFactory; } - public static InfinispanRegionFactory startRegionFactory(JdbcServices jdbcServices, - Configuration cfg, - CacheTestSupport testSupport) - throws ClassNotFoundException, InstantiationException, IllegalAccessException { - InfinispanRegionFactory factory = startRegionFactory(jdbcServices, cfg); + public static InfinispanRegionFactory startRegionFactory( + ServiceRegistry serviceRegistry, + Configuration cfg, + CacheTestSupport testSupport) throws ClassNotFoundException, InstantiationException, IllegalAccessException { + InfinispanRegionFactory factory = startRegionFactory( serviceRegistry, cfg ); testSupport.registerFactory(factory); return factory; }