mirror of
https://github.com/CarmJos/EasyConfiguration.git
synced 2024-09-20 04:35:51 +00:00
refactor(api): 🤖 优化代码命名逻辑,补充部分Javadoc。
This commit is contained in:
parent
39f946c28e
commit
2e61e66cdb
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>3.5.1</version>
|
<version>3.6.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -2,6 +2,7 @@ package cc.carm.lib.configuration.core.builder;
|
|||||||
|
|
||||||
import cc.carm.lib.configuration.core.builder.list.ConfigListBuilder;
|
import cc.carm.lib.configuration.core.builder.list.ConfigListBuilder;
|
||||||
import cc.carm.lib.configuration.core.builder.map.ConfigMapBuilder;
|
import cc.carm.lib.configuration.core.builder.map.ConfigMapBuilder;
|
||||||
|
import cc.carm.lib.configuration.core.builder.map.ConfigMapCreator;
|
||||||
import cc.carm.lib.configuration.core.builder.value.ConfigValueBuilder;
|
import cc.carm.lib.configuration.core.builder.value.ConfigValueBuilder;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -19,24 +20,24 @@ public class ConfigBuilder {
|
|||||||
return new ConfigListBuilder<>(valueClass);
|
return new ConfigListBuilder<>(valueClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <K, V> @NotNull ConfigMapBuilder<LinkedHashMap<K, V>, K, V> asMap(@NotNull Class<K> keyClass,
|
public <K, V> @NotNull ConfigMapCreator<K, V> asMap(@NotNull Class<K> keyClass,
|
||||||
@NotNull Class<V> valueClass) {
|
@NotNull Class<V> valueClass) {
|
||||||
return new ConfigMapBuilder<>(LinkedHashMap::new, keyClass, valueClass);
|
return new ConfigMapCreator<>(keyClass, valueClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <K, V> @NotNull ConfigMapBuilder<HashMap<K, V>, K, V> asHashMap(@NotNull Class<K> keyClass,
|
public <K, V> @NotNull ConfigMapBuilder<HashMap<K, V>, K, V> asHashMap(@NotNull Class<K> keyClass,
|
||||||
@NotNull Class<V> valueClass) {
|
@NotNull Class<V> valueClass) {
|
||||||
return asMap(keyClass, valueClass).supplier(HashMap::new);
|
return asMap(keyClass, valueClass).asHashMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
public <K, V> @NotNull ConfigMapBuilder<LinkedHashMap<K, V>, K, V> asLinkedMap(@NotNull Class<K> keyClass,
|
public <K, V> @NotNull ConfigMapBuilder<LinkedHashMap<K, V>, K, V> asLinkedMap(@NotNull Class<K> keyClass,
|
||||||
@NotNull Class<V> valueClass) {
|
@NotNull Class<V> valueClass) {
|
||||||
return asMap(keyClass, valueClass);
|
return asMap(keyClass, valueClass).asLinkedMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
public <K extends Comparable<K>, V> @NotNull ConfigMapBuilder<TreeMap<K, V>, K, V> asTreeMap(@NotNull Class<K> keyClass,
|
public <K extends Comparable<K>, V> @NotNull ConfigMapBuilder<TreeMap<K, V>, K, V> asTreeMap(@NotNull Class<K> keyClass,
|
||||||
@NotNull Class<V> valueClass) {
|
@NotNull Class<V> valueClass) {
|
||||||
return asMap(keyClass, valueClass).supplier(TreeMap::new);
|
return asMap(keyClass, valueClass).asTreeMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class SourceListBuilder<S, V> extends CommonConfigBuilder<List<V>, SourceListBuilder<S, V>> {
|
public class SourceListBuilder<S, V> extends CommonConfigBuilder<List<V>, SourceListBuilder<S, V>> {
|
||||||
@ -37,6 +38,10 @@ public class SourceListBuilder<S, V> extends CommonConfigBuilder<List<V>, Source
|
|||||||
return defaults(new ArrayList<>(Arrays.asList(values)));
|
return defaults(new ArrayList<>(Arrays.asList(values)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final @NotNull SourceListBuilder<S, V> defaults(@NotNull Collection<V> values) {
|
||||||
|
return defaults(new ArrayList<>(values));
|
||||||
|
}
|
||||||
|
|
||||||
public @NotNull SourceListBuilder<S, V> parseSource(ConfigDataFunction<Object, S> sourceParser) {
|
public @NotNull SourceListBuilder<S, V> parseSource(ConfigDataFunction<Object, S> sourceParser) {
|
||||||
this.sourceParser = sourceParser;
|
this.sourceParser = sourceParser;
|
||||||
return this;
|
return this;
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
package cc.carm.lib.configuration.core.builder.map;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class ConfigMapCreator<K, V> {
|
||||||
|
|
||||||
|
protected final @NotNull Class<K> keyClass;
|
||||||
|
protected final @NotNull Class<V> valueClass;
|
||||||
|
|
||||||
|
public ConfigMapCreator(@NotNull Class<K> keyClass, @NotNull Class<V> valueClass) {
|
||||||
|
this.keyClass = keyClass;
|
||||||
|
this.valueClass = valueClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public <M extends Map<K, V>> @NotNull ConfigMapBuilder<M, K, V> asMap(Supplier<M> mapSuppler) {
|
||||||
|
return new ConfigMapBuilder<>(mapSuppler, keyClass, valueClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull ConfigMapBuilder<HashMap<K, V>, K, V> asHashMap() {
|
||||||
|
return asMap(HashMap::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull ConfigMapBuilder<LinkedHashMap<K, V>, K, V> asLinkedMap() {
|
||||||
|
return asMap(LinkedHashMap::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull ConfigMapBuilder<TreeMap<K, V>, K, V> asTreeMap() {
|
||||||
|
return asMap(TreeMap::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -11,11 +11,16 @@ import org.jetbrains.annotations.Unmodifiable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置文件提供者,用于为 {@link ConfigValue} 提供配置文件的源,以便实现读取、保存等操作。
|
||||||
|
*
|
||||||
|
* @param <W> 配置文件的原生功能类
|
||||||
|
*/
|
||||||
public abstract class ConfigurationProvider<W extends ConfigurationWrapper<?>> {
|
public abstract class ConfigurationProvider<W extends ConfigurationWrapper<?>> {
|
||||||
|
|
||||||
protected long updateTime;
|
protected long updateTime;
|
||||||
|
|
||||||
public ConfigurationProvider() {
|
protected ConfigurationProvider() {
|
||||||
this.updateTime = System.currentTimeMillis();
|
this.updateTime = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ public abstract class FileConfigProvider<W extends ConfigurationWrapper<?>> exte
|
|||||||
|
|
||||||
protected final @NotNull File file;
|
protected final @NotNull File file;
|
||||||
|
|
||||||
public FileConfigProvider(@NotNull File file) {
|
protected FileConfigProvider(@NotNull File file) {
|
||||||
this.file = file;
|
this.file = file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,14 +15,22 @@ public abstract class ConfigValue<T> extends ValueManifest<T> {
|
|||||||
return new ConfigBuilder();
|
return new ConfigBuilder();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigValue(@NotNull ValueManifest<T> manifest) {
|
protected ConfigValue(@NotNull ValueManifest<T> manifest) {
|
||||||
super(manifest.provider, manifest.configPath, manifest.headerComments, manifest.inlineComment, manifest.defaultValue);
|
super(manifest.provider, manifest.configPath, manifest.headerComments, manifest.inlineComment, manifest.defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param provider 配置文件提供者
|
||||||
|
* @param configPath 配置路径
|
||||||
|
* @param headerComments 头部注释内容
|
||||||
|
* @param inlineComments 行内注释内容
|
||||||
|
* @param defaultValue 默认参数值
|
||||||
|
* @deprecated 请使用 {@link #ConfigValue(ValueManifest)} 构造器。
|
||||||
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public ConfigValue(@Nullable ConfigurationProvider<?> provider, @Nullable String configPath,
|
protected ConfigValue(@Nullable ConfigurationProvider<?> provider, @Nullable String configPath,
|
||||||
@Nullable List<String> headerComments, @Nullable String inlineComments,
|
@Nullable List<String> headerComments, @Nullable String inlineComments,
|
||||||
@Nullable T defaultValue) {
|
@Nullable T defaultValue) {
|
||||||
super(provider, configPath, headerComments, inlineComments, defaultValue);
|
super(provider, configPath, headerComments, inlineComments, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,11 @@ import org.jetbrains.annotations.Unmodifiable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置值描述清单。用于描述一个配置值的相关基础信息。
|
||||||
|
*
|
||||||
|
* @param <T> 配置值类型
|
||||||
|
*/
|
||||||
public class ValueManifest<T> {
|
public class ValueManifest<T> {
|
||||||
|
|
||||||
public static <V> ValueManifest<V> of(@Nullable ConfigurationProvider<?> provider, @Nullable String configPath,
|
public static <V> ValueManifest<V> of(@Nullable ConfigurationProvider<?> provider, @Nullable String configPath,
|
||||||
@ -30,6 +35,13 @@ public class ValueManifest<T> {
|
|||||||
|
|
||||||
protected @Nullable T defaultValue;
|
protected @Nullable T defaultValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param provider 配置文件提供者
|
||||||
|
* @param configPath 配置路径
|
||||||
|
* @param headerComments 头部注释内容
|
||||||
|
* @param inlineComment 行内注释内容
|
||||||
|
* @param defaultValue 默认参数值
|
||||||
|
*/
|
||||||
public ValueManifest(@Nullable ConfigurationProvider<?> provider, @Nullable String configPath,
|
public ValueManifest(@Nullable ConfigurationProvider<?> provider, @Nullable String configPath,
|
||||||
@Nullable List<String> headerComments, @Nullable String inlineComment,
|
@Nullable List<String> headerComments, @Nullable String inlineComment,
|
||||||
@Nullable T defaultValue) {
|
@Nullable T defaultValue) {
|
||||||
@ -40,12 +52,20 @@ public class ValueManifest<T> {
|
|||||||
this.defaultValue = defaultValue;
|
this.defaultValue = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 此方法用于 {@link cc.carm.lib.configuration.core.ConfigInitializer<T>} 工具对配置值进行统一初始化操作。
|
||||||
|
*
|
||||||
|
* @param provider 配置文件提供者
|
||||||
|
* @param configPath 配置路径
|
||||||
|
* @param headerComments 头部注释内容
|
||||||
|
* @param inlineComment 行内注释内容
|
||||||
|
*/
|
||||||
protected void initialize(@NotNull ConfigurationProvider<?> provider, @NotNull String configPath,
|
protected void initialize(@NotNull ConfigurationProvider<?> provider, @NotNull String configPath,
|
||||||
@Nullable List<String> headerComments, @Nullable String inlineComments) {
|
@Nullable List<String> headerComments, @Nullable String inlineComment) {
|
||||||
if (this.provider == null) this.provider = provider;
|
if (this.provider == null) this.provider = provider;
|
||||||
if (this.configPath == null) this.configPath = configPath;
|
if (this.configPath == null) this.configPath = configPath;
|
||||||
if (this.headerComments == null) this.headerComments = headerComments;
|
if (this.headerComments == null) this.headerComments = headerComments;
|
||||||
if (this.inlineComment == null) this.inlineComment = inlineComments;
|
if (this.inlineComment == null) this.inlineComment = inlineComment;
|
||||||
|
|
||||||
if (getHeaderComments() != null) {
|
if (getHeaderComments() != null) {
|
||||||
this.provider.setHeaderComment(getConfigPath(), getHeaderComments());
|
this.provider.setHeaderComment(getConfigPath(), getHeaderComments());
|
||||||
|
@ -13,10 +13,19 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
public class ConfiguredList<V> extends CachedConfigValue<List<V>> implements List<V> {
|
public class ConfiguredList<V> extends CachedConfigValue<List<V>> implements List<V> {
|
||||||
|
|
||||||
public static <V> @NotNull ConfigListBuilder<V> builder(@NotNull Class<V> valueClass) {
|
public static <V> @NotNull ConfigListBuilder<V> builderOf(@NotNull Class<V> valueClass) {
|
||||||
return builder().asList(valueClass);
|
return builder().asList(valueClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <V> @NotNull ConfiguredList<V> of(@NotNull Class<V> valueClass, @NotNull Collection<V> defaults) {
|
||||||
|
return builderOf(valueClass).fromObject().defaults(defaults).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
public static <V> @NotNull ConfiguredList<V> of(@NotNull Class<V> valueClass, @NotNull V... defaults) {
|
||||||
|
return builderOf(valueClass).fromObject().defaults(defaults).build();
|
||||||
|
}
|
||||||
|
|
||||||
protected final @NotNull Class<V> valueClass;
|
protected final @NotNull Class<V> valueClass;
|
||||||
|
|
||||||
protected final @NotNull ConfigDataFunction<Object, V> parser;
|
protected final @NotNull ConfigDataFunction<Object, V> parser;
|
||||||
@ -57,14 +66,14 @@ public class ConfiguredList<V> extends CachedConfigValue<List<V>> implements Lis
|
|||||||
return get().get(index);
|
return get().get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> @NotNull T modifyValue(Function<List<V>, T> function) {
|
public <T> @NotNull T handle(Function<List<V>, T> function) {
|
||||||
List<V> list = get();
|
List<V> list = get();
|
||||||
T result = function.apply(list);
|
T result = function.apply(list);
|
||||||
set(list);
|
set(list);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull List<V> modifyList(Consumer<List<V>> consumer) {
|
public @NotNull List<V> modify(Consumer<List<V>> consumer) {
|
||||||
List<V> list = get();
|
List<V> list = get();
|
||||||
consumer.accept(list);
|
consumer.accept(list);
|
||||||
set(list);
|
set(list);
|
||||||
@ -91,7 +100,7 @@ public class ConfiguredList<V> extends CachedConfigValue<List<V>> implements Lis
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public V set(int index, V element) {
|
public V set(int index, V element) {
|
||||||
return modifyValue(list -> list.set(index, element));
|
return handle(list -> list.set(index, element));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -134,48 +143,48 @@ public class ConfiguredList<V> extends CachedConfigValue<List<V>> implements Lis
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean add(V v) {
|
public boolean add(V v) {
|
||||||
modifyValue(list -> list.add(v));
|
handle(list -> list.add(v));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(int index, V element) {
|
public void add(int index, V element) {
|
||||||
modifyList(list -> list.add(index, element));
|
modify(list -> list.add(index, element));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addAll(@NotNull Collection<? extends V> c) {
|
public boolean addAll(@NotNull Collection<? extends V> c) {
|
||||||
return modifyValue(list -> list.addAll(c));
|
return handle(list -> list.addAll(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addAll(int index, @NotNull Collection<? extends V> c) {
|
public boolean addAll(int index, @NotNull Collection<? extends V> c) {
|
||||||
return modifyValue(list -> list.addAll(index, c));
|
return handle(list -> list.addAll(index, c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean remove(Object o) {
|
public boolean remove(Object o) {
|
||||||
return modifyValue(list -> list.remove(o));
|
return handle(list -> list.remove(o));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public V remove(int index) {
|
public V remove(int index) {
|
||||||
return modifyValue(list -> list.remove(index));
|
return handle(list -> list.remove(index));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean removeAll(@NotNull Collection<?> c) {
|
public boolean removeAll(@NotNull Collection<?> c) {
|
||||||
return modifyValue(list -> list.removeAll(c));
|
return handle(list -> list.removeAll(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean retainAll(@NotNull Collection<?> c) {
|
public boolean retainAll(@NotNull Collection<?> c) {
|
||||||
return modifyValue(list -> list.retainAll(c));
|
return handle(list -> list.retainAll(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clear() {
|
public void clear() {
|
||||||
modifyList(List::clear);
|
modify(List::clear);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package cc.carm.lib.configuration.core.value.type;
|
package cc.carm.lib.configuration.core.value.type;
|
||||||
|
|
||||||
import cc.carm.lib.configuration.core.builder.map.ConfigMapBuilder;
|
import cc.carm.lib.configuration.core.builder.map.ConfigMapCreator;
|
||||||
import cc.carm.lib.configuration.core.function.ConfigDataFunction;
|
import cc.carm.lib.configuration.core.function.ConfigDataFunction;
|
||||||
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
|
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
|
||||||
import cc.carm.lib.configuration.core.value.ValueManifest;
|
import cc.carm.lib.configuration.core.value.ValueManifest;
|
||||||
@ -19,8 +19,8 @@ import java.util.function.Supplier;
|
|||||||
|
|
||||||
public class ConfiguredMap<K, V> extends CachedConfigValue<Map<K, V>> implements Map<K, V> {
|
public class ConfiguredMap<K, V> extends CachedConfigValue<Map<K, V>> implements Map<K, V> {
|
||||||
|
|
||||||
public static <K, V> @NotNull ConfigMapBuilder<LinkedHashMap<K, V>, K, V> builder(@NotNull Class<K> keyClass,
|
public static <K, V> @NotNull ConfigMapCreator<K, V> builderOf(@NotNull Class<K> keyClass,
|
||||||
@NotNull Class<V> valueClass) {
|
@NotNull Class<V> valueClass) {
|
||||||
return builder().asMap(keyClass, valueClass);
|
return builder().asMap(keyClass, valueClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,15 +36,13 @@ public class ConfiguredMap<K, V> extends CachedConfigValue<Map<K, V>> implements
|
|||||||
protected final @NotNull ConfigDataFunction<V, Object> valueSerializer;
|
protected final @NotNull ConfigDataFunction<V, Object> valueSerializer;
|
||||||
|
|
||||||
|
|
||||||
public ConfiguredMap(@NotNull ValueManifest<Map<K, V>> manifest
|
public ConfiguredMap(@NotNull ValueManifest<Map<K, V>> manifest,
|
||||||
,
|
|
||||||
@NotNull Supplier<? extends Map<K, V>> mapObjSupplier,
|
@NotNull Supplier<? extends Map<K, V>> mapObjSupplier,
|
||||||
@NotNull Class<K> keyClass, @NotNull ConfigDataFunction<String, K> keyParser,
|
@NotNull Class<K> keyClass, @NotNull ConfigDataFunction<String, K> keyParser,
|
||||||
@NotNull Class<V> valueClass, @NotNull ConfigDataFunction<Object, V> valueParser,
|
@NotNull Class<V> valueClass, @NotNull ConfigDataFunction<Object, V> valueParser,
|
||||||
@NotNull ConfigDataFunction<K, String> keySerializer,
|
@NotNull ConfigDataFunction<K, String> keySerializer,
|
||||||
@NotNull ConfigDataFunction<V, Object> valueSerializer) {
|
@NotNull ConfigDataFunction<V, Object> valueSerializer) {
|
||||||
super(manifest
|
super(manifest);
|
||||||
);
|
|
||||||
this.supplier = mapObjSupplier;
|
this.supplier = mapObjSupplier;
|
||||||
this.keyClass = keyClass;
|
this.keyClass = keyClass;
|
||||||
this.valueClass = valueClass;
|
this.valueClass = valueClass;
|
||||||
|
@ -14,8 +14,7 @@ import java.util.Optional;
|
|||||||
|
|
||||||
public class ConfiguredSection<V> extends CachedConfigValue<V> {
|
public class ConfiguredSection<V> extends CachedConfigValue<V> {
|
||||||
|
|
||||||
|
public static <V> @NotNull SectionValueBuilder<V> builderOf(@NotNull Class<V> valueClass) {
|
||||||
public static <V> @NotNull SectionValueBuilder<V> builder(@NotNull Class<V> valueClass) {
|
|
||||||
return builder().asValue(valueClass).fromSection();
|
return builder().asValue(valueClass).fromSection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import java.util.Optional;
|
|||||||
|
|
||||||
public class ConfiguredValue<V> extends CachedConfigValue<V> {
|
public class ConfiguredValue<V> extends CachedConfigValue<V> {
|
||||||
|
|
||||||
public static <V> ConfigValueBuilder<V> builder(Class<V> valueClass) {
|
public static <V> ConfigValueBuilder<V> builderOf(Class<V> valueClass) {
|
||||||
return builder().asValue(valueClass);
|
return builder().asValue(valueClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ public class ConfiguredValue<V> extends CachedConfigValue<V> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static <V> ConfiguredValue<V> of(Class<V> valueClass, @Nullable V defaultValue) {
|
public static <V> ConfiguredValue<V> of(Class<V> valueClass, @Nullable V defaultValue) {
|
||||||
return builder(valueClass).fromObject().defaults(defaultValue).build();
|
return builderOf(valueClass).fromObject().defaults(defaultValue).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final @NotNull Class<V> valueClass;
|
protected final @NotNull Class<V> valueClass;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>3.5.1</version>
|
<version>3.6.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -42,7 +42,7 @@ public class ConfigurationTest {
|
|||||||
|
|
||||||
System.out.println("> Clear List:");
|
System.out.println("> Clear List:");
|
||||||
System.out.println(" Before: size :" + DemoConfiguration.Sub.That.OPERATORS.size());
|
System.out.println(" Before: size :" + DemoConfiguration.Sub.That.OPERATORS.size());
|
||||||
DemoConfiguration.Sub.That.OPERATORS.modifyList(List::clear);
|
DemoConfiguration.Sub.That.OPERATORS.modify(List::clear);
|
||||||
System.out.println(" After size :" + DemoConfiguration.Sub.That.OPERATORS.size());
|
System.out.println(" After size :" + DemoConfiguration.Sub.That.OPERATORS.size());
|
||||||
|
|
||||||
System.out.println("> Test Section:");
|
System.out.println("> Test Section:");
|
||||||
|
@ -43,7 +43,7 @@ public class DemoConfiguration extends ConfigurationRoot {
|
|||||||
|
|
||||||
@HeaderComment({"[ID - UUID]对照表", "", "用于测试Map类型的解析与序列化保存"})
|
@HeaderComment({"[ID - UUID]对照表", "", "用于测试Map类型的解析与序列化保存"})
|
||||||
public static final ConfiguredMap<Integer, UUID> USERS = ConfiguredMap
|
public static final ConfiguredMap<Integer, UUID> USERS = ConfiguredMap
|
||||||
.builder(Integer.class, UUID.class).fromString()
|
.linkedOf(Integer.class, UUID.class).fromString()
|
||||||
.parseKey(Integer::parseInt)
|
.parseKey(Integer::parseInt)
|
||||||
.parseValue(v -> Objects.requireNonNull(UUID.fromString(v)))
|
.parseValue(v -> Objects.requireNonNull(UUID.fromString(v)))
|
||||||
.build();
|
.build();
|
||||||
@ -58,14 +58,14 @@ public class DemoConfiguration extends ConfigurationRoot {
|
|||||||
@ConfigPath(value = "uuid-value", root = true)
|
@ConfigPath(value = "uuid-value", root = true)
|
||||||
@InlineComment("This is an inline comment")
|
@InlineComment("This is an inline comment")
|
||||||
public static final ConfigValue<UUID> UUID_CONFIG_VALUE = ConfiguredValue
|
public static final ConfigValue<UUID> UUID_CONFIG_VALUE = ConfiguredValue
|
||||||
.builder(UUID.class).fromString()
|
.builderOf(UUID.class).fromString()
|
||||||
.parseValue((data, defaultValue) -> UUID.fromString(data))
|
.parseValue((data, defaultValue) -> UUID.fromString(data))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public static class That extends ConfigurationRoot {
|
public static class That extends ConfigurationRoot {
|
||||||
|
|
||||||
public static final ConfiguredList<UUID> OPERATORS = ConfiguredList
|
public static final ConfiguredList<UUID> OPERATORS = ConfiguredList
|
||||||
.builder(UUID.class).fromString()
|
.builderOf(UUID.class).fromString()
|
||||||
.parseValue(s -> Objects.requireNonNull(UUID.fromString(s)))
|
.parseValue(s -> Objects.requireNonNull(UUID.fromString(s)))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>3.5.1</version>
|
<version>3.6.0</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>3.5.1</version>
|
<version>3.6.0</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>3.5.1</version>
|
<version>3.6.0</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -41,6 +41,8 @@ public class DemoConfigTest {
|
|||||||
AbstractModel anyModel = ModelConfiguration.ANY_MODEL.get();
|
AbstractModel anyModel = ModelConfiguration.ANY_MODEL.get();
|
||||||
if (anyModel != null) System.out.println(anyModel.getName());
|
if (anyModel != null) System.out.println(anyModel.getName());
|
||||||
|
|
||||||
|
ModelConfiguration.MODELS.forEach(System.out::println);
|
||||||
|
|
||||||
System.out.println("----------------------------------------------------");
|
System.out.println("----------------------------------------------------");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,11 +4,14 @@ import cc.carm.lib.configuration.core.ConfigurationRoot;
|
|||||||
import cc.carm.lib.configuration.core.annotation.ConfigPath;
|
import cc.carm.lib.configuration.core.annotation.ConfigPath;
|
||||||
import cc.carm.lib.configuration.core.annotation.HeaderComment;
|
import cc.carm.lib.configuration.core.annotation.HeaderComment;
|
||||||
import cc.carm.lib.configuration.core.value.ConfigValue;
|
import cc.carm.lib.configuration.core.value.ConfigValue;
|
||||||
|
import cc.carm.lib.configuration.core.value.type.ConfiguredList;
|
||||||
import cc.carm.lib.configuration.demo.tests.model.AbstractModel;
|
import cc.carm.lib.configuration.demo.tests.model.AbstractModel;
|
||||||
import cc.carm.lib.configuration.yaml.value.ConfiguredSerializable;
|
import cc.carm.lib.configuration.yaml.value.ConfiguredSerializable;
|
||||||
import config.model.AnyModel;
|
import config.model.AnyModel;
|
||||||
import config.model.SomeModel;
|
import config.model.SomeModel;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@HeaderComment("以下内容用于测试序列化")
|
@HeaderComment("以下内容用于测试序列化")
|
||||||
@ConfigPath("model-test")
|
@ConfigPath("model-test")
|
||||||
public class ModelConfiguration extends ConfigurationRoot {
|
public class ModelConfiguration extends ConfigurationRoot {
|
||||||
@ -21,4 +24,11 @@ public class ModelConfiguration extends ConfigurationRoot {
|
|||||||
AnyModel.class, AnyModel.random()
|
AnyModel.class, AnyModel.random()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static final ConfiguredList<AnyModel> MODELS = ConfiguredList.builderOf(AnyModel.class)
|
||||||
|
.fromObject()
|
||||||
|
.parseValue((section) -> AnyModel.deserialize((Map<String, ?>) section))
|
||||||
|
.serializeValue(AnyModel::serialize)
|
||||||
|
.defaults(AnyModel.random(), AnyModel.random(), AnyModel.random())
|
||||||
|
.build();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
2
pom.xml
2
pom.xml
@ -15,7 +15,7 @@
|
|||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>3.5.1</version>
|
<version>3.6.0</version>
|
||||||
<modules>
|
<modules>
|
||||||
<module>core</module>
|
<module>core</module>
|
||||||
<module>demo</module>
|
<module>demo</module>
|
||||||
|
Loading…
Reference in New Issue
Block a user