Example usage for org.springframework.transaction ReactiveTransaction isCompleted

List of usage examples for org.springframework.transaction ReactiveTransaction isCompleted

Introduction

In this page you can find the example usage for org.springframework.transaction ReactiveTransaction isCompleted.

Prototype

boolean isCompleted();

Source Link

Document

Return whether this transaction is completed, that is, whether it has already been committed or rolled back.

Usage

From source file:org.springframework.transaction.reactive.AbstractReactiveTransactionManager.java

/**
 * This implementation of commit handles participating in existing
 * transactions and programmatic rollback requests.
 * Delegates to {@code isRollbackOnly}, {@code doCommit}
 * and {@code rollback}./*from  w w  w.j a v  a  2 s .  co  m*/
 * @see ReactiveTransaction#isRollbackOnly()
 * @see #doCommit
 * @see #rollback
 */
@Override
public final Mono<Void> commit(ReactiveTransaction transaction) throws TransactionException {
    if (transaction.isCompleted()) {
        return Mono.error(new IllegalTransactionStateException(
                "Transaction is already completed - do not call commit or rollback more than once per transaction"));
    }

    return TransactionSynchronizationManager.currentTransaction().flatMap(synchronizationManager -> {
        GenericReactiveTransaction reactiveTx = (GenericReactiveTransaction) transaction;
        if (reactiveTx.isRollbackOnly()) {
            if (reactiveTx.isDebug()) {
                logger.debug("Transactional code has requested rollback");
            }
            return processRollback(synchronizationManager, reactiveTx);
        }
        return processCommit(synchronizationManager, reactiveTx);
    });
}

From source file:org.springframework.transaction.reactive.AbstractReactiveTransactionManager.java

/**
 * This implementation of rollback handles participating in existing transactions.
 * Delegates to {@code doRollback} and {@code doSetRollbackOnly}.
 * @see #doRollback//  w  w  w  .  j ava 2 s  . c o  m
 * @see #doSetRollbackOnly
 */
@Override
public final Mono<Void> rollback(ReactiveTransaction transaction) throws TransactionException {
    if (transaction.isCompleted()) {
        return Mono.error(new IllegalTransactionStateException(
                "Transaction is already completed - do not call commit or rollback more than once per transaction"));
    }
    return TransactionSynchronizationManager.currentTransaction().flatMap(synchronizationManager -> {
        GenericReactiveTransaction reactiveTx = (GenericReactiveTransaction) transaction;
        return processRollback(synchronizationManager, reactiveTx);
    });
}