newTransactionStatus reverted to its original role, just without preparing synchronization (SPR-6521)

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2591 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
Juergen Hoeller 2009-12-07 14:27:27 +00:00
parent 67d2f24b59
commit 3a683ea0ac
2 changed files with 14 additions and 13 deletions

View File

@ -330,7 +330,7 @@ public class WebSphereUowTransactionManager extends JtaTransactionManager
} }
public void run() { public void run() {
DefaultTransactionStatus status = newTransactionStatus( DefaultTransactionStatus status = prepareTransactionStatus(
this.definition, (this.actualTransaction ? this : null), this.definition, (this.actualTransaction ? this : null),
this.newTransaction, this.newSynchronization, this.debug, null); this.newTransaction, this.newSynchronization, this.debug, null);
try { try {

View File

@ -366,7 +366,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
} }
try { try {
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER); boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = instantiateTransactionStatus( DefaultTransactionStatus status = newTransactionStatus(
definition, transaction, true, newSynchronization, debugEnabled, suspendedResources); definition, transaction, true, newSynchronization, debugEnabled, suspendedResources);
doBegin(transaction, definition); doBegin(transaction, definition);
prepareSynchronization(status, definition); prepareSynchronization(status, definition);
@ -384,7 +384,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
else { else {
// Create "empty" transaction: no actual transaction, but potentially synchronization. // Create "empty" transaction: no actual transaction, but potentially synchronization.
boolean newSynchronization = (getTransactionSynchronization() == SYNCHRONIZATION_ALWAYS); boolean newSynchronization = (getTransactionSynchronization() == SYNCHRONIZATION_ALWAYS);
return newTransactionStatus(definition, null, true, newSynchronization, debugEnabled, null); return prepareTransactionStatus(definition, null, true, newSynchronization, debugEnabled, null);
} }
} }
@ -406,7 +406,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
} }
Object suspendedResources = suspend(transaction); Object suspendedResources = suspend(transaction);
boolean newSynchronization = (getTransactionSynchronization() == SYNCHRONIZATION_ALWAYS); boolean newSynchronization = (getTransactionSynchronization() == SYNCHRONIZATION_ALWAYS);
return newTransactionStatus( return prepareTransactionStatus(
definition, null, false, newSynchronization, debugEnabled, suspendedResources); definition, null, false, newSynchronization, debugEnabled, suspendedResources);
} }
@ -418,7 +418,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
SuspendedResourcesHolder suspendedResources = suspend(transaction); SuspendedResourcesHolder suspendedResources = suspend(transaction);
try { try {
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER); boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = instantiateTransactionStatus( DefaultTransactionStatus status = newTransactionStatus(
definition, transaction, true, newSynchronization, debugEnabled, suspendedResources); definition, transaction, true, newSynchronization, debugEnabled, suspendedResources);
doBegin(transaction, definition); doBegin(transaction, definition);
prepareSynchronization(status, definition); prepareSynchronization(status, definition);
@ -448,7 +448,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
// through the SavepointManager API implemented by TransactionStatus. // through the SavepointManager API implemented by TransactionStatus.
// Usually uses JDBC 3.0 savepoints. Never activates Spring synchronization. // Usually uses JDBC 3.0 savepoints. Never activates Spring synchronization.
DefaultTransactionStatus status = DefaultTransactionStatus status =
newTransactionStatus(definition, transaction, false, false, debugEnabled, null); prepareTransactionStatus(definition, transaction, false, false, debugEnabled, null);
status.createAndHoldSavepoint(); status.createAndHoldSavepoint();
return status; return status;
} }
@ -457,7 +457,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
// Usually only for JTA: Spring synchronization might get activated here // Usually only for JTA: Spring synchronization might get activated here
// in case of a pre-existing JTA transaction. // in case of a pre-existing JTA transaction.
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER); boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = instantiateTransactionStatus( DefaultTransactionStatus status = newTransactionStatus(
definition, transaction, true, newSynchronization, debugEnabled, null); definition, transaction, true, newSynchronization, debugEnabled, null);
doBegin(transaction, definition); doBegin(transaction, definition);
prepareSynchronization(status, definition); prepareSynchronization(status, definition);
@ -489,18 +489,20 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
} }
} }
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER); boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
return newTransactionStatus(definition, transaction, false, newSynchronization, debugEnabled, null); return prepareTransactionStatus(definition, transaction, false, newSynchronization, debugEnabled, null);
} }
/** /**
* Create a new TransactionStatus for the given arguments, * Create a new TransactionStatus for the given arguments,
* also initializing transaction synchronization as appropriate. * also initializing transaction synchronization as appropriate.
* @see #newTransactionStatus
* @see #prepareTransactionStatus
*/ */
protected DefaultTransactionStatus newTransactionStatus( protected final DefaultTransactionStatus prepareTransactionStatus(
TransactionDefinition definition, Object transaction, boolean newTransaction, TransactionDefinition definition, Object transaction, boolean newTransaction,
boolean newSynchronization, boolean debug, Object suspendedResources) { boolean newSynchronization, boolean debug, Object suspendedResources) {
DefaultTransactionStatus status = instantiateTransactionStatus( DefaultTransactionStatus status = newTransactionStatus(
definition, transaction, newTransaction, newSynchronization, debug, suspendedResources); definition, transaction, newTransaction, newSynchronization, debug, suspendedResources);
prepareSynchronization(status, definition); prepareSynchronization(status, definition);
return status; return status;
@ -509,7 +511,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
/** /**
* Create a rae TransactionStatus instance for the given arguments. * Create a rae TransactionStatus instance for the given arguments.
*/ */
private DefaultTransactionStatus instantiateTransactionStatus( protected DefaultTransactionStatus newTransactionStatus(
TransactionDefinition definition, Object transaction, boolean newTransaction, TransactionDefinition definition, Object transaction, boolean newTransaction,
boolean newSynchronization, boolean debug, Object suspendedResources) { boolean newSynchronization, boolean debug, Object suspendedResources) {
@ -523,7 +525,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
/** /**
* Initialize transaction synchronization as appropriate. * Initialize transaction synchronization as appropriate.
*/ */
private void prepareSynchronization(DefaultTransactionStatus status, TransactionDefinition definition) { protected void prepareSynchronization(DefaultTransactionStatus status, TransactionDefinition definition) {
if (status.isNewSynchronization()) { if (status.isNewSynchronization()) {
TransactionSynchronizationManager.setActualTransactionActive(status.hasTransaction()); TransactionSynchronizationManager.setActualTransactionActive(status.hasTransaction());
TransactionSynchronizationManager.setCurrentTransactionIsolationLevel( TransactionSynchronizationManager.setCurrentTransactionIsolationLevel(
@ -1269,7 +1271,6 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
this.logger = LogFactory.getLog(getClass()); this.logger = LogFactory.getLog(getClass());
} }
/** /**
* Holder for suspended resources. * Holder for suspended resources.
* Used internally by <code>suspend</code> and <code>resume</code>. * Used internally by <code>suspend</code> and <code>resume</code>.