1 package com.atlassian.event.legacy;
2
3 import com.atlassian.event.Event;
4 import com.atlassian.event.EventListener;
5 import com.atlassian.event.spi.ListenerHandler;
6 import com.atlassian.event.spi.ListenerInvoker;
7 import com.google.common.collect.Sets;
8
9 import java.util.Collections;
10 import java.util.List;
11 import java.util.Set;
12
13 import static com.google.common.base.Preconditions.checkNotNull;
14
15
16
17
18
19
20
21
22 public class LegacyListenerHandler implements ListenerHandler {
23 public List<? extends ListenerInvoker> getInvokers(Object listener) {
24 return checkNotNull(listener) instanceof EventListener
25 ? getLegacyListenerInvoker((EventListener) listener)
26 : Collections.<ListenerInvoker>emptyList();
27 }
28
29 private List<? extends ListenerInvoker> getLegacyListenerInvoker(EventListener eventListener) {
30 return Collections.singletonList(new LegacyListenerInvoker(eventListener));
31 }
32
33 private static class LegacyListenerInvoker implements ListenerInvoker {
34 private final EventListener eventListener;
35
36 public LegacyListenerInvoker(EventListener eventListener) {
37 this.eventListener = checkNotNull(eventListener);
38 }
39
40 public Set<Class<?>> getSupportedEventTypes() {
41 Class[] classes = eventListener.getHandledEventClasses();
42 if (classes.length == 0)
43 return Collections.<Class<?>>singleton(Event.class);
44 else
45 return Sets.<Class<?>>newHashSet(classes);
46 }
47
48 public void invoke(Object event) {
49 eventListener.handleEvent((Event) event);
50 }
51
52 public boolean supportAsynchronousEvents() {
53 return true;
54 }
55
56 @Override
57 public String toString() {
58 return "LegacyListenerInvoker{eventListener=" + eventListener + '}';
59 }
60 }
61 }