1   package com.atlassian.plugins.codegen.modules.common.servlet;
2   
3   import com.atlassian.plugins.codegen.annotations.*;
4   import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
5   import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
6   
7   /**
8    * @since 3.6
9    */
10  @RefAppPluginModuleCreator
11  @JiraPluginModuleCreator
12  @ConfluencePluginModuleCreator
13  @BambooPluginModuleCreator
14  @Dependencies({
15          @Dependency(groupId = "javax.servlet", artifactId = "servlet-api", version = "2.4", scope = "provided")
16          , @Dependency(groupId = "org.mockito", artifactId = "mockito-all", version = "1.8.5", scope = "test")
17          , @Dependency(groupId = "org.apache.httpcomponents", artifactId = "httpclient", version = "4.1.1", scope = "test")
18  })
19  public class ServletContextListenerModuleCreator extends AbstractPluginModuleCreator<ServletContextListenerProperties>
20  {
21  
22      public static final String MODULE_NAME = "Servlet Context Listener";
23      private static final String TEMPLATE_PREFIX = "templates/common/servlet/listener/";
24  
25      //stub
26      private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "ServletContextListener.java.vtl";
27      private static final String UNIT_TEST_TEMPLATE = TEMPLATE_PREFIX + "ServletContextListenerTest.java.vtl";
28  
29      //examples
30      private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
31  
32      private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "servlet-context-listener-plugin.xml.vtl";
33  
34      @Override
35      public void createModule(PluginModuleLocation location, ServletContextListenerProperties props) throws Exception
36      {
37          String packageName = props.getPackage();
38  
39          String classname = props.getClassname();
40  
41          if (props.includeExamples())
42          {
43              templateHelper.writeJavaClassFromTemplate(EXAMPLE_CLASS_TEMPLATE, classname, location.getSourceDirectory(), packageName, props);
44          } else
45          {
46              //main class
47              templateHelper.writeJavaClassFromTemplate(CLASS_TEMPLATE, classname, location.getSourceDirectory(), packageName, props);
48  
49              //unit test
50              templateHelper.writeJavaClassFromTemplate(UNIT_TEST_TEMPLATE, testClassname(classname), location.getTestDirectory(), packageName, props);
51  
52              //context listener is too complex to func test without a known servlet
53  
54          }
55  
56  
57          addModuleToPluginXml(PLUGIN_MODULE_TEMPLATE, location, props);
58      }
59  
60  
61      @Override
62      public String getModuleName()
63      {
64          return MODULE_NAME;
65      }
66  }