1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.slf4j.helpers;
18
19 import java.util.concurrent.ConcurrentHashMap;
20 import java.util.concurrent.ConcurrentMap;
21
22 import org.slf4j.IMarkerFactory;
23 import org.slf4j.Marker;
24
25
26
27
28 public class Log4jMarkerFactory implements IMarkerFactory {
29
30 private final ConcurrentMap<String, Marker> markerMap = new ConcurrentHashMap<String, Marker>();
31
32 @Override
33 public Marker getMarker(final String name) {
34 if (name == null) {
35 throw new IllegalArgumentException("Marker name must not be null");
36 }
37 Marker marker = markerMap.get(name);
38 if (marker != null) {
39 return marker;
40 }
41 marker = new MarkerWrapper(name);
42 Marker existing = markerMap.putIfAbsent(name, marker);
43 return existing == null ? marker : existing;
44 }
45
46 @Override
47 public boolean exists(final String name) {
48 return markerMap.containsKey(name);
49 }
50
51 @Override
52 public boolean detachMarker(final String name) {
53 return false;
54 }
55
56 @Override
57 public Marker getDetachedMarker(final String name) {
58 return new MarkerWrapper(name);
59 }
60 }