private class CommandLine.Interpreter
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private java.lang.Object |
command |
private java.util.Map<java.lang.String,CommandLine> |
commands |
private java.util.Map<java.lang.Class<?>,CommandLine.ITypeConverter<?>> |
converterRegistry |
private boolean |
isHelpRequested |
private java.util.Map<java.lang.String,java.lang.reflect.Field> |
optionName2Field |
private int |
position |
private java.util.List<java.lang.reflect.Field> |
positionalParametersFields |
private java.util.List<java.lang.reflect.Field> |
requiredFields |
private java.lang.String |
separator |
private java.util.Map<java.lang.Character,java.lang.reflect.Field> |
singleCharOption2Field |
Constructor and Description |
---|
Interpreter(java.lang.Object command) |
Modifier and Type | Method and Description |
---|---|
private int |
applyOption(java.lang.reflect.Field field,
java.lang.Class<?> annotation,
CommandLine.Range arity,
boolean valueAttachedToOption,
java.util.Stack<java.lang.String> args,
java.util.Set<java.lang.reflect.Field> initialized,
java.lang.String argDescription) |
private int |
applyValuesToArrayField(java.lang.reflect.Field field,
java.lang.Class<?> annotation,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?> cls,
java.lang.String argDescription) |
private int |
applyValuesToCollectionField(java.lang.reflect.Field field,
java.lang.Class<?> annotation,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?> cls,
java.lang.String argDescription) |
private int |
applyValuesToMapField(java.lang.reflect.Field field,
java.lang.Class<?> annotation,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?> cls,
java.lang.String argDescription) |
private int |
applyValueToSingleValuedField(java.lang.reflect.Field field,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?> cls,
java.util.Set<java.lang.reflect.Field> initialized,
java.lang.String argDescription) |
private void |
assertNoMissingParameters(java.lang.reflect.Field field,
int arity,
java.util.Stack<java.lang.String> args) |
private void |
checkMaxArityExceeded(CommandLine.Range arity,
int remainder,
java.lang.reflect.Field field,
java.lang.String[] values) |
private java.util.List<java.lang.Object> |
consumeArguments(java.lang.reflect.Field field,
java.lang.Class<?> annotation,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?> type,
int originalSize,
java.lang.String argDescription) |
private void |
consumeMapArguments(java.lang.reflect.Field field,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?>[] classes,
CommandLine.ITypeConverter<?> keyConverter,
CommandLine.ITypeConverter<?> valueConverter,
java.util.Map<java.lang.Object,java.lang.Object> result,
java.lang.String argDescription) |
private int |
consumeOneArgument(java.lang.reflect.Field field,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?> type,
java.util.List<java.lang.Object> result,
int index,
int originalSize,
java.lang.String argDescription) |
private void |
consumeOneMapArgument(java.lang.reflect.Field field,
CommandLine.Range arity,
java.util.Stack<java.lang.String> args,
java.lang.Class<?>[] classes,
CommandLine.ITypeConverter<?> keyConverter,
CommandLine.ITypeConverter<?> valueConverter,
java.util.Map<java.lang.Object,java.lang.Object> result,
int index,
java.lang.String argDescription) |
private java.util.Collection<java.lang.Object> |
createCollection(java.lang.Class<?> collectionClass) |
private java.util.Map<java.lang.Object,java.lang.Object> |
createMap(java.lang.Class<?> mapClass) |
private CommandLine.ITypeConverter<?> |
getTypeConverter(java.lang.Class<?> type,
java.lang.reflect.Field field) |
private void |
handleUnmatchedArguments(java.util.Stack<java.lang.String> args) |
private void |
handleUnmatchedArguments(java.lang.String arg) |
private boolean |
is(java.lang.reflect.Field f,
java.lang.String description,
boolean value) |
private boolean |
isAnyHelpRequested() |
private boolean |
isOption(java.lang.String arg)
Called when parsing varargs parameters for a multi-value option.
|
private java.lang.String |
optionDescription(java.lang.String prefix,
java.lang.reflect.Field field,
int index) |
private void |
parse(java.util.List<CommandLine> parsedCommands,
java.util.Stack<java.lang.String> argumentStack,
java.lang.String[] originalArgs) |
(package private) java.util.List<CommandLine> |
parse(java.lang.String... args)
Entry point into parsing command line arguments.
|
private void |
processArguments(java.util.List<CommandLine> parsedCommands,
java.util.Stack<java.lang.String> args,
java.util.Collection<java.lang.reflect.Field> required,
java.util.Set<java.lang.reflect.Field> initialized,
java.lang.String[] originalArgs) |
private void |
processClusteredShortOptions(java.util.Collection<java.lang.reflect.Field> required,
java.util.Set<java.lang.reflect.Field> initialized,
java.lang.String arg,
java.util.Stack<java.lang.String> args) |
private void |
processPositionalParameter(java.util.Collection<java.lang.reflect.Field> required,
java.util.Set<java.lang.reflect.Field> initialized,
java.util.Stack<java.lang.String> args) |
private void |
processRemainderAsPositionalParameters(java.util.Collection<java.lang.reflect.Field> required,
java.util.Set<java.lang.reflect.Field> initialized,
java.util.Stack<java.lang.String> args) |
private void |
processStandaloneOption(java.util.Collection<java.lang.reflect.Field> required,
java.util.Set<java.lang.reflect.Field> initialized,
java.lang.String arg,
java.util.Stack<java.lang.String> args,
boolean paramAttachedToKey) |
private boolean |
resemblesOption(java.lang.String arg) |
private java.lang.String[] |
split(java.lang.String value,
java.lang.reflect.Field field) |
private java.lang.String |
splitRegex(java.lang.reflect.Field field) |
private java.lang.String |
trim(java.lang.String value) |
private java.lang.Object |
tryConvert(java.lang.reflect.Field field,
int index,
CommandLine.ITypeConverter<?> converter,
java.lang.String value,
java.lang.Class<?> type) |
private java.lang.String |
unquote(java.lang.String value) |
private void |
updateHelpRequested(java.lang.reflect.Field field) |
private final java.util.Map<java.lang.String,CommandLine> commands
private final java.util.Map<java.lang.Class<?>,CommandLine.ITypeConverter<?>> converterRegistry
private final java.util.Map<java.lang.String,java.lang.reflect.Field> optionName2Field
private final java.util.Map<java.lang.Character,java.lang.reflect.Field> singleCharOption2Field
private final java.util.List<java.lang.reflect.Field> requiredFields
private final java.util.List<java.lang.reflect.Field> positionalParametersFields
private final java.lang.Object command
private boolean isHelpRequested
private java.lang.String separator
private int position
java.util.List<CommandLine> parse(java.lang.String... args)
args
- the command line argumentsCommandLine.ParameterException
- if the specified command line arguments are invalidprivate void parse(java.util.List<CommandLine> parsedCommands, java.util.Stack<java.lang.String> argumentStack, java.lang.String[] originalArgs)
private void processArguments(java.util.List<CommandLine> parsedCommands, java.util.Stack<java.lang.String> args, java.util.Collection<java.lang.reflect.Field> required, java.util.Set<java.lang.reflect.Field> initialized, java.lang.String[] originalArgs) throws java.lang.Exception
java.lang.Exception
private boolean resemblesOption(java.lang.String arg)
private void handleUnmatchedArguments(java.lang.String arg)
private void handleUnmatchedArguments(java.util.Stack<java.lang.String> args)
private void processRemainderAsPositionalParameters(java.util.Collection<java.lang.reflect.Field> required, java.util.Set<java.lang.reflect.Field> initialized, java.util.Stack<java.lang.String> args) throws java.lang.Exception
java.lang.Exception
private void processPositionalParameter(java.util.Collection<java.lang.reflect.Field> required, java.util.Set<java.lang.reflect.Field> initialized, java.util.Stack<java.lang.String> args) throws java.lang.Exception
java.lang.Exception
private void processStandaloneOption(java.util.Collection<java.lang.reflect.Field> required, java.util.Set<java.lang.reflect.Field> initialized, java.lang.String arg, java.util.Stack<java.lang.String> args, boolean paramAttachedToKey) throws java.lang.Exception
java.lang.Exception
private void processClusteredShortOptions(java.util.Collection<java.lang.reflect.Field> required, java.util.Set<java.lang.reflect.Field> initialized, java.lang.String arg, java.util.Stack<java.lang.String> args) throws java.lang.Exception
java.lang.Exception
private int applyOption(java.lang.reflect.Field field, java.lang.Class<?> annotation, CommandLine.Range arity, boolean valueAttachedToOption, java.util.Stack<java.lang.String> args, java.util.Set<java.lang.reflect.Field> initialized, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private int applyValueToSingleValuedField(java.lang.reflect.Field field, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?> cls, java.util.Set<java.lang.reflect.Field> initialized, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private int applyValuesToMapField(java.lang.reflect.Field field, java.lang.Class<?> annotation, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?> cls, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private void consumeMapArguments(java.lang.reflect.Field field, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?>[] classes, CommandLine.ITypeConverter<?> keyConverter, CommandLine.ITypeConverter<?> valueConverter, java.util.Map<java.lang.Object,java.lang.Object> result, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private void consumeOneMapArgument(java.lang.reflect.Field field, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?>[] classes, CommandLine.ITypeConverter<?> keyConverter, CommandLine.ITypeConverter<?> valueConverter, java.util.Map<java.lang.Object,java.lang.Object> result, int index, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private void checkMaxArityExceeded(CommandLine.Range arity, int remainder, java.lang.reflect.Field field, java.lang.String[] values)
private int applyValuesToArrayField(java.lang.reflect.Field field, java.lang.Class<?> annotation, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?> cls, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private int applyValuesToCollectionField(java.lang.reflect.Field field, java.lang.Class<?> annotation, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?> cls, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private java.util.List<java.lang.Object> consumeArguments(java.lang.reflect.Field field, java.lang.Class<?> annotation, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?> type, int originalSize, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private int consumeOneArgument(java.lang.reflect.Field field, CommandLine.Range arity, java.util.Stack<java.lang.String> args, java.lang.Class<?> type, java.util.List<java.lang.Object> result, int index, int originalSize, java.lang.String argDescription) throws java.lang.Exception
java.lang.Exception
private java.lang.String splitRegex(java.lang.reflect.Field field)
private java.lang.String[] split(java.lang.String value, java.lang.reflect.Field field)
private boolean isOption(java.lang.String arg)
arg
- the string to determine whether it is an option or notprivate java.lang.Object tryConvert(java.lang.reflect.Field field, int index, CommandLine.ITypeConverter<?> converter, java.lang.String value, java.lang.Class<?> type) throws java.lang.Exception
java.lang.Exception
private java.lang.String optionDescription(java.lang.String prefix, java.lang.reflect.Field field, int index)
private boolean isAnyHelpRequested()
private void updateHelpRequested(java.lang.reflect.Field field)
private boolean is(java.lang.reflect.Field f, java.lang.String description, boolean value)
private java.util.Collection<java.lang.Object> createCollection(java.lang.Class<?> collectionClass) throws java.lang.Exception
java.lang.Exception
private java.util.Map<java.lang.Object,java.lang.Object> createMap(java.lang.Class<?> mapClass) throws java.lang.Exception
java.lang.Exception
private CommandLine.ITypeConverter<?> getTypeConverter(java.lang.Class<?> type, java.lang.reflect.Field field)
private void assertNoMissingParameters(java.lang.reflect.Field field, int arity, java.util.Stack<java.lang.String> args)
private java.lang.String trim(java.lang.String value)
private java.lang.String unquote(java.lang.String value)