1 package com.atlassian.plugins.codegen.modules.common;
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
9
10 @RefAppPluginModuleCreator
11 @JiraPluginModuleCreator
12 @ConfluencePluginModuleCreator
13 @BambooPluginModuleCreator
14 @FeCruPluginModuleCreator
15 @CrowdPluginModuleCreator
16 @Dependencies({
17 @Dependency(groupId = "org.mockito", artifactId = "mockito-all", version = "1.8.5", scope = "test")
18 , @Dependency(groupId = "javax.ws.rs", artifactId = "jsr311-api", version = "1.0", scope = "provided")
19 , @Dependency(groupId = "javax.xml.bind", artifactId = "jaxb-api", version = "2.1", scope = "provided")
20 , @Dependency(groupId = "com.atlassian.plugins.rest", artifactId = "atlassian-rest-common", version = "1.0.2", scope = "provided")
21 , @Dependency(groupId = "javax.servlet", artifactId = "servlet-api", version = "2.4", scope = "provided")
22 , @Dependency(groupId = "org.apache.wink", artifactId = "wink-client", version = "1.1.3-incubating", scope = "test")
23 })
24 public class RESTModuleCreator extends AbstractPluginModuleCreator<RESTProperties>
25 {
26
27 public static final String MODULE_NAME = "REST Plugin Module";
28 private static final String TEMPLATE_PREFIX = "templates/common/rest/";
29
30
31 private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "REST.java.vtl";
32 private static final String MODEL_TEMPLATE = TEMPLATE_PREFIX + "RESTModelObject.java.vtl";
33 private static final String UNIT_TEST_TEMPLATE = TEMPLATE_PREFIX + "RESTTest.java.vtl";
34 private static final String FUNC_TEST_TEMPLATE = TEMPLATE_PREFIX + "RESTFuncTest.java.vtl";
35
36
37 private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
38
39 private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "rest-plugin.xml.vtl";
40
41 @Override
42 public void createModule(PluginModuleLocation location, RESTProperties props) throws Exception
43 {
44 String packageName = props.getPackage();
45
46 String classname = props.getClassname();
47 String modelClassname = classname + "Model";
48
49 if (props.includeExamples())
50 {
51 templateHelper.writeJavaClassFromTemplate(EXAMPLE_CLASS_TEMPLATE, classname, location.getSourceDirectory(), packageName, props);
52 } else
53 {
54
55 templateHelper.writeJavaClassFromTemplate(CLASS_TEMPLATE, classname, location.getSourceDirectory(), packageName, props);
56
57
58 templateHelper.writeJavaClassFromTemplate(MODEL_TEMPLATE, modelClassname, location.getSourceDirectory(), packageName, props);
59
60
61 templateHelper.writeJavaClassFromTemplate(UNIT_TEST_TEMPLATE, testClassname(classname), location.getTestDirectory(), packageName, props);
62
63
64 templateHelper.writeJavaClassFromTemplate(FUNC_TEST_TEMPLATE, funcTestClassname(classname), location.getTestDirectory(), funcTestPackageName(packageName), props);
65 }
66
67
68 addModuleToPluginXml(PLUGIN_MODULE_TEMPLATE, location, props);
69 }
70
71
72 @Override
73 public String getModuleName()
74 {
75 return MODULE_NAME;
76 }
77 }