org.multiverse.api.OrElseBlock Maven / Gradle / Ivy
The newest version!
package org.multiverse.api;
import org.multiverse.MultiverseConstants;
import org.multiverse.api.callables.*;
/**
* The OrElse is responsible for executing the either block, or in case of a retry, the orelse block is executed.
*
* Another useful features of this design is that for certain primitives it doesn't require any form of boxing.
* It also provides an atomicChecked for a TxnVoidCallable which doesn't force a developer to return something when
* nothing needs to be returned.
*
* @author Peter Veentjer.
*/
public interface OrElseBlock extends MultiverseConstants {
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* If in the execution of the closure a checked exception is thrown, the exception
* is wrapped in a InvisibleCheckedException. The original exception can be retrieved by calling the
* getCause method.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws org.multiverse.api.exceptions.TxnMandatoryException
* if no transaction is found on the TxnThreadLocal.
* @throws org.multiverse.api.exceptions.InvisibleCheckedException
* if a checked exception is thrown by the closure.
*/
E execute(TxnCallable either, TxnCallable orelse);
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws org.multiverse.api.exceptions.TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws Exception if the atomicChecked call fails.
*/
E executeChecked(TxnCallable either, TxnCallable orelse) throws Exception;
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* If in the execution of the closure a checked exception is thrown, the exception
* is wrapped in a InvisibleCheckedException. The original exception can be retrieved by calling the
* getCause method.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws org.multiverse.api.exceptions.TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws org.multiverse.api.exceptions.InvisibleCheckedException
* if a checked exception is thrown by the closure.
*/
int execute(TxnIntCallable either, TxnIntCallable orelse);
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws Exception if the atomicChecked call fails.
*/
int executeChecked(TxnIntCallable either, TxnIntCallable orelse) throws Exception;
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* If in the execution of the closure a checked exception is thrown, the exception
* is wrapped in a InvisibleCheckedException. The original exception can be retrieved by calling the
* getCause method.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws org.multiverse.api.exceptions.InvisibleCheckedException
* if a checked exception is thrown by the closure.
*/
long execute(TxnLongCallable either, TxnLongCallable orelse);
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws Exception if the atomicChecked call fails.
*/
long executeChecked(TxnLongCallable either, TxnLongCallable orelse) throws Exception;
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* If in the execution of the closure a checked exception is thrown, the exception
* is wrapped in a InvisibleCheckedException. The original exception can be retrieved by calling the
* getCause method.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws org.multiverse.api.exceptions.InvisibleCheckedException
* if a checked exception is thrown by the closure.
*/
double execute(TxnDoubleCallable either, TxnDoubleCallable orelse);
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws Exception if the atomicChecked call fails.
*/
double executeChecked(TxnDoubleCallable either, TxnDoubleCallable orelse) throws Exception;
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* If in the execution of the closure a checked exception is thrown, the exception
* is wrapped in a InvisibleCheckedException. The original exception can be retrieved by calling the
* getCause method.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws org.multiverse.api.exceptions.InvisibleCheckedException
* if a checked exception is thrown by the closure.
*/
boolean execute(TxnBooleanCallable either, TxnBooleanCallable orelse);
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* @param either
* @param orelse
* @return the result of the execution.
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws Exception if the atomicChecked call fails.
*/
boolean executeChecked(TxnBooleanCallable either, TxnBooleanCallable orelse) throws Exception;
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* If in the execution of the closure a checked exception is thrown, the exception
* is wrapped in a InvisibleCheckedException. The original exception can be retrieved by calling the
* getCause method.
*
* @param either
* @param orelse
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws org.multiverse.api.exceptions.InvisibleCheckedException
* if a checked exception is thrown by the closure.
*/
void execute(TxnVoidCallable either, TxnVoidCallable orelse);
/**
* Executes the either, or when it is retried, the orelse block. This operation makes composable blocking operations
* possible.
*
* @param either
* @param orelse
* @throws NullPointerException if either or orelse is null.
* @throws TxnMandatoryException if no transaction is found on the TxnThreadLocal.
* @throws Exception if the atomicChecked call fails.
*/
void executeChecked(TxnVoidCallable either, TxnVoidCallable orelse) throws Exception;
}