1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 18:48:20 +08:00

feat!(value): Redesigned the Configuration api

This commit is contained in:
2025-02-02 22:29:18 +08:00
parent da3d4d1fd2
commit 374a6198d8
58 changed files with 1635 additions and 1383 deletions
+18 -27
View File
@@ -1,14 +1,18 @@
import cc.carm.lib.configuration.adapter.ValueAdapterRegistry;
import cc.carm.lib.configuration.adapter.strandard.EnumAdapter;
import cc.carm.lib.configuration.adapter.ValueType;
import cc.carm.lib.configuration.adapter.strandard.PrimitiveAdapters;
import cc.carm.lib.configuration.source.ConfigurationProvider;
import cc.carm.lib.configuration.loader.ConfigurationLoader;
import cc.carm.lib.easyoptions.OptionHolder;
import cc.carm.lib.configuration.source.loader.ConfigurationLoader;
import cc.carm.lib.configuration.source.option.ConfigurationOptionHolder;
import cc.carm.lib.configuration.value.standard.ConfiguredValue;
import cc.carm.test.config.TestSource;
import org.junit.Test;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class AdaptTest {
@@ -16,42 +20,29 @@ public class AdaptTest {
public void test() throws Exception {
ValueAdapterRegistry registry = new ValueAdapterRegistry();
registry.register(Long.class, PrimitiveAdapters.ofLong());
registry.register(long.class, PrimitiveAdapters.ofLong());
registry.register(Integer.class, PrimitiveAdapters.ofInteger());
registry.register(int.class, PrimitiveAdapters.ofInteger());
registry.register(Double.class, PrimitiveAdapters.ofDouble());
registry.register(double.class, PrimitiveAdapters.ofDouble());
registry.register(Float.class, PrimitiveAdapters.ofFloat());
registry.register(float.class, PrimitiveAdapters.ofFloat());
registry.register(Short.class, PrimitiveAdapters.ofShort());
registry.register(short.class, PrimitiveAdapters.ofShort());
registry.register(Byte.class, PrimitiveAdapters.ofByte());
registry.register(byte.class, PrimitiveAdapters.ofByte());
registry.register(Character.class, PrimitiveAdapters.ofCharacter());
registry.register(char.class, PrimitiveAdapters.ofCharacter());
registry.register(Boolean.class, PrimitiveAdapters.ofBoolean());
registry.register(boolean.class, PrimitiveAdapters.ofBoolean());
registry.register(String.class, PrimitiveAdapters.ofString());
registry.register(new EnumAdapter());
registry.register(PrimitiveAdapters.ADAPTERS);
registry.register(PrimitiveAdapters.ofEnum());
registry.register(Long.class, Duration.class, Duration::ofSeconds, Duration::getSeconds);
registry.register(ValueType.of(Long.class), ValueType.of(Duration.class), Duration::ofMillis, Duration::toMillis);
registry.register(
Duration.class, LocalTime.class,
ValueType.of(Duration.class), ValueType.of(LocalTime.class),
duration -> LocalTime.now().plus(duration),
data -> Duration.between(LocalTime.now(), data)
);
ConfigurationProvider<TestSource> provider = new ConfigurationProvider<>(new TestSource(), new ConfigurationLoader(), registry, new OptionHolder());
ConfigurationProvider<TestSource> provider = new ConfigurationProvider<>(
new TestSource(), new ConfigurationLoader(),
registry, new ConfigurationOptionHolder(), new ConcurrentHashMap<>()
);
LocalTime v = registry.deserialize(provider, LocalTime.class, "600");
LocalTime v = registry.deserialize(provider, LocalTime.class, 600000L);
Object d = registry.serialize(provider, v);
System.out.println(v);
System.out.println(d);
System.out.println(registry.deserialize(provider, TestEnum.class, "b"));
System.out.println(registry.deserialize(provider, TestEnum.class, "C"));
System.out.println(registry.serialize(provider, TestEnum.C).getClass());
}
enum TestEnum {
+1 -1
View File
@@ -1,4 +1,4 @@
import cc.carm.lib.configuration.loader.PathGenerator;
import cc.carm.lib.configuration.source.loader.PathGenerator;
import org.junit.Test;
public class NameTest {
@@ -4,15 +4,17 @@ import cc.carm.lib.configuration.adapter.ValueAdapterRegistry;
import cc.carm.lib.configuration.annotation.ConfigPath;
import cc.carm.lib.configuration.Configuration;
import cc.carm.lib.configuration.source.ConfigurationProvider;
import cc.carm.lib.configuration.loader.ConfigurationLoader;
import cc.carm.lib.easyoptions.OptionHolder;
import cc.carm.lib.configuration.source.loader.ConfigurationLoader;
import cc.carm.lib.configuration.source.option.ConfigurationOptionHolder;
import org.junit.Test;
import java.util.concurrent.ConcurrentHashMap;
public class LoaderTest {
@Test
public void test() throws Exception {
ConfigurationProvider<TestSource> provider = new ConfigurationProvider<>(new TestSource(), new ConfigurationLoader(), new ValueAdapterRegistry(), new OptionHolder());
ConfigurationProvider<TestSource> provider = new ConfigurationProvider<>(new TestSource(), new ConfigurationLoader(), new ValueAdapterRegistry(), new ConfigurationOptionHolder(), new ConcurrentHashMap<>());
ConfigurationLoader loader = new ConfigurationLoader();
loader.load(provider, ROOT.class);
@@ -1,7 +1,7 @@
package cc.carm.test.config;
import cc.carm.lib.configuration.source.ConfigurationSection;
import cc.carm.lib.configuration.source.ConfigurationSource;
import cc.carm.lib.configuration.source.section.ConfigurationSection;
import cc.carm.lib.configuration.source.section.ConfigurationSource;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -16,7 +16,7 @@ public class TestSource extends ConfigurationSource<TestSource, Map<String, Stri
}
@Override
protected TestSource getThis() {
protected TestSource self() {
return this;
}