KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > slf4j > helpers > BasicMarkerFactory


1 /*
2  * Copyright (c) 2004-2007 QOS.ch
3  * All rights reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sublicense, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */

24
25 package org.slf4j.helpers;
26
27 import java.util.HashMap JavaDoc;
28 import java.util.Map JavaDoc;
29
30 import org.slf4j.IMarkerFactory;
31 import org.slf4j.Marker;
32
33 /**
34  * An almost trivial implementation of the {@link IMarkerFactory}
35  * interface which creates {@link BasicMarker} instances.
36  *
37  * <p>Simple logging systems can conform to the SLF4J API by binding
38  * {@link org.slf4j.MarkerFactory} with an instance of this class.
39  *
40  * @author Ceki G&uuml;lc&uuml;
41  */

42 public class BasicMarkerFactory implements IMarkerFactory {
43
44   Map JavaDoc markerMap = new HashMap JavaDoc();
45   
46   /**
47    * Regular users should <em>not</em> create
48    * <code>BasicMarkerFactory</code> instances. <code>Marker</code>
49    * instances can be obtained using the static {@link
50    * org.slf4j.MarkerFactory#getMarker} method.
51    */

52   public BasicMarkerFactory() {
53   }
54
55   /**
56    * Manufacture a {@link BasicMarker} instance by name. If the instance has been
57    * created earlier, return the previously created instance.
58    *
59    * @param name the name of the marker to be created
60    * @return a Marker instance
61    */

62   public synchronized Marker getMarker(String JavaDoc name) {
63     if (name == null) {
64       throw new IllegalArgumentException JavaDoc("Marker name cannot be null");
65     }
66
67     Marker marker = (Marker) markerMap.get(name);
68     if (marker == null) {
69       marker = new BasicMarker(name);
70       markerMap.put(name, marker);
71     }
72     return marker;
73   }
74   
75   /**
76    * Does the name marked already exist?
77    */

78   public synchronized boolean exists(String JavaDoc name) {
79     if (name == null) {
80       return false;
81     }
82     return markerMap.containsKey(name);
83   }
84
85   public boolean detachMarker(String JavaDoc name) {
86     if(name == null) {
87       return false;
88     }
89     return (markerMap.remove(name) != null);
90   }
91   
92 }
93
Popular Tags