/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link Map}<{@link Pattern}, {@link * String}> * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link Map}<{@link Pattern}, {@link * String}> */ public static ConfigurationOptionBuilder<Map<Pattern, String>> regexMapOption() { return new ConfigurationOptionBuilder<Map<Pattern, String>>(MapValueConverter.REGEX_MAP_VALUE_CONVERTER, Map.class) .defaultValue(Collections.<Pattern, String>emptyMap()); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link List}<{@link String}> * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link List}<{@link String}> */ public static ConfigurationOptionBuilder<Collection<String>> stringsOption() { return new ConfigurationOptionBuilder<Collection<String>>(SetValueConverter.STRINGS_VALUE_CONVERTER, Collection.class) .defaultValue(Collections.<String>emptySet()); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link List}<{@link String}> and all * Strings are converted to lower case. * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link List}<{@link String}> */ public static ConfigurationOptionBuilder<Collection<String>> lowerStringsOption() { return new ConfigurationOptionBuilder<Collection<String>>(SetValueConverter.LOWER_STRINGS_VALUE_CONVERTER, Collection.class) .defaultValue(Collections.<String>emptySet()); }
/** * Adds a configuration option for intended classes loaded by {@link ServiceLoader}s * * <p>Restricts the {@link #validOptions} to the class names of the {@link ServiceLoader} implementations of the * provided service loader interface.</p> * * <p> Note that the implementations have to be registered in {@code META-INF/services/{serviceLoaderInterface.getName()}}</p> */ public static <T> ConfigurationOptionBuilder<T> serviceLoaderStrategyOption(Class<T> serviceLoaderInterface) { final ConfigurationOptionBuilder<T> optionBuilder = new ConfigurationOptionBuilder<T>(ClassInstanceValueConverter.of(serviceLoaderInterface), serviceLoaderInterface); for (T impl : ServiceLoader.load(serviceLoaderInterface, ConfigurationOption.class.getClassLoader())) { optionBuilder.addValidOption(impl); } optionBuilder.sealValidOptions(); return optionBuilder; }
public static <T> ConfigurationOptionBuilder<T> jsonOption(TypeReference<T> typeReference, Class<? super T> clazz) { return new ConfigurationOptionBuilder<T>(new JsonValueConverter<T>(typeReference), clazz); }
public static <T> ConfigurationOptionBuilder<T> builder(ValueConverter<T> valueConverter, Class<? super T> valueType) { return new ConfigurationOptionBuilder<T>(valueConverter, valueType); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is an {@link Enum} * * @return a {@link ConfigurationOptionBuilder} whose value is an {@link Enum} */ public static <T extends Enum<T>> ConfigurationOptionBuilder<T> enumOption(Class<T> clazz) { final ConfigurationOptionBuilder<T> optionBuilder = new ConfigurationOptionBuilder<T>(new EnumValueConverter<T>(clazz), clazz); for (T enumConstant : clazz.getEnumConstants()) { optionBuilder.addValidOption(enumConstant); } optionBuilder.sealValidOptions(); return optionBuilder; }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link Map} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link Map} */ public static <K, V> ConfigurationOptionBuilder<Map<K, V>> mapOption(ValueConverter<K> keyConverter, ValueConverter<V> valueConverter) { return new ConfigurationOptionBuilder<Map<K, V>>(new MapValueConverter<K, V>(keyConverter, valueConverter), Map.class) .defaultValue(Collections.<K, V>emptyMap()); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link List}<{@link Pattern}> * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link List}<{@link Pattern}> */ public static ConfigurationOptionBuilder<Collection<Pattern>> regexListOption() { return new ConfigurationOptionBuilder<Collection<Pattern>>(new SetValueConverter<Pattern>(RegexValueConverter.INSTANCE), Collection.class) .defaultValue(Collections.<Pattern>emptySet()); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link String} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link String} */ public static ConfigurationOptionBuilder<List<URL>> urlsOption() { return new ConfigurationOptionBuilder<List<URL>>(new ListValueConverter<URL>(UrlValueConverter.INSTANCE), List.class) .defaultValue(Collections.<URL>emptyList()); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link Integer} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link Integer} */ public static ConfigurationOptionBuilder<Integer> integerOption() { return new ConfigurationOptionBuilder<Integer>(IntegerValueConverter.INSTANCE, Integer.class); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link String} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link String} */ public static ConfigurationOptionBuilder<URL> urlOption() { return new ConfigurationOptionBuilder<URL>(UrlValueConverter.INSTANCE, URL.class); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link Long} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link Long} */ public static ConfigurationOptionBuilder<Long> longOption() { return new ConfigurationOptionBuilder<Long>(LongValueConverter.INSTANCE, Long.class); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link Double} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link Double} */ public static ConfigurationOptionBuilder<Double> doubleOption() { return new ConfigurationOptionBuilder<Double>(DoubleValueConverter.INSTANCE, Double.class); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link String} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link String} */ public static ConfigurationOptionBuilder<String> stringOption() { return new ConfigurationOptionBuilder<String>(StringValueConverter.INSTANCE, String.class); }
/** * Constructs a {@link ConfigurationOptionBuilder} whose value is of type {@link Boolean} * * @return a {@link ConfigurationOptionBuilder} whose value is of type {@link Boolean} */ public static ConfigurationOptionBuilder<Boolean> booleanOption() { return new ConfigurationOptionBuilder<Boolean>(BooleanValueConverter.INSTANCE, Boolean.class); }