/*
- * Sone - Options.java - Copyright © 2010–2012 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.
public static interface Option<T> {
/**
- * Returns the default value of the option.
- *
- * @return The default value of the option
- */
- public T getDefault();
-
- /**
* Returns the current value of the option. If the current value is not
* set (usually {@code null}), the default value is returned.
*
*
* @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;
* {@inheritDoc}
*/
@Override
- public T getDefault() {
- return defaultValue;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
public T get() {
return (value != null) ? value : defaultValue;
}
*/
@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;