Package org.apache.commons.cli
Class Option
java.lang.Object
org.apache.commons.cli.Option
- All Implemented Interfaces:
Serializable
,Cloneable
Describes a single command-line option. It maintains information regarding the short-name of the option, the
long-name, if any exists, a flag indicating if an argument is required for this option, and a self-documenting
description of the option.
An Option is not created independently, but is created through an instance of Options
. An Option is required
to have at least a short or a long-name.
Note: once an Option
has been added to an instance of Options
, its required flag cannot be
changed.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
A nested builder class to createOption
instances using descriptive methods. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
The number of argument values this option can have.private String
The name of the argument for this option.private String
Description of the option.private String
The long representation of the option.private final String
The name of the option.private boolean
Specifies whether the argument value of this Option is optional.private boolean
Specifies whether this option is required to be present.private static final long
The serial version UID.private Class<?>
The type of this Option.static final int
Specifies the number of argument values has not been specifiedstatic final int
Specifies the number of argument values is infiniteThe list of argument values.private char
The character that is the value separator. -
Constructor Summary
ConstructorsModifierConstructorDescriptionCreates an Option using the specified parameters.Creates an Option using the specified parameters.Creates an Option using the specified parameters.private
Option
(Option.Builder builder) Private constructor used by the nested Builder class. -
Method Summary
Modifier and TypeMethodDescription(package private) boolean
Tells if the option can accept more arguments.private void
Add the value to this Option.boolean
Deprecated.Unused.(package private) void
addValueForProcessing
(String value) Adds the specified value to this Option.static Option.Builder
builder()
Returns aOption.Builder
to create anOption
using descriptive methods.static Option.Builder
Returns aOption.Builder
to create anOption
using descriptive methods.(package private) void
Clear the Option values.clone()
A rather odd clone method - due to incorrect code in 1.0 it is public and in 1.1 rather than throwing a CloneNotSupportedException it throws a RuntimeException so as to maintain backwards compat at the API level.boolean
Gets the display name for the argument value.int
getArgs()
Gets the number of argument values this Option can take.Gets the self-documenting description of this Optionint
getId()
Gets the id of this Option.(package private) String
getKey()
Gets the 'unique' Option identifier.Gets the long name of this Option.getOpt()
Gets the name of this Option.getType()
Gets the type of this Option.getValue()
Gets the specified value of this Option ornull
if there is no value.getValue
(int index) Gets the specified value of this Option ornull
if there is no value.Gets the value/first value of this Option or thedefaultValue
if there is no value.String[]
Gets the values of this Option as a String array or null if there are no valueschar
Gets the value separator character.Gets the values of this Option as a List or null if there are no values.boolean
hasArg()
Query to see if this Option requires an argumentboolean
Returns whether the display name for the argument value has been set.boolean
hasArgs()
Query to see if this Option can take many values.int
hashCode()
boolean
Query to see if this Option has a long nameprivate boolean
Returns whether this Option has any values.boolean
boolean
Return whether this Option has specified a value separator.boolean
Query to see if this Option is mandatoryprivate void
processValue
(String value) Processes the value.(package private) boolean
Tells if the option requires more arguments to be valid.void
setArgName
(String argName) Sets the display name for the argument value.void
setArgs
(int num) Sets the number of argument values this Option can take.void
setDescription
(String description) Sets the self-documenting description of this Optionvoid
setLongOpt
(String longOpt) Sets the long name of this Option.void
setOptionalArg
(boolean optionalArg) Sets whether this Option can have an optional argument.void
setRequired
(boolean required) Sets whether this Option is mandatory.void
Sets the type of this Option.void
Deprecated.since 1.3, usesetType(Class)
insteadvoid
setValueSeparator
(char sep) Sets the value separator.toString()
Dump state, suitable for debugging.
-
Field Details
-
UNINITIALIZED
public static final int UNINITIALIZEDSpecifies the number of argument values has not been specified- See Also:
-
UNLIMITED_VALUES
public static final int UNLIMITED_VALUESSpecifies the number of argument values is infinite- See Also:
-
serialVersionUID
private static final long serialVersionUIDThe serial version UID.- See Also:
-
option
The name of the option. -
longOption
The long representation of the option. -
argName
The name of the argument for this option. -
description
Description of the option. -
required
private boolean requiredSpecifies whether this option is required to be present. -
optionalArg
private boolean optionalArgSpecifies whether the argument value of this Option is optional. -
argCount
private int argCountThe number of argument values this option can have. -
type
The type of this Option. -
values
The list of argument values. -
valuesep
private char valuesepThe character that is the value separator.
-
-
Constructor Details
-
Option
Private constructor used by the nested Builder class.- Parameters:
builder
- builder used to create this option
-
Option
Creates an Option using the specified parameters.- Parameters:
option
- short representation of the optionhasArg
- specifies whether the Option takes an argument or notdescription
- describes the function of the option- Throws:
IllegalArgumentException
- if there are any non valid Option characters inopt
.
-
Option
Creates an Option using the specified parameters. The option does not take an argument.- Parameters:
option
- short representation of the optiondescription
- describes the function of the option- Throws:
IllegalArgumentException
- if there are any non valid Option characters inopt
.
-
Option
public Option(String option, String longOption, boolean hasArg, String description) throws IllegalArgumentException Creates an Option using the specified parameters.- Parameters:
option
- short representation of the optionlongOption
- the long representation of the optionhasArg
- specifies whether the Option takes an argument or notdescription
- describes the function of the option- Throws:
IllegalArgumentException
- if there are any non valid Option characters inopt
.
-
-
Method Details
-
builder
Returns aOption.Builder
to create anOption
using descriptive methods.- Returns:
- a new
Option.Builder
instance - Since:
- 1.3
-
builder
Returns aOption.Builder
to create anOption
using descriptive methods.- Parameters:
option
- short representation of the option- Returns:
- a new
Option.Builder
instance - Throws:
IllegalArgumentException
- if there are any non valid Option characters inopt
- Since:
- 1.3
-
acceptsArg
boolean acceptsArg()Tells if the option can accept more arguments.- Returns:
- false if the maximum number of arguments is reached
- Since:
- 1.3
-
add
Add the value to this Option. If the number of arguments is greater than zero and there is enough space in the list then add the value. Otherwise, throw a runtime exception.- Parameters:
value
- The value to be added to this Option- Since:
- 1.0.1
-
addValue
Deprecated.Unused.This method is not intended to be used. It was a piece of internal API that was made public in 1.0. It currently throws an UnsupportedOperationException.- Parameters:
value
- the value to add- Returns:
- always throws an
UnsupportedOperationException
- Throws:
UnsupportedOperationException
- always
-
addValueForProcessing
Adds the specified value to this Option.- Parameters:
value
- is a/the value of this Option
-
clearValues
void clearValues()Clear the Option values. After a parse is complete, these are left with data in them and they need clearing if another parse is done. See: CLI-71 -
clone
A rather odd clone method - due to incorrect code in 1.0 it is public and in 1.1 rather than throwing a CloneNotSupportedException it throws a RuntimeException so as to maintain backwards compat at the API level. After calling this method, it is very likely you will want to call clearValues().- Overrides:
clone
in classObject
- Returns:
- a clone of this Option instance
- Throws:
RuntimeException
- if aCloneNotSupportedException
has been thrown bysuper.clone()
-
equals
-
getArgName
Gets the display name for the argument value.- Returns:
- the display name for the argument value.
-
getArgs
public int getArgs()Gets the number of argument values this Option can take.A value equal to the constant
UNINITIALIZED
(= -1) indicates the number of arguments has not been specified. A value equal to the constantUNLIMITED_VALUES
(= -2) indicates that this options takes an unlimited amount of values.- Returns:
- num the number of argument values
- See Also:
-
getDescription
Gets the self-documenting description of this Option- Returns:
- The string description of this option
-
getId
public int getId()Gets the id of this Option. This is only set when the Option shortOpt is a single character. This is used for switch statements.- Returns:
- the id of this Option
-
getKey
String getKey()Gets the 'unique' Option identifier.- Returns:
- the 'unique' Option identifier
-
getLongOpt
Gets the long name of this Option.- Returns:
- Long name of this option, or null, if there is no long name
-
getOpt
Gets the name of this Option. It is this String which can be used withCommandLine.hasOption(String opt)
andCommandLine.getOptionValue(String opt)
to check for existence and argument.- Returns:
- The name of this option
-
getType
Gets the type of this Option.- Returns:
- The type of this option
-
getValue
Gets the specified value of this Option ornull
if there is no value.- Returns:
- the value/first value of this Option or
null
if there is no value.
-
getValue
Gets the specified value of this Option ornull
if there is no value.- Parameters:
index
- The index of the value to be returned.- Returns:
- the specified value of this Option or
null
if there is no value. - Throws:
IndexOutOfBoundsException
- if index is less than 1 or greater than the number of the values for this Option.
-
getValue
Gets the value/first value of this Option or thedefaultValue
if there is no value.- Parameters:
defaultValue
- The value to be returned if there is no value.- Returns:
- the value/first value of this Option or the
defaultValue
if there are no values.
-
getValues
Gets the values of this Option as a String array or null if there are no values- Returns:
- the values of this Option as a String array or null if there are no values
-
getValueSeparator
public char getValueSeparator()Gets the value separator character.- Returns:
- the value separator character.
-
getValuesList
Gets the values of this Option as a List or null if there are no values.- Returns:
- the values of this Option as a List or null if there are no values
-
hasArg
public boolean hasArg()Query to see if this Option requires an argument- Returns:
- boolean flag indicating if an argument is required
-
hasArgName
public boolean hasArgName()Returns whether the display name for the argument value has been set.- Returns:
- if the display name for the argument value has been set.
-
hasArgs
public boolean hasArgs()Query to see if this Option can take many values.- Returns:
- boolean flag indicating if multiple values are allowed
-
hashCode
public int hashCode() -
hasLongOpt
public boolean hasLongOpt()Query to see if this Option has a long name- Returns:
- boolean flag indicating existence of a long name
-
hasNoValues
private boolean hasNoValues()Returns whether this Option has any values.- Returns:
- whether this Option has any values.
-
hasOptionalArg
public boolean hasOptionalArg()- Returns:
- whether this Option can have an optional argument
-
hasValueSeparator
public boolean hasValueSeparator()Return whether this Option has specified a value separator.- Returns:
- whether this Option has specified a value separator.
- Since:
- 1.1
-
isRequired
public boolean isRequired()Query to see if this Option is mandatory- Returns:
- boolean flag indicating whether this Option is mandatory
-
processValue
Processes the value. If this Option has a value separator the value will have to be parsed into individual tokens. When n-1 tokens have been processed and there are more value separators in the value, parsing is ceased and the remaining characters are added as a single token.- Parameters:
value
- The String to be processed.- Since:
- 1.0.1
-
requiresArg
boolean requiresArg()Tells if the option requires more arguments to be valid.- Returns:
- false if the option doesn't require more arguments
- Since:
- 1.3
-
setArgName
Sets the display name for the argument value.- Parameters:
argName
- the display name for the argument value.
-
setArgs
public void setArgs(int num) Sets the number of argument values this Option can take.- Parameters:
num
- the number of argument values
-
setDescription
Sets the self-documenting description of this Option- Parameters:
description
- The description of this option- Since:
- 1.1
-
setLongOpt
Sets the long name of this Option.- Parameters:
longOpt
- the long name of this Option
-
setOptionalArg
public void setOptionalArg(boolean optionalArg) Sets whether this Option can have an optional argument.- Parameters:
optionalArg
- specifies whether the Option can have an optional argument.
-
setRequired
public void setRequired(boolean required) Sets whether this Option is mandatory.- Parameters:
required
- specifies whether this Option is mandatory
-
setType
Sets the type of this Option.- Parameters:
type
- the type of this Option- Since:
- 1.3
-
setType
Deprecated.since 1.3, usesetType(Class)
insteadSets the type of this Option.Note: this method is kept for binary compatibility and the input type is supposed to be a
Class
object.- Parameters:
type
- the type of this Option
-
setValueSeparator
public void setValueSeparator(char sep) Sets the value separator. For example if the argument value was a Java property, the value separator would be '='.- Parameters:
sep
- The value separator.
-
toString
Dump state, suitable for debugging.
-