View Javadoc
1   package com.atlassian.plugin.servlet.descriptors;
2   
3   import com.atlassian.plugin.Plugin;
4   import com.atlassian.plugin.hostcontainer.DefaultHostContainer;
5   import com.atlassian.plugin.module.ClassPrefixModuleFactory;
6   import com.atlassian.plugin.module.ModuleFactory;
7   import com.atlassian.plugin.module.PrefixDelegatingModuleFactory;
8   import com.atlassian.plugin.module.PrefixModuleFactory;
9   import com.atlassian.plugin.servlet.PluginBuilder;
10  
11  import javax.servlet.ServletContextListener;
12  import java.util.Collections;
13  
14  public class ServletContextListenerModuleDescriptorBuilder {
15      private Plugin plugin = new PluginBuilder().build();
16      private String key = "test.servlet.context.listener";
17      private ServletContextListener listener;
18  
19      public ServletContextListenerModuleDescriptorBuilder with(Plugin plugin) {
20          this.plugin = plugin;
21          return this;
22      }
23  
24      public ServletContextListenerModuleDescriptorBuilder withKey(String key) {
25          this.key = key;
26          return this;
27      }
28  
29      public ServletContextListenerModuleDescriptorBuilder with(ServletContextListener listener) {
30          this.listener = listener;
31          return this;
32      }
33  
34      public ServletContextListenerModuleDescriptor build() {
35          PrefixDelegatingModuleFactory prefixDelegatingModuleFactory = new PrefixDelegatingModuleFactory(
36                  Collections.<PrefixModuleFactory>singleton(new ClassPrefixModuleFactory(new DefaultHostContainer())));
37          Descriptor d = new Descriptor(plugin, key, listener, prefixDelegatingModuleFactory);
38          plugin.addModuleDescriptor(d);
39          return d;
40      }
41  
42      private static final class Descriptor extends ServletContextListenerModuleDescriptor {
43          final Plugin plugin;
44          final String key;
45          final ServletContextListener listener;
46  
47          public Descriptor(
48                  Plugin plugin,
49                  String key,
50                  ServletContextListener listener, ModuleFactory moduleFactory) {
51              super(moduleFactory);
52              this.plugin = plugin;
53              this.key = key;
54              this.listener = listener;
55          }
56  
57          @Override
58          public Plugin getPlugin() {
59              return plugin;
60          }
61  
62          @Override
63          public String getCompleteKey() {
64              return getPluginKey() + ":" + key;
65          }
66  
67          @Override
68          public String getKey() {
69              return key;
70          }
71  
72          @Override
73          public ServletContextListener getModule() {
74              return listener;
75          }
76      }
77  }