From 205db6e5b9e465322ac19067bb88717ac1051cc8 Mon Sep 17 00:00:00 2001 From: Carm Date: Sun, 2 Feb 2025 23:59:13 +0800 Subject: [PATCH] feat!(value): Finished the standard configured values --- .../configuration/adapter/ValueAdapter.java | 10 +- .../builder/AbstractConfigBuilder.java | 36 +++--- .../builder/CommonConfigBuilder.java | 10 +- .../builder/impl/AbstractSectionBuilder.java | 74 ++++++++++++ .../builder/impl/AbstractSourceBuilder.java | 63 +++++++++++ .../builder/list/ConfigListBuilder.java | 34 ++++++ .../builder/list/SectionListBuilder.java | 53 +++++++++ .../builder/list/SourceListBuilder.java | 47 ++++++++ .../builder/value/ConfigValueBuilder.java | 13 ++- .../builder/value/SectionValueBuilder.java | 61 +--------- .../builder/value/SourceValueBuilder.java | 51 +-------- .../value/standard/ConfiguredList.java | 15 ++- .../old/builder/AbstractConfigBuilder.java | 76 ------------- .../main/old/builder/CommonConfigBuilder.java | 10 -- .../old/builder/list/ConfigListBuilder.java | 58 ---------- .../old/builder/list/SourceListBuilder.java | 80 ------------- .../old/builder/map/ConfigMapBuilder.java | 68 ----------- .../old/builder/map/ConfigMapCreator.java | 38 ------- .../old/builder/map/SectionMapBuilder.java | 98 ---------------- .../old/builder/map/SourceMapBuilder.java | 107 ------------------ .../old/builder/value/ConfigValueBuilder.java | 63 ----------- .../builder/value/SectionValueBuilder.java | 52 --------- .../old/builder/value/SourceValueBuilder.java | 70 ------------ 23 files changed, 335 insertions(+), 852 deletions(-) create mode 100644 core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSectionBuilder.java create mode 100644 core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSourceBuilder.java create mode 100644 core/src/main/java/cc/carm/lib/configuration/builder/list/ConfigListBuilder.java create mode 100644 core/src/main/java/cc/carm/lib/configuration/builder/list/SectionListBuilder.java create mode 100644 core/src/main/java/cc/carm/lib/configuration/builder/list/SourceListBuilder.java delete mode 100644 core/src/main/old/builder/AbstractConfigBuilder.java delete mode 100644 core/src/main/old/builder/CommonConfigBuilder.java delete mode 100644 core/src/main/old/builder/list/ConfigListBuilder.java delete mode 100644 core/src/main/old/builder/list/SourceListBuilder.java delete mode 100644 core/src/main/old/builder/map/ConfigMapBuilder.java delete mode 100644 core/src/main/old/builder/map/ConfigMapCreator.java delete mode 100644 core/src/main/old/builder/map/SectionMapBuilder.java delete mode 100644 core/src/main/old/builder/map/SourceMapBuilder.java delete mode 100644 core/src/main/old/builder/value/ConfigValueBuilder.java delete mode 100644 core/src/main/old/builder/value/SectionValueBuilder.java delete mode 100644 core/src/main/old/builder/value/SourceValueBuilder.java diff --git a/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapter.java b/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapter.java index 99ef7ef..9785e04 100644 --- a/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapter.java +++ b/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapter.java @@ -24,10 +24,10 @@ public class ValueAdapter public ValueAdapter(@NotNull ValueType type, @Nullable ValueSerializer serializer, - @Nullable ValueParser deserializer) { + @Nullable ValueParser parser) { this.type = type; this.serializer = serializer; - this.deserializer = deserializer; + this.deserializer = parser; } public @NotNull ValueType type() { @@ -42,12 +42,14 @@ public class ValueAdapter return deserializer; } - public void serializer(@Nullable ValueSerializer serializer) { + public ValueAdapter serializer(@Nullable ValueSerializer serializer) { this.serializer = serializer; + return this; } - public void parser(@Nullable ValueParser deserializer) { + public ValueAdapter parser(@Nullable ValueParser deserializer) { this.deserializer = deserializer; + return this; } @Override diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/AbstractConfigBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/AbstractConfigBuilder.java index 0481d70..1d466de 100644 --- a/core/src/main/java/cc/carm/lib/configuration/builder/AbstractConfigBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/builder/AbstractConfigBuilder.java @@ -1,5 +1,6 @@ package cc.carm.lib.configuration.builder; +import cc.carm.lib.configuration.adapter.ValueType; import cc.carm.lib.configuration.source.ConfigurationProvider; import cc.carm.lib.configuration.value.ConfigValue; import cc.carm.lib.configuration.value.ValueManifest; @@ -8,44 +9,53 @@ import org.jetbrains.annotations.Nullable; import java.util.function.Supplier; -public abstract class AbstractConfigBuilder, P extends ConfigurationProvider> { +public abstract class AbstractConfigBuilder< + TYPE, RESULT extends ConfigValue, PROVIDER extends ConfigurationProvider, + SELF extends AbstractConfigBuilder + > { - protected final Class providerClass; + protected final Class providerClass; + protected final ValueType type; - protected @Nullable P provider; + protected @Nullable PROVIDER provider; protected @Nullable String path; - protected @NotNull Supplier defaultValueSupplier = () -> null; + protected @NotNull Supplier defaultValueSupplier = () -> null; - protected AbstractConfigBuilder(Class providerClass) { + protected AbstractConfigBuilder(Class providerClass, ValueType type) { this.providerClass = providerClass; + this.type = type; } - protected abstract @NotNull B self(); + public @NotNull ValueType type() { + return type; + } - public abstract @NotNull ConfigValue build(); + protected abstract @NotNull SELF self(); - public @NotNull B from(@Nullable P provider) { + public abstract @NotNull RESULT build(); + + public @NotNull SELF from(@Nullable PROVIDER provider) { this.provider = provider; return self(); } - public @NotNull B path(@Nullable String path) { + public @NotNull SELF path(@Nullable String path) { this.path = path; return self(); } - public @NotNull B defaults(@Nullable T defaultValue) { + public @NotNull SELF defaults(@Nullable TYPE defaultValue) { return defaults(() -> defaultValue); } - public @NotNull B defaults(@NotNull Supplier<@Nullable T> supplier) { + public @NotNull SELF defaults(@NotNull Supplier<@Nullable TYPE> supplier) { this.defaultValueSupplier = supplier; return self(); } - protected @NotNull ValueManifest buildManifest() { - return null; + protected @NotNull ValueManifest buildManifest() { + return new ValueManifest<>(type(), this.provider, this.path, this.defaultValueSupplier); } } diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/CommonConfigBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/CommonConfigBuilder.java index 10a1fe1..1d52039 100644 --- a/core/src/main/java/cc/carm/lib/configuration/builder/CommonConfigBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/builder/CommonConfigBuilder.java @@ -1,12 +1,14 @@ package cc.carm.lib.configuration.builder; +import cc.carm.lib.configuration.adapter.ValueType; import cc.carm.lib.configuration.source.ConfigurationProvider; +import cc.carm.lib.configuration.value.ConfigValue; -public abstract class CommonConfigBuilder> - extends AbstractConfigBuilder> { +public abstract class CommonConfigBuilder, SELF extends CommonConfigBuilder> + extends AbstractConfigBuilder, SELF> { - protected CommonConfigBuilder() { - super(ConfigurationProvider.class); + protected CommonConfigBuilder(ValueType type) { + super(ConfigurationProvider.class, type); } } diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSectionBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSectionBuilder.java new file mode 100644 index 0000000..91879d3 --- /dev/null +++ b/core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSectionBuilder.java @@ -0,0 +1,74 @@ +package cc.carm.lib.configuration.builder.impl; + +import cc.carm.lib.configuration.adapter.ValueAdapter; +import cc.carm.lib.configuration.adapter.ValueType; +import cc.carm.lib.configuration.builder.CommonConfigBuilder; +import cc.carm.lib.configuration.function.ConfigDataFunction; +import cc.carm.lib.configuration.function.ConfigValueHandler; +import cc.carm.lib.configuration.source.section.ConfigurationSection; +import cc.carm.lib.configuration.value.ConfigValue; +import org.jetbrains.annotations.NotNull; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.function.Consumer; + +public abstract class AbstractSectionBuilder< + TYPE, PARAM, + RESULT extends ConfigValue, + SELF extends AbstractSectionBuilder + > extends CommonConfigBuilder { + + protected final @NotNull ValueType paramType; + + protected @NotNull ConfigValueHandler parser; + protected @NotNull ConfigValueHandler> serializer; + + public AbstractSectionBuilder(@NotNull ValueType type, @NotNull ValueType paramType, + @NotNull ConfigValueHandler parser, + @NotNull ConfigValueHandler> serializer) { + super(type); + this.paramType = paramType; + this.parser = parser; + this.serializer = serializer; + } + + public @NotNull SELF parse(ConfigDataFunction valueParser) { + return parse((p, section) -> valueParser.handle(section)); + } + + public @NotNull SELF parse(ConfigValueHandler valueParser) { + this.parser = valueParser; + return self(); + } + + public @NotNull SELF serialize(ConfigDataFunction> serializer) { + return serialize((p, value) -> serializer.handle(value)); + } + + public @NotNull SELF serialize(ConfigValueHandler> serializer) { + this.serializer = serializer; + return self(); + } + + public @NotNull SELF serialize(Consumer> serializer) { + return serialize((p, value) -> { + Map map = new LinkedHashMap<>(); + serializer.accept(map); + return map; + }); + } + + protected ValueAdapter buildAdapter() { + return new ValueAdapter<>(this.paramType) + .parser((p, type, data) -> { + ConfigurationSection section = p.deserialize(ConfigurationSection.class, data); + if (section == null) return null; + return this.parser.handle(p, section); + }) + .serializer((p, type, data) -> { + Map map = this.serializer.handle(p, data); + return map == null || map.isEmpty() ? null : map; + }); + } +} diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSourceBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSourceBuilder.java new file mode 100644 index 0000000..a9830d3 --- /dev/null +++ b/core/src/main/java/cc/carm/lib/configuration/builder/impl/AbstractSourceBuilder.java @@ -0,0 +1,63 @@ +package cc.carm.lib.configuration.builder.impl; + +import cc.carm.lib.configuration.adapter.ValueAdapter; +import cc.carm.lib.configuration.adapter.ValueType; +import cc.carm.lib.configuration.builder.CommonConfigBuilder; +import cc.carm.lib.configuration.function.ConfigDataFunction; +import cc.carm.lib.configuration.function.ConfigValueHandler; +import cc.carm.lib.configuration.value.ConfigValue; +import org.jetbrains.annotations.NotNull; + +public abstract class AbstractSourceBuilder< + V, SOURCE, PARAM, RESULT extends ConfigValue, + SELF extends AbstractSourceBuilder + > extends CommonConfigBuilder { + + protected final @NotNull ValueType sourceType; + protected final @NotNull ValueType paramType; + protected @NotNull ConfigValueHandler valueParser; + protected @NotNull ConfigValueHandler valueSerializer; + + public AbstractSourceBuilder(@NotNull ValueType type, + @NotNull ValueType sourceType, @NotNull ValueType paramType, + @NotNull ConfigValueHandler parser, + @NotNull ConfigValueHandler serializer) { + super(type); + this.sourceType = sourceType; + this.paramType = paramType; + this.valueParser = parser; + this.valueSerializer = serializer; + } + + public @NotNull SELF parse(ConfigDataFunction parser) { + return parse((p, source) -> parser.handle(source)); + } + + public @NotNull SELF parse(@NotNull ConfigValueHandler parser) { + this.valueParser = parser; + return self(); + } + + public @NotNull SELF serialize(@NotNull ConfigValueHandler serializer) { + this.valueSerializer = serializer; + return self(); + } + + public @NotNull SELF serialize(@NotNull ConfigDataFunction serializer) { + return serialize((p, value) -> serializer.handle(value)); + } + + protected ValueAdapter buildAdapter() { + return new ValueAdapter<>(this.paramType) + .parser((p, type, data) -> { + SOURCE source = p.deserialize(this.sourceType, data); + return this.valueParser.handle(p, source); + }) + .serializer((p, type, data) -> { + SOURCE source = this.valueSerializer.handle(p, data); + return p.serialize(source); + }); + } + + +} diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/list/ConfigListBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/list/ConfigListBuilder.java new file mode 100644 index 0000000..cd7e8f1 --- /dev/null +++ b/core/src/main/java/cc/carm/lib/configuration/builder/list/ConfigListBuilder.java @@ -0,0 +1,34 @@ +package cc.carm.lib.configuration.builder.list; + +import cc.carm.lib.configuration.adapter.ValueType; +import cc.carm.lib.configuration.function.ConfigValueHandler; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; + +public class ConfigListBuilder { + + protected final @NotNull ValueType type; + + public ConfigListBuilder(@NotNull ValueType type) { + this.type = type; + } + + public @NotNull SourceListBuilder from(@NotNull Class sourceType) { + return from(ValueType.of(sourceType)); + } + + public @NotNull SourceListBuilder from(@NotNull ValueType sourceType) { + return new SourceListBuilder<>(sourceType, type, ConfigValueHandler.required(), ConfigValueHandler.required(), ArrayList::new); + } + + public @NotNull SourceListBuilder fromString() { + return from(String.class); + } + + public @NotNull SectionListBuilder fromSection() { + return new SectionListBuilder<>(type, ConfigValueHandler.required(), ConfigValueHandler.required(), ArrayList::new); + } + + +} diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/list/SectionListBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/list/SectionListBuilder.java new file mode 100644 index 0000000..d808a01 --- /dev/null +++ b/core/src/main/java/cc/carm/lib/configuration/builder/list/SectionListBuilder.java @@ -0,0 +1,53 @@ +package cc.carm.lib.configuration.builder.list; + +import cc.carm.lib.configuration.adapter.ValueType; +import cc.carm.lib.configuration.builder.impl.AbstractSectionBuilder; +import cc.carm.lib.configuration.function.ConfigValueHandler; +import cc.carm.lib.configuration.source.section.ConfigurationSection; +import cc.carm.lib.configuration.value.standard.ConfiguredList; +import org.jetbrains.annotations.NotNull; + +import java.util.*; +import java.util.function.Supplier; + +public class SectionListBuilder extends AbstractSectionBuilder, V, ConfiguredList, SectionListBuilder> { + + protected @NotNull Supplier> constructor; + + public SectionListBuilder(@NotNull ValueType paramType, + @NotNull ConfigValueHandler parser, + @NotNull ConfigValueHandler> serializer, + @NotNull Supplier> constructor) { + super(new ValueType>() { + }, paramType, parser, serializer); + this.constructor = constructor; + } + + @SafeVarargs + public final @NotNull SectionListBuilder defaults(@NotNull V... values) { + return defaults(new ArrayList<>(Arrays.asList(values))); + } + + public final @NotNull SectionListBuilder defaults(@NotNull Collection values) { + return defaults(new ArrayList<>(values)); + } + + public SectionListBuilder constructor(@NotNull Supplier> constructor) { + this.constructor = constructor; + return this; + } + + public > SectionListBuilder construct(@NotNull LIST list) { + return constructor(() -> list); + } + + @Override + protected @NotNull SectionListBuilder self() { + return this; + } + + @Override + public @NotNull ConfiguredList build() { + return new ConfiguredList<>(buildManifest(), constructor, buildAdapter()); + } +} diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/list/SourceListBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/list/SourceListBuilder.java new file mode 100644 index 0000000..bb73610 --- /dev/null +++ b/core/src/main/java/cc/carm/lib/configuration/builder/list/SourceListBuilder.java @@ -0,0 +1,47 @@ +package cc.carm.lib.configuration.builder.list; + +import cc.carm.lib.configuration.adapter.ValueType; +import cc.carm.lib.configuration.builder.impl.AbstractSourceBuilder; +import cc.carm.lib.configuration.function.ConfigValueHandler; +import cc.carm.lib.configuration.value.standard.ConfiguredList; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.function.Supplier; + +public class SourceListBuilder + extends AbstractSourceBuilder, SOURCE, V, ConfiguredList, SourceListBuilder> { + + protected @NotNull Supplier> constructor; + + public SourceListBuilder(@NotNull ValueType sourceType, @NotNull ValueType paramType, + @NotNull ConfigValueHandler parser, @NotNull ConfigValueHandler serializer, + @NotNull Supplier> constructor) { + super(new ValueType>() { + }, sourceType, paramType, parser, serializer); + this.constructor = constructor; + } + + @SafeVarargs + public final @NotNull SourceListBuilder defaults(@NotNull V... values) { + return defaults(new ArrayList<>(Arrays.asList(values))); + } + + public final @NotNull SourceListBuilder defaults(@NotNull Collection values) { + return defaults(new ArrayList<>(values)); + } + + @Override + protected @NotNull SourceListBuilder self() { + return this; + } + + @Override + public @NotNull ConfiguredList build() { + return new ConfiguredList<>(buildManifest(), this.constructor, buildAdapter()); + } + +} diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/value/ConfigValueBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/value/ConfigValueBuilder.java index 5a41e9a..b9447d0 100644 --- a/core/src/main/java/cc/carm/lib/configuration/builder/value/ConfigValueBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/builder/value/ConfigValueBuilder.java @@ -1,7 +1,6 @@ package cc.carm.lib.configuration.builder.value; import cc.carm.lib.configuration.adapter.ValueType; -import cc.carm.lib.configuration.function.ConfigDataFunction; import cc.carm.lib.configuration.function.ConfigValueHandler; import cc.carm.lib.configuration.source.section.ConfigurationSection; import org.jetbrains.annotations.NotNull; @@ -17,11 +16,11 @@ public class ConfigValueBuilder { } public @NotNull SourceValueBuilder from(@NotNull Class clazz) { - return new SourceValueBuilder<>(ValueType.of(clazz), this.type); + return from(ValueType.of(clazz)); } public @NotNull SourceValueBuilder from(@NotNull ValueType sourceType) { - return new SourceValueBuilder<>(sourceType, this.type); + return from(sourceType, ConfigValueHandler.required(), ConfigValueHandler.required()); } public @NotNull SourceValueBuilder from(@NotNull ValueType sourceType, @@ -35,11 +34,13 @@ public class ConfigValueBuilder { } public @NotNull SectionValueBuilder fromSection() { - return new SectionValueBuilder<>(this.type); + return fromSection(ConfigValueHandler.required(), ConfigValueHandler.required()); } - public @NotNull SectionValueBuilder fromSection(@NotNull ConfigValueHandler valueParser, - @NotNull ConfigValueHandler> valueSerializer) { + public @NotNull SectionValueBuilder fromSection( + @NotNull ConfigValueHandler valueParser, + @NotNull ConfigValueHandler> valueSerializer + ) { return new SectionValueBuilder<>(this.type, valueParser, valueSerializer); } diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/value/SectionValueBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/value/SectionValueBuilder.java index 1dc7f5b..5d6577a 100644 --- a/core/src/main/java/cc/carm/lib/configuration/builder/value/SectionValueBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/builder/value/SectionValueBuilder.java @@ -1,34 +1,20 @@ package cc.carm.lib.configuration.builder.value; import cc.carm.lib.configuration.adapter.ValueType; -import cc.carm.lib.configuration.builder.CommonConfigBuilder; -import cc.carm.lib.configuration.function.ConfigDataFunction; +import cc.carm.lib.configuration.builder.impl.AbstractSectionBuilder; import cc.carm.lib.configuration.function.ConfigValueHandler; import cc.carm.lib.configuration.source.section.ConfigurationSection; import cc.carm.lib.configuration.value.standard.ConfiguredValue; import org.jetbrains.annotations.NotNull; -import java.util.LinkedHashMap; import java.util.Map; -import java.util.function.Consumer; -public class SectionValueBuilder extends CommonConfigBuilder> { +public class SectionValueBuilder extends AbstractSectionBuilder, SectionValueBuilder> { - protected final @NotNull ValueType valueType; - - protected @NotNull ConfigValueHandler parser; - protected @NotNull ConfigValueHandler> serializer; - - public SectionValueBuilder(@NotNull ValueType valueType) { - this(valueType, ConfigValueHandler.required(), ConfigValueHandler.required()); - } - - public SectionValueBuilder(@NotNull ValueType valueType, + public SectionValueBuilder(@NotNull ValueType type, @NotNull ConfigValueHandler parser, @NotNull ConfigValueHandler> serializer) { - this.valueType = valueType; - this.parser = parser; - this.serializer = serializer; + super(type, type, parser, serializer); } @Override @@ -36,46 +22,9 @@ public class SectionValueBuilder extends CommonConfigBuilder parse(ConfigDataFunction valueParser) { - return parse((p, section) -> valueParser.handle(section)); - } - - public @NotNull SectionValueBuilder parse(ConfigValueHandler valueParser) { - this.parser = valueParser; - return this; - } - - public @NotNull SectionValueBuilder serialize(ConfigDataFunction> serializer) { - return serialize((p, value) -> serializer.handle(value)); - } - - public @NotNull SectionValueBuilder serialize(ConfigValueHandler> serializer) { - this.serializer = serializer; - return this; - } - - public @NotNull SectionValueBuilder serialize(Consumer> serializer) { - return serialize((p, value) -> { - Map map = new LinkedHashMap<>(); - serializer.accept(map); - return map; - }); - } - @Override public @NotNull ConfiguredValue build() { - return ConfiguredValue.of( - buildManifest(), - (p, type, data) -> { - ConfigurationSection section = p.deserialize(ConfigurationSection.class, data); - if (section == null) return null; - return this.parser.handle(p, section); - }, - (p, type, data) -> { - Map map = this.serializer.handle(p, data); - return map == null || map.isEmpty() ? null : map; // Map is a type of original data - } - ); + return ConfiguredValue.of(buildManifest(), buildAdapter()); } } diff --git a/core/src/main/java/cc/carm/lib/configuration/builder/value/SourceValueBuilder.java b/core/src/main/java/cc/carm/lib/configuration/builder/value/SourceValueBuilder.java index aa8dd88..ee0e943 100644 --- a/core/src/main/java/cc/carm/lib/configuration/builder/value/SourceValueBuilder.java +++ b/core/src/main/java/cc/carm/lib/configuration/builder/value/SourceValueBuilder.java @@ -1,30 +1,17 @@ package cc.carm.lib.configuration.builder.value; import cc.carm.lib.configuration.adapter.ValueType; -import cc.carm.lib.configuration.builder.CommonConfigBuilder; -import cc.carm.lib.configuration.function.ConfigDataFunction; +import cc.carm.lib.configuration.builder.impl.AbstractSourceBuilder; import cc.carm.lib.configuration.function.ConfigValueHandler; import cc.carm.lib.configuration.value.standard.ConfiguredValue; import org.jetbrains.annotations.NotNull; -public class SourceValueBuilder extends CommonConfigBuilder> { +public class SourceValueBuilder extends AbstractSourceBuilder, SourceValueBuilder> { - protected final @NotNull ValueType sourceType; - protected final @NotNull ValueType valueType; - protected @NotNull ConfigValueHandler valueParser; - protected @NotNull ConfigValueHandler valueSerializer; - - public SourceValueBuilder(@NotNull ValueType sourceType, @NotNull ValueType valueType) { - this(sourceType, valueType, ConfigValueHandler.required(), ConfigValueHandler.required()); - } public SourceValueBuilder(@NotNull ValueType sourceType, @NotNull ValueType valueType, - @NotNull ConfigValueHandler valueParser, - @NotNull ConfigValueHandler valueSerializer) { - this.sourceType = sourceType; - this.valueType = valueType; - this.valueParser = valueParser; - this.valueSerializer = valueSerializer; + @NotNull ConfigValueHandler parser, @NotNull ConfigValueHandler serializer) { + super(valueType, sourceType, valueType, parser, serializer); } @Override @@ -32,37 +19,9 @@ public class SourceValueBuilder extends CommonConfigBuilder parse(ConfigDataFunction parser) { - return parse((p, source) -> parser.handle(source)); - } - - public @NotNull SourceValueBuilder parse(@NotNull ConfigValueHandler parser) { - this.valueParser = parser; - return this; - } - - public @NotNull SourceValueBuilder serialize(@NotNull ConfigValueHandler serializer) { - this.valueSerializer = serializer; - return this; - } - - public @NotNull SourceValueBuilder serialize(@NotNull ConfigDataFunction serializer) { - return serialize((p, value) -> serializer.handle(value)); - } - @Override public @NotNull ConfiguredValue build() { - return ConfiguredValue.of( - buildManifest(), - (p, type, data) -> { - S source = p.deserialize(this.sourceType, data); - return this.valueParser.handle(p, source); - }, - (p, type, value) -> { - S source = this.valueSerializer.handle(p, value); - return p.serialize(source); - } - ); + return new ConfiguredValue<>(buildManifest(), buildAdapter()); } } diff --git a/core/src/main/java/cc/carm/lib/configuration/value/standard/ConfiguredList.java b/core/src/main/java/cc/carm/lib/configuration/value/standard/ConfiguredList.java index e76718d..1c2e02a 100644 --- a/core/src/main/java/cc/carm/lib/configuration/value/standard/ConfiguredList.java +++ b/core/src/main/java/cc/carm/lib/configuration/value/standard/ConfiguredList.java @@ -4,6 +4,7 @@ import cc.carm.lib.configuration.adapter.ValueAdapter; import cc.carm.lib.configuration.adapter.ValueParser; import cc.carm.lib.configuration.adapter.ValueSerializer; import cc.carm.lib.configuration.adapter.ValueType; +import cc.carm.lib.configuration.builder.list.ConfigListBuilder; import cc.carm.lib.configuration.value.ValueManifest; import cc.carm.lib.configuration.value.impl.CachedConfigValue; import org.jetbrains.annotations.NotNull; @@ -16,12 +17,20 @@ import java.util.function.Supplier; public class ConfiguredList extends CachedConfigValue> implements List { + public static @NotNull ConfigListBuilder builderOf(@NotNull Class type) { + return builderOf(ValueType.of(type)); + } + + public static @NotNull ConfigListBuilder builderOf(@NotNull ValueType type) { + return new ConfigListBuilder<>(type); + } + protected final @NotNull Supplier> constructor; protected final @NotNull ValueAdapter paramAdapter; - private ConfiguredList(@NotNull ValueManifest> manifest, - @NotNull Supplier> constructor, - @NotNull ValueAdapter paramAdapter) { + public ConfiguredList(@NotNull ValueManifest> manifest, + @NotNull Supplier> constructor, + @NotNull ValueAdapter paramAdapter) { super(manifest); this.constructor = constructor; this.paramAdapter = paramAdapter; diff --git a/core/src/main/old/builder/AbstractConfigBuilder.java b/core/src/main/old/builder/AbstractConfigBuilder.java deleted file mode 100644 index c8f2270..0000000 --- a/core/src/main/old/builder/AbstractConfigBuilder.java +++ /dev/null @@ -1,76 +0,0 @@ -package cc.carm.lib.configuration.builder; - -import cc.carm.lib.configuration.value.ConfigValue; -import cc.carm.lib.configuration.value.ValueManifest; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Arrays; -import java.util.List; -import java.util.function.Supplier; - -public abstract class AbstractConfigBuilder, P extends ConfigurationProvider> { - - protected final Class providerClass; - - protected @Nullable P provider; - protected @Nullable String path; - - protected @Nullable List headerComments; - protected @Nullable String inlineComment; - - protected @Nullable T defaultValue; - - protected AbstractConfigBuilder(Class providerClass) { - this.providerClass = providerClass; - } - - protected abstract @NotNull B getThis(); - - public abstract @NotNull ConfigValue build(); - - public @NotNull B from(@Nullable P provider) { - this.provider = provider; - return self(); - } - - public @NotNull B path(@Nullable String path) { - this.path = path; - return self(); - } - - public @NotNull B comments(@NotNull String... comments) { - return headerComments(comments); - } - - public @NotNull B headerComments(@NotNull String... comments) { - return headerComments(Arrays.asList(comments)); - } - - public @NotNull B headerComments(@NotNull List comments) { - this.headerComments = comments; - return self(); - } - - public @NotNull B inlineComment(@NotNull String comment) { - this.inlineComment = comment; - return self(); - } - - public @NotNull B defaults(@Nullable T defaultValue) { - this.defaultValue = defaultValue; - return self(); - } - - public @NotNull B defaults(@NotNull Supplier<@Nullable T> defaultValueSupplier) { - return defaults(defaultValueSupplier.get()); - } - - protected @NotNull ValueManifest buildManifest() { - return ValueManifest.of( - this.provider, this.path, - this.headerComments, this.inlineComment, this.defaultValue - ); - } - -} diff --git a/core/src/main/old/builder/CommonConfigBuilder.java b/core/src/main/old/builder/CommonConfigBuilder.java deleted file mode 100644 index b9e26f3..0000000 --- a/core/src/main/old/builder/CommonConfigBuilder.java +++ /dev/null @@ -1,10 +0,0 @@ -package cc.carm.lib.configuration.builder; - -public abstract class CommonConfigBuilder> - extends AbstractConfigBuilder> { - - protected CommonConfigBuilder() { - super(ConfigurationProvider.class); - } - -} diff --git a/core/src/main/old/builder/list/ConfigListBuilder.java b/core/src/main/old/builder/list/ConfigListBuilder.java deleted file mode 100644 index 67b5210..0000000 --- a/core/src/main/old/builder/list/ConfigListBuilder.java +++ /dev/null @@ -1,58 +0,0 @@ -package cc.carm.lib.configuration.builder.list; - -import cc.carm.lib.configuration.function.ConfigDataFunction; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; - - -public class ConfigListBuilder { - - protected final @NotNull Class valueClass; - - public ConfigListBuilder(@NotNull Class valueClass) { - this.valueClass = valueClass; - } - - public @NotNull SourceListBuilder from(@NotNull Class sourceClass, - @NotNull ConfigDataFunction sourceParser, - @NotNull ConfigDataFunction valueParser, - @NotNull ConfigDataFunction valueSerializer, - @NotNull ConfigDataFunction sourceSerializer) { - return new SourceListBuilder<>(sourceClass, sourceParser, this.valueClass, valueParser, valueSerializer, sourceSerializer); - } - - - public @NotNull SourceListBuilder from(Class sourceClass) { - return from(sourceClass, - ConfigDataFunction.required(), ConfigDataFunction.required(), - ConfigDataFunction.required(), ConfigDataFunction.required() - ); - } - - public @NotNull SourceListBuilder fromObject() { - return from( - Object.class, ConfigDataFunction.identity(), - ConfigDataFunction.castObject(valueClass), - ConfigDataFunction.toObject(), ConfigDataFunction.toObject() - ); - } - - public @NotNull SourceListBuilder fromString() { - return from( - String.class, ConfigDataFunction.castToString(), - ConfigDataFunction.castFromString(this.valueClass), - ConfigDataFunction.castToString(), ConfigDataFunction.toObject() - ); - } - - public @NotNull SourceListBuilder, V> fromMap() { - return from( - Map.class, obj -> (Map) obj, - ConfigDataFunction.required(), - ConfigDataFunction.required(), - ConfigDataFunction.toObject() - ); - } - -} diff --git a/core/src/main/old/builder/list/SourceListBuilder.java b/core/src/main/old/builder/list/SourceListBuilder.java deleted file mode 100644 index 4173a66..0000000 --- a/core/src/main/old/builder/list/SourceListBuilder.java +++ /dev/null @@ -1,80 +0,0 @@ -package cc.carm.lib.configuration.builder.list; - -import cc.carm.lib.configuration.builder.CommonConfigBuilder; -import cc.carm.lib.configuration.function.ConfigDataFunction; -import cc.carm.lib.configuration.value.standard.ConfiguredList; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -public class SourceListBuilder extends CommonConfigBuilder, SourceListBuilder> { - - protected final @NotNull Class sourceClass; - protected @NotNull ConfigDataFunction sourceParser; - - protected final @NotNull Class valueClass; - protected @NotNull ConfigDataFunction valueParser; - - protected @NotNull ConfigDataFunction valueSerializer; - protected @NotNull ConfigDataFunction sourceSerializer; - - public SourceListBuilder(@NotNull Class sourceClass, @NotNull ConfigDataFunction sourceParser, - @NotNull Class valueClass, @NotNull ConfigDataFunction valueParser, - @NotNull ConfigDataFunction valueSerializer, - @NotNull ConfigDataFunction sourceSerializer) { - this.sourceClass = sourceClass; - this.sourceParser = sourceParser; - this.sourceSerializer = sourceSerializer; - this.valueClass = valueClass; - this.valueParser = valueParser; - this.valueSerializer = valueSerializer; - } - - @SafeVarargs - public final @NotNull SourceListBuilder defaults(@NotNull V... values) { - return defaults(new ArrayList<>(Arrays.asList(values))); - } - - public final @NotNull SourceListBuilder defaults(@NotNull Collection values) { - return defaults(new ArrayList<>(values)); - } - - public @NotNull SourceListBuilder parseSource(ConfigDataFunction sourceParser) { - this.sourceParser = sourceParser; - return this; - } - - public @NotNull SourceListBuilder parseValue(ConfigDataFunction valueParser) { - this.valueParser = valueParser; - return this; - } - - public @NotNull SourceListBuilder serializeValue(ConfigDataFunction serializer) { - this.valueSerializer = serializer; - return this; - } - - public @NotNull SourceListBuilder serializeSource(ConfigDataFunction serializer) { - this.sourceSerializer = serializer; - return this; - } - - @Override - protected @NotNull SourceListBuilder getThis() { - return this; - } - - @Override - public @NotNull ConfiguredList build() { - return new ConfiguredList<>( - buildManifest(), this.valueClass, - this.sourceParser.andThen(this.valueParser), - this.valueSerializer.andThen(sourceSerializer) - ); - } - - -} diff --git a/core/src/main/old/builder/map/ConfigMapBuilder.java b/core/src/main/old/builder/map/ConfigMapBuilder.java deleted file mode 100644 index 635dd5d..0000000 --- a/core/src/main/old/builder/map/ConfigMapBuilder.java +++ /dev/null @@ -1,68 +0,0 @@ -package cc.carm.lib.configuration.builder.map; - -import cc.carm.lib.configuration.function.ConfigDataFunction; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; -import java.util.function.Supplier; - -public class ConfigMapBuilder, K, V> { - - protected final @NotNull Supplier supplier; - - protected final @NotNull Class keyClass; - protected final @NotNull Class valueClass; - - public ConfigMapBuilder(@NotNull Supplier supplier, @NotNull Class keyClass, @NotNull Class valueClass) { - this.supplier = supplier; - this.keyClass = keyClass; - this.valueClass = valueClass; - } - - public > ConfigMapBuilder supplier(@NotNull Supplier supplier) { - return new ConfigMapBuilder<>(supplier, keyClass, valueClass); - } - - public SourceMapBuilder from(@NotNull Class sourceClass, - @NotNull ConfigDataFunction valueParser, - @NotNull ConfigDataFunction valueSerializer) { - return new SourceMapBuilder<>(supplier, - keyClass, ConfigDataFunction.castFromString(this.keyClass), // #String -> key - sourceClass, ConfigDataFunction.castObject(sourceClass), // #Object -> source - valueClass, valueParser, // source -> value - ConfigDataFunction.castToString(), // key -> #String - valueSerializer/*value -> source*/, - ConfigDataFunction.toObject()/* source -> #Object */ - ); - } - - public SourceMapBuilder from(@NotNull Class sourceClass) { - return from(sourceClass, ConfigDataFunction.required(), ConfigDataFunction.required()); - } - - public SourceMapBuilder fromString(@NotNull ConfigDataFunction valueParser) { - return from(String.class, valueParser, ConfigDataFunction.castToString()); - } - - public SourceMapBuilder fromString() { - return fromString(ConfigDataFunction.castFromString(this.valueClass)); - } - - public SectionMapBuilder fromSection() { - return new SectionMapBuilder<>( - supplier, - keyClass, ConfigDataFunction.castFromString(keyClass), - valueClass, ConfigDataFunction.required(), - ConfigDataFunction.castToString(), ConfigDataFunction.required()); - } - - public SourceMapBuilder fromObject(@NotNull ConfigDataFunction valueParser) { - return from(Object.class, valueParser, ConfigDataFunction.toObject()); - } - - public SourceMapBuilder fromObject() { - return fromObject(ConfigDataFunction.required()); - } - - -} diff --git a/core/src/main/old/builder/map/ConfigMapCreator.java b/core/src/main/old/builder/map/ConfigMapCreator.java deleted file mode 100644 index 24a8312..0000000 --- a/core/src/main/old/builder/map/ConfigMapCreator.java +++ /dev/null @@ -1,38 +0,0 @@ -package cc.carm.lib.configuration.builder.map; - -import org.jetbrains.annotations.NotNull; - -import java.util.*; -import java.util.function.Supplier; - -public class ConfigMapCreator { - - protected final @NotNull Class keyClass; - protected final @NotNull Class valueClass; - - public ConfigMapCreator(@NotNull Class keyClass, @NotNull Class valueClass) { - this.keyClass = keyClass; - this.valueClass = valueClass; - } - - public > @NotNull ConfigMapBuilder asMap(Supplier mapSuppler) { - return new ConfigMapBuilder<>(mapSuppler, keyClass, valueClass); - } - - public @NotNull ConfigMapBuilder, K, V> asHashMap() { - return asMap(HashMap::new); - } - - public @NotNull ConfigMapBuilder, K, V> asLinkedMap() { - return asMap(LinkedHashMap::new); - } - - public @NotNull ConfigMapBuilder, K, V> asTreeMap() { - return asMap(TreeMap::new); - } - - public @NotNull ConfigMapBuilder, K, V> asTreeMap(@NotNull Comparator comparator) { - return asMap(() -> new TreeMap<>(comparator)); - } - -} diff --git a/core/src/main/old/builder/map/SectionMapBuilder.java b/core/src/main/old/builder/map/SectionMapBuilder.java deleted file mode 100644 index c5a6267..0000000 --- a/core/src/main/old/builder/map/SectionMapBuilder.java +++ /dev/null @@ -1,98 +0,0 @@ -package cc.carm.lib.configuration.builder.map; - -import cc.carm.lib.configuration.builder.CommonConfigBuilder; -import cc.carm.lib.configuration.function.ConfigDataFunction; -import cc.carm.lib.configuration.value.ValueManifest; -import cc.carm.lib.configuration.value.standard.ConfiguredSectionMap; -import org.jetbrains.annotations.NotNull; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; - -public class SectionMapBuilder, K, V> extends CommonConfigBuilder> { - - protected final @NotNull Supplier supplier; - - protected final @NotNull Class keyClass; - protected @NotNull ConfigDataFunction keyParser; - - protected final @NotNull Class valueClass; - protected @NotNull ConfigDataFunction, V> valueParser; - - protected @NotNull ConfigDataFunction keySerializer; - protected @NotNull ConfigDataFunction> valueSerializer; - - public SectionMapBuilder(@NotNull Supplier supplier, - @NotNull Class keyClass, @NotNull ConfigDataFunction keyParser, - @NotNull Class valueClass, @NotNull ConfigDataFunction, V> valueParser, - @NotNull ConfigDataFunction keySerializer, - @NotNull ConfigDataFunction> valueSerializer) { - this.supplier = supplier; - this.keyClass = keyClass; - this.keyParser = keyParser; - this.valueClass = valueClass; - this.valueParser = valueParser; - this.keySerializer = keySerializer; - this.valueSerializer = valueSerializer; - } - - public > SectionMapBuilder supplier(@NotNull Supplier supplier) { - return new SectionMapBuilder<>(supplier, - keyClass, keyParser, valueClass, valueParser, keySerializer, valueSerializer - ); - } - - public @NotNull SectionMapBuilder defaults(@NotNull Consumer factory) { - M map = supplier.get(); - factory.accept(map); - return defaults(map); - } - - public @NotNull SectionMapBuilder parseKey(@NotNull ConfigDataFunction parser) { - this.keyParser = parser; - return this; - } - - public @NotNull SectionMapBuilder parseValue(@NotNull ConfigDataFunction, V> parser) { - this.valueParser = parser; - return this; - } - - public @NotNull SectionMapBuilder serializeKey(@NotNull ConfigDataFunction serializer) { - this.keySerializer = serializer; - return this; - } - - public @NotNull SectionMapBuilder serializeValue(@NotNull ConfigDataFunction> serializer) { - this.valueSerializer = serializer; - return this; - } - - public @NotNull SectionMapBuilder serializeValue(@NotNull BiConsumer> serializer) { - return serializeValue(v -> { - Map map = new LinkedHashMap<>(); - serializer.accept(v, map); - return map; - }); - } - - - @Override - protected @NotNull SectionMapBuilder getThis() { - return this; - } - - @Override - public @NotNull ConfiguredSectionMap build() { - return new ConfiguredSectionMap<>( - new ValueManifest<>(provider, path, headerComments, inlineComment, defaultValue), - this.supplier, this.keyClass, this.keyParser, - this.valueClass, this.valueParser, - this.keySerializer, this.valueSerializer - ); - } - -} diff --git a/core/src/main/old/builder/map/SourceMapBuilder.java b/core/src/main/old/builder/map/SourceMapBuilder.java deleted file mode 100644 index 4699edd..0000000 --- a/core/src/main/old/builder/map/SourceMapBuilder.java +++ /dev/null @@ -1,107 +0,0 @@ -package cc.carm.lib.configuration.builder.map; - -import cc.carm.lib.configuration.builder.CommonConfigBuilder; -import cc.carm.lib.configuration.function.ConfigDataFunction; -import cc.carm.lib.configuration.value.ValueManifest; -import cc.carm.lib.configuration.value.standard.ConfiguredMap; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; -import java.util.function.Consumer; -import java.util.function.Supplier; - -public class SourceMapBuilder, S, K, V> extends CommonConfigBuilder> { - - protected final @NotNull Supplier supplier; - - protected final @NotNull Class keyClass; - protected @NotNull ConfigDataFunction keyParser; - - protected final @NotNull Class sourceClass; - protected @NotNull ConfigDataFunction sourceParser; - - protected final @NotNull Class valueClass; - protected @NotNull ConfigDataFunction valueParser; - - protected @NotNull ConfigDataFunction keySerializer; - protected @NotNull ConfigDataFunction valueSerializer; - protected @NotNull ConfigDataFunction sourceSerializer; - - public SourceMapBuilder(@NotNull Supplier supplier, - @NotNull Class keyClass, @NotNull ConfigDataFunction keyParser, - @NotNull Class sourceClass, @NotNull ConfigDataFunction sourceParser, - @NotNull Class valueClass, @NotNull ConfigDataFunction valueParser, - @NotNull ConfigDataFunction keySerializer, - @NotNull ConfigDataFunction valueSerializer, - @NotNull ConfigDataFunction sourceSerializer) { - this.supplier = supplier; - this.keyClass = keyClass; - this.keyParser = keyParser; - this.valueClass = valueClass; - this.valueParser = valueParser; - this.sourceClass = sourceClass; - this.sourceParser = sourceParser; - this.keySerializer = keySerializer; - this.valueSerializer = valueSerializer; - this.sourceSerializer = sourceSerializer; - } - - public > SourceMapBuilder supplier(@NotNull Supplier supplier) { - return new SourceMapBuilder<>(supplier, - keyClass, keyParser, sourceClass, sourceParser, valueClass, valueParser, - keySerializer, valueSerializer, sourceSerializer - ); - } - - public @NotNull SourceMapBuilder defaults(@NotNull Consumer factory) { - M map = supplier.get(); - factory.accept(map); - return defaults(map); - } - - public @NotNull SourceMapBuilder parseKey(@NotNull ConfigDataFunction parser) { - this.keyParser = parser; - return this; - } - - public @NotNull SourceMapBuilder parseSource(@NotNull ConfigDataFunction parser) { - this.sourceParser = parser; - return this; - } - - public @NotNull SourceMapBuilder parseValue(@NotNull ConfigDataFunction parser) { - this.valueParser = parser; - return this; - } - - public @NotNull SourceMapBuilder serializeKey(@NotNull ConfigDataFunction serializer) { - this.keySerializer = serializer; - return this; - } - - public @NotNull SourceMapBuilder serializeValue(@NotNull ConfigDataFunction serializer) { - this.valueSerializer = serializer; - return this; - } - - public @NotNull SourceMapBuilder serializeSource(@NotNull ConfigDataFunction serializer) { - this.sourceSerializer = serializer; - return this; - } - - @Override - protected @NotNull SourceMapBuilder getThis() { - return this; - } - - @Override - public @NotNull ConfiguredMap build() { - return new ConfiguredMap<>( - 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/old/builder/value/ConfigValueBuilder.java b/core/src/main/old/builder/value/ConfigValueBuilder.java deleted file mode 100644 index b4db9ce..0000000 --- a/core/src/main/old/builder/value/ConfigValueBuilder.java +++ /dev/null @@ -1,63 +0,0 @@ -package cc.carm.lib.configuration.builder.value; - -import cc.carm.lib.configuration.function.ConfigDataFunction; -import cc.carm.lib.configuration.function.ConfigValueParser; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; - -public class ConfigValueBuilder { - - protected final @NotNull Class valueClass; - - public ConfigValueBuilder(@NotNull Class valueClass) { - this.valueClass = valueClass; - } - - public @NotNull SectionValueBuilder fromSection() { - return fromSection(ConfigValueParser.required(), ConfigDataFunction.required()); - } - - public @NotNull SectionValueBuilder fromSection(@NotNull ConfigValueParser, V> valueParser, - @NotNull ConfigDataFunction> valueSerializer) { - return new SectionValueBuilder<>(this.valueClass, valueParser, valueSerializer); - } - - public @NotNull SourceValueBuilder from(Class sourceClass) { - return from( - sourceClass, ConfigDataFunction.required(), ConfigValueParser.required(), - ConfigDataFunction.required(), ConfigDataFunction.required() - ); - } - - public @NotNull SourceValueBuilder from(@NotNull Class sourceClass, - @NotNull ConfigDataFunction sourceParser, - @NotNull ConfigValueParser valueParser, - @NotNull ConfigDataFunction valueSerializer, - @NotNull ConfigDataFunction sourceSerializer) { - return new SourceValueBuilder<>( - sourceClass, sourceParser, this.valueClass, valueParser, - valueSerializer, sourceSerializer - ); - } - - public @NotNull SourceValueBuilder fromObject() { - return from( - Object.class, ConfigDataFunction.identity(), - ConfigValueParser.castObject(valueClass), - s -> { - if (s instanceof Enum) return ((Enum) s).name(); - else return s; - }, ConfigDataFunction.toObject() - ); - } - - public @NotNull SourceValueBuilder fromString() { - return from( - String.class, ConfigDataFunction.castToString(), - ConfigValueParser.parseString(this.valueClass), - ConfigDataFunction.castToString(), ConfigDataFunction.toObject() - ); - } - -} diff --git a/core/src/main/old/builder/value/SectionValueBuilder.java b/core/src/main/old/builder/value/SectionValueBuilder.java deleted file mode 100644 index 4670fc8..0000000 --- a/core/src/main/old/builder/value/SectionValueBuilder.java +++ /dev/null @@ -1,52 +0,0 @@ -package cc.carm.lib.configuration.builder.value; - -import cc.carm.lib.configuration.builder.CommonConfigBuilder; -import cc.carm.lib.configuration.function.ConfigDataFunction; -import cc.carm.lib.configuration.function.ConfigValueParser; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; - -public class SectionValueBuilder - extends CommonConfigBuilder> { - - - protected final @NotNull Class valueClass; - - protected @NotNull ConfigValueParser, V> parser; - protected @NotNull ConfigDataFunction> serializer; - - public SectionValueBuilder(@NotNull Class valueClass, - @NotNull ConfigValueParser, V> parser, - @NotNull ConfigDataFunction> serializer) { - this.valueClass = valueClass; - this.parser = parser; - this.serializer = serializer; - } - - - @Override - protected @NotNull SectionValueBuilder getThis() { - return this; - } - - public @NotNull SectionValueBuilder parseValue(ConfigDataFunction, V> valueParser) { - return parseValue((section, path) -> valueParser.parse(section)); - } - - public @NotNull SectionValueBuilder parseValue(ConfigValueParser, V> valueParser) { - this.parser = valueParser; - return this; - } - - public @NotNull SectionValueBuilder serializeValue(ConfigDataFunction> serializer) { - this.serializer = serializer; - return this; - } - - @Override - public @NotNull ConfiguredSection build() { - return new ConfiguredSection<>(buildManifest(), this.valueClass, this.parser, this.serializer); - } - -} diff --git a/core/src/main/old/builder/value/SourceValueBuilder.java b/core/src/main/old/builder/value/SourceValueBuilder.java deleted file mode 100644 index 22c2c9a..0000000 --- a/core/src/main/old/builder/value/SourceValueBuilder.java +++ /dev/null @@ -1,70 +0,0 @@ -package cc.carm.lib.configuration.builder.value; - -import cc.carm.lib.configuration.builder.CommonConfigBuilder; -import cc.carm.lib.configuration.function.ConfigDataFunction; -import cc.carm.lib.configuration.function.ConfigValueParser; -import cc.carm.lib.configuration.value.standard.ConfiguredValue; -import org.jetbrains.annotations.NotNull; - -public class SourceValueBuilder extends CommonConfigBuilder> { - - protected final @NotNull Class sourceClass; - protected @NotNull ConfigDataFunction sourceParser; - - protected final @NotNull Class valueClass; - protected @NotNull ConfigValueParser valueParser; - - protected @NotNull ConfigDataFunction sourceSerializer; - protected @NotNull ConfigDataFunction valueSerializer; - - public SourceValueBuilder(@NotNull Class sourceClass, @NotNull ConfigDataFunction sourceParser, - @NotNull Class valueClass, @NotNull ConfigValueParser valueParser, - @NotNull ConfigDataFunction valueSerializer, - @NotNull ConfigDataFunction sourceSerializer) { - this.sourceClass = sourceClass; - this.sourceParser = sourceParser; - this.valueClass = valueClass; - this.valueParser = valueParser; - this.sourceSerializer = sourceSerializer; - this.valueSerializer = valueSerializer; - } - - @Override - protected @NotNull SourceValueBuilder getThis() { - return this; - } - - public @NotNull SourceValueBuilder parseSource(@NotNull ConfigDataFunction sourceParser) { - this.sourceParser = sourceParser; - return this; - } - - public @NotNull SourceValueBuilder parseValue(ConfigDataFunction valueParser) { - return parseValue((section, path) -> valueParser.parse(section)); - } - - public @NotNull SourceValueBuilder parseValue(@NotNull ConfigValueParser valueParser) { - this.valueParser = valueParser; - return this; - } - - public @NotNull SourceValueBuilder serializeValue(@NotNull ConfigDataFunction serializer) { - this.valueSerializer = serializer; - return this; - } - - public @NotNull SourceValueBuilder serializeSource(@NotNull ConfigDataFunction serializer) { - this.sourceSerializer = serializer; - return this; - } - - @Override - public @NotNull ConfiguredValue build() { - return new ConfiguredValue<>( - buildManifest(), this.valueClass, - this.valueParser.compose(this.sourceParser), - this.valueSerializer.andThen(sourceSerializer) - ); - } - -}