View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.cli2;
18  
19  import java.util.ListIterator;
20  
21  /**
22   * An Option that can process values passed on the command line in the form
23   * "--file README".
24   */
25  public interface Argument extends Option {
26  
27      /**
28       * Returns the initial separator character or
29       * '\0' if no character has been set.
30       *
31       * @return char the initial separator character
32       */
33      char getInitialSeparator();
34  
35      /**
36       * Processes the "README" style element of the argument.
37       *
38       * Values identified should be added to the CommandLine object in
39       * association with this Argument.
40       *
41       * @see WriteableCommandLine#addValue(Option,Object)
42       *
43       * @param commandLine The CommandLine object to store results in.
44       * @param args The arguments to process.
45       * @param option The option to register value against.
46       * @throws OptionException if any problems occur.
47       */
48      void processValues(
49          final WriteableCommandLine commandLine,
50          final ListIterator args,
51          final Option option)
52              throws OptionException;
53  
54      /**
55       * Adds defaults to a CommandLine.
56       *
57       * @param commandLine
58       *            The CommandLine object to store defaults in.
59       * @param option
60       *            The Option to store the defaults against.
61       */
62      void defaultValues(final WriteableCommandLine commandLine, final Option option);
63  
64      /**
65       * Performs any necessary validation on the values added to the
66       * CommandLine.
67       *
68       * Validation will typically involve using the
69       * CommandLine.getValues(option) method to retrieve the values
70       * and then either checking each value.  Optionally the String
71       * value can be replaced by another Object such as a Number
72       * instance or a File instance.
73       *
74       * @see CommandLine#getValues(Option)
75       *
76       * @param commandLine The CommandLine object to query.
77       * @param option The option to lookup values with.
78       * @throws OptionException if any problems occur.
79       */
80      void validate(final WriteableCommandLine commandLine, final Option option)
81          throws OptionException;
82  
83      /**
84       * Indicates whether argument values must be present for the CommandLine to
85       * be valid.
86       *
87       * @see #getMinimum()
88       * @see #getMaximum()
89       * @return true iff the CommandLine will be invalid without at least one
90       *         value
91       */
92      boolean isRequired();
93  
94      /**
95       * Retrieves the minimum number of values required for a valid Argument
96       *
97       * @return the minimum number of values
98       */
99      int getMinimum();
100 
101     /**
102      * Retrieves the maximum number of values acceptable for a valid Argument
103      *
104      * @return the maximum number of values
105      */
106     int getMaximum();
107 }