1   package com.atlassian.plugins.codegen.modules.stash.ssh;
2   
3   import com.atlassian.plugins.codegen.ClassId;
4   import com.atlassian.plugins.codegen.PluginProjectChangeset;
5   import com.atlassian.plugins.codegen.annotations.StashPluginModuleCreator;
6   import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
7   
8   import static com.atlassian.plugins.codegen.modules.Dependencies.MOCKITO_TEST;
9   import static com.atlassian.plugins.codegen.modules.Dependencies.SLF4J;
10  
11  @StashPluginModuleCreator
12  public class SshScmRequestHandlerModuleCreator extends AbstractPluginModuleCreator<SshScmRequestHandlerProperties>
13  {
14  
15      public static final String MODULE_NAME = "SSH Request Handler";
16  
17      private static final String TEMPLATE_PREFIX = "templates/stash/ssh/";
18  
19      private static final String REQUEST_TEMPLATE = TEMPLATE_PREFIX + "SshScmRequest.java.vtl";
20      private static final String REQUEST_TEST_TEMPLATE = TEMPLATE_PREFIX + "SshScmRequestTest.java.vtl";
21      private static final String HANDLER_TEMPLATE = TEMPLATE_PREFIX + "SshScmRequestHandler.java.vtl";
22      private static final String HANDLER_TEST_TEMPLATE = TEMPLATE_PREFIX + "SshScmRequestHandlerTest.java.vtl";
23      private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "ssh-request-handler-plugin.xml.vtl";
24  
25      @Override
26      public PluginProjectChangeset createModule(SshScmRequestHandlerProperties props) throws Exception
27      {
28          ClassId requestTestClass = testClassFor(props.getRequestClassId());
29          return new PluginProjectChangeset()
30                  .with(SLF4J)
31                  .with(MOCKITO_TEST)
32                  .with(createModule(props, PLUGIN_MODULE_TEMPLATE))
33                  .with(createClass(props, props.getRequestClassId(), REQUEST_TEMPLATE))
34                  .with(createTestClass(props.withClass(requestTestClass), requestTestClass, REQUEST_TEST_TEMPLATE))
35                  .with(createClassAndTests(props, HANDLER_TEMPLATE, HANDLER_TEST_TEMPLATE));
36      }
37  
38      @Override
39      public String getModuleName()
40      {
41          return MODULE_NAME;
42      }
43  
44  }