Example usage for org.springframework.transaction.support DefaultTransactionStatus isNewSynchronization

List of usage examples for org.springframework.transaction.support DefaultTransactionStatus isNewSynchronization

Introduction

In this page you can find the example usage for org.springframework.transaction.support DefaultTransactionStatus isNewSynchronization.

Prototype

public boolean isNewSynchronization() 

Source Link

Document

Return if a new transaction synchronization has been opened for this transaction.

Usage

From source file:com.newmainsoftech.spray.slingong.datastore.Slim3PlatformTransactionManagerTest.java

protected void verifyRollbackProcess(boolean readOnlyEnabled, boolean roolBackOnlyEnabled,
        boolean debugEnabled) {
    // public final void rollback(TransactionStatus status)
    // private void processRollback(DefaultTransactionStatus status)
    // protected final void triggerBeforeCompletion(DefaultTransactionStatus status)

    ArgumentCaptor<DefaultTransactionStatus> defaultTransactionStatusArgumentCaptor = ArgumentCaptor
            .forClass(DefaultTransactionStatus.class);
    mockedSlim3TxMangerInOrder.verify(slim3PlatformTransactionManager, Mockito.times(1))
            .doRollback(defaultTransactionStatusArgumentCaptor.capture());
    DefaultTransactionStatus defaultTransactionStatus = defaultTransactionStatusArgumentCaptor.getValue();
    Assert.assertTrue(defaultTransactionStatus.getTransaction() instanceof GlobalTransaction);
    GlobalTransaction gtx = (GlobalTransaction) defaultTransactionStatus.getTransaction();
    Assert.assertTrue(defaultTransactionStatus.isNewTransaction());
    Assert.assertTrue(defaultTransactionStatus.isCompleted()); // Should be true since actually transaction has already been finished
    Assert.assertEquals(readOnlyEnabled, defaultTransactionStatus.isReadOnly());
    Assert.assertEquals(roolBackOnlyEnabled, defaultTransactionStatus.isRollbackOnly());
    /* If defaultTransactionStatus.isRollbackOnly() returns true, then either 
     * its isGlobalRollbackOnly() or its isLocalRollbackOnly() returns true.
     *//*from   ww w.  j ava 2s .  c  o  m*/
    if (defaultTransactionStatus.isRollbackOnly() && logger.isDebugEnabled()) {
        logger.debug("defaultTransactionStatus.isGlobalRollbackOnly() = "
                + defaultTransactionStatus.isGlobalRollbackOnly());
        logger.debug("defaultTransactionStatus.isLocalRollbackOnly() = "
                + defaultTransactionStatus.isLocalRollbackOnly());
    }
    Assert.assertEquals(debugEnabled, defaultTransactionStatus.isDebug());
    Assert.assertFalse(defaultTransactionStatus.isTransactionSavepointManager());
    Assert.assertTrue(defaultTransactionStatus.isNewSynchronization());

    mockedSlim3TxMangerInOrder.verify(slim3PlatformTransactionManager, Mockito.times(1))
            .getGlobalTransactionStates(Mockito.eq(gtx));

    // private void triggerAfterCompletion(DefaultTransactionStatus status, int completionStatus)
    // private void cleanupAfterCompletion(DefaultTransactionStatus status)
    // protected void doCleanupAfterCompletion(Object transaction)

}

From source file:org.springframework.transaction.support.AbstractPlatformTransactionManager.java

/**
 * Initialize transaction synchronization as appropriate.
 *//*from  w  ww.  j  a v a2 s .co  m*/
protected void prepareSynchronization(DefaultTransactionStatus status, TransactionDefinition definition) {
    if (status.isNewSynchronization()) {
        TransactionSynchronizationManager.setActualTransactionActive(status.hasTransaction());
        TransactionSynchronizationManager.setCurrentTransactionIsolationLevel(
                definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT
                        ? definition.getIsolationLevel()
                        : null);
        TransactionSynchronizationManager.setCurrentTransactionReadOnly(definition.isReadOnly());
        TransactionSynchronizationManager.setCurrentTransactionName(definition.getName());
        TransactionSynchronizationManager.initSynchronization();
    }
}

