You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/06/09 19:29:52 UTC
svn commit: r665794 - in /geronimo/gshell/trunk:
gshell-commands/gshell-command-support/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
gshell-core/src/main/java/org/apache/geronimo/gshell/container/DefaultCommandContainer.java
Author: jdillon
Date: Mon Jun 9 10:29:52 2008
New Revision: 665794
URL: http://svn.apache.org/viewvc?rev=665794&view=rev
Log:
Move the CLP processing from CommandSupport to DefaultCommandContainer
Modified:
geronimo/gshell/trunk/gshell-commands/gshell-command-support/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/container/DefaultCommandContainer.java
Modified: geronimo/gshell/trunk/gshell-commands/gshell-command-support/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-command-support/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java?rev=665794&r1=665793&r2=665794&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-command-support/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-command-support/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java Mon Jun 9 10:29:52 2008
@@ -19,11 +19,7 @@
package org.apache.geronimo.gshell.command;
-import org.apache.geronimo.gshell.clp.CommandLineProcessor;
-import org.apache.geronimo.gshell.clp.Option;
-import org.apache.geronimo.gshell.clp.Printer;
import org.apache.geronimo.gshell.command.annotation.CommandComponent;
-import org.apache.geronimo.gshell.common.Arguments;
import org.apache.geronimo.gshell.io.IO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,9 +39,6 @@
protected IO io;
protected Variables variables;
-
- @Option(name="-h", aliases={"--help"}, description="Display this help message", requireOverride=true)
- private boolean displayHelp;
@Deprecated
public String getId() {
@@ -82,48 +75,9 @@
assert args != null;
init(context);
-
- log.info("Executing w/args: [{}]", Arguments.asString(args));
-
- //
- // HACK: Need to move all of this up to the container, exposing a help support component
- //
-
- CommandLineProcessor clp = new CommandLineProcessor(this);
- // clp.process(Arguments.toStringArray(args));
-
- // Handle --help/-h automatically for the command
- if (displayHelp) {
- //
- // TODO: Make a special PrinterHandler to abstract this muck from having to process it by hand
- //
-
- displayHelp(context, clp);
-
- return SUCCESS;
- }
-
+
return doExecute();
}
protected abstract Object doExecute() throws Exception;
-
- protected void displayHelp(final CommandContext context, final CommandLineProcessor clp) {
- assert context != null;
- assert clp != null;
-
- // Use the alias if we have one, else use the command name
- String name = context.getInfo().getAlias();
- if (name == null) {
- name = context.getInfo().getName();
- }
-
- //
- // FIXME: This is uuuuuggggllyyyy
- //
-
- Printer printer = new Printer(clp);
- printer.printUsage(io.out, name);
- io.out.println();
- }
}
Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/container/DefaultCommandContainer.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/container/DefaultCommandContainer.java?rev=665794&r1=665793&r2=665794&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/container/DefaultCommandContainer.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/container/DefaultCommandContainer.java Mon Jun 9 10:29:52 2008
@@ -22,9 +22,13 @@
import org.apache.geronimo.gshell.command.CommandContainer;
import org.apache.geronimo.gshell.command.CommandContext;
import org.apache.geronimo.gshell.command.Executable;
+import org.apache.geronimo.gshell.command.Command;
import org.apache.geronimo.gshell.plexus.GShellPlexusContainer;
import org.apache.geronimo.gshell.common.Arguments;
import org.apache.geronimo.gshell.clp.CommandLineProcessor;
+import org.apache.geronimo.gshell.clp.Option;
+import org.apache.geronimo.gshell.clp.Printer;
+import org.apache.geronimo.gshell.io.IO;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Configuration;
@@ -98,17 +102,48 @@
// TODO: Bind context, io and variables
// Process command line options/arguments
- CommandLineProcessor clp = new CommandLineProcessor(executable);
- clp.process(Arguments.toStringArray(args));
+ CommandLineProcessor clp = new CommandLineProcessor();
+ clp.addBean(executable);
+
+ // Attach some help context
+ HelpSupport help = new HelpSupport();
+ clp.addBean(help);
- //
- // TODO: Need to augment the clp to allow it to handle a set of objects, so we can use a nested object here to inject --help support automatically
- //
+ // Process the arguments
+ clp.process(Arguments.toStringArray(args));
+ // Display help if option detected
+ if (help.displayHelp) {
+ help.displayHelp(context, clp);
+ return Command.SUCCESS;
+ }
+
Object result = executable.execute(context, args);
log.trace("Result: {}", result);
return result;
}
+
+ private static class HelpSupport
+ {
+ @Option(name="-h", aliases={"--help"}, description="Display this help message", requireOverride=true)
+ public boolean displayHelp;
+
+ protected void displayHelp(final CommandContext context, final CommandLineProcessor clp) {
+ assert context != null;
+ assert clp != null;
+
+ // Use the alias if we have one, else use the command name
+ String name = context.getInfo().getAlias();
+ if (name == null) {
+ name = context.getInfo().getName();
+ }
+
+ IO io = context.getIO();
+ Printer printer = new Printer(clp);
+ printer.printUsage(io.out, name);
+ io.out.println();
+ }
+ }
}
\ No newline at end of file