package net.teamlixo.eggcrack.authentication.configuration;
import java.util.ArrayList;
import java.util.List;
public class ServiceConfiguration {
private List<Option> optionList = new ArrayList<>();
public <T> Option<T> register(Option<T> option) {
optionList.add(option);
return option;
}
public List<Option> getOptions() {
return optionList;
}
public static class Option<T> {
private final T defaultValue;
private final String name;
private volatile T value = null;
public Option(String name, T defaultValue) {
this.defaultValue = defaultValue;
this.name = name;
}
public T getDefaultValue() {
return defaultValue;
}
public String getName() {
return name;
}
public T getValue() {
return value == null ? defaultValue : value;
}
public void setValue(T value) {
this.value = value;
}
public void unset() {
setValue(null);
}
}
}