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