View Javadoc

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