diff --git a/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java b/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java index 26ac79e..81f7416 100644 --- a/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java +++ b/src/main/java/io/asfjava/ui/core/FormDefinitionGeneratorFactory.java @@ -1,13 +1,8 @@ package io.asfjava.ui.core; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Supplier; - import io.asfjava.ui.core.generators.FormDefinitionGenerator; -public final class FormDefinitionGeneratorFactory { +public final class FormDefinitionGeneratorFactory extends SimpleFactory { private static FormDefinitionGeneratorFactory instance; @@ -17,15 +12,5 @@ public static FormDefinitionGeneratorFactory getInstance() { : instance; } - private final Map generators = new ConcurrentHashMap<>(); - private FormDefinitionGeneratorFactory() {} - - public Optional getGenerator(String annotationName) { - return Optional.ofNullable(generators.get(annotationName)); - } - - void register(Supplier annotationName, FormDefinitionGenerator generator) { - generators.put(annotationName.get(), generator); - } } diff --git a/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java b/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java index d264678..52ca93a 100644 --- a/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java +++ b/src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java @@ -2,12 +2,7 @@ import io.asfjava.ui.core.schema.decorators.SchemaDecorator; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Supplier; - -public final class SchemaDecoratorFactory { +public final class SchemaDecoratorFactory extends SimpleFactory { private static SchemaDecoratorFactory instance; @@ -17,15 +12,5 @@ public static SchemaDecoratorFactory getInstance() { : instance; } - private final Map decorators = new ConcurrentHashMap<>(); - private SchemaDecoratorFactory() {} - - public Optional getDecorator(String annotationName) { - return Optional.ofNullable(decorators.get(annotationName)); - } - - void register(Supplier annotationName, SchemaDecorator generator) { - decorators.put(annotationName.get(), generator); - } } diff --git a/src/main/java/io/asfjava/ui/core/SimpleFactory.java b/src/main/java/io/asfjava/ui/core/SimpleFactory.java new file mode 100644 index 0000000..f906222 --- /dev/null +++ b/src/main/java/io/asfjava/ui/core/SimpleFactory.java @@ -0,0 +1,19 @@ +package io.asfjava.ui.core; + +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; + +public abstract class SimpleFactory { + + private final Map map = new ConcurrentHashMap<>(); + + public Optional get(K key) { + return Optional.ofNullable(map.get(key)); + } + + void register(Supplier key, V value) { + map.put(key.get(), value); + } +} diff --git a/src/main/java/io/asfjava/ui/core/schema/SchemaDecoratorUtil.java b/src/main/java/io/asfjava/ui/core/schema/SchemaDecoratorUtil.java index 3309091..cff40b7 100644 --- a/src/main/java/io/asfjava/ui/core/schema/SchemaDecoratorUtil.java +++ b/src/main/java/io/asfjava/ui/core/schema/SchemaDecoratorUtil.java @@ -12,7 +12,7 @@ final class SchemaDecoratorUtil { void decorate(BeanProperty beanProperty, JsonSchema simpleTypeSchema) { Iterable it = beanProperty.getMember().annotations(); it.forEach( - annotation -> SchemaDecoratorFactory.getInstance().getDecorator(annotation.annotationType().getName()) + annotation -> SchemaDecoratorFactory.getInstance().get(annotation.annotationType().getName()) .ifPresent(decorator -> decorator.customizeSchema(beanProperty, simpleTypeSchema))); } diff --git a/src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java b/src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java index 7ee519b..510234a 100644 --- a/src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java +++ b/src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java @@ -212,7 +212,7 @@ private void buildFormDefinition(Map nodes, ObjectMapper mapper private void buildFieldDefinition(Field field, Annotation annotation, ObjectMapper mapper, Map nodes) { ObjectNode fieldFormDefinition = mapper.createObjectNode(); - FormDefinitionGeneratorFactory.getInstance().getGenerator(annotation.annotationType().getName()) + FormDefinitionGeneratorFactory.getInstance().get(annotation.annotationType().getName()) .ifPresent(generator -> { generator.generate(fieldFormDefinition, field); nodes.put(field, fieldFormDefinition);