1 package com.atlassian.plugins.codegen.modules.common.moduletype;
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.CrowdPluginModuleCreator;
7 import com.atlassian.plugins.codegen.annotations.FeCruPluginModuleCreator;
8 import com.atlassian.plugins.codegen.annotations.JiraPluginModuleCreator;
9 import com.atlassian.plugins.codegen.annotations.RefAppPluginModuleCreator;
10 import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
11
12 import static com.atlassian.plugins.codegen.modules.Dependencies.MOCKITO_TEST;
13
14
15
16
17 @RefAppPluginModuleCreator
18 @JiraPluginModuleCreator
19 @ConfluencePluginModuleCreator
20 @BambooPluginModuleCreator
21 @FeCruPluginModuleCreator
22 @CrowdPluginModuleCreator
23 public class ModuleTypeModuleCreator extends AbstractPluginModuleCreator<ModuleTypeProperties>
24 {
25 public static final String MODULE_NAME = "Module Type";
26 private static final String TEMPLATE_PREFIX = "templates/common/moduletype/";
27
28
29 private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "ModuleType.java.vtl";
30 private static final String INTERFACE_TEMPLATE = TEMPLATE_PREFIX + "ModuleTypeInterface.java.vtl";
31
32
33 private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
34
35 private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "module-type-plugin.xml.vtl";
36
37 @Override
38 public PluginProjectChangeset createModule(ModuleTypeProperties props) throws Exception
39 {
40 PluginProjectChangeset ret = new PluginProjectChangeset()
41 .withDependencies(MOCKITO_TEST)
42 .with(createModule(props, PLUGIN_MODULE_TEMPLATE));
43
44
45 if (props.includeExamples())
46 {
47 return ret.with(createClass(props, EXAMPLE_CLASS_TEMPLATE));
48 }
49 else
50 {
51 return ret.with(createClass(props, props.getInterfaceId(), INTERFACE_TEMPLATE))
52 .with(createClassAndTests(props, CLASS_TEMPLATE, GENERIC_TEST_TEMPLATE, GENERIC_TEST_TEMPLATE));
53 }
54 }
55
56 @Override
57 public String getModuleName()
58 {
59 return MODULE_NAME;
60 }
61 }