Class LogManagerProperties

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.Object,​java.lang.Object>

    final class LogManagerProperties
    extends java.util.Properties
    An adapter class to allow the Mail API to access the LogManager properties. The LogManager properties are treated as the root of all properties. First, the parent properties are searched. If no value is found, then, the LogManager is searched with prefix value. If not found, then, just the key itself is searched in the LogManager. If a value is found in the LogManager it is then copied to this properties object with no key prefix. If no value is found in the LogManager or the parent properties, then this properties object is searched only by passing the key value.

    This class also emulates the LogManager functions for creating new objects from string class names. This is to support initial setup of objects such as log filters, formatters, error managers, etc.

    This class should never be exposed outside of this package. Keep this class package private (default access).

    Since:
    JavaMail 1.4.3
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.Object LOG_MANAGER
      Caches the LogManager or Properties so we only read the configuration once.
      private static java.lang.reflect.Method LR_GET_INSTANT
      Holds the method used to get the LogRecord instant if running on JDK 9 or later.
      private java.lang.String prefix
      The namespace prefix to search LogManager and defaults.
      private static java.lang.String[] REFLECT_NAMES
      Caches the read only reflection class names string array.
      private static long serialVersionUID
      Generated serial id.
      private static java.lang.reflect.Method ZDT_OF_INSTANT
      Holds the method used to convert and instant to a zoned date time if running on JDK 9 later.
      private static java.lang.reflect.Method ZI_SYSTEM_DEFAULT
      Holds the method used to get the default time zone if running on JDK 9 or later.
      • Fields inherited from class java.util.Properties

        defaults
    • Constructor Summary

      Constructors 
      Constructor Description
      LogManagerProperties​(java.util.Properties parent, java.lang.String prefix)
      Creates a log manager properties object.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static void checkLoggingAccess()
      Check that the current context is trusted to modify the logging configuration when the LogManager is not present.
      (package private) static void checkLogManagerAccess()
      Check that the current context is trusted to modify the logging configuration.
      java.lang.Object clone()
      Returns a properties object that contains a snapshot of the current state.
      boolean containsKey​(java.lang.Object key)
      Required to work with PropUtil.
      boolean equals​(java.lang.Object o)
      It is assumed that this method will never be called.
      private java.util.Properties exportCopy​(java.util.Properties parent)
      Creates a public snapshot of this properties object using the given parent properties.
      private static java.lang.Class<?> findClass​(java.lang.String name)
      This code is modified from the LogManager, which explictly states searching the system class loader first, then the context class loader.
      (package private) static java.lang.String fromLogManager​(java.lang.String name)
      Gets LogManger property for the running JVM.
      java.lang.Object get​(java.lang.Object key)
      Required to work with PropUtil.
      private static java.lang.ClassLoader[] getClassLoaders()
      Gets the class loaders using elevated privileges.
      (package private) static java.lang.String getLocalHost​(java.lang.Object s)
      Gets the local host name from the given service.
      java.lang.String getProperty​(java.lang.String key)
      Searches defaults, then searches the log manager if available or the system properties by the prefix property, and then by the key itself.
      java.lang.String getProperty​(java.lang.String key, java.lang.String def)
      Calls getProperty directly.
      (package private) static java.lang.Comparable<?> getZonedDateTime​(java.util.logging.LogRecord record)
      Gets the ZonedDateTime from the given log record.
      int hashCode()
      It is assumed that this method will never be called.
      (package private) static boolean hasLogManager()
      Determines if access to the java.util.logging.LogManager class is restricted by the class loader.
      (package private) static boolean isReflectionClass​(java.lang.String name)
      Determines if the given class name is a reflection class name responsible for invoking methods and or constructors.
      (package private) static boolean isStaticUtilityClass​(java.lang.String name)
      Determines if the given class name identifies a utility class.
      private static java.lang.Object loadLogManager()
      Get the LogManager or loads a Properties object to use as the LogManager.
      (package private) static java.util.Comparator<? super java.util.logging.LogRecord> newComparator​(java.lang.String name)
      Creates a new log record comparator from the given class name.
      (package private) static java.util.logging.ErrorManager newErrorManager​(java.lang.String name)
      Creates a new error manager from the given class name.
      (package private) static java.util.logging.Filter newFilter​(java.lang.String name)
      Creates a new filter from the given class name.
      (package private) static java.util.logging.Formatter newFormatter​(java.lang.String name)
      Creates a new formatter from the given class name.
      (package private) static <T> T newObjectFrom​(java.lang.String name, java.lang.Class<T> type)
      Creates a new object from the given class name.
      private static java.lang.Exception paramOrError​(java.lang.reflect.InvocationTargetException ite)
      Returns the given exception or throws the escaping cause.
      (package private) static long parseDurationToMillis​(java.lang.CharSequence value)
      Used to parse an ISO-8601 duration format of PnDTnHnMn.nS.
      private java.lang.Object preWrite​(java.lang.Object key)
      Called before a write operation of a key.
      java.util.Enumeration<?> propertyNames()
      It is assumed that this method will never be called.
      java.lang.Object put​(java.lang.Object key, java.lang.Object value)
      Required to work with PropUtil.
      private static java.util.Properties readConfiguration()
      Create a properties object from the default logging configuration file.
      private static java.lang.String[] reflectionClassNames()
      Determines all of the reflection class names used to invoke methods.
      java.lang.Object remove​(java.lang.Object key)
      Required to work with PropUtil.
      (package private) static <T> java.util.Comparator<T> reverseOrder​(java.util.Comparator<T> c)
      Returns a comparator that imposes the reverse ordering of the specified Comparator.
      java.lang.Object setProperty​(java.lang.String key, java.lang.String value)
      Calls the put method directly.
      (package private) static java.lang.String toLanguageTag​(java.util.Locale locale)
      Converts a locale to a language tag.
      private static java.lang.Class<?> tryLoad​(java.lang.String name, java.lang.ClassLoader l)
      Loads a class using the given loader or the class loader of this class.
      private static java.lang.reflect.InvocationTargetException wrapOrThrow​(java.lang.ExceptionInInitializerError eiie)
      Throws the given error if the cause is an error otherwise the given error is wrapped.
      private java.lang.Object writeReplace()
      It is assumed that this method will never be called.
      • Methods inherited from class java.util.Properties

        clear, compute, computeIfAbsent, computeIfPresent, contains, containsValue, elements, entrySet, forEach, getOrDefault, isEmpty, keys, keySet, list, list, load, load, loadFromXML, merge, putAll, putIfAbsent, rehash, remove, replace, replace, replaceAll, save, size, store, store, storeToXML, storeToXML, storeToXML, stringPropertyNames, toString, values
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Generated serial id.
        See Also:
        Constant Field Values
      • LR_GET_INSTANT

        private static final java.lang.reflect.Method LR_GET_INSTANT
        Holds the method used to get the LogRecord instant if running on JDK 9 or later.
      • ZI_SYSTEM_DEFAULT

        private static final java.lang.reflect.Method ZI_SYSTEM_DEFAULT
        Holds the method used to get the default time zone if running on JDK 9 or later.
      • ZDT_OF_INSTANT

        private static final java.lang.reflect.Method ZDT_OF_INSTANT
        Holds the method used to convert and instant to a zoned date time if running on JDK 9 later.
      • REFLECT_NAMES

        private static volatile java.lang.String[] REFLECT_NAMES
        Caches the read only reflection class names string array. Declared volatile for safe publishing only. The VO_VOLATILE_REFERENCE_TO_ARRAY warning is a false positive.
      • LOG_MANAGER

        private static final java.lang.Object LOG_MANAGER
        Caches the LogManager or Properties so we only read the configuration once.
      • prefix

        private final java.lang.String prefix
        The namespace prefix to search LogManager and defaults.
    • Constructor Detail

      • LogManagerProperties

        LogManagerProperties​(java.util.Properties parent,
                             java.lang.String prefix)
        Creates a log manager properties object.
        Parameters:
        parent - the parent properties.
        prefix - the namespace prefix.
        Throws:
        java.lang.NullPointerException - if prefix or parent is null.
    • Method Detail

      • loadLogManager

        private static java.lang.Object loadLogManager()
        Get the LogManager or loads a Properties object to use as the LogManager.
        Returns:
        the LogManager or a loaded Properties object.
        Since:
        JavaMail 1.5.3
      • readConfiguration

        private static java.util.Properties readConfiguration()
        Create a properties object from the default logging configuration file. Since the LogManager is not available in restricted environments, only the default configuration is applicable.
        Returns:
        a properties object loaded with the default configuration.
        Since:
        JavaMail 1.5.3
      • fromLogManager

        static java.lang.String fromLogManager​(java.lang.String name)
        Gets LogManger property for the running JVM. If the LogManager doesn't exist then the default LogManger properties are used.
        Parameters:
        name - the property name.
        Returns:
        the LogManager.
        Throws:
        java.lang.NullPointerException - if the given name is null.
        Since:
        JavaMail 1.5.3
      • checkLogManagerAccess

        static void checkLogManagerAccess()
        Check that the current context is trusted to modify the logging configuration. This requires LoggingPermission("control").
        Throws:
        java.lang.SecurityException - if a security manager exists and the caller does not have LoggingPermission("control").
        Since:
        JavaMail 1.5.3
      • checkLoggingAccess

        private static void checkLoggingAccess()
        Check that the current context is trusted to modify the logging configuration when the LogManager is not present. This requires LoggingPermission("control").
        Throws:
        java.lang.SecurityException - if a security manager exists and the caller does not have LoggingPermission("control").
        Since:
        JavaMail 1.5.3
      • hasLogManager

        static boolean hasLogManager()
        Determines if access to the java.util.logging.LogManager class is restricted by the class loader.
        Returns:
        true if a LogManager is present.
        Since:
        JavaMail 1.5.3
      • getZonedDateTime

        static java.lang.Comparable<?> getZonedDateTime​(java.util.logging.LogRecord record)
        Gets the ZonedDateTime from the given log record.
        Parameters:
        record - used to generate the zoned date time.
        Returns:
        null if LogRecord doesn't support nanoseconds otherwise a new zoned date time is returned.
        Throws:
        java.lang.NullPointerException - if record is null.
        Since:
        JavaMail 1.5.6
      • getLocalHost

        static java.lang.String getLocalHost​(java.lang.Object s)
                                      throws java.lang.Exception
        Gets the local host name from the given service.
        Parameters:
        s - the service to examine.
        Returns:
        the local host name or null.
        Throws:
        java.lang.IllegalAccessException - if the method is inaccessible.
        java.lang.reflect.InvocationTargetException - if the method throws an exception.
        java.lang.LinkageError - if the linkage fails.
        java.lang.NullPointerException - if the given service is null.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - if there is a problem.
        java.lang.NoSuchMethodException - if the given service does not have a method to get the local host name as a string.
        java.lang.SecurityException - if unable to inspect properties of object.
        Since:
        JavaMail 1.5.3
      • parseDurationToMillis

        static long parseDurationToMillis​(java.lang.CharSequence value)
                                   throws java.lang.Exception
        Used to parse an ISO-8601 duration format of PnDTnHnMn.nS.
        Parameters:
        value - an ISO-8601 duration character sequence.
        Returns:
        the number of milliseconds parsed from the duration.
        Throws:
        java.lang.ClassNotFoundException - if the java.time classes are not present.
        java.lang.IllegalAccessException - if the method is inaccessible.
        java.lang.reflect.InvocationTargetException - if the method throws an exception.
        java.lang.LinkageError - if the linkage fails.
        java.lang.NullPointerException - if the given duration is null.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - if there is a problem.
        java.lang.NoSuchMethodException - if the correct time methods are missing.
        java.lang.SecurityException - if reflective access to the java.time classes are not allowed.
        Since:
        JavaMail 1.5.5
      • toLanguageTag

        static java.lang.String toLanguageTag​(java.util.Locale locale)
        Converts a locale to a language tag.
        Parameters:
        locale - the locale to convert.
        Returns:
        the language tag.
        Throws:
        java.lang.NullPointerException - if the given locale is null.
        Since:
        JavaMail 1.4.5
      • newFilter

        static java.util.logging.Filter newFilter​(java.lang.String name)
                                           throws java.lang.Exception
        Creates a new filter from the given class name.
        Parameters:
        name - the fully qualified class name.
        Returns:
        a new filter.
        Throws:
        java.lang.ClassCastException - if class name does not match the type.
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.IllegalAccessException - if the constructor is inaccessible.
        java.lang.InstantiationException - if the given class name is abstract.
        java.lang.reflect.InvocationTargetException - if the constructor throws an exception.
        java.lang.LinkageError - if the linkage fails.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - to match the error method of the ErrorManager.
        java.lang.NoSuchMethodException - if the class name does not have a no argument constructor.
        Since:
        JavaMail 1.4.5
      • newFormatter

        static java.util.logging.Formatter newFormatter​(java.lang.String name)
                                                 throws java.lang.Exception
        Creates a new formatter from the given class name.
        Parameters:
        name - the fully qualified class name.
        Returns:
        a new formatter.
        Throws:
        java.lang.ClassCastException - if class name does not match the type.
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.IllegalAccessException - if the constructor is inaccessible.
        java.lang.InstantiationException - if the given class name is abstract.
        java.lang.reflect.InvocationTargetException - if the constructor throws an exception.
        java.lang.LinkageError - if the linkage fails.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - to match the error method of the ErrorManager.
        java.lang.NoSuchMethodException - if the class name does not have a no argument constructor.
        Since:
        JavaMail 1.4.5
      • newComparator

        static java.util.Comparator<? super java.util.logging.LogRecord> newComparator​(java.lang.String name)
                                                                                throws java.lang.Exception
        Creates a new log record comparator from the given class name.
        Parameters:
        name - the fully qualified class name.
        Returns:
        a new comparator.
        Throws:
        java.lang.ClassCastException - if class name does not match the type.
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.IllegalAccessException - if the constructor is inaccessible.
        java.lang.InstantiationException - if the given class name is abstract.
        java.lang.reflect.InvocationTargetException - if the constructor throws an exception.
        java.lang.LinkageError - if the linkage fails.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - to match the error method of the ErrorManager.
        java.lang.NoSuchMethodException - if the class name does not have a no argument constructor.
        Since:
        JavaMail 1.4.5
        See Also:
        LogRecord
      • reverseOrder

        static <T> java.util.Comparator<T> reverseOrder​(java.util.Comparator<T> c)
        Returns a comparator that imposes the reverse ordering of the specified Comparator. If the given comparator declares a public reverseOrder method that method is called first and the return value is used. If that method is not declared or the caller does not have access then a comparator wrapping the given comparator is returned.
        Type Parameters:
        T - the element type to be compared
        Parameters:
        c - a comparator whose ordering is to be reversed by the returned comparator
        Returns:
        A comparator that imposes the reverse ordering of the specified comparator.
        Throws:
        java.lang.NullPointerException - if the given comparator is null.
        Since:
        JavaMail 1.5.0
      • newErrorManager

        static java.util.logging.ErrorManager newErrorManager​(java.lang.String name)
                                                       throws java.lang.Exception
        Creates a new error manager from the given class name.
        Parameters:
        name - the fully qualified class name.
        Returns:
        a new error manager.
        Throws:
        java.lang.ClassCastException - if class name does not match the type.
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.IllegalAccessException - if the constructor is inaccessible.
        java.lang.InstantiationException - if the given class name is abstract.
        java.lang.reflect.InvocationTargetException - if the constructor throws an exception.
        java.lang.LinkageError - if the linkage fails.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - to match the error method of the ErrorManager.
        java.lang.NoSuchMethodException - if the class name does not have a no argument constructor.
        Since:
        JavaMail 1.4.5
      • isStaticUtilityClass

        static boolean isStaticUtilityClass​(java.lang.String name)
                                     throws java.lang.Exception
        Determines if the given class name identifies a utility class.
        Parameters:
        name - the fully qualified class name.
        Returns:
        true if the given class name
        Throws:
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.IllegalAccessException - if the constructor is inaccessible.
        java.lang.LinkageError - if the linkage fails.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - to match the error method of the ErrorManager.
        java.lang.SecurityException - if unable to inspect properties of class.
        Since:
        JavaMail 1.5.2
      • isReflectionClass

        static boolean isReflectionClass​(java.lang.String name)
                                  throws java.lang.Exception
        Determines if the given class name is a reflection class name responsible for invoking methods and or constructors.
        Parameters:
        name - the fully qualified class name.
        Returns:
        true if the given class name
        Throws:
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.IllegalAccessException - if the constructor is inaccessible.
        java.lang.LinkageError - if the linkage fails.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - to match the error method of the ErrorManager.
        java.lang.SecurityException - if unable to inspect properties of class.
        Since:
        JavaMail 1.5.2
      • reflectionClassNames

        private static java.lang.String[] reflectionClassNames()
                                                        throws java.lang.Exception
        Determines all of the reflection class names used to invoke methods. This method performs indirect and direct calls on a throwable to capture the standard class names and the implementation class names.
        Returns:
        a string array containing the fully qualified class names.
        Throws:
        java.lang.Exception - if there is a problem.
      • newObjectFrom

        static <T> T newObjectFrom​(java.lang.String name,
                                   java.lang.Class<T> type)
                            throws java.lang.Exception
        Creates a new object from the given class name.
        Type Parameters:
        T - The generic class type.
        Parameters:
        name - the fully qualified class name.
        type - the assignable type for the given name.
        Returns:
        a new object assignable to the given type.
        Throws:
        java.lang.ClassCastException - if class name does not match the type.
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.IllegalAccessException - if the constructor is inaccessible.
        java.lang.InstantiationException - if the given class name is abstract.
        java.lang.reflect.InvocationTargetException - if the constructor throws an exception.
        java.lang.LinkageError - if the linkage fails.
        java.lang.ExceptionInInitializerError - if the static initializer fails.
        java.lang.Exception - to match the error method of the ErrorManager.
        java.lang.NoSuchMethodException - if the class name does not have a no argument constructor.
        Since:
        JavaMail 1.4.5
      • paramOrError

        private static java.lang.Exception paramOrError​(java.lang.reflect.InvocationTargetException ite)
        Returns the given exception or throws the escaping cause.
        Parameters:
        ite - any invocation target.
        Returns:
        the exception.
        Throws:
        java.lang.VirtualMachineError - if present as cause.
        java.lang.ThreadDeath - if present as cause.
        Since:
        JavaMail 1.4.5
      • wrapOrThrow

        private static java.lang.reflect.InvocationTargetException wrapOrThrow​(java.lang.ExceptionInInitializerError eiie)
        Throws the given error if the cause is an error otherwise the given error is wrapped.
        Parameters:
        eiie - the error.
        Returns:
        an InvocationTargetException.
        Since:
        JavaMail 1.5.0
      • findClass

        private static java.lang.Class<?> findClass​(java.lang.String name)
                                             throws java.lang.ClassNotFoundException
        This code is modified from the LogManager, which explictly states searching the system class loader first, then the context class loader. There is resistance (compatibility) to change this behavior to simply searching the context class loader.
        Parameters:
        name - full class name
        Returns:
        the class.
        Throws:
        java.lang.LinkageError - if the linkage fails.
        java.lang.ClassNotFoundException - if the class name was not found.
        java.lang.ExceptionInInitializerError - if static initializer fails.
      • tryLoad

        private static java.lang.Class<?> tryLoad​(java.lang.String name,
                                                  java.lang.ClassLoader l)
                                           throws java.lang.ClassNotFoundException
        Loads a class using the given loader or the class loader of this class.
        Parameters:
        name - the class name.
        l - any class loader or null.
        Returns:
        the raw class.
        Throws:
        java.lang.ClassNotFoundException - if not found.
      • getClassLoaders

        private static java.lang.ClassLoader[] getClassLoaders()
        Gets the class loaders using elevated privileges.
        Returns:
        any array of class loaders. Indexes may be null.
      • clone

        public java.lang.Object clone()
        Returns a properties object that contains a snapshot of the current state. This method violates the clone contract so that no instances of LogManagerProperties is exported for public use.
        Overrides:
        clone in class java.util.Properties
        Returns:
        the snapshot.
        Since:
        JavaMail 1.4.4
      • getProperty

        public java.lang.String getProperty​(java.lang.String key)
        Searches defaults, then searches the log manager if available or the system properties by the prefix property, and then by the key itself.
        Overrides:
        getProperty in class java.util.Properties
        Parameters:
        key - a non null key.
        Returns:
        the value for that key.
      • getProperty

        public java.lang.String getProperty​(java.lang.String key,
                                            java.lang.String def)
        Calls getProperty directly. If getProperty returns null the default value is returned.
        Overrides:
        getProperty in class java.util.Properties
        Parameters:
        key - a key to search for.
        def - the default value to use if not found.
        Returns:
        the value for the key.
        Since:
        JavaMail 1.4.4
      • get

        public java.lang.Object get​(java.lang.Object key)
        Required to work with PropUtil. Calls getProperty directly if the given key is a string. Otherwise, performs a get operation on the defaults followed by the normal hash table get.
        Specified by:
        get in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        get in class java.util.Properties
        Parameters:
        key - any key.
        Returns:
        the value for the key or null.
        Since:
        JavaMail 1.4.5
      • put

        public java.lang.Object put​(java.lang.Object key,
                                    java.lang.Object value)
        Required to work with PropUtil. An updated copy of the key is fetched from the log manager if the key doesn't exist in this properties.
        Specified by:
        put in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        put in class java.util.Properties
        Parameters:
        key - any key.
        Returns:
        the value for the key or the default value for the key.
        Since:
        JavaMail 1.4.5
      • setProperty

        public java.lang.Object setProperty​(java.lang.String key,
                                            java.lang.String value)
        Calls the put method directly.
        Overrides:
        setProperty in class java.util.Properties
        Parameters:
        key - any key.
        Returns:
        the value for the key or the default value for the key.
        Since:
        JavaMail 1.4.5
      • containsKey

        public boolean containsKey​(java.lang.Object key)
        Required to work with PropUtil. An updated copy of the key is fetched from the log manager prior to returning.
        Specified by:
        containsKey in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        containsKey in class java.util.Properties
        Parameters:
        key - any key.
        Returns:
        the value for the key or null.
        Since:
        JavaMail 1.4.5
      • remove

        public java.lang.Object remove​(java.lang.Object key)
        Required to work with PropUtil. An updated copy of the key is fetched from the log manager if the key doesn't exist in this properties.
        Specified by:
        remove in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        remove in class java.util.Properties
        Parameters:
        key - any key.
        Returns:
        the value for the key or the default value for the key.
        Since:
        JavaMail 1.4.5
      • propertyNames

        public java.util.Enumeration<?> propertyNames()
        It is assumed that this method will never be called. No way to get the property names from LogManager.
        Overrides:
        propertyNames in class java.util.Properties
        Returns:
        the property names
      • equals

        public boolean equals​(java.lang.Object o)
        It is assumed that this method will never be called. The prefix value is not used for the equals method.
        Specified by:
        equals in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        equals in class java.util.Properties
        Parameters:
        o - any object or null.
        Returns:
        true if equal, otherwise false.
      • hashCode

        public int hashCode()
        It is assumed that this method will never be called. See equals.
        Specified by:
        hashCode in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        hashCode in class java.util.Properties
        Returns:
        the hash code.
      • preWrite

        private java.lang.Object preWrite​(java.lang.Object key)
        Called before a write operation of a key. Caches a key read from the log manager in this properties object. The key is only cached if it is an instance of a String and this properties doesn't contain a copy of the key.
        Parameters:
        key - the key to search.
        Returns:
        the default value for the key.
      • exportCopy

        private java.util.Properties exportCopy​(java.util.Properties parent)
        Creates a public snapshot of this properties object using the given parent properties.
        Parameters:
        parent - the defaults to use with the snapshot.
        Returns:
        the safe snapshot.
      • writeReplace

        private java.lang.Object writeReplace()
                                       throws java.io.ObjectStreamException
        It is assumed that this method will never be called. We return a safe copy for export to avoid locking this properties object or the defaults during write.
        Returns:
        the parent properties.
        Throws:
        java.io.ObjectStreamException - if there is a problem.