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 }