View Javadoc

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   * A listener handler to deal with legacy {@link com.atlassian.event.EventListener event listeners}
17   *
18   * @see com.atlassian.event.EventListener
19   * @see Event
20   * @since 2.0
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  }