Class Option.Builder

  • Enclosing class:
    Option

    public static final class Option.Builder
    extends java.lang.Object
    Builds Option instances using descriptive methods.

    Example usage:

     Option option = Option.builder("a").required(true).longOpt("arg-name").build();
     
    Since:
    1.3
    • Field Detail

      • DEFAULT_TYPE

        private static final java.lang.Class<java.lang.String> DEFAULT_TYPE
        The default type.
      • argCount

        private int argCount
        The number of argument values this option can have.
      • argName

        private java.lang.String argName
        The name of the argument for this option.
      • converter

        private Converter<?,​?> converter
        The converter to convert to type.
      • description

        private java.lang.String description
        Description of the option.
      • longOption

        private java.lang.String longOption
        The long representation of the option.
      • option

        private java.lang.String option
        The name of the option.
      • optionalArg

        private boolean optionalArg
        Specifies whether the argument value of this Option is optional.
      • required

        private boolean required
        Specifies whether this option is required to be present.
      • type

        private java.lang.Class<?> type
        The type of this Option.
      • valueSeparator

        private char valueSeparator
        The character that is the value separator.
    • Constructor Detail

      • Builder

        private Builder​(java.lang.String option)
                 throws java.lang.IllegalArgumentException
        Constructs a new Builder with the minimum required parameters for an Option instance.
        Parameters:
        option - short representation of the option.
        Throws:
        java.lang.IllegalArgumentException - if there are any non valid Option characters in opt.
    • Method Detail

      • toType

        private static java.lang.Class<?> toType​(java.lang.Class<?> type)
        Returns the input Class or the default type (String) if null.
        Parameters:
        type - the candidate Class.
        Returns:
        the input Class or the default type (String) if null.
      • argName

        public Option.Builder argName​(java.lang.String argName)
        Sets the display name for the argument value.
        Parameters:
        argName - the display name for the argument value.
        Returns:
        this builder, to allow method chaining.
      • build

        public Option build()
        Constructs an Option with the values declared by this Option.Builder.
        Returns:
        the new Option.
        Throws:
        java.lang.IllegalArgumentException - if neither opt or longOpt has been set.
      • converter

        public Option.Builder converter​(Converter<?,​?> converter)
        Sets the converter for the option.

        Note: see TypeHandler for serialization discussion.

        Parameters:
        converter - the Converter to use.
        Returns:
        this builder, to allow method chaining.
        Since:
        1.7.0
      • deprecated

        public Option.Builder deprecated()
        Marks this Option as deprecated.
        Returns:
        this builder.
        Since:
        1.7.0
      • deprecated

        public Option.Builder deprecated​(DeprecatedAttributes deprecated)
        Sets whether the Option is deprecated.
        Parameters:
        deprecated - specifies whether the Option is deprecated.
        Returns:
        this builder.
        Since:
        1.7.0
      • desc

        public Option.Builder desc​(java.lang.String description)
        Sets the description for this option.
        Parameters:
        description - the description of the option.
        Returns:
        this builder, to allow method chaining.
      • hasArg

        public Option.Builder hasArg()
        Tests whether the Option will require an argument.
        Returns:
        this builder, to allow method chaining.
      • hasArg

        public Option.Builder hasArg​(boolean hasArg)
        Tests whether the Option has an argument or not.
        Parameters:
        hasArg - specifies whether the Option takes an argument or not.
        Returns:
        this builder, to allow method chaining.
      • hasArgs

        public Option.Builder hasArgs()
        Tests whether the Option can have unlimited argument values.
        Returns:
        this builder.
      • longOpt

        public Option.Builder longOpt​(java.lang.String longOpt)
        Sets the long name of the Option.
        Parameters:
        longOpt - the long name of the Option
        Returns:
        this builder.
      • numberOfArgs

        public Option.Builder numberOfArgs​(int argCount)
        Sets the number of argument values the Option can take.
        Parameters:
        argCount - the number of argument values
        Returns:
        this builder.
      • option

        public Option.Builder option​(java.lang.String option)
                              throws java.lang.IllegalArgumentException
        Sets the name of the Option.
        Parameters:
        option - the name of the Option.
        Returns:
        this builder.
        Throws:
        java.lang.IllegalArgumentException - if there are any non valid Option characters in opt.
        Since:
        1.5.0
      • optionalArg

        public Option.Builder optionalArg​(boolean optionalArg)
        Sets whether the Option can have an optional argument.
        Parameters:
        optionalArg - specifies whether the Option can have an optional argument.
        Returns:
        this builder.
      • required

        public Option.Builder required()
        Marks this Option as required.
        Returns:
        this builder.
      • required

        public Option.Builder required​(boolean required)
        Sets whether the Option is required.
        Parameters:
        required - specifies whether the Option is required.
        Returns:
        this builder.
      • type

        public Option.Builder type​(java.lang.Class<?> type)
        Sets the type of the Option.
        Parameters:
        type - the type of the Option.
        Returns:
        this builder.
      • valueSeparator

        public Option.Builder valueSeparator()
        The Option will use '=' as a means to separate argument value.
        Returns:
        this builder.
      • valueSeparator

        public Option.Builder valueSeparator​(char valueSeparator)
        The Option will use sep as a means to separate argument values.

        Example:

         Option opt = Option.builder("D").hasArgs().valueSeparator('=').build();
         Options options = new Options();
         options.addOption(opt);
         String[] args = { "-Dkey=value" };
         CommandLineParser parser = new DefaultParser();
         CommandLine line = parser.parse(options, args);
         String propertyName = line.getOptionValues("D")[0]; // will be "key"
         String propertyValue = line.getOptionValues("D")[1]; // will be "value"
         
        Parameters:
        valueSeparator - The value separator.
        Returns:
        this builder.