Class MonitoredRetVoidOk

  • All Implemented Interfaces:
    ProblemContainer, RetVoid


    public class MonitoredRetVoidOk
    extends java.lang.Object
    implements RetVoid
    Monitored version of RetVal with an ok state (no problems).
    • Method Detail

      • isProblem

        public boolean isProblem​()
        Description copied from interface: ProblemContainer
        Returns whether this object contains 1 or more problems.
        Specified by:
        isProblem in interface ProblemContainer
        Returns:
        true if there is a problem, false if there is no problem.
      • isOk

        public boolean isOk​()
        Description copied from interface: ProblemContainer
        Returns whether this object contains zero problems.
        Specified by:
        isOk in interface ProblemContainer
        Returns:
        true if there are no problems, false if there is a problem.
      • anyProblems

        @Nonnull
        public java.util.Collection<Problem> anyProblems​()
        Description copied from interface: ProblemContainer
        Return all the problems in this object, even if the container is "ok".

        Generally, this combines the problems in this instance with a larger collection, which can itself be used to check if any of the values had problems.

        The returned collection is read-only, and contains no null values.

        Specified by:
        anyProblems in interface ProblemContainer
        Returns:
        the problems contained in this container, even if there are none.
      • validProblems

        @Nonnull
        public java.util.Collection<Problem> validProblems​()
        Description copied from interface: ProblemContainer
        Returns all contained problems in this object, but only if this object contains 1 or more problems. If it contains 0, then this throws an IllegalStateException.

        The returned collection is read-only, and contains no null values.

        Specified by:
        validProblems in interface ProblemContainer
        Returns:
        the problems in this container, and the collection will contain at least 1 item.
      • debugProblems

        @Nonnull
        public java.lang.String debugProblems​(@Nonnull
                                              java.lang.String joinedWith)
        Description copied from interface: ProblemContainer
        Return the problems as a single string, which combines the Object.toString() output of each problem with the given joining string parameter. If this object contains no problems, then an empty string is returned instead.
        Specified by:
        debugProblems in interface ProblemContainer
        Parameters:
        joinedWith - the text to join multiple problem strings together.
        Returns:
        the combined text of the problems, or an empty string if there are no problems.
      • joinProblemsWith

        public void joinProblemsWith​(@Nonnull
                                     java.util.Collection<Problem> problemList)
        Description copied from interface: ProblemContainer
        Add all problems in this container into the argument. This has a very specific usage to indicate that this container, even if it has no problems, is part of a bigger issue. Therefore, this is fine to call even if there are no problems in this container.
        Specified by:
        joinProblemsWith in interface ProblemContainer
        Parameters:
        problemList - a modifiable collection of zero or more problems.
      • then

        @Nonnull
        public <R> RetVal<R> then​(@Nonnull
                                  NonnullSupplier<RetVal<R>> supplier)
        Description copied from interface: RetVoid
        Return a non-null RetVal value using a supplier that itself returns a RetVal. The supplier is called only if this object has no problem.
        Specified by:
        then in interface RetVoid
        Type Parameters:
        R - type of the returned value.
        Parameters:
        supplier - functional object that returns a RetVal.
        Returns:
        the problem of the current value, if it is a problem, or the object returned by the supplier.
      • map

        @Nonnull
        public <R> RetVal<R> map​(@Nonnull
                                 NonnullSupplier<R> supplier)
        Description copied from interface: RetVoid
        Return a non-null RetVal value using a supplier that returns a value. The supplier is called only if this object has no problem.

        Formally, this doesn't "map" one value to another. However, for symmetry with the other Ret classes, it is here called map.

        Specified by:
        map in interface RetVoid
        Type Parameters:
        R - return value type
        Parameters:
        supplier - functional object that returns a non-null value.
        Returns:
        a RetVal, either a problem if this object has a problem, or the value returned by the supplier.
      • thenNullable

        @Nonnull
        public <R> RetNullable<R> thenNullable​(@Nonnull
                                               NonnullSupplier<RetNullable<R>> supplier)
        Description copied from interface: RetVoid
        If there is no problem, run the supplier and return its value. Otherwise, return this object's problems.
        Specified by:
        thenNullable in interface RetVoid
        Type Parameters:
        R - return value type
        Parameters:
        supplier - supplier of the return value; run only if this object has no problems.
        Returns:
        the problems in this object, or the supplier's return value.
      • mapNullable

        @Nonnull
        public <R> RetNullable<R> mapNullable​(@Nonnull
                                              java.util.function.Supplier<R> supplier)
        Description copied from interface: RetVoid
        Return a non-null RetNullable value using a supplier that returns a value. The supplier is called only if this object has no problem.

        Formally, this doesn't "map" one value to another. However, for symmetry with the other Ret classes, it is here called map.

        Specified by:
        mapNullable in interface RetVoid
        Type Parameters:
        R - return value type
        Parameters:
        supplier - functional object that returns a non-null value.
        Returns:
        a RetVal, either a problem if this object has an problem, or the value returned by the supplier.
      • thenVoid

        @Nonnull
        public RetVoid thenVoid​(@Nonnull
                                NonnullSupplier<RetVoid> supplier)
        Description copied from interface: RetVoid
        Return the supplier if there is no problem.
        Specified by:
        thenVoid in interface RetVoid
        Parameters:
        supplier - function to run
        Returns:
        this object if there are problems in this object, otherwise the supplier's return value.
      • thenRun

        @Nonnull
        public RetVoid thenRun​(@Nonnull
                               java.lang.Runnable runnable)
        Description copied from interface: RetVoid
        Run the runnable if there is no problem.
        Specified by:
        thenRun in interface RetVoid
        Parameters:
        runnable - function to run
        Returns:
        this object.
      • forwardProblems

        @Nonnull
        public <V> RetVal<V> forwardProblems​()
        Description copied from interface: RetVoid
        Forward this object to a typed RetVal instance. This will only work when the instance has problems.

        The most common use case is when a value construction requires multiple steps, and an early step requires early exit from the function. This allows a memory efficient type casting of the problems to the construction function's type.

        Specified by:
        forwardProblems in interface RetVoid
        Type Parameters:
        V - altered type.
        Returns:
        the type-altered version
      • forwardNullableProblems

        @Nonnull
        public <V> RetNullable<V> forwardNullableProblems​()
        Description copied from interface: RetVoid
        Forward this instance as a nullable with a value type, but only if it has problems. If it does not have problems, then a runtime exception is thrown.

        The most common use case is when a value construction requires multiple steps, and an early step requires early exit from the function. This allows a memory efficient type casting of the problems to the construction function's type.

        Specified by:
        forwardNullableProblems in interface RetVoid
        Type Parameters:
        V - destination type
        Returns:
        the value, only if this instance has problems.
      • forwardVoidProblems

        @Nonnull
        public RetVoid forwardVoidProblems​()
        Description copied from interface: RetVoid
        Forward this instance as a value-less object, but only if it has problems. If it does not have problems, then a runtime exception is thrown.

        The most common use case is when a value construction requires multiple steps, and an early step requires early exit from the function. This allows a memory efficient type casting of the problems to the construction function's type.

        Specified by:
        forwardVoidProblems in interface RetVoid
        Returns:
        the value, only if this instance has problems.
      • toString

        public java.lang.String toString​()
        Overrides:
        toString in class java.lang.Object