/*
- * Sone - Options.java - Copyright © 2010 David Roden
+ * Sone - Options.java - Copyright © 2010–2013 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
import java.util.HashMap;
import java.util.Map;
-import net.pterodactylus.util.validation.Validator;
+import com.google.common.base.Predicate;
/**
* Stores various options that influence Sone’s behaviour.
*
* @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
+ * @return {@code true} if this option does not have a validator, or the
+ * validator validates this object, {@code false} otherwise
*/
public boolean validate(T value);
private volatile T value;
/** The validator. */
- private Validator<T> validator;
+ private Predicate<T> validator;
/** The option watcher. */
private final OptionWatcher<T> optionWatcher;
* @param validator
* The validator for value validation (may be {@code null})
*/
- public DefaultOption(T defaultValue, Validator<T> validator) {
+ public DefaultOption(T defaultValue, Predicate<T> validator) {
this(defaultValue, validator, null);
}
* @param optionWatcher
* The option watcher (may be {@code null})
*/
- public DefaultOption(T defaultValue, Validator<T> validator, OptionWatcher<T> optionWatcher) {
+ public DefaultOption(T defaultValue, Predicate<T> validator, OptionWatcher<T> optionWatcher) {
this.defaultValue = defaultValue;
this.validator = validator;
this.optionWatcher = optionWatcher;
*/
@Override
public boolean validate(T value) {
- return (validator == null) || (value == null) || validator.validate(value);
+ return (validator == null) || (value == null) || validator.apply(value);
}
/**
*/
@Override
public void set(T value) {
- if ((value != null) && (validator != null) && (!validator.validate(value))) {
+ if ((value != null) && (validator != null) && (!validator.apply(value))) {
throw new IllegalArgumentException("New Value (" + value + ") could not be validated.");
}
T oldValue = this.value;
/**
* Adds an {@link Enum} {@link Option}.
*
+ * @param <T>
+ * The enum type
* @param name
* The name of the option
* @param enumOption
* options.<SomeEnum> getEnumOption("SomeEnumOption").get();
* </pre>
*
+ * @param <T>
+ * The enum type
* @param name
* The name of the option
* @return The enum option, or {@code null} if there is no enum option with