1   package com.atlassian.plugins.codegen.modules.common.servlet;
2   
3   import com.atlassian.plugins.codegen.PluginProjectChangeset;
4   import com.atlassian.plugins.codegen.annotations.BambooPluginModuleCreator;
5   import com.atlassian.plugins.codegen.annotations.ConfluencePluginModuleCreator;
6   import com.atlassian.plugins.codegen.annotations.JiraPluginModuleCreator;
7   import com.atlassian.plugins.codegen.annotations.RefAppPluginModuleCreator;
8   import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
9   
10  import static com.atlassian.plugins.codegen.modules.Dependencies.HTTPCLIENT_TEST;
11  import static com.atlassian.plugins.codegen.modules.Dependencies.MOCKITO_TEST;
12  import static com.atlassian.plugins.codegen.modules.Dependencies.SERVLET_API;
13  
14  /**
15   * @since 3.6
16   */
17  @RefAppPluginModuleCreator
18  @JiraPluginModuleCreator
19  @ConfluencePluginModuleCreator
20  @BambooPluginModuleCreator
21  public class ServletContextListenerModuleCreator extends AbstractPluginModuleCreator<ServletContextListenerProperties>
22  {
23  
24      public static final String MODULE_NAME = "Servlet Context Listener";
25      private static final String TEMPLATE_PREFIX = "templates/common/servlet/listener/";
26  
27      //stub
28      private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "ServletContextListener.java.vtl";
29      private static final String UNIT_TEST_TEMPLATE = TEMPLATE_PREFIX + "ServletContextListenerTest.java.vtl";
30  
31      //examples
32      private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
33  
34      private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "servlet-context-listener-plugin.xml.vtl";
35  
36      @Override
37      public PluginProjectChangeset createModule(ServletContextListenerProperties props) throws Exception
38      {
39          PluginProjectChangeset ret = new PluginProjectChangeset()
40              .withDependencies(SERVLET_API,
41                                        HTTPCLIENT_TEST,
42                                        MOCKITO_TEST)
43              .with(createModule(props, PLUGIN_MODULE_TEMPLATE));
44  
45          if (props.includeExamples())
46          {
47              return ret.with(createClass(props, EXAMPLE_CLASS_TEMPLATE));
48          }
49          else
50          {
51              return ret.with(createClassAndTests(props, CLASS_TEMPLATE, UNIT_TEST_TEMPLATE));
52              // context listener is too complex to func test without a known servlet
53          }
54      }
55      
56      @Override
57      public String getModuleName()
58      {
59          return MODULE_NAME;
60      }
61  }