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   * @since 3.5
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  }