You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by bf...@apache.org on 2011/11/02 00:30:35 UTC

svn commit: r1196395 - in /oodt/trunk/cli/src: main/java/org/apache/oodt/cas/cli/option/ main/java/org/apache/oodt/cas/cli/option/handler/ main/java/org/apache/oodt/cas/cli/util/ test/org/apache/oodt/cas/cli/option/handler/

Author: bfoster
Date: Tue Nov  1 23:30:35 2011
New Revision: 1196395

URL: http://svn.apache.org/viewvc?rev=1196395&view=rev
Log:
- fixed CmdLineOption when isRepeating() should call add<LongOption> instead of set<LongOption>
- CmdLineUtils.handle and CmdLineUtils.validate didn't handle and validate subOptions if option is a group option

Modified:
    oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/AdvancedCmdLineOption.java
    oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/handler/ApplyToActionHandler.java
    oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java
    oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/option/handler/TestApplyToActionHandler.java

Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/AdvancedCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/AdvancedCmdLineOption.java?rev=1196395&r1=1196394&r2=1196395&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/AdvancedCmdLineOption.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/AdvancedCmdLineOption.java Tue Nov  1 23:30:35 2011
@@ -34,7 +34,6 @@ import org.apache.oodt.cas.cli.option.va
 public class AdvancedCmdLineOption extends SimpleCmdLineOption implements
       ValidatableCmdLineOption, HandleableCmdLineOption {
 
-   private boolean isAction;
    private CmdLineOptionHandler handler;
    private List<CmdLineOptionValidator> validators;
    private boolean performAndQuit;
@@ -49,14 +48,6 @@ public class AdvancedCmdLineOption exten
       super(shortOption, longOption, description, hasArgs);
    }
 
-   public void setAction(boolean isAction) {
-      this.isAction = isAction;
-   }
-
-   public boolean isAction() {
-      return isAction;
-   }
-
    public void setHandler(CmdLineOptionHandler handler) {
       this.handler = handler;
    }

Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/handler/ApplyToActionHandler.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/handler/ApplyToActionHandler.java?rev=1196395&r1=1196394&r2=1196395&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/handler/ApplyToActionHandler.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/handler/ApplyToActionHandler.java Tue Nov  1 23:30:35 2011
@@ -36,7 +36,10 @@ import com.google.common.annotations.Vis
 
 /**
  * {@link CmdLineOptionHandler} which applies {@link CmdLineOption} values to
- * given {@link CmdLineAction}.
+ * given {@link CmdLineAction}.  If {@link CmdLineOption} is a repeating option
+ * then "add<long-name>" is invoked on {@link CmdLineAction}, otherwise
+ * "set<long-name" is invoked, unless the method name was supplied, then that
+ * method will be invoked.
  * 
  * @author bfoster (Brian Foster)
  */
@@ -66,8 +69,8 @@ public class ApplyToActionHandler implem
          } else {
             action.getClass()
                   .getMethod(
-                        "set"
-                              + StringUtils.capitalize(optionInstance
+                        (optionInstance.getOption().isRepeating() ? "add"
+                              : "set") + StringUtils.capitalize(optionInstance
                                     .getOption().getLongOption()), type)
                   .invoke(action, vals.toArray(new Object[vals.size()]));
          }

Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java?rev=1196395&r1=1196394&r2=1196395&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java Tue Nov  1 23:30:35 2011
@@ -700,6 +700,15 @@ public class CmdLineUtils {
             }
          }
       }
+
+      if (option.isGroup()) {
+         for (CmdLineOptionInstance subOption : option.getSubOptions()) {
+            if (!validate(subOption)) {
+               return false;
+            }
+         }
+      }
+
       return true;
    }
 
@@ -723,6 +732,12 @@ public class CmdLineUtils {
          ((HandleableCmdLineOption) option.getOption()).getHandler()
                .handleOption(action, option);
       }
+
+      if (option.isGroup()) {
+         for (CmdLineOptionInstance subOption : option.getSubOptions()) {
+            handle(action, subOption);
+         }
+      }     
    }
 
    /**

Modified: oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/option/handler/TestApplyToActionHandler.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/option/handler/TestApplyToActionHandler.java?rev=1196395&r1=1196394&r2=1196395&view=diff
==============================================================================
--- oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/option/handler/TestApplyToActionHandler.java (original)
+++ oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/option/handler/TestApplyToActionHandler.java Tue Nov  1 23:30:35 2011
@@ -22,6 +22,7 @@ import static org.apache.oodt.cas.cli.te
 import static org.apache.oodt.cas.cli.test.util.TestUtils.createOptionInstance;
 
 //OODT imports
+import org.apache.oodt.cas.cli.action.CmdLineAction;
 import org.apache.oodt.cas.cli.action.PrintMessageAction;
 import org.apache.oodt.cas.cli.option.AdvancedCmdLineOption;
 import org.apache.oodt.cas.cli.option.handler.ApplyToActionHandler;
@@ -63,4 +64,49 @@ public class TestApplyToActionHandler ex
 
       assertEquals("Howdy", action.getMessage());
    }
+
+   public void testSetOrAddInvoke() {
+      TestCmdLineAction action = new TestCmdLineAction();
+      action.setName("TestAction");
+      AdvancedCmdLineOption option = createAdvancedOption("message",
+            createApplyToActionHandler(action.getName(), null));
+
+      // Test that default isRepeating() is false.
+      option.getHandler().handleOption(action,
+            createOptionInstance(option, "Howdy"));
+      assertEquals(TestCmdLineAction.CallType.SET, action.getCallType());
+
+      // Test when isRepeating() is set to false.
+      option.setRepeating(false);
+      option.getHandler().handleOption(action,
+            createOptionInstance(option, "Howdy"));
+      assertEquals(TestCmdLineAction.CallType.SET, action.getCallType());
+
+      // Test when isRepeating() is set to true.
+      option.setRepeating(true);
+      option.getHandler().handleOption(action,
+            createOptionInstance(option, "Howdy"));
+      assertEquals(TestCmdLineAction.CallType.ADD, action.getCallType());
+   }
+
+   public static class TestCmdLineAction extends CmdLineAction {
+      public enum CallType { ADD, SET };
+      private CallType callType;
+
+      @Override
+      public void execute() {
+      }
+
+      public void addMessage(String message) {
+         callType = CallType.ADD;
+      }
+
+      public void setMessage(String message) {
+         callType = CallType.SET;
+      }
+
+      public CallType getCallType () {
+         return callType;
+      }
+   }
 }