X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FOptions.java;h=7dea2c728fd6634f6a9fa10e2c6c253e0066c95b;hb=2e6ed35cd9d29585eefc56d94214abf2d1886fda;hp=f280aaead58c69498e5b51ca817ee3bf9a234b35;hpb=14dd8f2dcddb3ebfa0618677f10fe11b8f86ecdd;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Options.java b/src/main/java/net/pterodactylus/sone/core/Options.java index f280aae..7dea2c7 100644 --- a/src/main/java/net/pterodactylus/sone/core/Options.java +++ b/src/main/java/net/pterodactylus/sone/core/Options.java @@ -1,5 +1,5 @@ /* - * Sone - Options.java - Copyright © 2010 David Roden + * Sone - Options.java - Copyright © 2010–2012 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,11 +17,8 @@ package net.pterodactylus.sone.core; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import net.pterodactylus.util.validation.Validator; @@ -72,8 +69,8 @@ public class Options { * @param value * The value to validate * @return {@code true} if this option does not have a {@link Validator} - * , or the {@link Validator} validates this object, {@code - * false} otherwise + * , or the {@link Validator} validates this object, + * {@code false} otherwise */ public boolean validate(T value); @@ -133,7 +130,29 @@ public class Options { private Validator validator; /** The option watcher. */ - private final List> optionWatchers = new ArrayList>(); + private final OptionWatcher optionWatcher; + + /** + * Creates a new default option. + * + * @param defaultValue + * The default value of the option + */ + public DefaultOption(T defaultValue) { + this(defaultValue, (OptionWatcher) null); + } + + /** + * Creates a new default option. + * + * @param defaultValue + * The default value of the option + * @param validator + * The validator for value validation (may be {@code null}) + */ + public DefaultOption(T defaultValue, Validator validator) { + this(defaultValue, validator, null); + } /** * Creates a new default option. @@ -141,9 +160,9 @@ public class Options { * @param defaultValue * The default value of the option * @param optionWatchers - * The option watchers + * The option watchers (may be {@code null}) */ - public DefaultOption(T defaultValue, OptionWatcher... optionWatchers) { + public DefaultOption(T defaultValue, OptionWatcher optionWatchers) { this(defaultValue, null, optionWatchers); } @@ -153,14 +172,14 @@ public class Options { * @param defaultValue * The default value of the option * @param validator - * The validator for value validation - * @param optionWatchers - * The option watchers + * The validator for value validation (may be {@code null}) + * @param optionWatcher + * The option watcher (may be {@code null}) */ - public DefaultOption(T defaultValue, Validator validator, OptionWatcher... optionWatchers) { + public DefaultOption(T defaultValue, Validator validator, OptionWatcher optionWatcher) { this.defaultValue = defaultValue; this.validator = validator; - this.optionWatchers.addAll(Arrays.asList(optionWatchers)); + this.optionWatcher = optionWatcher; } /** @@ -209,7 +228,7 @@ public class Options { T oldValue = this.value; this.value = value; if (!get().equals(oldValue)) { - for (OptionWatcher optionWatcher : optionWatchers) { + if (optionWatcher != null) { optionWatcher.optionChanged(this, oldValue, get()); } } @@ -310,6 +329,8 @@ public class Options { /** * Adds an {@link Enum} {@link Option}. * + * @param + * The enum type * @param name * The name of the option * @param enumOption @@ -331,11 +352,14 @@ public class Options { * options.<SomeEnum> getEnumOption("SomeEnumOption").get(); * * + * @param + * The enum type * @param name * The name of the option * @return The enum option, or {@code null} if there is no enum option with * the given name */ + @SuppressWarnings("unchecked") public > Option getEnumOption(String name) { return (Option) enumOptions.get(name); }