diff --git a/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapterRegistry.java b/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapterRegistry.java index 77eb729..5540d19 100644 --- a/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapterRegistry.java +++ b/core/src/main/java/cc/carm/lib/configuration/adapter/ValueAdapterRegistry.java @@ -41,6 +41,7 @@ public class ValueAdapterRegistry

{ adapters.remove(typeClass); } + @SuppressWarnings("unchecked") public T deserialize(Class type, Object value) throws Exception { if (value == null) return null; if (type == Object.class) return type.cast(value); @@ -49,13 +50,13 @@ public class ValueAdapterRegistry

{ if (adapter == null) throw new RuntimeException("No adapter for type " + type.getName()); // CHECK IF VALUE IS ADAPTED FROM GIVEN VALUE'S TYPE - if (adapter.isAdaptedFrom(value)) return type.cast(adapter.deserializeObject(provider, value)); + if (adapter.isAdaptedFrom(value)) return (T) adapter.deserializeObject(provider, value); // OTHERWISE, WE NEED TO DESERIALIZE ONE BY ONE Object baseValue = deserialize(adapter.getBaseType(), value); if (baseValue == null) return null; // Null check - return type.cast(adapter.deserializeObject(provider, baseValue)); + return (T) adapter.deserializeObject(provider, baseValue); } public Object serialize(T value) throws Exception { diff --git a/core/src/main/java/cc/carm/lib/configuration/adapter/primitive/NumberAdapter.java b/core/src/main/java/cc/carm/lib/configuration/adapter/primitive/NumberAdapter.java deleted file mode 100644 index fd535c0..0000000 --- a/core/src/main/java/cc/carm/lib/configuration/adapter/primitive/NumberAdapter.java +++ /dev/null @@ -1,24 +0,0 @@ -package cc.carm.lib.configuration.adapter.primitive; - -import cc.carm.lib.configuration.core.function.ConfigDataFunction; -import cc.carm.lib.configuration.source.ConfigurationProvider; -import org.jetbrains.annotations.NotNull; - -public abstract class NumberAdapter

extends PrimitiveAdapter { - - public static

NumberAdapter of(Class numberClass, - ConfigDataFunction function) { - return new NumberAdapter(numberClass) { - @Override - public T deserialize(@NotNull P provider, @NotNull Object data) throws Exception { - return function.parse(data); - } - }; - } - - protected NumberAdapter(Class valueType) { - super(valueType); - } - - -} diff --git a/core/src/main/java/cc/carm/lib/configuration/adapter/primitive/PrimitiveAdapter.java b/core/src/main/java/cc/carm/lib/configuration/adapter/primitive/PrimitiveAdapter.java index 1b80ea3..4c484dd 100644 --- a/core/src/main/java/cc/carm/lib/configuration/adapter/primitive/PrimitiveAdapter.java +++ b/core/src/main/java/cc/carm/lib/configuration/adapter/primitive/PrimitiveAdapter.java @@ -1,11 +1,23 @@ package cc.carm.lib.configuration.adapter.primitive; import cc.carm.lib.configuration.adapter.ValueAdapter; +import cc.carm.lib.configuration.core.function.ConfigDataFunction; import cc.carm.lib.configuration.source.ConfigurationProvider; import org.jetbrains.annotations.NotNull; public abstract class PrimitiveAdapter

extends ValueAdapter { + public static

PrimitiveAdapter of(@NotNull Class clazz, + @NotNull ConfigDataFunction function) { + return new PrimitiveAdapter(clazz) { + @Override + public T deserialize(@NotNull P provider, @NotNull Object data) throws Exception { + return function.parse(data); + } + }; + } + + protected PrimitiveAdapter(Class valueType) { super(Object.class, valueType); } diff --git a/core/src/test/java/AdaptTest.java b/core/src/test/java/AdaptTest.java index 6600144..077dc9d 100644 --- a/core/src/test/java/AdaptTest.java +++ b/core/src/test/java/AdaptTest.java @@ -1,5 +1,5 @@ import cc.carm.lib.configuration.adapter.ValueAdapterRegistry; -import cc.carm.lib.configuration.adapter.primitive.NumberAdapter; +import cc.carm.lib.configuration.adapter.primitive.PrimitiveAdapter; import cc.carm.lib.configuration.source.ConfigurationProvider; import org.junit.Test; @@ -12,8 +12,9 @@ public class AdaptTest { public void test() throws Exception { ValueAdapterRegistry registry = new ValueAdapterRegistry<>(new ConfigurationProvider()); - registry.register(NumberAdapter.of(Long.class, data -> Long.parseLong(data.toString()))); - registry.register(NumberAdapter.of(long.class, data -> Long.parseLong(data.toString()))); + registry.register(PrimitiveAdapter.of(Long.class, data -> Long.parseLong(data.toString()))); + registry.register(PrimitiveAdapter.of(Integer.class, data -> Integer.parseInt(data.toString()))); + registry.register(PrimitiveAdapter.of(long.class, data -> Long.parseLong(data.toString()))); registry.register(Long.class, Duration.class, Duration::ofSeconds, Duration::getSeconds); registry.register( Duration.class, LocalTime.class,