Class ResultValue<T>

  • Type Parameters:
    T - The type of the result value
    All Implemented Interfaces:
    Supplier<T>

    public class ResultValue<T>
    extends Object
    implements Supplier<T>
    Represents a value along with a list of stamped log messages, supporting various log levels.

    This class is designed to encapsulate a result value of type T and a list of StampedMessage objects that record messages at different log levels (INFO, DEBUG, ERROR, TRACE, WARN). It provides methods to add messages at each log level, check if a log level is enabled, and retrieve the value or messages.

    The log level can be set to control which messages are recorded. Messages are only added if the current log level is at least as high as the level of the message being added.

    • Constructor Summary

      Constructors 
      Constructor Description
      ResultValue()
      Default constructor.
      ResultValue​(T value, List<StampedMessage> messages, boolean valueSet)
      Jackson constructor for deserialization.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void debug​(String message, Object... args)
      Adds a DEBUG level message with formatting, if DEBUG is enabled.
      void debug​(Supplier<String> value)
      Adds a DEBUG level message using a supplier, if DEBUG is enabled.
      void error​(String message, Object... args)
      Adds an ERROR level message with formatting, if ERROR is enabled.
      void error​(Supplier<String> value)
      Adds an ERROR level message using a supplier, if ERROR is enabled.
      T get()
      Returns the result value.
      List<StampedMessage> getMessages()
      Returns the list of stamped messages.
      T getValue()
      Returns the result value.
      boolean hasMessages()
      Returns true if there are any messages.
      void info​(String message, Object... args)
      Adds an INFO level message with formatting, if INFO is enabled.
      void info​(Supplier<String> value)
      Adds an INFO level message using a supplier, if INFO is enabled.
      boolean isDebugEnabled()
      Returns true if DEBUG level messages are enabled.
      boolean isErrorEnabled()
      Returns true if ERROR level messages are enabled.
      boolean isInfoEnabled()
      Returns true if INFO level messages are enabled.
      boolean isTraceEnabled()
      Returns true if TRACE level messages are enabled.
      boolean isValueSet()
      Returns true if the result value has been set.
      boolean isWarnEnabled()
      Returns true if WARN level messages are enabled.
      T orElse​(T other)
      Returns the result value, or the provided alternative if the value is not set.
      T orElseThrow​(sailpoint.tools.GeneralException e)
      Returns the result value, or throws the provided exception if the value is not set.
      void setLogLevel​(LogLevel logLevel)
      Sets the log level for this result.
      void setLogLevel​(String logLevelConfig)
      Sets the log level based on a configuration key.
      void setValue​(T value)
      Sets the result value.
      void trace​(String message, Object... args)
      Adds a TRACE level message with formatting, if TRACE is enabled.
      void trace​(Supplier<String> value)
      Adds a TRACE level message using a supplier, if TRACE is enabled.
      void warn​(String message, Object... args)
      Adds a WARN level message with formatting, if WARN is enabled.
      void warn​(Supplier<String> value)
      Adds a WARN level message using a supplier, if WARN is enabled.
    • Constructor Detail

      • ResultValue

        public ResultValue()
        Default constructor.

        Initializes with an empty message list and INFO log level.

      • ResultValue

        public ResultValue​(T value,
                           List<StampedMessage> messages,
                           boolean valueSet)
        Jackson constructor for deserialization.
        Parameters:
        value - The result value
        messages - The list of stamped messages
        valueSet - Flag indicating if the value has been set
    • Method Detail

      • debug

        public void debug​(Supplier<String> value)
        Adds a DEBUG level message using a supplier, if DEBUG is enabled.
        Parameters:
        value - The message supplier
      • debug

        public void debug​(String message,
                          Object... args)
        Adds a DEBUG level message with formatting, if DEBUG is enabled.
        Parameters:
        message - The message format string
        args - The arguments for formatting
      • error

        public void error​(Supplier<String> value)
        Adds an ERROR level message using a supplier, if ERROR is enabled.
        Parameters:
        value - The message supplier
      • error

        public void error​(String message,
                          Object... args)
        Adds an ERROR level message with formatting, if ERROR is enabled.
        Parameters:
        message - The message format string
        args - The arguments for formatting
      • get

        public T get()
        Returns the result value.
        Specified by:
        get in interface Supplier<T>
        Returns:
        The value
      • getValue

        public T getValue()
        Returns the result value.
        Returns:
        The value
      • hasMessages

        public boolean hasMessages()
        Returns true if there are any messages.
        Returns:
        True if messages exist, false otherwise
      • info

        public void info​(Supplier<String> value)
        Adds an INFO level message using a supplier, if INFO is enabled.
        Parameters:
        value - The message supplier
      • info

        public void info​(String message,
                         Object... args)
        Adds an INFO level message with formatting, if INFO is enabled.
        Parameters:
        message - The message format string
        args - The arguments for formatting
      • isDebugEnabled

        public boolean isDebugEnabled()
        Returns true if DEBUG level messages are enabled.
        Returns:
        True if DEBUG is enabled
      • isErrorEnabled

        public boolean isErrorEnabled()
        Returns true if ERROR level messages are enabled.
        Returns:
        True if ERROR is enabled
      • isInfoEnabled

        public boolean isInfoEnabled()
        Returns true if INFO level messages are enabled.
        Returns:
        True if INFO is enabled
      • isTraceEnabled

        public boolean isTraceEnabled()
        Returns true if TRACE level messages are enabled.
        Returns:
        True if TRACE is enabled
      • isValueSet

        public boolean isValueSet()
        Returns true if the result value has been set.

        This allows us to distinguish between a value that is unset and a value that is explicitly set to null.

        Returns:
        True if the value is set, false otherwise
      • isWarnEnabled

        public boolean isWarnEnabled()
        Returns true if WARN level messages are enabled.
        Returns:
        True if WARN is enabled
      • orElse

        public T orElse​(T other)
        Returns the result value, or the provided alternative if the value is not set.
        Parameters:
        other - The alternative value to return if the result value is not set
        Returns:
        The result value or the alternative
      • orElseThrow

        public T orElseThrow​(sailpoint.tools.GeneralException e)
                      throws sailpoint.tools.GeneralException
        Returns the result value, or throws the provided exception if the value is not set.
        Parameters:
        e - The exception to throw if the result value is not set
        Returns:
        The result value
        Throws:
        sailpoint.tools.GeneralException - if the result value is not set
      • setLogLevel

        public final void setLogLevel​(LogLevel logLevel)
        Sets the log level for this result.
        Parameters:
        logLevel - The log level to set
      • setLogLevel

        public final void setLogLevel​(String logLevelConfig)
        Sets the log level based on a configuration key.
        Parameters:
        logLevelConfig - The configuration key for the log level
      • setValue

        public final void setValue​(T value)
        Sets the result value.
        Parameters:
        value - The value to set
      • trace

        public void trace​(Supplier<String> value)
        Adds a TRACE level message using a supplier, if TRACE is enabled.
        Parameters:
        value - The message supplier
      • trace

        public void trace​(String message,
                          Object... args)
        Adds a TRACE level message with formatting, if TRACE is enabled.
        Parameters:
        message - The message format string
        args - The arguments for formatting
      • warn

        public void warn​(Supplier<String> value)
        Adds a WARN level message using a supplier, if WARN is enabled.
        Parameters:
        value - The message supplier
      • warn

        public void warn​(String message,
                         Object... args)
        Adds a WARN level message with formatting, if WARN is enabled.
        Parameters:
        message - The message format string
        args - The arguments for formatting