From source file:org.springframework.transaction.support.AbstractPlatformTransactionManager.java

/**
 * Trigger {@code beforeCommit} callbacks.
 * @param status object representing the transaction
 *//*from  w ww  .java 2s  . co  m*/
protected final void triggerBeforeCommit(DefaultTransactionStatus status) {
    if (status.isNewSynchronization()) {
        if (status.isDebug()) {
            logger.trace("Triggering beforeCommit synchronization");
        }
        TransactionSynchronizationUtils.triggerBeforeCommit(status.isReadOnly());
    }
}

From source file:org.springframework.transaction.support.AbstractPlatformTransactionManager.java

/**
 * Trigger {@code beforeCompletion} callbacks.
 * @param status object representing the transaction
 *//*from   w  ww .  j  a v a  2s .  c  o  m*/
protected final void triggerBeforeCompletion(DefaultTransactionStatus status) {
    if (status.isNewSynchronization()) {
        if (status.isDebug()) {
            logger.trace("Triggering beforeCompletion synchronization");
        }
        TransactionSynchronizationUtils.triggerBeforeCompletion();
    }
}

From source file:org.springframework.transaction.support.AbstractPlatformTransactionManager.java

/**
 * Trigger {@code afterCommit} callbacks.
 * @param status object representing the transaction
 *///ww w  . j  a  va2s. com
private void triggerAfterCommit(DefaultTransactionStatus status) {
    if (status.isNewSynchronization()) {
        if (status.isDebug()) {
            logger.trace("Triggering afterCommit synchronization");
        }
        TransactionSynchronizationUtils.triggerAfterCommit();
    }
}

From source file:org.springframework.transaction.support.AbstractPlatformTransactionManager.java

/**
 * Trigger {@code afterCompletion} callbacks.
 * @param status object representing the transaction
 * @param completionStatus completion status according to TransactionSynchronization constants
 *///from  ww  w  .ja  v  a2  s.c o m
private void triggerAfterCompletion(DefaultTransactionStatus status, int completionStatus) {
    if (status.isNewSynchronization()) {
        List<TransactionSynchronization> synchronizations = TransactionSynchronizationManager
                .getSynchronizations();
        TransactionSynchronizationManager.clearSynchronization();
        if (!status.hasTransaction() || status.isNewTransaction()) {
            if (status.isDebug()) {
                logger.trace("Triggering afterCompletion synchronization");
            }
            // No transaction or new transaction for the current scope ->
            // invoke the afterCompletion callbacks immediately
            invokeAfterCompletion(synchronizations, completionStatus);
        } else if (!synchronizations.isEmpty()) {
            // Existing transaction that we participate in, controlled outside
            // of the scope of this Spring transaction manager -> try to register
            // an afterCompletion callback with the existing (JTA) transaction.
            registerAfterCompletionWithExistingTransaction(status.getTransaction(), synchronizations);
        }
    }
}

From source file:org.springframework.transaction.support.AbstractPlatformTransactionManager.java

/**
 * Clean up after completion, clearing synchronization if necessary,
 * and invoking doCleanupAfterCompletion.
 * @param status object representing the transaction
 * @see #doCleanupAfterCompletion/*from  w ww  .  ja  va2 s .  c  o  m*/
 */
private void cleanupAfterCompletion(DefaultTransactionStatus status) {
    status.setCompleted();
    if (status.isNewSynchronization()) {
        TransactionSynchronizationManager.clear();
    }
    if (status.isNewTransaction()) {
        doCleanupAfterCompletion(status.getTransaction());
    }
    if (status.getSuspendedResources() != null) {
        if (status.isDebug()) {
            logger.debug("Resuming suspended transaction after completion of inner transaction");
        }
        Object transaction = (status.hasTransaction() ? status.getTransaction() : null);
        resume(transaction, (SuspendedResourcesHolder) status.getSuspendedResources());
    }
}