Package Apache.CLI



Class DefaultParser

  • All Implemented Interfaces:
    CommandLineParser

    public class DefaultParser
    extends java.lang.Object
    implements CommandLineParser
    This Class-File has been copied, directly from the Apache Commons Software Foundation. Other than the minor, cosmetic changes (mentioned in the second-list below), this file is perfectly identical to the original that may be found on the Apache Website: apache.org.

    1. The suggested license for using this file may be read here: Apache License
    2. The Source-Code Header for this file may be viewed here: Source-File Header
    3. Partial contents of the 'site/resources/images' directory: Resource Images

    Notes about changes that have been made as a result of the import process:

    • Within all files, the original Package-Name declaration has been changed:
      Original:   package org.apache.commons.cli;
      Updated:   package Apache.CLI;

    • All Classes and Class-Members (Methods, Fields, etc...) that were previously Annotated with the @Deprecated Annotation have been summarily removed.

    • Code Formattings and Styling has been heavily modified to conform to the Standard Java-HTML Indentation & Styling Choices. The code itself remains identical, with only a few squiggly-braces '{' and '}' being removed, for cosmetic reasons (and for lowering "Developer Stress" Levels)..
    Default parser.


    • Nested Class Summary

       
      Build an Instance of this Class via a Builder rather than a Constructor
      Modifier and Type Inner-Class
      static class  DefaultParser.Builder
      A nested builder class to create DefaultParser instances using descriptive methods.
    • Field Summary

       
      Protected, Internal Fields
      Modifier and Type Field
      protected CommandLine cmd
      The command-line instance.
      protected Option currentOption
      The last option parsed.
      protected String currentToken
      The token currently processed.
      protected List expectedOpts
      The required options and groups expected to be found when parsing the command line.
      protected Options options
      The current options.
      protected boolean skipParsing
      Flag indicating if tokens should no longer be analyzed and simply added as arguments of the command line.
      protected boolean stopAtNonOption
      Flag indicating how unrecognized tokens are handled.
    • Constructor Summary

      Constructors 
      Constructor Description
      DefaultParser()
      Creates a new DefaultParser instance with partial matching enabled.
      DefaultParser​(boolean allowPartialMatching)
      Create a new DefaultParser instance with the specified partial matching policy.
    • Method Summary

       
      Create a Builder Instance
      Modifier and Type Method
      static DefaultParser.Builder builder()
      Creates a new DefaultParser.Builder to create an DefaultParser using descriptive methods.
       
      Parse the 'public static void main(String[] argv)' Argument-List
      Modifier and Type Method
      CommandLine parse​(Options options, String[] arguments)
      Parses the arguments according to the specified options.
      CommandLine parse​(Options options, String[] arguments, boolean stopAtNonOption)
      Parses the arguments according to the specified options.
      CommandLine parse​(Options options, String[] arguments, Properties properties)
      Parses the arguments according to the specified options and properties.
      CommandLine parse​(Options options, String[] arguments, Properties properties, boolean stopAtNonOption)
      Parses the arguments according to the specified options and properties.
       
      Protected, Internal Methods
      Modifier and Type Method
      protected void checkRequiredOptions()
      Throws a MissingOptionException if all of the required options are not present.
      protected void handleConcatenatedOptions​(String token)
      Breaks token into its constituent parts using the following algorithm.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DefaultParser

        🡅  🡇     🗕  🗗  🗖
        public DefaultParser()
        Creates a new DefaultParser instance with partial matching enabled. By "partial matching" we mean that given the following code:

        Example:
         final Options options = new Options();
         
         options.addOption(new Option("d", "debug", false, "Turn on debug."));
         options.addOption(new Option("e", "extract", false, "Turn on extract."));
         options.addOption(new Option("o", "option", true, "Turn on option with argument."));
        


        with "partial matching" turned on, -de only matches the "debug" option. However, with "partial matching" disabled, -de would enable both debug as well as extract options.
      • DefaultParser

        🡅  🡇     🗕  🗗  🗖
        public DefaultParser​(boolean allowPartialMatching)
        Create a new DefaultParser instance with the specified partial matching policy.

        By "partial matching" we mean that given the following code:

        Example:
         final Options options = new Options();
         
         options.addOption(new Option("d", "debug", false, "Turn on debug."));
         options.addOption(new Option("e", "extract", false, "Turn on extract."));
         options.addOption(new Option("o", "option", true, "Turn on option with argument."));
        


        with "partial matching" turned on, -de only matches the "debug" option. However, with "partial matching" disabled, -de would enable both debug as well as extract options.
        Parameters:
        allowPartialMatching - if partial matching of long options shall be enabled
    • Method Detail

      • handleConcatenatedOptions

        🡅  🡇     🗕  🗗  🗖
        protected void handleConcatenatedOptions​(java.lang.String token)
                                          throws ParseException
        Breaks token into its constituent parts using the following algorithm.
        • ignore the first character ("-")
        • for each remaining character check if an Option exists with that id.
        • if an Option does exist then add that character prepended with "-" to the list of processed tokens.
        • if the Option can have an argument value and there are remaining characters in the token then add the remaining characters as a token to the list of processed tokens.
        • if an Option does NOT exist AND stopAtNonOption IS set then add the special token "--" followed by the remaining characters and also the remaining tokens directly to the processed tokens list.
        • if an Option does NOT exist AND stopAtNonOption IS NOT set then add that character prepended with "-".
        Parameters:
        token - The current token to be burst at the first non-Option encountered.
        Throws:
        ParseException - if there are any problems encountered while parsing the command line token.
        Code:
        Exact Method Body:
         for (int i = 1; i < token.length(); i++)
         {
             final String ch = String.valueOf(token.charAt(i));
        
             if (!options.hasOption(ch))
             {
                 handleUnknownToken(stopAtNonOption && i > 1 ? token.substring(i) : token);
                 break;
             }
        
             handleOption(options.getOption(ch));
        
             if (currentOption != null && token.length() != i + 1)
             {
                 // add the trail as an argument of the option
                 currentOption.addValueForProcessing(stripLeadingAndTrailingQuotesDefaultOff(token.substring(i + 1)));
                 break;
             }
         }
        
      • parse

        🡅  🡇     🗕  🗗  🗖
        public CommandLine parse​(Options options,
                                 java.lang.String[] arguments)
                          throws ParseException
        Description copied from interface: CommandLineParser
        Parses the arguments according to the specified options.
        Specified by:
        parse in interface CommandLineParser
        Parameters:
        options - the specified Options
        arguments - the command line arguments
        Returns:
        the list of atomic option and value tokens
        Throws:
        ParseException - if there are any problems encountered while parsing the command line tokens.
        Code:
        Exact Method Body:
         return parse(options, arguments, null);
        
      • parse

        🡅  🡇     🗕  🗗  🗖
        public CommandLine parse​(Options options,
                                 java.lang.String[] arguments,
                                 boolean stopAtNonOption)
                          throws ParseException
        Description copied from interface: CommandLineParser
        Parses the arguments according to the specified options.
        Specified by:
        parse in interface CommandLineParser
        Parameters:
        options - the specified Options
        arguments - the command line arguments
        stopAtNonOption - if true an unrecognized argument stops the parsing and the remaining arguments are added to the CommandLines args list. If false an unrecognized argument triggers a ParseException.
        Returns:
        the list of atomic option and value tokens
        Throws:
        ParseException - if there are any problems encountered while parsing the command line tokens.
        Code:
        Exact Method Body:
         return parse(options, arguments, null, stopAtNonOption);
        
      • parse

        🡅  🡇     🗕  🗗  🗖
        public CommandLine parse​(Options options,
                                 java.lang.String[] arguments,
                                 java.util.Properties properties)
                          throws ParseException
        Parses the arguments according to the specified options and properties.
        Parameters:
        options - the specified Options
        arguments - the command line arguments
        properties - command line option name-value pairs
        Returns:
        the list of atomic option and value tokens
        Throws:
        ParseException - if there are any problems encountered while parsing the command line tokens.
        Code:
        Exact Method Body:
         return parse(options, arguments, properties, false);
        
      • parse

        🡅     🗕  🗗  🗖
        public CommandLine parse​(Options options,
                                 java.lang.String[] arguments,
                                 java.util.Properties properties,
                                 boolean stopAtNonOption)
                          throws ParseException
        Parses the arguments according to the specified options and properties.
        Parameters:
        options - the specified Options
        arguments - the command line arguments
        properties - command line option name-value pairs
        stopAtNonOption - if true an unrecognized argument stops the parsing and the remaining arguments are added to the CommandLines args list. If false an unrecognized argument triggers a ParseException.
        Returns:
        the list of atomic option and value tokens
        Throws:
        ParseException - if there are any problems encountered while parsing the command line tokens.
        Code:
        Exact Method Body:
         this.options            = options;
         this.stopAtNonOption    = stopAtNonOption;
        
         skipParsing     = false;
         currentOption   = null;
         expectedOpts    = new ArrayList<>(options.getRequiredOptions());
        
         // clear the data from the groups
         for (final OptionGroup group : options.getOptionGroups()) group.setSelected(null);
        
         cmd = new CommandLine();
        
         if (arguments != null)
             for (final String argument : arguments) handleToken(argument);
        
         // check the arguments of the last option
         checkRequiredArgs();
        
         // add the default options
         handleProperties(properties);
        
         checkRequiredOptions();
        
         return cmd;