All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy