diff --git a/core/pom.xml b/core/pom.xml index 635b25a..49cd367 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -5,7 +5,7 @@ easyconfiguration-parent cc.carm.lib - 3.4.0 + 3.5.0 4.0.0 diff --git a/core/src/main/java/cc/carm/lib/configuration/core/builder/AbstractConfigBuilder.java b/core/src/main/java/cc/carm/lib/configuration/core/builder/AbstractConfigBuilder.java index 06c6219..7cfea9f 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/builder/AbstractConfigBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/builder/AbstractConfigBuilder.java @@ -1,6 +1,7 @@ package cc.carm.lib.configuration.core.builder; import cc.carm.lib.configuration.core.source.ConfigurationProvider; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.core.value.ConfigValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -66,4 +67,11 @@ public abstract class AbstractConfigBuilder buildManifest() { + return ValueManifest.of( + this.provider, this.path, + this.headerComments, this.inlineComment, this.defaultValue + ); + } + } diff --git a/core/src/main/java/cc/carm/lib/configuration/core/builder/list/SourceListBuilder.java b/core/src/main/java/cc/carm/lib/configuration/core/builder/list/SourceListBuilder.java index f9b96fc..1c09389 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/builder/list/SourceListBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/builder/list/SourceListBuilder.java @@ -65,9 +65,7 @@ public class SourceListBuilder extends CommonConfigBuilder, Source @Override public @NotNull ConfiguredList build() { return new ConfiguredList<>( - this.provider, this.path, - this.headerComments, this.inlineComment, - this.valueClass, this.defaultValue, + buildManifest(), this.valueClass, this.sourceParser.andThen(this.valueParser), this.valueSerializer.andThen(sourceSerializer) ); diff --git a/core/src/main/java/cc/carm/lib/configuration/core/builder/map/SourceMapBuilder.java b/core/src/main/java/cc/carm/lib/configuration/core/builder/map/SourceMapBuilder.java index 4823b82..f70330c 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/builder/map/SourceMapBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/builder/map/SourceMapBuilder.java @@ -2,6 +2,7 @@ package cc.carm.lib.configuration.core.builder.map; import cc.carm.lib.configuration.core.builder.CommonConfigBuilder; import cc.carm.lib.configuration.core.function.ConfigDataFunction; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.core.value.type.ConfiguredMap; import org.jetbrains.annotations.NotNull; @@ -96,10 +97,8 @@ public class SourceMapBuilder, S, K, V> extends CommonConfig @Override public @NotNull ConfiguredMap build() { return new ConfiguredMap<>( - this.provider, this.path, - this.headerComments, this.inlineComment, - this.defaultValue, this.supplier, - this.keyClass, this.keyParser, + new ValueManifest<>(provider, path, headerComments, inlineComment, defaultValue), + this.supplier, this.keyClass, this.keyParser, this.valueClass, this.sourceParser.andThen(this.valueParser), this.keySerializer, this.valueSerializer.andThen(this.sourceSerializer) ); diff --git a/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SectionValueBuilder.java b/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SectionValueBuilder.java index 898903a..fdcab92 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SectionValueBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SectionValueBuilder.java @@ -44,12 +44,7 @@ public class SectionValueBuilder @Override public @NotNull ConfiguredSection build() { - return new ConfiguredSection<>( - this.provider, this.path, - this.headerComments, this.inlineComment, - this.valueClass, this.defaultValue, - this.parser, this.serializer - ); + return new ConfiguredSection<>(buildManifest(), this.valueClass, this.parser, this.serializer); } } diff --git a/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SourceValueBuilder.java b/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SourceValueBuilder.java index 5d6caea..7ef0be8 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SourceValueBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/builder/value/SourceValueBuilder.java @@ -57,9 +57,7 @@ public class SourceValueBuilder extends CommonConfigBuilder build() { return new ConfiguredValue<>( - this.provider, this.path, - this.headerComments, this.inlineComment, - this.valueClass, this.defaultValue, + buildManifest(), this.valueClass, this.valueParser.compose(this.sourceParser), this.valueSerializer.andThen(sourceSerializer) ); diff --git a/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigDataFunction.java b/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigDataFunction.java index 9aca245..aa7a09c 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigDataFunction.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigDataFunction.java @@ -62,6 +62,94 @@ public interface ConfigDataFunction { }; } + @Contract(pure = true) + static @NotNull ConfigDataFunction parseString(Class valueClass) { + return (input) -> { + if (valueClass.isInstance(input)) return valueClass.cast(input); + else throw new IllegalArgumentException("Cannot cast string to " + valueClass.getName()); + }; + } + + @Contract(pure = true) + static @NotNull ConfigDataFunction intValue() { + return (input) -> { + if (input instanceof Integer) { + return (Integer) input; + } else if (input instanceof Number) { + return ((Number) input).intValue(); + } else throw new IllegalArgumentException("Cannot cast value to " + Integer.class.getName()); + }; + } + + @Contract(pure = true) + static @NotNull ConfigDataFunction shortValue() { + return (input) -> { + if (input instanceof Short) { + return (Short) input; + } else if (input instanceof Number) { + return ((Number) input).shortValue(); + } else throw new IllegalArgumentException("Cannot cast value to " + Short.class.getName()); + }; + } + + @Contract(pure = true) + static @NotNull ConfigDataFunction doubleValue() { + return (input) -> { + if (input instanceof Double) { + return (Double) input; + } else if (input instanceof Number) { + return ((Number) input).doubleValue(); + } else throw new IllegalArgumentException("Cannot cast value to " + Double.class.getName()); + }; + } + + @Contract(pure = true) + static @NotNull ConfigDataFunction byteValue() { + return (input) -> { + if (input instanceof Byte) { + return (Byte) input; + } else if (input instanceof Number) { + return ((Number) input).byteValue(); + } else throw new IllegalArgumentException("Cannot cast value to " + Byte.class.getName()); + }; + } + + @Contract(pure = true) + static @NotNull ConfigDataFunction floatValue() { + return (input) -> { + if (input instanceof Float) { + return (Float) input; + } else if (input instanceof Number) { + return ((Number) input).floatValue(); + } else throw new IllegalArgumentException("Cannot cast value to " + Float.class.getName()); + }; + } + + @Contract(pure = true) + static @NotNull ConfigDataFunction longValue() { + return (input) -> { + if (input instanceof Long) { + return (Long) input; + } else if (input instanceof Number) { + return ((Number) input).longValue(); + } else throw new IllegalArgumentException("Cannot cast value to " + Long.class.getName()); + }; + } + + @Contract(pure = true) + static @NotNull ConfigDataFunction booleanValue() { + return (input) -> { + if (input instanceof Boolean) { + return (Boolean) input; + } else if (input instanceof String) { + String s = (String) input; + return Boolean.parseBoolean(s) || "yes".equalsIgnoreCase(s); + } else if (input instanceof Integer) { + return ((Integer) input) == 1; + } else throw new IllegalArgumentException("Cannot cast value to " + Boolean.class.getName()); + }; + } + } diff --git a/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigValueParser.java b/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigValueParser.java index 597016c..c8e4d4e 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigValueParser.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/function/ConfigValueParser.java @@ -90,92 +90,39 @@ public interface ConfigValueParser { }; } - @Contract(pure = true) - static @NotNull ConfigValueParser castToString(Class clazz) { - return (input, defaultValue) -> { - if (input instanceof String) return (String) input; - else return input.toString(); - }; - } - @Contract(pure = true) static @NotNull ConfigValueParser intValue() { - return (input, defaultValue) -> { - if (input instanceof Integer) { - return (Integer) input; - } else if (input instanceof Number) { - return ((Number) input).intValue(); - } else throw new IllegalArgumentException("Cannot cast value to " + Integer.class.getName()); - }; + return (input, defaultValue) -> ConfigDataFunction.intValue().parse(input); } @Contract(pure = true) static @NotNull ConfigValueParser shortValue() { - return (input, defaultValue) -> { - if (input instanceof Short) { - return (Short) input; - } else if (input instanceof Number) { - return ((Number) input).shortValue(); - } else throw new IllegalArgumentException("Cannot cast value to " + Short.class.getName()); - }; + return (input, defaultValue) -> ConfigDataFunction.shortValue().parse(input); } @Contract(pure = true) static @NotNull ConfigValueParser doubleValue() { - return (input, defaultValue) -> { - if (input instanceof Double) { - return (Double) input; - } else if (input instanceof Number) { - return ((Number) input).doubleValue(); - } else throw new IllegalArgumentException("Cannot cast value to " + Double.class.getName()); - }; + return (input, defaultValue) -> ConfigDataFunction.doubleValue().parse(input); } @Contract(pure = true) static @NotNull ConfigValueParser byteValue() { - return (input, defaultValue) -> { - if (input instanceof Byte) { - return (Byte) input; - } else if (input instanceof Number) { - return ((Number) input).byteValue(); - } else throw new IllegalArgumentException("Cannot cast value to " + Byte.class.getName()); - }; + return (input, defaultValue) -> ConfigDataFunction.byteValue().parse(input); } @Contract(pure = true) static @NotNull ConfigValueParser floatValue() { - return (input, defaultValue) -> { - if (input instanceof Float) { - return (Float) input; - } else if (input instanceof Number) { - return ((Number) input).floatValue(); - } else throw new IllegalArgumentException("Cannot cast value to " + Float.class.getName()); - }; + return (input, defaultValue) -> ConfigDataFunction.floatValue().parse(input); } @Contract(pure = true) static @NotNull ConfigValueParser longValue() { - return (input, defaultValue) -> { - if (input instanceof Long) { - return (Long) input; - } else if (input instanceof Number) { - return ((Number) input).longValue(); - } else throw new IllegalArgumentException("Cannot cast value to " + Long.class.getName()); - }; + return (input, defaultValue) -> ConfigDataFunction.longValue().parse(input); } @Contract(pure = true) static @NotNull ConfigValueParser booleanValue() { - return (input, defaultValue) -> { - if (input instanceof Boolean) { - return (Boolean) input; - } else if (input instanceof String) { - String s = (String) input; - return Boolean.parseBoolean(s) || "yes".equalsIgnoreCase(s); - } else if (input instanceof Integer) { - return ((Integer) input) == 1; - } else throw new IllegalArgumentException("Cannot cast value to " + Boolean.class.getName()); - }; + return (input, defaultValue) -> ConfigDataFunction.booleanValue().parse(input); } } diff --git a/core/src/main/java/cc/carm/lib/configuration/core/value/ConfigValue.java b/core/src/main/java/cc/carm/lib/configuration/core/value/ConfigValue.java index 485efca..2d8c79c 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/value/ConfigValue.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/value/ConfigValue.java @@ -2,62 +2,34 @@ package cc.carm.lib.configuration.core.value; import cc.carm.lib.configuration.core.builder.ConfigBuilder; import cc.carm.lib.configuration.core.source.ConfigurationProvider; -import cc.carm.lib.configuration.core.source.ConfigurationWrapper; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.Unmodifiable; import java.util.List; import java.util.Objects; import java.util.Optional; -public abstract class ConfigValue { +public abstract class ConfigValue extends ValueManifest { public static @NotNull ConfigBuilder builder() { return new ConfigBuilder(); } - protected @Nullable ConfigurationProvider provider; - protected @Nullable String configPath; - - protected @Nullable List headerComments; - protected @Nullable String inlineComments; - - protected @Nullable T defaultValue; + public ConfigValue(@NotNull ValueManifest manifest) { + super(manifest.provider, manifest.configPath, manifest.headerComments, manifest.inlineComment, manifest.defaultValue); + } + @Deprecated public ConfigValue(@Nullable ConfigurationProvider provider, @Nullable String configPath, @Nullable List headerComments, @Nullable String inlineComments, @Nullable T defaultValue) { - this.provider = provider; - this.configPath = configPath; - this.headerComments = headerComments; - this.inlineComments = inlineComments; - this.defaultValue = defaultValue; + super(provider, configPath, headerComments, inlineComments, defaultValue); } public void initialize(@NotNull ConfigurationProvider provider, boolean saveDefault, @NotNull String configPath, @Nullable List headerComments, @Nullable String inlineComments) { - if (this.provider == null) this.provider = provider; - if (this.configPath == null) this.configPath = configPath; - if (this.headerComments == null) this.headerComments = headerComments; - if (this.inlineComments == null) this.inlineComments = inlineComments; + this.initialize(provider, configPath, headerComments, inlineComments); if (saveDefault) setDefault(); - - if (getHeaderComments() != null) { - this.provider.setHeaderComment(getConfigPath(), getHeaderComments()); - } - if (getInlineComments() != null) { - this.provider.setInlineComment(getConfigPath(), getInlineComments()); - } - - } - - public @Nullable T getDefaultValue() { - return defaultValue; - } - - public void setDefaultValue(@Nullable T defaultValue) { - this.defaultValue = defaultValue; } /** @@ -131,39 +103,4 @@ public abstract class ConfigValue { else return false; } - public @NotNull ConfigurationProvider getProvider() { - return Optional.ofNullable(this.provider) - .orElseThrow(() -> new IllegalStateException("Value(" + configPath + ") does not have a provider.")); - } - - public final @NotNull ConfigurationWrapper getConfiguration() { - try { - return getProvider().getConfiguration(); - } catch (Exception ex) { - throw new IllegalStateException("Value(" + configPath + ") has not been initialized", ex); - } - } - - public @NotNull String getConfigPath() { - return Optional.ofNullable(this.configPath) - .orElseThrow(() -> new IllegalStateException("No section path provided.")); - } - - protected Object getValue() { - return getConfiguration().get(getConfigPath()); - } - - protected void setValue(@Nullable Object value) { - getConfiguration().set(getConfigPath(), value); - } - - public @Nullable String getInlineComments() { - return inlineComments; - } - - @Unmodifiable - public @Nullable List getHeaderComments() { - return headerComments; - } - } diff --git a/core/src/main/java/cc/carm/lib/configuration/core/value/ValueManifest.java b/core/src/main/java/cc/carm/lib/configuration/core/value/ValueManifest.java new file mode 100644 index 0000000..92dc156 --- /dev/null +++ b/core/src/main/java/cc/carm/lib/configuration/core/value/ValueManifest.java @@ -0,0 +1,103 @@ +package cc.carm.lib.configuration.core.value; + +import cc.carm.lib.configuration.core.source.ConfigurationProvider; +import cc.carm.lib.configuration.core.source.ConfigurationWrapper; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Unmodifiable; + +import java.util.List; +import java.util.Optional; + +public class ValueManifest { + + public static ValueManifest of(@Nullable ConfigurationProvider provider, @Nullable String configPath, + @Nullable List headerComments, @Nullable String inlineComments) { + return new ValueManifest<>(provider, configPath, headerComments, inlineComments, null); + } + + public static ValueManifest of(@Nullable ConfigurationProvider provider, @Nullable String configPath, + @Nullable List headerComments, @Nullable String inlineComments, + @Nullable V defaultValue) { + return new ValueManifest<>(provider, configPath, headerComments, inlineComments, defaultValue); + } + + protected @Nullable ConfigurationProvider provider; + protected @Nullable String configPath; + + protected @Nullable List headerComments; + protected @Nullable String inlineComment; + + protected @Nullable T defaultValue; + + public ValueManifest(@Nullable ConfigurationProvider provider, @Nullable String configPath, + @Nullable List headerComments, @Nullable String inlineComment, + @Nullable T defaultValue) { + this.provider = provider; + this.configPath = configPath; + this.headerComments = headerComments; + this.inlineComment = inlineComment; + this.defaultValue = defaultValue; + } + + protected void initialize(@NotNull ConfigurationProvider provider, @NotNull String configPath, + @Nullable List headerComments, @Nullable String inlineComments) { + if (this.provider == null) this.provider = provider; + if (this.configPath == null) this.configPath = configPath; + if (this.headerComments == null) this.headerComments = headerComments; + if (this.inlineComment == null) this.inlineComment = inlineComments; + + if (getHeaderComments() != null) { + this.provider.setHeaderComment(getConfigPath(), getHeaderComments()); + } + if (getInlineComment() != null) { + this.provider.setInlineComment(getConfigPath(), getInlineComment()); + } + } + + public @Nullable T getDefaultValue() { + return this.defaultValue; + } + + public void setDefaultValue(@Nullable T defaultValue) { + this.defaultValue = defaultValue; + } + + public @NotNull ConfigurationProvider getProvider() { + return Optional.ofNullable(this.provider) + .orElseThrow(() -> new IllegalStateException("Value(" + configPath + ") does not have a provider.")); + } + + public final @NotNull ConfigurationWrapper getConfiguration() { + try { + return getProvider().getConfiguration(); + } catch (Exception ex) { + throw new IllegalStateException("Value(" + configPath + ") has not been initialized", ex); + } + } + + public @NotNull String getConfigPath() { + return Optional.ofNullable(this.configPath) + .orElseThrow(() -> new IllegalStateException("No section path provided.")); + } + + protected Object getValue() { + String path = getConfigPath(); // 当未指定路径时,优先抛出异常 + return getConfiguration().get(path); + } + + protected void setValue(@Nullable Object value) { + getConfiguration().set(getConfigPath(), value); + } + + public @Nullable String getInlineComment() { + return inlineComment; + } + + @Unmodifiable + public @Nullable List getHeaderComments() { + return headerComments; + } + + +} diff --git a/core/src/main/java/cc/carm/lib/configuration/core/value/impl/CachedConfigValue.java b/core/src/main/java/cc/carm/lib/configuration/core/value/impl/CachedConfigValue.java index eadcb08..6b973de 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/value/impl/CachedConfigValue.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/value/impl/CachedConfigValue.java @@ -1,21 +1,18 @@ package cc.carm.lib.configuration.core.value.impl; -import cc.carm.lib.configuration.core.source.ConfigurationProvider; import cc.carm.lib.configuration.core.value.ConfigValue; +import cc.carm.lib.configuration.core.value.ValueManifest; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.List; - public abstract class CachedConfigValue extends ConfigValue { protected @Nullable T cachedValue; protected long parsedTime = -1; - public CachedConfigValue(@Nullable ConfigurationProvider provider, @Nullable String sectionPath, - @Nullable List headerComments, @Nullable String inlineComments, - @Nullable T defaultValue) { - super(provider, sectionPath, headerComments, inlineComments, defaultValue); + public CachedConfigValue(@NotNull ValueManifest manifest) { + super(manifest); } protected T updateCache(T value) { diff --git a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredList.java b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredList.java index 1ad1a58..7ac2277 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredList.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredList.java @@ -2,7 +2,7 @@ package cc.carm.lib.configuration.core.value.type; import cc.carm.lib.configuration.core.builder.list.ConfigListBuilder; import cc.carm.lib.configuration.core.function.ConfigDataFunction; -import cc.carm.lib.configuration.core.source.ConfigurationProvider; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.core.value.impl.CachedConfigValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,12 +22,10 @@ public class ConfiguredList extends CachedConfigValue> implements Lis protected final @NotNull ConfigDataFunction parser; protected final @NotNull ConfigDataFunction serializer; - public ConfiguredList(@Nullable ConfigurationProvider provider, @Nullable String sectionPath, - @Nullable List headerComments, @Nullable String inlineComments, - @NotNull Class valueClass, @Nullable List defaultValue, + public ConfiguredList(@NotNull ValueManifest> manifest, @NotNull Class valueClass, @NotNull ConfigDataFunction parser, @NotNull ConfigDataFunction serializer) { - super(provider, sectionPath, headerComments, inlineComments, defaultValue); + super(manifest); this.valueClass = valueClass; this.parser = parser; this.serializer = serializer; @@ -179,7 +177,7 @@ public class ConfiguredList extends CachedConfigValue> implements Lis public void clear() { modifyList(List::clear); } - + @Override public int indexOf(Object o) { return get().indexOf(o); diff --git a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredMap.java b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredMap.java index b5d7181..e7648f1 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredMap.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredMap.java @@ -2,14 +2,17 @@ package cc.carm.lib.configuration.core.value.type; import cc.carm.lib.configuration.core.builder.map.ConfigMapBuilder; import cc.carm.lib.configuration.core.function.ConfigDataFunction; -import cc.carm.lib.configuration.core.source.ConfigurationProvider; import cc.carm.lib.configuration.core.source.ConfigurationWrapper; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.core.value.impl.CachedConfigValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Unmodifiable; -import java.util.*; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; @@ -32,15 +35,17 @@ public class ConfiguredMap extends CachedConfigValue> implements protected final @NotNull ConfigDataFunction keySerializer; protected final @NotNull ConfigDataFunction valueSerializer; - public ConfiguredMap(@Nullable ConfigurationProvider provider, @Nullable String sectionPath, - @Nullable List headerComments, @Nullable String inlineComments, - @Nullable Map defaultValue, @NotNull Supplier> supplier, + + public ConfiguredMap(@NotNull ValueManifest> manifest + , + @NotNull Supplier> mapObjSupplier, @NotNull Class keyClass, @NotNull ConfigDataFunction keyParser, @NotNull Class valueClass, @NotNull ConfigDataFunction valueParser, @NotNull ConfigDataFunction keySerializer, @NotNull ConfigDataFunction valueSerializer) { - super(provider, sectionPath, headerComments, inlineComments, defaultValue); - this.supplier = supplier; + super(manifest + ); + this.supplier = mapObjSupplier; this.keyClass = keyClass; this.valueClass = valueClass; this.keyParser = keyParser; diff --git a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredSection.java b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredSection.java index f5f4838..24870dc 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredSection.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredSection.java @@ -3,18 +3,18 @@ package cc.carm.lib.configuration.core.value.type; import cc.carm.lib.configuration.core.builder.value.SectionValueBuilder; import cc.carm.lib.configuration.core.function.ConfigDataFunction; import cc.carm.lib.configuration.core.function.ConfigValueParser; -import cc.carm.lib.configuration.core.source.ConfigurationProvider; import cc.carm.lib.configuration.core.source.ConfigurationWrapper; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.core.value.impl.CachedConfigValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.List; import java.util.Map; import java.util.Optional; public class ConfiguredSection extends CachedConfigValue { + public static @NotNull SectionValueBuilder builder(@NotNull Class valueClass) { return builder().asValue(valueClass).fromSection(); } @@ -24,12 +24,10 @@ public class ConfiguredSection extends CachedConfigValue { protected final @NotNull ConfigValueParser, V> parser; protected final @NotNull ConfigDataFunction> serializer; - public ConfiguredSection(@Nullable ConfigurationProvider provider, @Nullable String sectionPath, - @Nullable List headerComments, @Nullable String inlineComments, - @NotNull Class valueClass, @Nullable V defaultValue, + public ConfiguredSection(@NotNull ValueManifest manifest, @NotNull Class valueClass, @NotNull ConfigValueParser, V> parser, @NotNull ConfigDataFunction> serializer) { - super(provider, sectionPath, headerComments, inlineComments, defaultValue); + super(manifest); this.valueClass = valueClass; this.parser = parser; this.serializer = serializer; diff --git a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredValue.java b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredValue.java index f032a92..6630672 100644 --- a/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredValue.java +++ b/core/src/main/java/cc/carm/lib/configuration/core/value/type/ConfiguredValue.java @@ -3,12 +3,11 @@ package cc.carm.lib.configuration.core.value.type; import cc.carm.lib.configuration.core.builder.value.ConfigValueBuilder; import cc.carm.lib.configuration.core.function.ConfigDataFunction; import cc.carm.lib.configuration.core.function.ConfigValueParser; -import cc.carm.lib.configuration.core.source.ConfigurationProvider; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.core.value.impl.CachedConfigValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.List; import java.util.Optional; public class ConfiguredValue extends CachedConfigValue { @@ -30,13 +29,10 @@ public class ConfiguredValue extends CachedConfigValue { protected final @NotNull ConfigValueParser parser; protected final @NotNull ConfigDataFunction serializer; - public ConfiguredValue(@Nullable ConfigurationProvider provider, @Nullable String sectionPath, - @Nullable List headerComments, @Nullable String inlineComments, - @NotNull Class valueClass, @Nullable V defaultValue, + public ConfiguredValue(@NotNull ValueManifest manifest, @NotNull Class valueClass, @NotNull ConfigValueParser parser, @NotNull ConfigDataFunction serializer) { - - super(provider, sectionPath, headerComments, inlineComments, defaultValue); + super(manifest); this.valueClass = valueClass; this.parser = parser; this.serializer = serializer; diff --git a/demo/pom.xml b/demo/pom.xml index 3d78fd7..09b7af0 100644 --- a/demo/pom.xml +++ b/demo/pom.xml @@ -5,7 +5,7 @@ easyconfiguration-parent cc.carm.lib - 3.4.0 + 3.5.0 4.0.0 diff --git a/impl/json/pom.xml b/impl/json/pom.xml index a09ac8c..222266e 100644 --- a/impl/json/pom.xml +++ b/impl/json/pom.xml @@ -5,7 +5,7 @@ easyconfiguration-parent cc.carm.lib - 3.4.0 + 3.5.0 ../../pom.xml 4.0.0 diff --git a/impl/sql/pom.xml b/impl/sql/pom.xml index 4edb1a2..e500476 100644 --- a/impl/sql/pom.xml +++ b/impl/sql/pom.xml @@ -5,7 +5,7 @@ easyconfiguration-parent cc.carm.lib - 3.4.0 + 3.5.0 ../../pom.xml 4.0.0 diff --git a/impl/yaml/pom.xml b/impl/yaml/pom.xml index 15ea7a3..09fb26d 100644 --- a/impl/yaml/pom.xml +++ b/impl/yaml/pom.xml @@ -5,7 +5,7 @@ easyconfiguration-parent cc.carm.lib - 3.4.0 + 3.5.0 ../../pom.xml 4.0.0 diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java index b742f17..25179cd 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java @@ -1,12 +1,10 @@ package cc.carm.lib.configuration.yaml; import cc.carm.lib.configuration.core.source.ConfigurationProvider; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.core.value.impl.CachedConfigValue; import cc.carm.lib.configuration.yaml.builder.YAMLConfigBuilder; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; public abstract class YAMLValue extends CachedConfigValue { @@ -14,10 +12,8 @@ public abstract class YAMLValue extends CachedConfigValue { return new YAMLConfigBuilder(); } - public YAMLValue(@Nullable YAMLConfigProvider provider, @Nullable String configPath, - @Nullable List headerComments, @Nullable String inlineComments, - @Nullable T defaultValue) { - super(provider, configPath, headerComments, inlineComments, defaultValue); + public YAMLValue(@NotNull ValueManifest manifest) { + super(manifest); } public YAMLConfigProvider getYAMLProvider() { diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/serializable/SerializableBuilder.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/serializable/SerializableBuilder.java index 33f1090..955e93a 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/serializable/SerializableBuilder.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/serializable/SerializableBuilder.java @@ -21,7 +21,7 @@ public class SerializableBuilder @Override public @NotNull ConfiguredSerializable build() { - return new ConfiguredSerializable<>(this.provider, this.path, this.headerComments, this.inlineComment, this.valueClass, this.defaultValue); + return new ConfiguredSerializable<>(buildManifest(), this.valueClass); } diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java index d4bb8eb..750785b 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java @@ -1,12 +1,11 @@ package cc.carm.lib.configuration.yaml.value; -import cc.carm.lib.configuration.yaml.YAMLConfigProvider; +import cc.carm.lib.configuration.core.value.ValueManifest; import cc.carm.lib.configuration.yaml.YAMLValue; import org.bspfsystems.yamlconfiguration.serialization.ConfigurationSerializable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.List; import java.util.Optional; public class ConfiguredSerializable extends YAMLValue { @@ -22,10 +21,8 @@ public class ConfiguredSerializable extends protected final @NotNull Class valueClass; - public ConfiguredSerializable(@Nullable YAMLConfigProvider provider, @Nullable String configPath, - @Nullable List headerComments, @Nullable String inlineComments, - @NotNull Class valueClass, @Nullable T defaultValue) { - super(provider, configPath, headerComments, inlineComments, defaultValue); + public ConfiguredSerializable(@NotNull ValueManifest manifest, @NotNull Class valueClass) { + super(manifest); this.valueClass = valueClass; } diff --git a/pom.xml b/pom.xml index 3392620..1f0e181 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ cc.carm.lib easyconfiguration-parent pom - 3.4.0 + 3.5.0 core demo