1 package com.atlassian.johnson;
2
3 import com.atlassian.johnson.config.JohnsonConfig;
4 import com.atlassian.johnson.event.Event;
5 import com.atlassian.johnson.setup.ContainerFactory;
6
7 import java.util.*;
8 import javax.servlet.ServletContext;
9
10 public class JohnsonEventContainer
11 {
12 public static String SERVLET_CONTEXT_KEY = JohnsonEventContainer.class.getName();
13
14 public synchronized static JohnsonEventContainer get(ServletContext context)
15 {
16 if (context.getAttribute(SERVLET_CONTEXT_KEY) == null)
17 {
18 final JohnsonConfig johnsonConfig = JohnsonConfig.getInstance();
19 final ContainerFactory containerFactory = johnsonConfig.getContainerFactory();
20 context.setAttribute(SERVLET_CONTEXT_KEY, containerFactory.create());
21 }
22
23 return (JohnsonEventContainer) context.getAttribute(SERVLET_CONTEXT_KEY);
24 }
25
26
27
28 private final Map<Event, Event> events = new WeakHashMap<Event, Event>();
29
30
31
32
33
34
35 public synchronized boolean hasEvents()
36 {
37 return !events.isEmpty();
38 }
39
40
41
42
43
44 public synchronized void addEvent(Event event)
45 {
46 events.put(event, event);
47 }
48
49
50
51
52
53 public synchronized void removeEvent(Event event)
54 {
55 events.remove(event);
56 }
57
58
59
60
61
62 public synchronized Collection getEvents()
63 {
64
65 return Collections.unmodifiableCollection(new ArrayList<Event>(events.values()));
66 }
67 }