View Javadoc

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  }