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 }