import net.pterodactylus.sone.core.ConfigurationSoneParser.InvalidParentAlbumFound;
import net.pterodactylus.sone.core.ConfigurationSoneParser.InvalidPostFound;
import net.pterodactylus.sone.core.ConfigurationSoneParser.InvalidPostReplyFound;
-import net.pterodactylus.sone.core.Options.DefaultOption;
import net.pterodactylus.sone.core.SoneChangeDetector.PostProcessor;
import net.pterodactylus.sone.core.SoneChangeDetector.PostReplyProcessor;
import net.pterodactylus.sone.core.event.ImageInsertFinishedEvent;
import net.pterodactylus.sone.freenet.wot.event.OwnIdentityAddedEvent;
import net.pterodactylus.sone.freenet.wot.event.OwnIdentityRemovedEvent;
import net.pterodactylus.sone.main.SonePlugin;
+import net.pterodactylus.sone.utils.DefaultOption;
import net.pterodactylus.sone.utils.IntegerRangePredicate;
import net.pterodactylus.util.config.Configuration;
import net.pterodactylus.util.config.ConfigurationException;
import java.util.HashMap;
import java.util.Map;
+import net.pterodactylus.sone.utils.Option;
+
import com.google.common.base.Predicate;
/**
*/
public class Options {
- /**
- * Contains current and default value of an option.
- *
- * @param <T>
- * The type of the option
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
- public static interface Option<T> {
-
- /**
- * Returns the current value of the option. If the current value is not
- * set (usually {@code null}), the default value is returned.
- *
- * @return The current value of the option
- */
- public T get();
-
- /**
- * Returns the real value of the option. This will also return an unset
- * value (usually {@code null})!
- *
- * @return The real value of the option
- */
- public T getReal();
-
- /**
- * Validates the given value. Note that {@code null} is always a valid
- * value!
- *
- * @param value
- * The value to validate
- * @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);
-
- /**
- * Sets the current value of the option.
- *
- * @param value
- * The new value of the option
- * @throws IllegalArgumentException
- * if the value is not valid for this option
- */
- public void set(T value) throws IllegalArgumentException;
-
- }
-
- /**
- * Basic implementation of an {@link Option}.
- *
- * @param <T>
- * The type of the option
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
- public static class DefaultOption<T> implements Option<T> {
-
- /** The default value. */
- private final T defaultValue;
-
- /** The current value. */
- private volatile T value;
-
- /** The validator. */
- private Predicate<T> validator;
-
- /**
- * Creates a new default option.
- *
- * @param defaultValue
- * The default value of the option
- */
- public DefaultOption(T defaultValue) {
- this(defaultValue, 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, Predicate<T> validator) {
- this.defaultValue = defaultValue;
- this.validator = validator;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public T get() {
- return (value != null) ? value : defaultValue;
- }
-
- /**
- * Returns the real value of the option. This will also return an unset
- * value (usually {@code null})!
- *
- * @return The real value of the option
- */
- @Override
- public T getReal() {
- return value;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean validate(T value) {
- return (validator == null) || (value == null) || validator.apply(value);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void set(T value) {
- if ((value != null) && (validator != null) && (!validator.apply(value))) {
- throw new IllegalArgumentException("New Value (" + value + ") could not be validated.");
- }
- T oldValue = this.value;
- this.value = value;
- }
-
- }
-
/** Holds all {@link Boolean} {@link Option}s. */
private final Map<String, Option<Boolean>> booleanOptions = Collections.synchronizedMap(new HashMap<String, Option<Boolean>>());
--- /dev/null
+package net.pterodactylus.sone.utils;
+
+import com.google.common.base.Predicate;
+
+/**
+ * Basic implementation of an {@link Option}.
+ *
+ * @param <T>
+ * The type of the option
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class DefaultOption<T> implements Option<T> {
+
+ /** The default value. */
+ private final T defaultValue;
+
+ /** The current value. */
+ private volatile T value;
+
+ /** The validator. */
+ private Predicate<T> validator;
+
+ /**
+ * Creates a new default option.
+ *
+ * @param defaultValue
+ * The default value of the option
+ */
+ public DefaultOption(T defaultValue) {
+ this(defaultValue, 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, Predicate<T> validator) {
+ this.defaultValue = defaultValue;
+ this.validator = validator;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public T get() {
+ return (value != null) ? value : defaultValue;
+ }
+
+ /**
+ * Returns the real value of the option. This will also return an unset
+ * value (usually {@code null})!
+ *
+ * @return The real value of the option
+ */
+ @Override
+ public T getReal() {
+ return value;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean validate(T value) {
+ return (validator == null) || (value == null) || validator.apply(value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void set(T value) {
+ if ((value != null) && (validator != null) && (!validator.apply(value))) {
+ throw new IllegalArgumentException("New Value (" + value + ") could not be validated.");
+ }
+ this.value = value;
+ }
+
+}
--- /dev/null
+package net.pterodactylus.sone.utils;
+
+/**
+ * Contains current and default value of an option.
+ *
+ * @param <T>
+ * The type of the option
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public interface Option<T> {
+
+ /**
+ * Returns the current value of the option. If the current value is not
+ * set (usually {@code null}), the default value is returned.
+ *
+ * @return The current value of the option
+ */
+ public T get();
+
+ /**
+ * Returns the real value of the option. This will also return an unset
+ * value (usually {@code null})!
+ *
+ * @return The real value of the option
+ */
+ public T getReal();
+
+ /**
+ * Validates the given value. Note that {@code null} is always a valid
+ * value!
+ *
+ * @param value
+ * The value to validate
+ * @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);
+
+ /**
+ * Sets the current value of the option.
+ *
+ * @param value
+ * The new value of the option
+ * @throws IllegalArgumentException
+ * if the value is not valid for this option
+ */
+ public void set(T value) throws IllegalArgumentException;
+
+}
+++ /dev/null
-package net.pterodactylus.sone.core;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
-
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.annotation.Nullable;
-
-import net.pterodactylus.sone.core.Options.DefaultOption;
-import net.pterodactylus.sone.core.Options.Option;
-
-import com.google.common.base.Predicate;
-import org.junit.Test;
-
-/**
- * Unit test for {@link DefaultOption}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
-public class DefaultOptionTest {
-
- private final Object defaultValue = new Object();
- private final Object acceptedValue = new Object();
- private final Predicate<Object> matchesAcceptedValue = new Predicate<Object>() {
- @Override
- public boolean apply(@Nullable Object object) {
- return acceptedValue.equals(object);
- }
- };
-
- @Test
- public void defaultOptionReturnsDefaultValueWhenUnset() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
- assertThat(defaultOption.get(), is(defaultValue));
- }
-
- @Test
- public void defaultOptionReturnsNullForRealWhenUnset() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
- assertThat(defaultOption.getReal(), nullValue());
- }
-
- @Test
- public void defaultOptionWillReturnSetValue() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
- Object newValue = new Object();
- defaultOption.set(newValue);
- assertThat(defaultOption.get(), is(newValue));
- }
-
- @Test
- public void defaultOptionWithValidatorAcceptsValidValues() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
- defaultOption.set(acceptedValue);
- assertThat(defaultOption.get(), is(acceptedValue));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void defaultOptionWithValidatorRejectsInvalidValues() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
- defaultOption.set(new Object());
- }
-
- @Test
- public void defaultOptionValidatesObjectsCorrectly() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
- assertThat(defaultOption.validate(acceptedValue), is(true));
- assertThat(defaultOption.validate(new Object()), is(false));
- }
-
- @Test
- public void settingToNullWillRestoreDefaultValue() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
- defaultOption.set(null);
- assertThat(defaultOption.get(), is(defaultValue));
- }
-
- @Test
- public void validateWithoutValidatorWillValidateNull() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
- assertThat(defaultOption.validate(null), is(true));
- }
-
- @Test
- public void validateWithValidatorWillValidateNull() {
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
- assertThat(defaultOption.validate(null), is(true));
- }
-
-}
import static org.hamcrest.Matchers.nullValue;
import static org.mockito.Mockito.mock;
-import net.pterodactylus.sone.core.Options.Option;
+import net.pterodactylus.sone.utils.Option;
import org.junit.Test;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
-import net.pterodactylus.sone.core.Options.Option;
import net.pterodactylus.sone.core.event.InsertionDelayChangedEvent;
import net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired;
import net.pterodactylus.sone.fcp.event.FcpInterfaceActivatedEvent;
import net.pterodactylus.sone.fcp.event.FcpInterfaceDeactivatedEvent;
import net.pterodactylus.sone.fcp.event.FullAccessRequiredChanged;
+import net.pterodactylus.sone.utils.Option;
import com.google.common.eventbus.EventBus;
import org.junit.Before;
--- /dev/null
+package net.pterodactylus.sone.utils;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+
+import javax.annotation.Nullable;
+
+import net.pterodactylus.sone.utils.DefaultOption;
+
+import com.google.common.base.Predicate;
+import org.junit.Test;
+
+/**
+ * Unit test for {@link DefaultOption}.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class DefaultOptionTest {
+
+ private final Object defaultValue = new Object();
+ private final Object acceptedValue = new Object();
+ private final Predicate<Object> matchesAcceptedValue = new Predicate<Object>() {
+ @Override
+ public boolean apply(@Nullable Object object) {
+ return acceptedValue.equals(object);
+ }
+ };
+
+ @Test
+ public void defaultOptionReturnsDefaultValueWhenUnset() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
+ assertThat(defaultOption.get(), is(defaultValue));
+ }
+
+ @Test
+ public void defaultOptionReturnsNullForRealWhenUnset() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
+ assertThat(defaultOption.getReal(), nullValue());
+ }
+
+ @Test
+ public void defaultOptionWillReturnSetValue() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
+ Object newValue = new Object();
+ defaultOption.set(newValue);
+ assertThat(defaultOption.get(), is(newValue));
+ }
+
+ @Test
+ public void defaultOptionWithValidatorAcceptsValidValues() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
+ defaultOption.set(acceptedValue);
+ assertThat(defaultOption.get(), is(acceptedValue));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void defaultOptionWithValidatorRejectsInvalidValues() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
+ defaultOption.set(new Object());
+ }
+
+ @Test
+ public void defaultOptionValidatesObjectsCorrectly() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
+ assertThat(defaultOption.validate(acceptedValue), is(true));
+ assertThat(defaultOption.validate(new Object()), is(false));
+ }
+
+ @Test
+ public void settingToNullWillRestoreDefaultValue() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
+ defaultOption.set(null);
+ assertThat(defaultOption.get(), is(defaultValue));
+ }
+
+ @Test
+ public void validateWithoutValidatorWillValidateNull() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
+ assertThat(defaultOption.validate(null), is(true));
+ }
+
+ @Test
+ public void validateWithValidatorWillValidateNull() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
+ assertThat(defaultOption.validate(null), is(true));
+ }
+
+}