Class DefaultThreadContextMap

  • All Implemented Interfaces:
    java.io.Serializable, ThreadContextMap, org.apache.logging.log4j.util.ReadOnlyStringMap

    public class DefaultThreadContextMap
    extends java.lang.Object
    implements ThreadContextMap, org.apache.logging.log4j.util.ReadOnlyStringMap
    The actual ThreadContext Map. A new ThreadContext Map is created each time it is updated and the Map stored is always immutable. This means the Map can be passed to other threads without concern that it will be updated. Since it is expected that the Map will be passed to many more log events than the number of keys it contains the performance should be much better than if the Map was copied for each event.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String INHERITABLE_MAP
      Property name ("isThreadContextMapInheritable" ) for selecting InheritableThreadLocal (value "true") or plain ThreadLocal (value is not "true") in the implementation.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Clears the context.
      boolean containsKey​(java.lang.String key)
      Determines if the key is in the context.
      boolean equals​(java.lang.Object obj)  
      <V> void forEach​(org.apache.logging.log4j.util.BiConsumer<java.lang.String,​? super V> action)  
      <V,​S>
      void
      forEach​(org.apache.logging.log4j.util.TriConsumer<java.lang.String,​? super V,​S> action, S state)  
      java.lang.String get​(java.lang.String key)
      Gets the context identified by the key parameter.
      java.util.Map<java.lang.String,​java.lang.String> getCopy()
      Gets a non-null mutable copy of current thread's context Map.
      java.util.Map<java.lang.String,​java.lang.String> getImmutableMapOrNull()
      Returns an immutable view on the context Map or null if the context map is empty.
      <V> V getValue​(java.lang.String key)  
      int hashCode()  
      boolean isEmpty()
      Returns true if the Map is empty.
      void put​(java.lang.String key, java.lang.String value)
      Puts a context value (the o parameter) as identified with the key parameter into the current thread's context map.
      void putAll​(java.util.Map<java.lang.String,​java.lang.String> m)  
      void remove​(java.lang.String key)
      Removes the context identified by the key parameter.
      void removeAll​(java.lang.Iterable<java.lang.String> keys)  
      int size()  
      java.util.Map<java.lang.String,​java.lang.String> toMap()  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

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

      • INHERITABLE_MAP

        public static final java.lang.String INHERITABLE_MAP
        Property name ("isThreadContextMapInheritable" ) for selecting InheritableThreadLocal (value "true") or plain ThreadLocal (value is not "true") in the implementation.
        See Also:
        Constant Field Values
    • Constructor Detail

      • DefaultThreadContextMap

        public DefaultThreadContextMap()
      • DefaultThreadContextMap

        public DefaultThreadContextMap​(boolean useMap)
    • Method Detail

      • put

        public void put​(java.lang.String key,
                        java.lang.String value)
        Description copied from interface: ThreadContextMap
        Puts a context value (the o parameter) as identified with the key parameter into the current thread's context map.

        If the current thread does not have a context map it is created as a side effect.

        Specified by:
        put in interface ThreadContextMap
        Parameters:
        key - The key name.
        value - The key value.
      • putAll

        public void putAll​(java.util.Map<java.lang.String,​java.lang.String> m)
      • get

        public java.lang.String get​(java.lang.String key)
        Description copied from interface: ThreadContextMap
        Gets the context identified by the key parameter.

        This method has no side effects.

        Specified by:
        get in interface ThreadContextMap
        Parameters:
        key - The key to locate.
        Returns:
        The value associated with the key or null.
      • remove

        public void remove​(java.lang.String key)
        Description copied from interface: ThreadContextMap
        Removes the context identified by the key parameter.
        Specified by:
        remove in interface ThreadContextMap
        Parameters:
        key - The key to remove.
      • removeAll

        public void removeAll​(java.lang.Iterable<java.lang.String> keys)
      • toMap

        public java.util.Map<java.lang.String,​java.lang.String> toMap()
        Specified by:
        toMap in interface org.apache.logging.log4j.util.ReadOnlyStringMap
      • containsKey

        public boolean containsKey​(java.lang.String key)
        Description copied from interface: ThreadContextMap
        Determines if the key is in the context.
        Specified by:
        containsKey in interface org.apache.logging.log4j.util.ReadOnlyStringMap
        Specified by:
        containsKey in interface ThreadContextMap
        Parameters:
        key - The key to locate.
        Returns:
        True if the key is in the context, false otherwise.
      • forEach

        public <V> void forEach​(org.apache.logging.log4j.util.BiConsumer<java.lang.String,​? super V> action)
        Specified by:
        forEach in interface org.apache.logging.log4j.util.ReadOnlyStringMap
      • forEach

        public <V,​S> void forEach​(org.apache.logging.log4j.util.TriConsumer<java.lang.String,​? super V,​S> action,
                                        S state)
        Specified by:
        forEach in interface org.apache.logging.log4j.util.ReadOnlyStringMap
      • getValue

        public <V> V getValue​(java.lang.String key)
        Specified by:
        getValue in interface org.apache.logging.log4j.util.ReadOnlyStringMap
      • getCopy

        public java.util.Map<java.lang.String,​java.lang.String> getCopy()
        Description copied from interface: ThreadContextMap
        Gets a non-null mutable copy of current thread's context Map.
        Specified by:
        getCopy in interface ThreadContextMap
        Returns:
        a mutable copy of the context.
      • getImmutableMapOrNull

        public java.util.Map<java.lang.String,​java.lang.String> getImmutableMapOrNull()
        Description copied from interface: ThreadContextMap
        Returns an immutable view on the context Map or null if the context map is empty.
        Specified by:
        getImmutableMapOrNull in interface ThreadContextMap
        Returns:
        an immutable context Map or null.
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: ThreadContextMap
        Returns true if the Map is empty.
        Specified by:
        isEmpty in interface org.apache.logging.log4j.util.ReadOnlyStringMap
        Specified by:
        isEmpty in interface ThreadContextMap
        Returns:
        true if the Map is empty, false otherwise.
      • size

        public int size()
        Specified by:
        size in interface org.apache.logging.log4j.util.ReadOnlyStringMap
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object