|
|
|
@ -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>. |
|
|
|
|