OptionHandler used with Argument for parsing typical "sub-command" pattern.
The "sub-command" pattern refers to the design of the command line like git and svn, where
the first argument to the command designates a sub-command (say git checkout), then everything
that follows afterward are parsed by this sub-command (which is usually different depending on
which sub-command was selected.)
This OptionHandler models this design pattern with the SubCommands annotation.
See the following example:
class Git {
@Argument(handler={@link SubCommandHandler}.class)
@SubCommands({
@SubCommand(name="checkout", impl=CheckoutCommand.class),
@SubCommand(name="commit", impl=CommitCommand.class),
...
})
Command cmd;
@Option(name="-r")
boolean recursive;
public static void main(String[] args) {
Git git = new Git();
new CmdLineParser(git).parseArgument(args);
git.cmd.execute();
}
}
class CheckoutCommand {
@Option(name="-a")
boolean all;
...
}
An example of legal command line option for this is -r checkout -a.
SubCommand only works with Argument and not with Option.
SubCommands that specify possible sub-commands.
Options that you define in the Git class above can parse options that appear
prior to the sub-command name. This is useful for defining global options that work across sub-commands.
CmdLineParser will be created to parse its annotations.
CmdLineParser
This class defines a number of protected methods that allow subtypes to customize various parts of the behaviours. This should also serve as an example if you want to combine this with more sophisticated sub-command lookup, such as through META-INF/services, sezpoz, or annotation indexer.
| Modifier and Type | Field and Description |
|---|---|
| private final SubCommands |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| protected CmdLineParser | |
| protected int | |
| public String | getDefaultMetaVariable()
Implements abstract org. Gets the default meta variable name used to print the usage screen. |
| public String | |
| protected Object | |
| public int | parseArguments(Parameters
The rest of the arguments. This method can use this
object to access the arguments of the option if necessary.
The object is valid only during the method call. params)Implements abstract org. Called if the option that this owner recognizes is found. |
| protected Object |
| commands | back to summary |
|---|---|
| private final SubCommands commands | |
| SubCommandHandler | back to summary |
|---|---|
| public SubCommandHandler(CmdLineParser parser, OptionDef option, Setter<Object> setter) | |
| configureParser | back to summary |
|---|---|
| protected CmdLineParser configureParser(Object subCmd, SubCommand c) | |
| fallback | back to summary |
|---|---|
| protected int fallback(String subCmd) throws CmdLineException | |
| getDefaultMetaVariable | back to summary |
|---|---|
| public String getDefaultMetaVariable() Implements abstract org. Doc from org. Gets the default meta variable name used to print the usage screen.
The value returned by this method can be a reference in the
| |
| getMetaVariable | back to summary |
|---|---|
| public String getMetaVariable(ResourceBundle rb) Overrides org.
| |
| instantiate | back to summary |
|---|---|
| protected Object instantiate(SubCommand c) | |
| parseArguments | back to summary |
|---|---|
| public int parseArguments(Parameters params) throws CmdLineException Implements abstract org. Doc from org. Called if the option that this owner recognizes is found.
| |
| subCommand | back to summary |
|---|---|
| protected Object subCommand(SubCommand c, final Parameters params) throws CmdLineException | |