Example usage for org.springframework.transaction.reactive GenericReactiveTransaction isRollbackOnly

List of usage examples for org.springframework.transaction.reactive GenericReactiveTransaction isRollbackOnly

Introduction

In this page you can find the example usage for org.springframework.transaction.reactive GenericReactiveTransaction isRollbackOnly.

Prototype

@Override
public boolean isRollbackOnly() 

Source Link

Document

Determine the rollback-only flag via checking this ReactiveTransactionStatus.

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}./*  w w  w.  j a va  2  s  .  c  o 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);
    });
}