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
29
30 public List<Object> getEvents() {
31 return events;
32 }
33
34
35
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 }