Project Report: fawkez

Packagesummary org.jcoderz.commons

org.jcoderz.commons.LogThreadContext

LineHitsNoteSource
1  /*
2   * $Id: LogMessageInfoImpl.java 1247 2008-11-04 20:00:09Z amandel $
3   *
4   * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5   *
6   * Redistribution and use in source and binary forms, with or without
7   * modification, are permitted provided that the following conditions are
8   * met:
9   *
10   *    * Redistributions of source code must retain the above copyright
11   *      notice, this list of conditions and the following disclaimer.
12   *    * Redistributions in binary form must reproduce the above
13   *      copyright notice, this list of conditions and the following
14   *      disclaimer in the documentation and/or other materials
15   *      provided with the distribution.
16   *    * Neither the name of the jCoderZ.org Project nor the names of
17   *      its contributors may be used to endorse or promote products
18   *      derived from this software without specific prior written
19   *      permission.
20   *
21   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30   * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32   */
33  package org.jcoderz.commons;
34  
35  import java.util.HashMap;
36  import java.util.Map;
37  
38  import org.jcoderz.commons.util.ObjectUtil;
39  
40  /**
41   * This class holds logging context information that is bound to the 
42   * current thread.
43   * 
44   * <p>The values of the map should be strictly Strings. This is to avoid
45   * misuse of the map as thread local cache and to avoid storing large 
46   * object graphs in the context.</p>
47   *  
48   * @author Andreas Mandel
49   */
50  public final class LogThreadContext
51  {
52100     private static final ThreadLocal TREAD_CONTEXT = new ThreadLocal()
53100     {
54          protected Object initialValue ()
55          {
56100             return new HashMap();
57          }
58      };
59      
60      private LogThreadContext ()
610     {
62          // No public instances
630     }
64      
65      /**
66       * Add a value identified by the given key to the thread context.
67       * <p>The adder of the value is responsible that the value is removed
68       * if the context is left. There can only be one value set for a 
69       * given key.</p>
70       * @param key the identifier of the value to be set.
71       * @param value the value to be stored in the context.
72       * @return the String representation of the previous value stored
73       *  for this key, or null if no such value was stored.
74       */
75      public static String put (String key, String value)
76      {
770         return ObjectUtil.toString(get().put(key, value));
78      }
79      
80      /**
81       * Returns the value of the selected context parameter, or null
82       * if the selected parameter is not set.
83       * @param key the identifier of the value to be retrieved.
84       * @return the value of the selected context parameter, or null
85       *  if the selected parameter is not set.
86       */
87      public static String get (String key)
88      {
890         return ObjectUtil.toString(get().get(key));
90      }
91      
92      /**
93       * Removes the value that is currently stored for the given key.
94       * @param key the identifier of the value to be removed.
95       * @return the value of the selected context parameter, or null
96       *  if the selected parameter is not set.
97       */
98      public static String remove (String key)
99      {
1000         return ObjectUtil.toString(get().remove(key));
101      }
102  
103      /**
104       * Returns the underlying map that is used to store context 
105       * parameters of the current thread. Changes on the returned Map
106       * will also change the stored logging context. 
107       * @return the underlying map that is used to store context
108       * parameters of the current thread.
109       */
110      public static Map/*<String,String>*/ get ()
111      {
112100         return (Map) TREAD_CONTEXT.get();
113      }
114  }

Findings in this File