Class WarningVal<T>

  • Type Parameters:
    T - type of the underlying value.
    All Implemented Interfaces:
    ProblemContainer, ValuedProblemContainer<T>


    @Immutable
    public class WarningVal<T>
    extends java.lang.Object
    implements ValuedProblemContainer<T>
    A container for a non-null value and associated problems. Reflects an object that, while valid, may have messages that the user should be made aware of.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Collection<Problem> anyProblems​()
      Return all the problems in this object, even if the container is "ok".
      java.lang.String debugProblems​(java.lang.String joinedWith)
      Return the problems as a single string, which combines the Object.toString() output of each problem with the given joining string parameter.
      static <T> WarningVal<T> from​(T value)
      Create the warning from a value with no problems.
      static <T> WarningVal<T> from​(T value, ProblemContainer problems)
      Create a warning value with a collection (possibly empty) of problems.
      T getValue​()
      Get the underlying value object.
      boolean hasProblems​()
      Returns whether this object contains 1 or more problems.
      boolean isOk​()
      Returns whether this object contains zero problems.
      boolean isProblem​()
      Returns whether this object contains 1 or more problems.
      void joinProblemsWith​(java.util.Collection<Problem> problemList)
      Add all problems in this container into the argument.
      java.util.Collection<Problem> validProblems​()
      Returns all contained problems in this object, but only if this object contains 1 or more problems.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • from

        @Nonnull
        public static <T> WarningVal<T> from​(@Nonnull
                                             T value)
        Create the warning from a value with no problems.
        Type Parameters:
        T - value type
        Parameters:
        value - value to store in the warning instance.
        Returns:
        the warning
      • from

        @Nonnull
        public static <T> WarningVal<T> from​(@Nonnull
                                             T value,
                                             @Nonnull
                                             ProblemContainer problems)
        Create a warning value with a collection (possibly empty) of problems.
        Type Parameters:
        T - value type
        Parameters:
        value - value to store in the warning instance.
        problems - collection of problems associated with the warning object.
        Returns:
        the warning
      • getValue

        @Nonnull
        public T getValue​()
        Get the underlying value object.
        Specified by:
        getValue in interface ValuedProblemContainer<T>
        Returns:
        the value
      • 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.