    001    /**
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *     http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017
    018    package org.apache.commons.cli;
    019
    020    /**
    021     * A class that implements the <code>CommandLineParser</code> interface
    022     * can parse a String array according to the {@link Options} specified
    023     * and return a {@link CommandLine}.
    024     *
    025     * @author John Keyes (john at integralsource.com)
    026     * @version $Revision: 680644 $, $Date: 2008-07-29 01:13:48 -0700 (Tue, 29 Jul 2008) $
    027     */
    028    public interface CommandLineParser
    029    {
    030        /**
    031         * Parse the arguments according to the specified options.
    032         *
    033         * @param options the specified Options
    034         * @param arguments the command line arguments
    035         * @return the list of atomic option and value tokens
    036         *
    037         * @throws ParseException if there are any problems encountered
    038         * while parsing the command line tokens.
    039         */
    040        CommandLine parse(Options options, String[] arguments) throws ParseException;
    041
    042        /**
    043         * Parse the arguments according to the specified options and
    044         * properties.
    045         *
    046         * @param options the specified Options
    047         * @param arguments the command line arguments
    048         * @param properties command line option name-value pairs
    049         * @return the list of atomic option and value tokens
    050         *
    051         * @throws ParseException if there are any problems encountered
    052         * while parsing the command line tokens.
    053         */
    054        /* To maintain binary compatibility, this is commented out.
    055           It is still in the abstract Parser class, so most users will
    056           still reap the benefit.
    057        CommandLine parse(Options options, String[] arguments, Properties properties)
    058                   throws ParseException;
    059         */
    060
    061        /**
    062         * Parse the arguments according to the specified options.
    063         *
    064         * @param options the specified Options
    065         * @param arguments the command line arguments
    066         * @param stopAtNonOption specifies whether to continue parsing the
    067         * arguments if a non option is encountered.
    068         *
    069         * @return the list of atomic option and value tokens
    070         * @throws ParseException if there are any problems encountered
    071         * while parsing the command line tokens.
    072         */
    073        CommandLine parse(Options options, String[] arguments, boolean stopAtNonOption) throws ParseException;
    074
    075        /**
    076         * Parse the arguments according to the specified options and
    077         * properties.
    078         *
    079         * @param options the specified Options
    080         * @param arguments the command line arguments
    081         * @param properties command line option name-value pairs
    082         * @param stopAtNonOption specifies whether to continue parsing the
    083         *
    084         * @return the list of atomic option and value tokens
    085         * @throws ParseException if there are any problems encountered
    086         * while parsing the command line tokens.
    087         */
    088        /* To maintain binary compatibility, this is commented out.
    089           It is still in the abstract Parser class, so most users will
    090           still reap the benefit.
    091        CommandLine parse(Options options, String[] arguments, Properties properties, boolean stopAtNonOption)
    092                throws ParseException;
    093         */
    094    }