From 15823bb076d5866966002d5b8df63dfb4373b398 Mon Sep 17 00:00:00 2001 From: carm Date: Mon, 17 Feb 2025 04:47:23 +0800 Subject: [PATCH] fix(builder): Fixed wrong type of serializer --- .../builder/impl/AbstractSectionBuilder.java | 22 ++++++++++--------- .../builder/impl/AbstractSourceBuilder.java | 8 +++---- .../configuration/function/ValueConsumer.java | 21 ++++++++++++++++++ providers/yaml/pom.xml | 2 +- 4 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 core/src/main/java/cc/carm/lib/configuration/function/ValueConsumer.java 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 index c208bd0..cd7efc6 100644 --- 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 @@ -3,8 +3,8 @@ 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.DataConsumer; import cc.carm.lib.configuration.function.DataFunction; +import cc.carm.lib.configuration.function.ValueConsumer; import cc.carm.lib.configuration.function.ValueHandler; import cc.carm.lib.configuration.source.section.ConfigureSection; import cc.carm.lib.configuration.value.ConfigValue; @@ -34,28 +34,30 @@ public abstract class AbstractSectionBuilder< this.serializer = serializer; } - public @NotNull SELF parse(DataFunction valueParser) { + public @NotNull SELF parse(@NotNull DataFunction valueParser) { return parse((p, section) -> valueParser.handle(section)); } - public @NotNull SELF parse(ValueHandler valueParser) { + public @NotNull SELF parse(@NotNull ValueHandler valueParser) { this.parser = valueParser; return self(); } - public @NotNull SELF serialize(DataFunction> serializer) { - return serialize((p, value) -> serializer.handle(value)); - } - - public @NotNull SELF serialize(ValueHandler> serializer) { + public @NotNull SELF serialize(@NotNull ValueHandler> serializer) { this.serializer = serializer; return self(); } - public @NotNull SELF serialize(DataConsumer> serializer) { + public @NotNull SELF serialize(@NotNull DataFunction> serializer) { return serialize((p, value) -> { + return serializer.handle(value); + }); + } + + public @NotNull SELF serialize(@NotNull ValueConsumer, PARAM> serializer) { + return serialize((h, value) -> { Map map = new LinkedHashMap<>(); - serializer.accept(map); + serializer.accept(h, map, value); return 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 index 54c2864..91d4c48 100644 --- 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 @@ -19,9 +19,9 @@ public abstract class AbstractSourceBuilder< protected @NotNull ValueHandler valueSerializer; protected AbstractSourceBuilder(@NotNull ValueType type, - @NotNull ValueType sourceType, @NotNull ValueType paramType, - @NotNull ValueHandler parser, - @NotNull ValueHandler serializer) { + @NotNull ValueType sourceType, @NotNull ValueType paramType, + @NotNull ValueHandler parser, + @NotNull ValueHandler serializer) { super(type); this.sourceType = sourceType; this.paramType = paramType; @@ -29,7 +29,7 @@ public abstract class AbstractSourceBuilder< this.valueSerializer = serializer; } - public @NotNull SELF parse(DataFunction parser) { + public @NotNull SELF parse(@NotNull DataFunction parser) { return parse((p, source) -> parser.handle(source)); } diff --git a/core/src/main/java/cc/carm/lib/configuration/function/ValueConsumer.java b/core/src/main/java/cc/carm/lib/configuration/function/ValueConsumer.java new file mode 100644 index 0000000..2c0b2d9 --- /dev/null +++ b/core/src/main/java/cc/carm/lib/configuration/function/ValueConsumer.java @@ -0,0 +1,21 @@ +package cc.carm.lib.configuration.function; + + +import cc.carm.lib.configuration.source.ConfigurationHolder; +import org.jetbrains.annotations.NotNull; + +@FunctionalInterface +public interface ValueConsumer { + + void accept(@NotNull ConfigurationHolder holder, @NotNull U unit, @NotNull T data) throws Exception; + + default ValueConsumer andThen(ValueConsumer after) { + return (holder, unit, data) -> { + accept(holder, unit, data); + after.accept(holder, data, unit); + }; + } + +} + + diff --git a/providers/yaml/pom.xml b/providers/yaml/pom.xml index adb3520..5d97c76 100644 --- a/providers/yaml/pom.xml +++ b/providers/yaml/pom.xml @@ -32,7 +32,7 @@ cc.carm.lib yamlcommentwriter - 1.2.0 + 1.1.0 compile