summaryrefslogtreecommitdiffstats
path: root/args4j/args4j/src/org/kohsuke/args4j/OptionDef.java
blob: 5601a418f79d858a64cb3382c9ae4b3bb26bfe89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package org.kohsuke.args4j;

import org.kohsuke.args4j.spi.OptionHandler;

/**
 * Run-time copy of the Option or Argument annotation. By definition, unnamed options
 * are arguments (and instances of this class). Named options are actually a subclass.
 * 
 * @author Mark Sinke
 */
public class OptionDef {
	private final String usage;
	private final String metaVar;
	private final boolean required;
	private final boolean multiValued;
	private final Class<? extends OptionHandler> handler;

	public OptionDef(Argument a, boolean forceMultiValued) {
		this(a.usage(), a.metaVar(), a.required(), a.handler(), a.multiValued() || forceMultiValued);
	}

	protected OptionDef(String usage, String metaVar, boolean required,
			Class<? extends OptionHandler> handler, boolean multiValued) {
		this.usage = usage;
		this.metaVar = metaVar;
		this.required = required;
		this.handler = handler;
		this.multiValued = multiValued;
	}

	public String usage() {
		return usage;
	}

	public String metaVar() {
		return metaVar;
	}

	public boolean required() {
		return required;
	}

	public Class<? extends OptionHandler> handler() {
		return handler;
	}

	public boolean isMultiValued() {
		return multiValued;
	}
	
	public boolean isArgument() {
		return true;
	}

	@Override
	public String toString() {
		return metaVar() != null ? metaVar() : "ARG";
	}
}