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 }