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 ServletFilterModuleCreator extends AbstractPluginModuleCreator<ServletFilterProperties>
22  {
23  
24      public static final String MODULE_NAME = "Servlet Filter";
25      private static final String TEMPLATE_PREFIX = "templates/common/servlet/filter/";
26  
27      //stub
28      private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "ServletFilter.java.vtl";
29      private static final String UNIT_TEST_TEMPLATE = TEMPLATE_PREFIX + "ServletFilterTest.java.vtl";
30      private static final String FUNC_TEST_TEMPLATE = TEMPLATE_PREFIX + "ServletFilterFuncTest.java.vtl";
31  
32      //examples
33      private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
34  
35      private static final String PLUGIN_MODULE_TEMPLATE = "templates/common/servlet/filter/servlet-filter-plugin.xml.vtl";
36  
37      @Override
38      public PluginProjectChangeset createModule(ServletFilterProperties props) throws Exception
39      {
40          PluginProjectChangeset ret = new PluginProjectChangeset()
41              .with(SERVLET_API,
42                    HTTPCLIENT_TEST,
43                    MOCKITO_TEST)
44              .with(createModule(props, PLUGIN_MODULE_TEMPLATE));
45  
46          if (props.includeExamples())
47          {
48              return ret.with(createClass(props, EXAMPLE_CLASS_TEMPLATE));
49          }
50          else
51          {
52              return ret.with(createClassAndTests(props, CLASS_TEMPLATE, UNIT_TEST_TEMPLATE, FUNC_TEST_TEMPLATE));
53          }
54      }
55      
56      @Override
57      public String getModuleName()
58      {
59          return MODULE_NAME;
60      }
61  }