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 2012/02/25 23:52:29 UTC
svn commit: r1293718 - in /oodt/trunk/cli/src:
main/java/org/apache/oodt/cas/cli/ main/java/org/apache/oodt/cas/cli/option/
main/java/org/apache/oodt/cas/cli/util/ test/org/apache/oodt/cas/cli/util/
Author: bfoster
Date: Sat Feb 25 22:52:28 2012
New Revision: 1293718
URL: http://svn.apache.org/viewvc?rev=1293718&view=rev
Log:
- Re-add performAndQuit support to CAS-CLI
----------------
OODT-387
Modified:
oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/CmdLineUtility.java
oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/ActionCmdLineOption.java
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/SimpleCmdLineOption.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/util/TestCmdLineUtils.java
Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/CmdLineUtility.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/CmdLineUtility.java?rev=1293718&r1=1293717&r2=1293718&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/CmdLineUtility.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/CmdLineUtility.java Sat Feb 25 22:52:28 2012
@@ -22,7 +22,9 @@ import static org.apache.oodt.cas.cli.ut
import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineRequired;
import static org.apache.oodt.cas.cli.util.CmdLineUtils.findFirstActionOption;
import static org.apache.oodt.cas.cli.util.CmdLineUtils.findHelpOption;
+import static org.apache.oodt.cas.cli.util.CmdLineUtils.findPerformAndQuitOptions;
import static org.apache.oodt.cas.cli.util.CmdLineUtils.findPrintSupportedActionsOption;
+import static org.apache.oodt.cas.cli.util.CmdLineUtils.handlePerformAndQuitOption;
import static org.apache.oodt.cas.cli.util.CmdLineUtils.isAdvancedOption;
//JDK imports
@@ -153,11 +155,14 @@ public class CmdLineUtility {
}
public void printValidationErrors(List<CmdLineOptionValidator.Result> results) {
- presenter.presentErrorMessage(printer.printOptionValidationErrors(results));
+ presenter.presentErrorMessage(printer
+ .printOptionValidationErrors(results));
}
- public void printMissingRequiredOptionsError(Set<CmdLineOption> missingOptions) {
- presenter.presentErrorMessage(printer.printRequiredOptionsMissingError(missingOptions));
+ public void printMissingRequiredOptionsError(
+ Set<CmdLineOption> missingOptions) {
+ presenter.presentErrorMessage(printer
+ .printRequiredOptionsMissingError(missingOptions));
}
public void printErrorMessage(String errorMessage) {
@@ -177,11 +182,14 @@ public class CmdLineUtility {
CmdLineArgs cmdLineArgs = parse(args);
if (cmdLineArgs.getSpecifiedOptions().isEmpty()) {
printOptionHelp(cmdLineArgs);
- } else if (!handleHelp(cmdLineArgs) && !handlePrintSupportedActions(cmdLineArgs)) {
+ } else if (!handleHelp(cmdLineArgs)
+ && !handlePrintSupportedActions(cmdLineArgs)) {
execute(cmdLineArgs);
}
} catch (Exception e) {
- if (debugMode) { throw new RuntimeException(e); }
+ if (debugMode) {
+ throw new RuntimeException(e);
+ }
printErrorMessage(e.getMessage());
}
}
@@ -195,9 +203,9 @@ public class CmdLineUtility {
* @return The parsed command line arguments in {@link CmdLineArgs} form.
* @throws IOException
* On error parsing command line arguments.
- * @throws CmdLineConstructionException
+ * @throws CmdLineConstructionException
* On error constructing command line arguments.
- * @throws CmdLineOptionStoreException
+ * @throws CmdLineOptionStoreException
*/
public CmdLineArgs parse(String[] args) throws CmdLineParserException,
CmdLineActionStoreException, CmdLineConstructionException,
@@ -292,6 +300,15 @@ public class CmdLineUtility {
*/
public void execute(CmdLineArgs cmdLineArgs)
throws CmdLineActionExecutionException, CmdLineActionException {
+ Set<CmdLineOptionInstance> performAndQuitOptions = findPerformAndQuitOptions(cmdLineArgs
+ .getSpecifiedOptions());
+ if (!performAndQuitOptions.isEmpty()) {
+ for (CmdLineOptionInstance option : performAndQuitOptions) {
+ handlePerformAndQuitOption(option);
+ }
+ return;
+ }
+
if (cmdLineArgs.getActionOptionInst() == null) {
throw new CmdLineActionExecutionException(
"Must specify an action option!");
@@ -326,8 +343,7 @@ public class CmdLineUtility {
*/
public static Set<CmdLineOption> check(CmdLineArgs cmdLineArgs) {
Set<CmdLineOption> requiredOptions = determineRequired(
- cmdLineArgs.getSpecifiedAction(),
- cmdLineArgs.getSupportedOptions());
+ cmdLineArgs.getSpecifiedAction(), cmdLineArgs.getSupportedOptions());
HashSet<CmdLineOption> requiredOptionsNotSet = new HashSet<CmdLineOption>(
requiredOptions);
for (CmdLineOptionInstance specifiedOption : cmdLineArgs
@@ -343,15 +359,14 @@ public class CmdLineUtility {
* @param cmdLineArgs
* The {@link CmdLineArgs} which will be validated.
* @return The {@link CmdLineOptionValidator.Result}s generated when running
- * {@link CmdLineOptionValidator}s.
+ * {@link CmdLineOptionValidator}s.
*/
public static List<CmdLineOptionValidator.Result> validate(
CmdLineArgs cmdLineArgs) {
Validate.notNull(cmdLineArgs);
List<CmdLineOptionValidator.Result> results = Lists.newArrayList();
- for (CmdLineOptionInstance optionInst : cmdLineArgs
- .getSpecifiedOptions()) {
+ for (CmdLineOptionInstance optionInst : cmdLineArgs.getSpecifiedOptions()) {
results.addAll(CmdLineUtils.validate(optionInst));
}
return results;
@@ -364,8 +379,7 @@ public class CmdLineUtility {
* The {@link CmdLineArgs} whose option handlers will be run.
*/
public static void handle(CmdLineArgs cmdLineArgs) {
- for (CmdLineOptionInstance option : cmdLineArgs
- .getSpecifiedOptions()) {
+ for (CmdLineOptionInstance option : cmdLineArgs.getSpecifiedOptions()) {
CmdLineUtils.handle(cmdLineArgs.getSpecifiedAction(), option);
}
}
Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/ActionCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/ActionCmdLineOption.java?rev=1293718&r1=1293717&r2=1293718&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/ActionCmdLineOption.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/ActionCmdLineOption.java Sat Feb 25 22:52:28 2012
@@ -32,7 +32,6 @@ public class ActionCmdLineOption extends
super(shortOption, longOption, description, hasArgs);
this.setArgsDescription("action-name");
this.setType(String.class);
- this.setPerformAndQuit(false);
this.setRequired(true);
}
}
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=1293718&r1=1293717&r2=1293718&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 Sat Feb 25 22:52:28 2012
@@ -59,7 +59,7 @@ public class AdvancedCmdLineOption exten
public boolean hasHandler() {
return handler != null;
}
-
+
public List<CmdLineOptionValidator> getValidators() {
return this.validators;
}
Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/SimpleCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/SimpleCmdLineOption.java?rev=1293718&r1=1293717&r2=1293718&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/SimpleCmdLineOption.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/option/SimpleCmdLineOption.java Sat Feb 25 22:52:28 2012
@@ -50,8 +50,6 @@ public class SimpleCmdLineOption impleme
private List<String> staticArgs;
- private boolean performAndQuit;
-
private boolean isSubOption;
private Class<?> type;
@@ -61,7 +59,6 @@ public class SimpleCmdLineOption impleme
repeating = false;
required = false;
hasArgs = false;
- performAndQuit = false;
isSubOption = false;
type = String.class;
requirementRules = new ArrayList<RequirementRule>();
@@ -160,14 +157,6 @@ public class SimpleCmdLineOption impleme
this.requirementRules = requirementRules;
}
- public boolean isPerformAndQuit() {
- return performAndQuit;
- }
-
- public void setPerformAndQuit(boolean performAndQuit) {
- this.performAndQuit = performAndQuit;
- }
-
public void setIsSubOption(boolean isSubOption) {
this.isSubOption = isSubOption;
}
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=1293718&r1=1293717&r2=1293718&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 Sat Feb 25 22:52:28 2012
@@ -231,7 +231,7 @@ public class CmdLineUtils {
Validate.notNull(action);
Validate.notNull(option);
- if (isHelpOption(option) || isPrintSupportedActionsOption(option)) {
+ if (isPerformAndQuitOption(option)) {
return false;
}
@@ -257,6 +257,10 @@ public class CmdLineUtils {
Validate.notNull(action);
Validate.notNull(option);
+ if (isPerformAndQuitOption(option)) {
+ return false;
+ }
+
for (RequirementRule requirementRule : option.getRequirementRules()) {
if (requirementRule.getRelation(action) == Relation.OPTIONAL) {
return true;
@@ -496,10 +500,13 @@ public class CmdLineUtils {
public static boolean isPerformAndQuitOption(CmdLineOption option) {
Validate.notNull(option);
- if (isSimpleOption(option)) {
- return asSimpleOption(option).isPerformAndQuit();
+ if (isHelpOption(option) || isPrintSupportedActionsOption(option)) {
+ return true;
+ } else if (isAdvancedOption(option)) {
+ return asAdvancedOption(option).isPerformAndQuit();
+ } else {
+ return false;
}
- return false;
}
/**
@@ -983,6 +990,29 @@ public class CmdLineUtils {
}
/**
+ * Runs the {@link CmdLineOptionInstance}'s handler if it a perform and
+ * quit option.
+ *
+ * @param option
+ * The {@link CmdLineOptionInstance} whose handler will be run
+ */
+ public static void handlePerformAndQuitOption(CmdLineOptionInstance option) {
+ Validate.notNull(option);
+
+ if (option.isHandleable()
+ && ((HandleableCmdLineOption) option.getOption()).getHandler() != null) {
+ ((HandleableCmdLineOption) option.getOption()).getHandler()
+ .handleOption(null, option);
+ }
+
+ if (option.isGroup()) {
+ for (CmdLineOptionInstance subOption : option.getSubOptions()) {
+ handlePerformAndQuitOption(subOption);
+ }
+ }
+ }
+
+ /**
* Runs the {@link CmdLineOptionInstance}'s handler against the given
* {@link CmdLineAction}.
*
Modified: oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/util/TestCmdLineUtils.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/util/TestCmdLineUtils.java?rev=1293718&r1=1293717&r2=1293718&view=diff
==============================================================================
--- oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/util/TestCmdLineUtils.java (original)
+++ oodt/trunk/cli/src/test/org/apache/oodt/cas/cli/util/TestCmdLineUtils.java Sat Feb 25 22:52:28 2012
@@ -19,6 +19,7 @@ package org.apache.oodt.cas.cli.util;
//OODT static imports
import static org.apache.oodt.cas.cli.test.util.TestUtils.createAction;
import static org.apache.oodt.cas.cli.test.util.TestUtils.createActionOption;
+import static org.apache.oodt.cas.cli.test.util.TestUtils.createAdvancedOption;
import static org.apache.oodt.cas.cli.test.util.TestUtils.createGroupOption;
import static org.apache.oodt.cas.cli.test.util.TestUtils.createOptionInstance;
import static org.apache.oodt.cas.cli.test.util.TestUtils.createOptionalRequirementRule;
@@ -54,6 +55,7 @@ import org.apache.oodt.cas.cli.option.Si
import org.apache.oodt.cas.cli.option.handler.CmdLineOptionHandler;
import org.apache.oodt.cas.cli.option.validator.AllowedArgsCmdLineOptionValidator;
import org.apache.oodt.cas.cli.option.validator.CmdLineOptionValidator;
+import org.apache.oodt.cas.cli.test.util.TestUtils;
import org.apache.oodt.cas.cli.util.CmdLineUtils;
//Google imports
@@ -116,6 +118,7 @@ public class TestCmdLineUtils extends Te
Set<CmdLineOption> optionalOptions = CmdLineUtils.determineOptional(
action, options);
+ assertEquals(2, optionalOptions.size());
assertEquals(Sets.newHashSet(passOption, userOption), optionalOptions);
options = Sets.newHashSet(createSimpleOption("pass", true),
@@ -270,10 +273,10 @@ public class TestCmdLineUtils extends Te
}
public void testFindPerformAndQuitOptions() {
- SimpleCmdLineOption performAndQuitOption = createSimpleOption("help",
- false);
+ AdvancedCmdLineOption performAndQuitOption = createAdvancedOption("help",
+ null);
performAndQuitOption.setPerformAndQuit(true);
- SimpleCmdLineOption otherOption = createSimpleOption("help", false);
+ AdvancedCmdLineOption otherOption = createAdvancedOption("help", null);
otherOption.setPerformAndQuit(false);
CmdLineOptionInstance performAndQuitOptionInstance = new CmdLineOptionInstance(
@@ -287,10 +290,10 @@ public class TestCmdLineUtils extends Te
}
public void testIsPerformAndQuitOption() {
- SimpleCmdLineOption performAndQuitOption = createSimpleOption("help",
- false);
+ AdvancedCmdLineOption performAndQuitOption = createAdvancedOption("help",
+ null);
performAndQuitOption.setPerformAndQuit(true);
- SimpleCmdLineOption otherOption = createSimpleOption("help", false);
+ AdvancedCmdLineOption otherOption = createAdvancedOption("help", null);
otherOption.setPerformAndQuit(false);
assertTrue(CmdLineUtils.isPerformAndQuitOption(performAndQuitOption));