From eb926a4f21f7aa6cc5d8c58208f0de5b66cefc7a Mon Sep 17 00:00:00 2001 From: Michael Schnell Date: Sun, 31 Mar 2024 09:25:25 +0200 Subject: [PATCH] Added new helper type --- .../api/SerializedDataType2ClassMapping.java | 10 ++++++++++ .../api/SimpleSerializedDataTypeRegistry.java | 17 +++++++++++++---- .../SimpleSerializedDataTypeRegistryTest.java | 11 ++++++++--- 3 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 api/src/main/java/org/fuin/esc/api/SerializedDataType2ClassMapping.java diff --git a/api/src/main/java/org/fuin/esc/api/SerializedDataType2ClassMapping.java b/api/src/main/java/org/fuin/esc/api/SerializedDataType2ClassMapping.java new file mode 100644 index 00000000..405f8793 --- /dev/null +++ b/api/src/main/java/org/fuin/esc/api/SerializedDataType2ClassMapping.java @@ -0,0 +1,10 @@ +package org.fuin.esc.api; + +/** + * Maps a type to a class. + * + * @param type Type that is used as unique name for the class. + * @param clasz Class that is represented by the type. + */ +public record SerializedDataType2ClassMapping(SerializedDataType type, Class clasz) { +} diff --git a/api/src/main/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistry.java b/api/src/main/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistry.java index 99c0ac46..ebef77e1 100644 --- a/api/src/main/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistry.java +++ b/api/src/main/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistry.java @@ -41,10 +41,8 @@ public SimpleSerializedDataTypeRegistry() { /** * Adds a new type/class combination to the registry. * - * @param type - * Type of the data. - * @param clasz - * Class for the type. + * @param type Type of the data. + * @param clasz Class for the type. */ public void add(@NotNull final SerializedDataType type, final Class clasz) { Contract.requireArgNotNull("type", type); @@ -52,6 +50,17 @@ public void add(@NotNull final SerializedDataType type, final Class clasz) { map.put(type, clasz); } + /** + * Adds a new type/class combination to the registry. + * + * @param mapping Type to class mapping. + */ + public void add(@NotNull final SerializedDataType2ClassMapping mapping) { + Contract.requireArgNotNull("mapping", mapping); + map.put(mapping.type(), mapping.clasz()); + } + + @Override @NotNull public Class findClass(@NotNull final SerializedDataType type) { diff --git a/api/src/test/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistryTest.java b/api/src/test/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistryTest.java index 519fbe58..18e463c2 100644 --- a/api/src/test/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistryTest.java +++ b/api/src/test/java/org/fuin/esc/api/SimpleSerializedDataTypeRegistryTest.java @@ -31,10 +31,15 @@ public class SimpleSerializedDataTypeRegistryTest { public void testFindClass() { final SimpleSerializedDataTypeRegistry testee = new SimpleSerializedDataTypeRegistry(); - final SerializedDataType type = new SerializedDataType("String"); - testee.add(type, String.class); - assertThat(testee.findClass(type)).isEqualTo(String.class); + final SerializedDataType stringType = new SerializedDataType("String"); + testee.add(stringType, String.class); + + final SerializedDataType integerType = new SerializedDataType("Integer"); + testee.add(new SerializedDataType2ClassMapping(integerType, Integer.class)); + + assertThat(testee.findClass(stringType)).isEqualTo(String.class); + assertThat(testee.findClass(integerType)).isEqualTo(Integer.class); try { testee.findClass(new SerializedDataType("NotExists"));