View Javadoc

1   package com.atlassian.plugin.eventlistener.descriptors;
2   
3   import com.atlassian.event.api.EventPublisher;
4   import com.atlassian.plugin.Permissions;
5   import com.atlassian.plugin.Plugin;
6   import com.atlassian.plugin.PluginParseException;
7   import com.atlassian.plugin.RequirePermission;
8   import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
9   import com.atlassian.plugin.module.ModuleFactory;
10  import com.atlassian.util.concurrent.LazyReference;
11  import com.atlassian.util.concurrent.NotNull;
12  import org.dom4j.Element;
13  
14  @RequirePermission(Permissions.EXECUTE_JAVA)
15  public class EventListenerModuleDescriptor extends AbstractModuleDescriptor<Object>
16  {
17      private final EventPublisher eventPublisher;
18  
19      private LazyReference<Object> moduleObj = new LazyReference<Object>()
20      {
21          @Override
22          protected Object create() throws Exception
23          {
24              return moduleFactory.createModule(moduleClassName, EventListenerModuleDescriptor.this);
25          }
26      };
27  
28      public EventListenerModuleDescriptor(ModuleFactory moduleFactory, EventPublisher eventPublisher)
29      {
30          super(moduleFactory);
31          this.eventPublisher = eventPublisher;
32      }
33  
34      @Override
35      public void init(@NotNull Plugin plugin, @NotNull Element element) throws PluginParseException
36      {
37          super.init(plugin, element);
38          checkPermissions();
39      }
40  
41      @Override
42      public Object getModule()
43      {
44          return moduleObj.get();
45      }
46  
47      @Override
48      public void enabled()
49      {
50          super.enabled();
51          eventPublisher.register(getModule());
52      }
53  
54      public void disabled()
55      {
56          eventPublisher.unregister(getModule());
57          super.disabled();
58      }
59  }