1 package com.atlassian.event.legacy;
2
3 import com.atlassian.event.Event;
4 import com.atlassian.event.EventListener;
5 import com.atlassian.event.EventManager;
6 import com.atlassian.event.api.EventPublisher;
7 import com.google.common.collect.Maps;
8 import org.apache.commons.lang.StringUtils;
9
10 import java.util.Map;
11
12 import static com.google.common.base.Preconditions.checkNotNull;
13
14
15
16
17
18
19
20
21 public final class LegacyEventManager implements EventManager {
22 private final EventPublisher delegateEventPublisher;
23
24
25
26
27 private final Map<String, EventListener> legacyListeners = Maps.newHashMap();
28
29 public LegacyEventManager(EventPublisher delegateEventPublisher) {
30 this.delegateEventPublisher = checkNotNull(delegateEventPublisher);
31 }
32
33 public void publishEvent(Event event) {
34 delegateEventPublisher.publish(checkNotNull(event));
35 }
36
37 public void registerListener(String listenerKey, EventListener listener) {
38 checkListenerKey(listenerKey);
39 checkNotNull(listener);
40
41 synchronized (legacyListeners) {
42 final EventListener registeredListener = legacyListeners.get(listenerKey);
43 if (registeredListener != null) {
44 delegateEventPublisher.unregister(registeredListener);
45 }
46 legacyListeners.put(listenerKey, listener);
47 delegateEventPublisher.register(listener);
48 }
49 }
50
51 public void unregisterListener(String listenerKey) {
52 checkListenerKey(listenerKey);
53 synchronized (legacyListeners) {
54 final EventListener listener = legacyListeners.get(listenerKey);
55 if (listener != null) {
56 delegateEventPublisher.unregister(listener);
57 }
58 }
59 }
60
61 private static void checkListenerKey(String listenerKey) {
62 if (StringUtils.isEmpty(listenerKey)) {
63 throw new IllegalArgumentException("listenerKey must not be empty");
64 }
65 }
66 }