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;
+ }
+ }
}