1 package com.atlassian.plugin.eventlistener.descriptors;
2
3 import com.atlassian.event.api.EventPublisher;
4 import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
5 import com.atlassian.plugin.module.ModuleFactory;
6 import com.atlassian.util.concurrent.LazyReference;
7
8 public class EventListenerModuleDescriptor extends AbstractModuleDescriptor<Object>
9 {
10 private final EventPublisher eventPublisher;
11
12 private LazyReference<Object> moduleObj = new LazyReference<Object>()
13 {
14 @Override
15 protected Object create() throws Exception
16 {
17 return moduleFactory.createModule(moduleClassName, EventListenerModuleDescriptor.this);
18 }
19 };
20
21 public EventListenerModuleDescriptor(ModuleFactory moduleFactory, EventPublisher eventPublisher)
22 {
23 super(moduleFactory);
24 this.eventPublisher = eventPublisher;
25 }
26
27 @Override
28 public Object getModule()
29 {
30 return moduleObj.get();
31 }
32
33 @Override
34 public void enabled()
35 {
36 super.enabled();
37 eventPublisher.register(getModule());
38 }
39
40 public void disabled()
41 {
42 eventPublisher.unregister(getModule());
43 super.disabled();
44 }
45 }