Class Result<T,E>

java.lang.Object
no.gorandalum.fluentresult.Result<T,E>
Type Parameters:
T - the type of the success value
E - the type of the error value

public final class Result<T,E> extends Object
A result object which either is in success state containing a non-null success value, or in error state containing a non-null error value.

A variable whose type is Result should never itself be null, it should always point to an Result instance.

  • Method Summary

    Modifier and Type
    Method
    Description
    consume(Consumer<? super T> consumer)
    If in success state, applies the success value to the given consumer, otherwise does nothing.
    consumeEither(Consumer<? super T> valueConsumer, Consumer<? super E> errorConsumer)
    If in success state, applies the success value to the given value consumer.
    consumeError(Consumer<? super E> errorConsumer)
    If in error state, applies the error value to the given consumer, otherwise does nothing.
    boolean
     
    static <T, E> Result<T,E>
    error(E value)
    Returns a Result in error state containing the given non-null value as error value.
    flatConsume(Function<? super T,? extends VoidResult<? extends E>> function)
    If in success state, applies the success value to the given function.
    <N> Result<N,E>
    flatMap(Function<? super T,? extends Result<? extends N,? extends E>> function)
    If in success state, returns the Result from applying the given mapping function to the success value, otherwise returns the unaltered Result in error state.
    If in success state, returns the BooleanResult from applying the given mapping function to the success value, otherwise returns a BooleanResult containing the error value of this Result.
    If in success state, returns the OptionalResult from applying the given mapping function to the success value, otherwise returns a OptionalResult containing the error value of this Result.
    If in success state, returns the VoidResult from applying the given mapping function to the success value, otherwise returns a VoidResult containing the error value of this Result.
    <N> Result<N,E>
    flatRecover(Function<E,Result<? extends N,? extends E>> function)
    If in error state, returns the Result from applying the given mapping function to the error value, otherwise returns the unaltered Result in success state.
    flatRunIfSuccess(Supplier<? extends VoidResult<? extends E>> supplier)
    If in success state, runs the given supplier.
    <N> N
    fold(Function<? super T,? extends N> valueFunction, Function<? super E,? extends N> errorFunction)
    Retrieve a value from this Result by folding the states.
    static <T> Result<T,Exception>
    handle(Callable<T> callable)
    Handle the given Callable.
    static <T, E> Result<T,E>
    handle(Callable<T> callable, Function<Exception,E> exceptionMapper)
    Handle the given Callable.
    int
     
    <N> Result<N,E>
    map(Function<? super T,? extends N> function)
    If in success state, returns a Result containing the result of applying the given mapping function to the success value, otherwise returns the unaltered Result in error state.
    <N> Result<T,N>
    mapError(Function<? super E,? extends N> function)
    If in error state, returns a Result containing the result of applying the given mapping function to the error value, otherwise returns the unaltered Result in success state.
    mapToBoolean(Function<? super T,Boolean> function)
    If in success state, returns a BooleanResult containing the result of applying the given mapping function to the success value, otherwise returns a BooleanResult containing the error value of this Result.
    mapToOptional(Function<? super T,Optional<N>> function)
    If in success state, returns a OptionalResult containing the result of applying the given mapping function to the success value, otherwise returns a OptionalResult containing the error value of this Result.
    orElse(T other)
    If in success state, returns the success value, otherwise returns other.
    orElseGet(Function<? super E,? extends T> function)
    If in success state, returns the success value, otherwise returns the value returned from the given function.
    <X extends Throwable>
    T
    orElseThrow(Function<? super E,? extends X> function)
    If in success state, returns the success value, otherwise throws the exception returned by the given function.
    recover(Function<E,T> function)
    If in error state, returns a Result with the success value from applying the given mapping function to the error value, otherwise returns the unaltered Result in success state.
    run(Runnable runnable)
    Deprecated.
    use runAlways(java.lang.Runnable) instead for clarity
    runAlways(Runnable runnable)
    Runs the given runnable, no matter the state.
    runEither(Runnable successRunnable, Runnable errorRunnable)
    If in success state, runs the given success runnable.
    runIfError(Runnable runnable)
    If in error state, runs the given runnable, otherwise does nothing.
    If in success state, runs the given runnable, otherwise does nothing.
    static <T, E> Result<T,E>
    success(T value)
    Returns a Result in success state containing the given non-null value as success value.
    Transforms this Result to an OptionalResult.
     
    Transforms this Result to a VoidResult.
    verify(Function<? super T,? extends VoidResult<? extends E>> function)
    If in success state, verifies the success value of this Result by mapping it to a VoidResult.
    verify(Predicate<? super T> predicate, Supplier<? extends E> errorSupplier)
    If in success state, verifies the success value of this Result by testing it with the given predicate.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Method Details

    • success

      public static <T, E> Result<T,E> success(T value)
      Returns a Result in success state containing the given non-null value as success value.
      Type Parameters:
      T - the type of the success value
      E - the type of the error value
      Parameters:
      value - the success value, which must be non-null
      Returns:
      a Result in success state containing the given success value
      Throws:
      NullPointerException - if given success value is null
    • error

      public static <T, E> Result<T,E> error(E value)
      Returns a Result in error state containing the given non-null value as error value.
      Type Parameters:
      T - the type of the success value
      E - the type of the error value
      Parameters:
      value - the error value, which must be non-null
      Returns:
      a Result in error state containing the given error value
      Throws:
      NullPointerException - if given error value is null
    • map

      public <N> Result<N,E> map(Function<? super T,? extends N> function)
      If in success state, returns a Result containing the result of applying the given mapping function to the success value, otherwise returns the unaltered Result in error state.
      Type Parameters:
      N - the type of the value returned from the mapping function
      Parameters:
      function - the mapping function to apply to the success value, if success state
      Returns:
      a Result containing the result of applying the mapping function to the success value of this Result, if in success state, otherwise the unaltered Result in error state
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • mapToOptional

      public <N> OptionalResult<N,E> mapToOptional(Function<? super T,Optional<N>> function)
      If in success state, returns a OptionalResult containing the result of applying the given mapping function to the success value, otherwise returns a OptionalResult containing the error value of this Result.
      Type Parameters:
      N - the type of the success value which may be present in the Optional returned from the mapping function
      Parameters:
      function - the mapping function to apply to the success value, if success state
      Returns:
      a OptionalResult containing the result of applying the mapping function to the success value of this Result, if in success state, otherwise a OptionalResult containing the error value of this Result
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • mapToBoolean

      public BooleanResult<E> mapToBoolean(Function<? super T,Boolean> function)
      If in success state, returns a BooleanResult containing the result of applying the given mapping function to the success value, otherwise returns a BooleanResult containing the error value of this Result.
      Parameters:
      function - the mapping function to apply to the success value, if success state
      Returns:
      a BooleanResult containing the result of applying the mapping function to the success value of this Result, if in success state, otherwise a BooleanResult containing the error value of this Result
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • mapError

      public <N> Result<T,N> mapError(Function<? super E,? extends N> function)
      If in error state, returns a Result containing the result of applying the given mapping function to the error value, otherwise returns the unaltered Result in success state.
      Type Parameters:
      N - the type of the value returned from the mapping function
      Parameters:
      function - the mapping function to apply to the error value, if error state
      Returns:
      a Result containing the result of applying the mapping function to the error value of this Result, if in error state, otherwise the unaltered Result in success state
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • flatMap

      public <N> Result<N,E> flatMap(Function<? super T,? extends Result<? extends N,? extends E>> function)
      If in success state, returns the Result from applying the given mapping function to the success value, otherwise returns the unaltered Result in error state.
      Type Parameters:
      N - the type of success value which may be present in the Result returned by the mapping function
      Parameters:
      function - the mapping function to apply to the success value, if success state
      Returns:
      the Result returned from the mapping function, if in success state, otherwise the unaltered Result in error state
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • flatMapToOptionalResult

      public <N> OptionalResult<N,E> flatMapToOptionalResult(Function<? super T,OptionalResult<N,E>> function)
      If in success state, returns the OptionalResult from applying the given mapping function to the success value, otherwise returns a OptionalResult containing the error value of this Result.
      Type Parameters:
      N - the type of success value which may be present in the OptionalResult returned by the mapping function
      Parameters:
      function - the mapping function to apply to the success value, if success state
      Returns:
      the OptionalResult returned from the mapping function, if in success state, otherwise a OptionalResult containing the error value of this Result
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • flatMapToBooleanResult

      public BooleanResult<E> flatMapToBooleanResult(Function<? super T,BooleanResult<E>> function)
      If in success state, returns the BooleanResult from applying the given mapping function to the success value, otherwise returns a BooleanResult containing the error value of this Result.
      Parameters:
      function - the mapping function to apply to the success value, if success state
      Returns:
      the BooleanResult returned from the mapping function, if in success state, otherwise a BooleanResult containing the error value of this Result
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • flatMapToVoidResult

      public VoidResult<E> flatMapToVoidResult(Function<? super T,VoidResult<E>> function)
      If in success state, returns the VoidResult from applying the given mapping function to the success value, otherwise returns a VoidResult containing the error value of this Result.
      Parameters:
      function - the mapping function to apply to the success value, if success state
      Returns:
      the VoidResult returned from the mapping function, if in success state, otherwise a VoidResult containing the error value of this Result
      Throws:
      NullPointerException - if the given mapping function is null or returns null
    • recover

      public Result<T,E> recover(Function<E,T> function)
      If in error state, returns a Result with the success value from applying the given mapping function to the error value, otherwise returns the unaltered Result in success state.
      Parameters:
      function - the mapping function to apply to the error value to convert to a new success value, if error state
      Returns:
      A Result containing the value from the mapping function, if in error state, otherwise the unaltered Result in success state
    • flatRecover

      public <N> Result<N,E> flatRecover(Function<E,Result<? extends N,? extends E>> function)
      If in error state, returns the Result from applying the given mapping function to the error value, otherwise returns the unaltered Result in success state.
      Type Parameters:
      N - the type of success value which may be present in the Result returned by the mapping function
      Parameters:
      function - the mapping function to apply to the error value to convert to a new Result, if error state
      Returns:
      the Result returned from the mapping function, if in error state, otherwise the unaltered Result in success state
    • consume

      public Result<T,E> consume(Consumer<? super T> consumer)
      If in success state, applies the success value to the given consumer, otherwise does nothing.
      Parameters:
      consumer - the consumer which accepts the success value
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if the given consumer is null
    • consumeError

      public Result<T,E> consumeError(Consumer<? super E> errorConsumer)
      If in error state, applies the error value to the given consumer, otherwise does nothing.
      Parameters:
      errorConsumer - the consumer which accepts the error value
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if the given consumer is null
    • consumeEither

      public Result<T,E> consumeEither(Consumer<? super T> valueConsumer, Consumer<? super E> errorConsumer)
      If in success state, applies the success value to the given value consumer. If in error state, applies the error value to the given error consumer.
      Parameters:
      valueConsumer - the consumer which accepts the success value
      errorConsumer - the consumer which accepts the error value
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if one of the given consumers is null
    • flatConsume

      public Result<T,E> flatConsume(Function<? super T,? extends VoidResult<? extends E>> function)
      If in success state, applies the success value to the given function. If the function returns a VoidResult in success state, the original Result is returned unaltered. If the function returns a VoidResult in error state, a Result containing the error value is returned. If in error state, the original Result is returned unaltered.
      Parameters:
      function - the function which accepts the success value
      Returns:
      the original Result unaltered if the given function returns success or the original Result is in error state, otherwise a Result containing the error value from the function result
      Throws:
      NullPointerException - if the given function is null or returns null
    • runIfSuccess

      public Result<T,E> runIfSuccess(Runnable runnable)
      If in success state, runs the given runnable, otherwise does nothing.
      Parameters:
      runnable - the runnable to run if success state
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if the given runnable is null
    • runIfError

      public Result<T,E> runIfError(Runnable runnable)
      If in error state, runs the given runnable, otherwise does nothing.
      Parameters:
      runnable - the runnable to run if error state
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if the given runnable is null
    • runEither

      public Result<T,E> runEither(Runnable successRunnable, Runnable errorRunnable)
      If in success state, runs the given success runnable. If in error state, runs the given error runnable.
      Parameters:
      successRunnable - the runnable to run if success state
      errorRunnable - the runnable to run if error state
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if one of the given runnables is null
    • run

      @Deprecated public Result<T,E> run(Runnable runnable)
      Deprecated.
      use runAlways(java.lang.Runnable) instead for clarity
      Runs the given runnable, no matter the state.
      Parameters:
      runnable - the runnable to run
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if the given runnable is null
    • runAlways

      public Result<T,E> runAlways(Runnable runnable)
      Runs the given runnable, no matter the state.
      Parameters:
      runnable - the runnable to run
      Returns:
      the original Result unaltered
      Throws:
      NullPointerException - if the given runnable is null
    • flatRunIfSuccess

      public Result<T,E> flatRunIfSuccess(Supplier<? extends VoidResult<? extends E>> supplier)
      If in success state, runs the given supplier. If the supplier returns a VoidResult in success state, the original Result is returned unaltered. If the supplier returns a VoidResult in error state, a Result containing the error value is returned. If in error state, the original Result is returned unaltered.
      Parameters:
      supplier - the supplier to run
      Returns:
      the original Result unaltered if the given supplier returns success or the original Result is in error state, otherwise a Result containing the error value from the supplier result
      Throws:
      NullPointerException - if the given supplier is null or returns null
    • verify

      public Result<T,E> verify(Predicate<? super T> predicate, Supplier<? extends E> errorSupplier)
      If in success state, verifies the success value of this Result by testing it with the given predicate. If the predicate evaluates to false, a new Result is returned containing the error value provided by the given error supplier. If the predicate evaluates to true, or the Result already was in error state, the original Result is returned unaltered.
      Parameters:
      predicate - the predicate used to verify the success value, if success state
      errorSupplier - supplier providing the error if predicate evaluates to false
      Returns:
      the original Result unaltered, unless the predicate evaluates to false, then a new Result in error state is returned containing the supplied error value
      Throws:
      NullPointerException - if the given predicate is null or returns null, or the given error supplier is null or returns null
    • verify

      public Result<T,E> verify(Function<? super T,? extends VoidResult<? extends E>> function)
      If in success state, verifies the success value of this Result by mapping it to a VoidResult. If the returned VoidResult is in error state, a new Result is returned containing the error value of the VoidResult. If the VoidResult is in success state, or the Result already was in error state, the original Result is returned unaltered.
      Parameters:
      function - the function applied to the success value, if success state
      Returns:
      the original Result unaltered, unless the VoidResult returned by the mapping function is in error state, then a new Result in error state is returned containing the error value from the VoidResult
      Throws:
      NullPointerException - if the given function is null or returns null
    • fold

      public <N> N fold(Function<? super T,? extends N> valueFunction, Function<? super E,? extends N> errorFunction)
      Retrieve a value from this Result by folding the states. If in success state, return the value of applying the value function to the success value. If in error state, return the value of applying the error function to the error value.
      Type Parameters:
      N - the type of retrieved value
      Parameters:
      valueFunction - the mapping function to apply to the success value, if success state, may return null
      errorFunction - the mapping function to apply to the error value, if error state, may return null
      Returns:
      the folded value mapped from either the success value or error value, may be null
      Throws:
      NullPointerException - if one of the given functions is null
    • orElse

      public T orElse(T other)
      If in success state, returns the success value, otherwise returns other.
      Parameters:
      other - the value to be returned, if not in success state, may be null
      Returns:
      the success value, if success state, otherwise other
    • orElseGet

      public T orElseGet(Function<? super E,? extends T> function)
      If in success state, returns the success value, otherwise returns the value returned from the given function.
      Parameters:
      function - the mapping function to apply to the error value, if not in success state, it may return null
      Returns:
      the success value, if success state, otherwise the result returned from the given function
      Throws:
      NullPointerException - if the given function is null
    • orElseThrow

      public <X extends Throwable> T orElseThrow(Function<? super E,? extends X> function) throws X
      If in success state, returns the success value, otherwise throws the exception returned by the given function.
      Type Parameters:
      X - type of the exception to be thrown
      Parameters:
      function - the mapping function producing an exception by applying the error value, if not in success state
      Returns:
      the success value, if success state
      Throws:
      X - if in error state
      NullPointerException - if the given function is null or returns null
    • toOptionalResult

      public OptionalResult<T,E> toOptionalResult()
      Transforms this Result to an OptionalResult. If in success state, the OptionalResult will be in success state containing the success value from this Result. If in error state, the OptionalResult will be in error state containing the error value from this Result.

      The returned OptionalResult will never be empty.

      Returns:
      an OptionalResult in success state containing the success value from this Result or in error state containing the error value from this Result
    • toVoidResult

      public VoidResult<E> toVoidResult()
      Transforms this Result to a VoidResult. If in success state, the VoidResult will be in success state. If in error state, the VoidResult will be in error state containing the error value from this Result.
      Returns:
      a VoidResult either in success state or in error state containing the error value from this Result
    • handle

      public static <T> Result<T,Exception> handle(Callable<T> callable)
      Handle the given Callable. If the Callable executes successfully, the Result will be in success state containing the returned value. If the Callable throws an exception, the Result will be in error state containing the thrown exception.
      Type Parameters:
      T - type of the return value of the Callable
      Parameters:
      callable - the Callable to handle
      Returns:
      a Result either in success state containing the value from the Callable, or in error state containing the exception thrown by the Callable
      Throws:
      NullPointerException - if the given callable is null or returns null
    • handle

      public static <T, E> Result<T,E> handle(Callable<T> callable, Function<Exception,E> exceptionMapper)
      Handle the given Callable. If the Callable executes successfully, the Result will be in success state containing the returned value. If the Callable throws an exception, the Result will be in error state containing the result after mapping the exception with the given exception mapper function.
      Type Parameters:
      T - type of the return value of the Callable
      E - type of the error value after mapping a thrown exception
      Parameters:
      callable - the Callable to handle
      Returns:
      a Result either in success state containing the value from the Callable, or in error state containing the result after mapping the exception thrown by the Callable
      Throws:
      NullPointerException - if the given callable is null or returns null, or if the given exception mapper function is null or returns null
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object