Repository: airavata
Updated Branches:
  refs/heads/master 24babee47 -> 1a86ed907


https://issues.apache.org/jira/browse/AIRAVATA-1046


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/71249304
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/71249304
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/71249304

Branch: refs/heads/master
Commit: 71249304768b4d68ae98492363e9d5155881558c
Parents: 4ee0852
Author: Saminda Wijeratne <[email protected]>
Authored: Mon Mar 10 15:14:44 2014 -0400
Committer: Saminda Wijeratne <[email protected]>
Committed: Mon Mar 10 15:14:44 2014 -0400

----------------------------------------------------------------------
 .../airavata/common/utils/StringUtil.java       | 64 +++++++++++++++++---
 .../org/apache/airavata/server/ServerMain.java  | 10 +--
 2 files changed, 61 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/71249304/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
----------------------------------------------------------------------
diff --git 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
index 044401f..f319218 100644
--- 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
+++ 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
@@ -24,6 +24,7 @@ package org.apache.airavata.common.utils;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.ListIterator;
@@ -374,9 +375,10 @@ public class StringUtil {
         return byteArrayOutputStream.toString();
     }
     
-    public static Options deriveCommandLineOptions(String[] args){
+    private static Options deriveCommandLineOptions(String[] args){
        Options options = new Options();
-        for (String arg : args) {
+       String[] argCopy = getChangedList(args);
+        for (String arg : argCopy) {
             if (arg.startsWith("--")){
                arg=arg.substring(2);
                 int pos = arg.indexOf('=');
@@ -390,9 +392,9 @@ public class StringUtil {
        public static Map<String, String> parseCommandLineOptions(String[] 
args) {
                Map<String,String> commandLineOptions=new 
HashMap<String,String>();
                try {
-                       CommandLine cmdLine = getCommandLineParser(args);
-                       for (Option s : cmdLine.getOptions()) {
-                               commandLineOptions.put(s.getOpt(), 
s.getValue());
+                       CommandLineParameters cmdParameters = 
getCommandLineParser(args);
+                       for (String s : cmdParameters.getParameters().keySet()) 
{
+                               commandLineOptions.put(s, 
cmdParameters.getParameters().get(s));
                        }
                } catch (ParseException e1) {
                        e1.printStackTrace();
@@ -400,11 +402,32 @@ public class StringUtil {
                return commandLineOptions;
        }
 
-       public static CommandLine getCommandLineParser(String[] args)
+       public static CommandLineParameters getCommandLineParser(String[] args)
                        throws ParseException {
+               String[] argCopy = getChangedList(args);
                CommandLineParser parser = new DynamicOptionPosixParser();
-               CommandLine cmdLine = 
parser.parse(deriveCommandLineOptions(args), args);
-               return cmdLine;
+               CommandLine cmdLine = 
parser.parse(deriveCommandLineOptions(argCopy), argCopy);
+               return new CommandLineParameters(cmdLine);
+       }
+
+       
+       //commons-cli does not support arg names having the period (".")
+       private static final String ARG_DOT_REPLACE="dot_replacement_value";
+       
+       private static String[] getChangedList(String[] args) {
+               String[] argCopy = Arrays.asList(args).toArray(new String []{});
+               for (int i=0;i<argCopy.length; i++) {
+                       argCopy[i]=changeOption(argCopy[i]);
+               }
+               return argCopy;
+       }
+       
+       private static String revertOption(String option){
+               return option.replaceAll(Pattern.quote(ARG_DOT_REPLACE), ".");
+       }
+       
+       private static String changeOption(String option){
+               return option.replaceAll(Pattern.quote("."), ARG_DOT_REPLACE);
        }
        
        private static class DynamicOptionPosixParser extends PosixParser{
@@ -416,5 +439,30 @@ public class StringUtil {
                        }
                }
        }
+       
+       public static class CommandLineParameters{
+               private Map<String,String> parameters=new HashMap<String, 
String>();
+               private List<String> arguments=new ArrayList<String>();
+               protected CommandLineParameters(CommandLine cmd){
+                       for(Option opt:cmd.getOptions()){
+                               parameters.put(revertOption(opt.getOpt()), 
revertOption(opt.getValue()));
+                       }
+                       for(String arg:cmd.getArgs()){
+                               arguments.add(revertOption(arg));
+                       }
+               }
+               public List<String> getArguments() {
+                       return arguments;
+               }
+               public void setArguments(List<String> arguments) {
+                       this.arguments = arguments;
+               }
+               public Map<String,String> getParameters() {
+                       return parameters;
+               }
+               public void setParameters(Map<String,String> parameters) {
+                       this.parameters = parameters;
+               }
+       }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/71249304/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
----------------------------------------------------------------------
diff --git 
a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java 
b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
index 5a51995..1123e54 100644
--- a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
+++ b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java
@@ -31,7 +31,7 @@ import 
org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.IServer;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.StringUtil;
-import org.apache.commons.cli.CommandLine;
+import org.apache.airavata.common.utils.StringUtil.CommandLineParameters;
 import org.apache.commons.cli.ParseException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -84,12 +84,12 @@ public class ServerMain {
        }
 
        public static void main(String args[]) throws ParseException, 
IOException {
-               CommandLine commandLineParser = 
StringUtil.getCommandLineParser(args);
+               CommandLineParameters commandLineParameters = 
StringUtil.getCommandLineParser(args);
                
-               if (commandLineParser.getArgList().contains("stop")){
+               if (commandLineParameters.getArguments().contains("stop")){
                        String serverIndexOption = "serverIndex";
-                       if (commandLineParser.hasOption(serverIndexOption)){
-                               
serverIndex=Integer.parseInt(commandLineParser.getOptionValue(serverIndexOption));
+                       if 
(commandLineParameters.getParameters().containsKey(serverIndexOption)){
+                               
serverIndex=Integer.parseInt(commandLineParameters.getParameters().get(serverIndexOption));
                        }
                        if (isServerRunning()) {
                                logger.info("Requesting airavata 
server"+(serverIndex==-1? "(s)":" instance "+serverIndex)+" to stop...");

Reply via email to