Class WarningListeners<S>

  • Type Parameters:
    S - the type of the source of warnings.
    All Implemented Interfaces:
    Localized
    Direct Known Subclasses:
    Store­Listeners

    @Deprecated
    public class WarningListeners<S>
    extends Object
    implements Localized
    Deprecated.
    Replaced by Store­Listeners.
    Holds a list of Warning­Listener instances and provides convenience methods for emitting warnings. This is a helper class for Data­Store implementations or for other services susceptible to emit warnings. Observers can can add listeners for being notified about warnings, and processes can invoke one of the warning(…) methods for emitting warnings. All warnings are given to the listeners as Log­Record instances (this allows localizable messages and additional information like timestamp and stack trace). This Warning­Listeners class provides convenience methods like warning(String, Exception), which builds Log­Record from an exception or from a string, but all those warning(…) methods ultimately delegate to warning(Log­Record), thus providing a single point that subclasses can override. When a warning is emitted, the default behavior is:
    • If at least one Warning­Listener is registered, then all listeners are notified and the warning is not logged.
    • Otherwise if the value returned by Log­Record​.get­Logger­Name() is non-null, then the warning will be logged to that named logger.
    • Otherwise the warning is logged to the logger returned by get­Logger().
    Thread safety
    The same Warning­Listeners instance can be safely used by many threads without synchronization on the part of the caller. Subclasses should make sure that any overridden methods remain safe to call from multiple threads.
    Since:
    0.3
    See Also:
    Warning­Listener, Data­Store​.listeners

    Defined in the sis-utility module

    • Constructor Detail

      • WarningListeners

        public WarningListeners​(S source)
        Deprecated.
        Creates a new instance with initially no listener. Warnings will be logger to the destination given by get­Logger(), unless at least one listener is registered.
        Parameters:
        source - the declared source of warnings. This is not necessarily the real source, but this is the source that the implementer wants to declare as public API.
      • WarningListeners

        public WarningListeners​(S source,
                                WarningListeners<? super S> other)
        Deprecated.
        Creates a new instance initialized with the same listeners than the given instance. This constructor is useful when a Data­Store or other data producer needs to be duplicated for concurrency reasons.
        Parameters:
        source - the declared source of warnings. This is not necessarily the real source, but this is the source that the implementer wants to declare as public API.
        other - the existing instance from which to copy the listeners, or null if none.
        Since:
        0.8
    • Method Detail

      • getSource

        public S getSource()
        Deprecated.
        Returns the source declared source of warnings. This value is specified at construction time.
        Returns:
        the declared source of warnings.
        Since:
        0.8
      • getLocale

        public Locale getLocale()
        Deprecated.
        The locale to use for formatting warning messages, or null for the default locale. If the source object given to the constructor implements the Localized interface, then this method delegates to its get­Locale() method. Otherwise this method returns null.
        Specified by:
        get­Locale in interface Localized
        Returns:
        the locale, or null if not explicitly defined.
      • getLogger

        public Logger getLogger()
        Deprecated.
        Returns the logger where to send the warnings when no other destination is specified. This logger is used when: The default implementation infers a logger name from the package name of the source object. Subclasses should override this method if they can provide a more determinist logger instance, typically from a static final constant.
        Returns:
        the logger where to send the warnings when there is no other destination.
      • warning

        public void warning​(String message,
                            Exception exception)
        Deprecated.
        Reports a warning represented by the given message and exception. At least one of message and exception shall be non-null. If both are non-null, then the exception message will be concatenated after the given message. If the exception is non-null, its stack trace will be omitted at logging time for avoiding to pollute console output (keeping in mind that this method should be invoked only for non-fatal warnings). See below for more explanation.

        This method is a shortcut for warning(Level​.WARNING, message, exception).

        Parameters:
        message - the message to log, or null if none.
        exception - the exception to log, or null if none.
      • warning

        public void warning​(Level level,
                            String message,
                            Exception exception)
        Deprecated.
        Reports a warning at the given level represented by the given message and exception. At least one of message and exception shall be non-null. If both are non-null, then the exception message will be concatenated after the given message.
        Stack trace omission
        If there is no registered listener, then the warning(Log­Record) method will send the record to the logger, but without the stack trace. This is done that way because stack traces consume lot of space in the logging files, while being considered implementation details in the context of Warning­Listeners (on the assumption that the logging message provides sufficient information). If the stack trace is desired, then users can either:
        • invoke warning(Log­Record) directly, or
        • override warning(Log­Record) and invoke Log­Record​.set­Thrown(Throwable) explicitly, or
        • register a listener which will log the record itself.
        Parameters:
        level - the warning level.
        message - the message to log, or null if none.
        exception - the exception to log, or null if none.
      • addWarningListener

        public void addWarningListener​(WarningListener<? super S> listener)
                                throws IllegalArgumentException
        Deprecated.
        Adds a listener to be notified when a warning occurred. When a warning occurs, there is a choice:
        • If this object has no warning listener, then the warning is logged at Level​.WARNING.
        • If this object has at least one warning listener, then all listeners are notified and the warning is not logged by this object.
        Parameters:
        listener - the listener to add.
        Throws:
        Illegal­Argument­Exception - if the given listener is already registered.
      • getListeners

        public List<WarningListener<? super S>> getListeners()
        Deprecated.
        Returns all registered warning listeners, or an empty list if none. This method returns an unmodifiable snapshot of the listener list at the time this method is invoked.
        Returns:
        immutable list of all registered warning listeners.
        Since:
        0.8
      • hasListeners

        public boolean hasListeners()
        Deprecated.
        Returns true if this object contains at least one listener.
        Returns:
        true if this object contains at least one listener, false otherwise.
        Since:
        0.4