001/*-------------------------------------------------------------------------+ 002| | 003| Copyright 2005-2011 The ConQAT Project | 004| | 005| Licensed under the Apache License, Version 2.0 (the "License"); | 006| you may not use this file except in compliance with the License. | 007| 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+-------------------------------------------------------------------------*/ 017package org.conqat.lib.commons.options; 018 019import java.lang.annotation.Documented; 020import java.lang.annotation.ElementType; 021import java.lang.annotation.Retention; 022import java.lang.annotation.RetentionPolicy; 023import java.lang.annotation.Target; 024 025/** 026 * Annotation for exposing methods as command line options. This should only be 027 * used with methods taking zero or one parameters. 028 * 029 * @author Benjamin Hummel 030 */ 031@Documented 032@Retention(RetentionPolicy.RUNTIME) 033@Target(ElementType.METHOD) 034public @interface Option { 035 /** The optional short (i.e. single character) name of the option. */ 036 char shortName() default 0; 037 038 /** The optional long (i.e. multi-character) name of the option. */ 039 String longName() default ""; 040 041 /** 042 * If this is set to true, all non-option arguments following the annotated 043 * option are used for this option. This results in multiple calls to this 044 * options setter method. 045 */ 046 boolean greedy() default false; 047 048 /** The description of this option used for usage messages. */ 049 String description(); 050}