View Javadoc
1   package com.atlassian.plugin.event.listeners;
2   
3   import com.atlassian.plugin.event.events.PluginDisabledEvent;
4   import com.atlassian.plugin.event.events.PluginEnabledEvent;
5   import com.atlassian.plugin.event.events.PluginModuleDisabledEvent;
6   import com.atlassian.plugin.event.events.PluginModuleEnabledEvent;
7   
8   import java.util.ArrayList;
9   import java.util.Arrays;
10  import java.util.HashSet;
11  import java.util.List;
12  import java.util.Set;
13  
14  public class RecordingListener {
15      private final List<Object> events = new ArrayList<>();
16      private final Set<Class> eventClasses = new HashSet<>();
17  
18      public RecordingListener(Class... eventClasses) {
19          this.eventClasses.addAll(Arrays.asList(eventClasses));
20      }
21  
22      public void channel(final Object event) {
23          if (event != null && eventClasses.contains(event.getClass()))
24              events.add(event);
25      }
26  
27      /**
28       * @return the events received by this listener in the order they were received
29       */
30      public List<Object> getEvents() {
31          return events;
32      }
33  
34      /**
35       * @return the classes of each event received by this listener in the order they were received
36       */
37      public List<Class> getEventClasses() {
38          List<Class> result = new ArrayList<>(events.size());
39          for (Object event : events) {
40              if (event != null) result.add(event.getClass());
41          }
42          return result;
43      }
44  
45      public void reset() {
46          events.clear();
47      }
48  
49      public List<String> getEventPluginOrModuleKeys() {
50          List<String> result = new ArrayList<>(events.size());
51          for (Object event : events) {
52              if (event instanceof PluginEnabledEvent)
53                  result.add(((PluginEnabledEvent) event).getPlugin().getKey());
54              else if (event instanceof PluginDisabledEvent)
55                  result.add(((PluginDisabledEvent) event).getPlugin().getKey());
56              else if (event instanceof PluginModuleEnabledEvent)
57                  result.add(((PluginModuleEnabledEvent) event).getModule().getCompleteKey());
58              else if (event instanceof PluginModuleDisabledEvent)
59                  result.add(((PluginModuleDisabledEvent) event).getModule().getCompleteKey());
60              else
61                  result.add(null);
62          }
63          return result;
64      }
65  }