1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 10:38:19 +08:00

feat(adapter): Support complex ParameterizedType's serialize & deserialize.

This commit is contained in:
2025-06-25 09:31:07 +08:00
parent 608d92f834
commit 8c1214612a
23 changed files with 213 additions and 57 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
<parent>
<artifactId>configured-parent</artifactId>
<groupId>cc.carm.lib</groupId>
<version>4.1.6</version>
<version>4.1.7-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<properties>
@@ -4,13 +4,37 @@ import cc.carm.lib.configuration.source.ConfigurationFactory;
import cc.carm.lib.configuration.source.ConfigurationHolder;
import org.jetbrains.annotations.NotNull;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class TempConfigFactory
extends ConfigurationFactory<TempSource, ConfigurationHolder<TempSource>, TempConfigFactory> {
extends ConfigurationFactory<TempSource, ConfigurationHolder<TempSource>, TempConfigFactory> {
public static @NotNull TempConfigFactory create() {
return new TempConfigFactory();
}
protected Map<String, Object> defaults = new LinkedHashMap<>();
public TempConfigFactory defaults(@NotNull Map<String, Object> defaults) {
this.defaults = defaults;
return this;
}
public TempConfigFactory defaults(Supplier<Map<String, Object>> defaultsSupplier) {
return defaults(defaultsSupplier.get());
}
public TempConfigFactory defaults(@NotNull Consumer<Map<String, Object>> defaultsConsumer) {
return defaults(() -> {
Map<String, Object> defaults = new LinkedHashMap<>();
defaultsConsumer.accept(defaults);
return defaults;
});
}
@Override
protected TempConfigFactory self() {
return this;
@@ -20,7 +44,7 @@ public class TempConfigFactory
public @NotNull ConfigurationHolder<TempSource> build() {
return new ConfigurationHolder<TempSource>(this.adapters, this.options, this.metadata, this.initializer) {
final @NotNull TempSource source = new TempSource(this);
final @NotNull TempSource source = new TempSource(this, defaults);
@Override
public @NotNull TempSource config() {
@@ -4,18 +4,19 @@ import cc.carm.lib.configuration.source.ConfigurationHolder;
import cc.carm.lib.configuration.source.section.ConfigureSource;
import cc.carm.lib.configuration.source.section.SourcedSection;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.Objects;
public class TempSource extends ConfigureSource<SourcedSection, Map<String, Object>, TempSource> {
protected @Nullable SourcedSection rootSection;
protected TempSource(@NotNull ConfigurationHolder<? extends TempSource> holder) {
protected @NotNull SourcedSection rootSection;
protected TempSource(@NotNull ConfigurationHolder<? extends TempSource> holder,
@NotNull Map<String, Object> defaults) {
super(holder, 0);
this.rootSection = SourcedSection.root(this);
this.rootSection = SourcedSection.root(this, defaults);
}
@Override