1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.whatsnew.options;
17
18 import net.sf.whatsnew.exceptions.*;
19
20
21 /***
22 * <p>
23 * An Option
24 * </p>
25 *
26 * @author <a href="mailto:dquintela@users.sourceforge.net">Diogo Quintela</a>
27 * @version $Id: Option.java,v 1.1 2004/05/13 01:22:30 dquintela Exp $
28 */
29 abstract class Option {
30 /*** The option default value */
31 private final Object defaultValue;
32
33 /***
34 * Creates a new Option object.
35 *
36 * @param defaultValue Option default value
37 */
38 protected Option(Object defaultValue) {
39 this.defaultValue = defaultValue;
40 }
41
42 /***
43 * Getter for {@link #defaultValue}
44 *
45 * @return The property value
46 */
47 public Object getDefaultValue() {
48 return defaultValue;
49 }
50
51 /***
52 * Gets value
53 *
54 * @param value The value to associate, or <code>null</code> to use default
55 * value
56 *
57 * @return The option value
58 *
59 * @throws InvalidOptionValue If the object type is invalid
60 */
61 public OptionValue getValue(Object value)
62 throws InvalidOptionValue {
63 Object optionValue = (value != null) ? value : defaultValue;
64 return getOptionValue(optionValue);
65 }
66
67 /***
68 * Gets option value
69 *
70 * @param value The value to use if possible
71 *
72 * @return The option value
73 *
74 * @throws InvalidOptionValue If the object type is invalid
75 */
76 protected abstract OptionValue getOptionValue(Object value)
77 throws InvalidOptionValue;
78 }
79