1 package com.atlassian.maven.plugins.amps.codegen.prompter.jira;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6
7 import com.atlassian.maven.plugins.amps.codegen.annotations.ModuleCreatorClass;
8 import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter;
9 import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
10 import com.atlassian.plugins.codegen.modules.jira.RPCModuleCreator;
11 import com.atlassian.plugins.codegen.modules.jira.RPCProperties;
12 import com.atlassian.plugins.codegen.util.ClassnameUtil;
13
14 import org.codehaus.plexus.components.interactivity.Prompter;
15 import org.codehaus.plexus.components.interactivity.PrompterException;
16
17
18
19
20 @ModuleCreatorClass(RPCModuleCreator.class)
21 public class RPCPrompter extends AbstractModulePrompter<RPCProperties>
22 {
23
24 public static final List<String> RPC_ANSWERS = new ArrayList<String>(Arrays.asList("S", "s", "X", "x"));
25
26 public RPCPrompter(Prompter prompter)
27 {
28 super(prompter);
29
30 }
31
32 @Override
33 public RPCProperties promptForBasicProperties(PluginModuleLocation moduleLocation) throws PrompterException
34 {
35 String soapOrXml = prompt("[S]OAP or [X]ML-RPC?", RPC_ANSWERS, "S");
36 boolean isSoap = true;
37 String rpcType = "Soap";
38
39 if ("x".equals(soapOrXml.toLowerCase()))
40 {
41 isSoap = false;
42 rpcType = "Xml";
43 }
44
45 String interfaceName = promptJavaClassname("Enter Interface name", "MY" + rpcType + "Endpoint");
46 String interfacePackage = promptJavaPackagename("Enter Interface package", getDefaultBasePackage() + ".jira.rpc");
47
48 String className = promptJavaClassname("Enter Class name", interfaceName + "Impl");
49 String packageName = promptJavaPackagename("Enter Package Name", interfacePackage);
50
51 String fqClass = ClassnameUtil.fullyQualifiedName(packageName, className);
52 String fqInterface = ClassnameUtil.fullyQualifiedName(interfacePackage, interfaceName);
53
54 RPCProperties props = new RPCProperties(fqInterface);
55 props.setFullyQualifiedClassname(fqClass);
56 props.setSoap(isSoap);
57
58 props.setServicePath(promptNotBlank("Enter Service Path", props.getServicePath()));
59
60 return props;
61 }
62
63 @Override
64 public void promptForAdvancedProperties(RPCProperties props, PluginModuleLocation moduleLocation) throws PrompterException
65 {
66
67 }
68 }