Class ExtHandler

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ExtHandler()
      Construct a new instance.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private static java.lang.SecurityException accessDenied()  
      void addHandler​(java.util.logging.Handler handler)
      Add a sub-handler to this handler.
      protected static void checkAccess()
      Deprecated.
      protected static void checkAccess​(ExtHandler handler)
      Check access.
      java.util.logging.Handler[] clearHandlers()
      A convenience method to atomically get and clear all sub-handlers.
      void close()
      Close all child handlers.
      void disableAccess()
      Disable previous access to the object for modifications on the current thread.
      protected void doPublish​(ExtLogRecord record)
      Do the actual work of publication; the record will have been filtered already.
      void enableAccess​(java.lang.Object protectKey)
      Enable access to the object for modifications on the current thread.
      void flush()
      Flush all child handlers.
      java.util.logging.Handler[] getHandlers()
      Get a copy of the sub-handlers array.
      boolean isAutoFlush()
      Determine if this handler will auto-flush.
      boolean isEnabled()
      Determine if the handler is enabled.
      void protect​(java.lang.Object protectionKey)
      Protect this object from modifications.
      void publish​(java.util.logging.LogRecord record)
      void publish​(ExtLogRecord record)
      Publish an ExtLogRecord.
      void removeHandler​(java.util.logging.Handler handler)
      Remove a sub-handler from this handler.
      void setAutoFlush​(boolean autoFlush)
      Change the autoflush setting for this handler.
      void setEnabled​(boolean enabled)
      Enables or disables the handler based on the value passed in.
      void setEncoding​(java.lang.String encoding)  
      void setErrorManager​(java.util.logging.ErrorManager em)  
      void setFilter​(java.util.logging.Filter newFilter)  
      void setFormatter​(java.util.logging.Formatter newFormatter)  
      java.util.logging.Handler[] setHandlers​(java.util.logging.Handler[] newHandlers)
      A convenience method to atomically get and replace the sub-handler array.
      void setLevel​(java.util.logging.Level newLevel)  
      void unprotect​(java.lang.Object protectionKey)
      Allows the object to be modified if the protectionKey matches the key used to protect the object.
      • Methods inherited from class java.util.logging.Handler

        getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError
      • Methods inherited from class java.lang.Object

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

      • CONTROL_PERMISSION

        private static final java.security.Permission CONTROL_PERMISSION
      • autoFlush

        private volatile boolean autoFlush
      • enabled

        private volatile boolean enabled
      • DEFAULT_ERROR_MANAGER

        private static final java.util.logging.ErrorManager DEFAULT_ERROR_MANAGER
      • protectKey

        private volatile java.lang.Object protectKey
      • granted

        private final java.lang.ThreadLocal<java.lang.Boolean> granted
      • protectKeyUpdater

        private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<ExtHandler,​java.lang.Object> protectKeyUpdater
      • handlers

        protected volatile java.util.logging.Handler[] handlers
        The sub-handlers for this handler. May only be updated using the handlersUpdater atomic updater. The array instance should not be modified (treat as immutable).
      • handlersUpdater

        protected static final AtomicArray<ExtHandler,​java.util.logging.Handler> handlersUpdater
        The atomic updater for the handlers field.
    • Constructor Detail

      • ExtHandler

        protected ExtHandler()
        Construct a new instance.
    • Method Detail

      • publish

        public void publish​(java.util.logging.LogRecord record)
        Specified by:
        publish in class java.util.logging.Handler
      • publish

        public void publish​(ExtLogRecord record)
        Publish an ExtLogRecord.

        The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here.

        The ExtHandler is responsible for formatting the message, when and if necessary. The formatting should include localization.

        Parameters:
        record - the log record to publish
      • doPublish

        protected void doPublish​(ExtLogRecord record)
        Do the actual work of publication; the record will have been filtered already. The default implementation does nothing except to flush if the autoFlush property is set to true; if this behavior is to be preserved in a subclass then this method should be called after the record is physically written.
        Parameters:
        record - the log record to publish
      • addHandler

        public void addHandler​(java.util.logging.Handler handler)
                        throws java.lang.SecurityException
        Add a sub-handler to this handler. Some handler types do not utilize sub-handlers.
        Parameters:
        handler - the handler to add
        Throws:
        java.lang.SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control) or the handler is protected.
      • removeHandler

        public void removeHandler​(java.util.logging.Handler handler)
                           throws java.lang.SecurityException
        Remove a sub-handler from this handler. Some handler types do not utilize sub-handlers.
        Parameters:
        handler - the handler to remove
        Throws:
        java.lang.SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control) or the handler is protected.
      • getHandlers

        public java.util.logging.Handler[] getHandlers()
        Get a copy of the sub-handlers array. Since the returned value is a copy, it may be freely modified.
        Returns:
        a copy of the sub-handlers array
      • clearHandlers

        public java.util.logging.Handler[] clearHandlers()
                                                  throws java.lang.SecurityException
        A convenience method to atomically get and clear all sub-handlers.
        Returns:
        the old sub-handler array
        Throws:
        java.lang.SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control) or the handler is protected.
      • setHandlers

        public java.util.logging.Handler[] setHandlers​(java.util.logging.Handler[] newHandlers)
                                                throws java.lang.SecurityException
        A convenience method to atomically get and replace the sub-handler array.
        Parameters:
        newHandlers - the new sub-handlers
        Returns:
        the old sub-handler array
        Throws:
        java.lang.SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control) or the handler is protected.
      • isAutoFlush

        public boolean isAutoFlush()
        Determine if this handler will auto-flush.
        Returns:
        true if auto-flush is enabled
      • setAutoFlush

        public void setAutoFlush​(boolean autoFlush)
                          throws java.lang.SecurityException
        Change the autoflush setting for this handler.
        Parameters:
        autoFlush - true to automatically flush after each write; false otherwise
        Throws:
        java.lang.SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control) or the handler is protected.
      • setEnabled

        public final void setEnabled​(boolean enabled)
                              throws java.lang.SecurityException
        Enables or disables the handler based on the value passed in.
        Parameters:
        enabled - true to enable the handler or false to disable the handler.
        Throws:
        java.lang.SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control) or the handler is protected.
      • isEnabled

        public final boolean isEnabled()
        Determine if the handler is enabled.
        Returns:
        true if the handler is enabled, otherwise false.
      • protect

        public final void protect​(java.lang.Object protectionKey)
                           throws java.lang.SecurityException
        Description copied from interface: Protectable
        Protect this object from modifications.
        Specified by:
        protect in interface Protectable
        Parameters:
        protectionKey - the key used to protect the object.
        Throws:
        java.lang.SecurityException - if the object is already protected.
      • unprotect

        public final void unprotect​(java.lang.Object protectionKey)
                             throws java.lang.SecurityException
        Description copied from interface: Protectable
        Allows the object to be modified if the protectionKey matches the key used to protect the object.
        Specified by:
        unprotect in interface Protectable
        Parameters:
        protectionKey - the key used to protect the object.
        Throws:
        java.lang.SecurityException - if the object is protected and the key doesn't match.
      • enableAccess

        public final void enableAccess​(java.lang.Object protectKey)
        Description copied from interface: Protectable
        Enable access to the object for modifications on the current thread.
        Specified by:
        enableAccess in interface Protectable
        Parameters:
        protectKey - the key used to protect modifications.
      • disableAccess

        public final void disableAccess()
        Description copied from interface: Protectable
        Disable previous access to the object for modifications on the current thread.
        Specified by:
        disableAccess in interface Protectable
      • accessDenied

        private static java.lang.SecurityException accessDenied()
      • checkAccess

        @Deprecated
        protected static void checkAccess()
                                   throws java.lang.SecurityException
        Deprecated.
        Check access.
        Throws:
        java.lang.SecurityException - if a security manager is installed and the caller does not have the "control" LoggingPermission
      • checkAccess

        protected static void checkAccess​(ExtHandler handler)
                                   throws java.lang.SecurityException
        Check access.
        Parameters:
        handler - the handler to check access on.
        Throws:
        java.lang.SecurityException - if a security manager exists and if the caller does not have LoggingPermission(control) or the handler is protected.
      • flush

        public void flush()
        Flush all child handlers.
        Specified by:
        flush in interface java.io.Flushable
        Specified by:
        flush in class java.util.logging.Handler
      • close

        public void close()
                   throws java.lang.SecurityException
        Close all child handlers.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class java.util.logging.Handler
        Throws:
        java.lang.SecurityException
      • setFormatter

        public void setFormatter​(java.util.logging.Formatter newFormatter)
                          throws java.lang.SecurityException
        Overrides:
        setFormatter in class java.util.logging.Handler
        Throws:
        java.lang.SecurityException
      • setFilter

        public void setFilter​(java.util.logging.Filter newFilter)
                       throws java.lang.SecurityException
        Overrides:
        setFilter in class java.util.logging.Handler
        Throws:
        java.lang.SecurityException
      • setEncoding

        public void setEncoding​(java.lang.String encoding)
                         throws java.lang.SecurityException,
                                java.io.UnsupportedEncodingException
        Overrides:
        setEncoding in class java.util.logging.Handler
        Throws:
        java.lang.SecurityException
        java.io.UnsupportedEncodingException
      • setErrorManager

        public void setErrorManager​(java.util.logging.ErrorManager em)
        Overrides:
        setErrorManager in class java.util.logging.Handler
      • setLevel

        public void setLevel​(java.util.logging.Level newLevel)
                      throws java.lang.SecurityException
        Overrides:
        setLevel in class java.util.logging.Handler
        Throws:
        java.lang.SecurityException