Skip to content

Commit 453d6ac

Browse files
author
Imed Ben Heni
committed
Create SimpleFactory to remove some duplication between existing factories
1 parent 9bd9c6a commit 453d6ac

File tree

5 files changed

+23
-34
lines changed

5 files changed

+23
-34
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
package io.asfjava.ui.core;
22

3-
import java.util.Map;
4-
import java.util.Optional;
5-
import java.util.concurrent.ConcurrentHashMap;
6-
import java.util.function.Supplier;
7-
83
import io.asfjava.ui.core.generators.FormDefinitionGenerator;
94

10-
public final class FormDefinitionGeneratorFactory {
5+
public final class FormDefinitionGeneratorFactory extends SimpleFactory<String, FormDefinitionGenerator> {
116

127
private static FormDefinitionGeneratorFactory instance;
138

@@ -17,15 +12,5 @@ public static FormDefinitionGeneratorFactory getInstance() {
1712
: instance;
1813
}
1914

20-
private final Map<String, FormDefinitionGenerator> generators = new ConcurrentHashMap<>();
21-
2215
private FormDefinitionGeneratorFactory() {}
23-
24-
public Optional<FormDefinitionGenerator> getGenerator(String annotationName) {
25-
return Optional.ofNullable(generators.get(annotationName));
26-
}
27-
28-
void register(Supplier<String> annotationName, FormDefinitionGenerator generator) {
29-
generators.put(annotationName.get(), generator);
30-
}
3116
}

src/main/java/io/asfjava/ui/core/SchemaDecoratorFactory.java

+1-16
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22

33
import io.asfjava.ui.core.schema.decorators.SchemaDecorator;
44

5-
import java.util.Map;
6-
import java.util.Optional;
7-
import java.util.concurrent.ConcurrentHashMap;
8-
import java.util.function.Supplier;
9-
10-
public final class SchemaDecoratorFactory {
5+
public final class SchemaDecoratorFactory extends SimpleFactory<String, SchemaDecorator> {
116

127
private static SchemaDecoratorFactory instance;
138

@@ -17,15 +12,5 @@ public static SchemaDecoratorFactory getInstance() {
1712
: instance;
1813
}
1914

20-
private final Map<String, SchemaDecorator> decorators = new ConcurrentHashMap<>();
21-
2215
private SchemaDecoratorFactory() {}
23-
24-
public Optional<SchemaDecorator> getDecorator(String annotationName) {
25-
return Optional.ofNullable(decorators.get(annotationName));
26-
}
27-
28-
void register(Supplier<String> annotationName, SchemaDecorator generator) {
29-
decorators.put(annotationName.get(), generator);
30-
}
3116
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.asfjava.ui.core;
2+
3+
import java.util.Map;
4+
import java.util.Optional;
5+
import java.util.concurrent.ConcurrentHashMap;
6+
import java.util.function.Supplier;
7+
8+
public abstract class SimpleFactory<K, V> {
9+
10+
private final Map<K, V> map = new ConcurrentHashMap<>();
11+
12+
public Optional<V> get(K key) {
13+
return Optional.ofNullable(map.get(key));
14+
}
15+
16+
void register(Supplier<K> key, V value) {
17+
map.put(key.get(), value);
18+
}
19+
}

src/main/java/io/asfjava/ui/core/schema/SchemaDecoratorUtil.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ final class SchemaDecoratorUtil {
1212
void decorate(BeanProperty beanProperty, JsonSchema simpleTypeSchema) {
1313
Iterable<Annotation> it = beanProperty.getMember().annotations();
1414
it.forEach(
15-
annotation -> SchemaDecoratorFactory.getInstance().getDecorator(annotation.annotationType().getName())
15+
annotation -> SchemaDecoratorFactory.getInstance().get(annotation.annotationType().getName())
1616
.ifPresent(decorator -> decorator.customizeSchema(beanProperty, simpleTypeSchema)));
1717
}
1818

src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ private void buildFormDefinition(Map<Field, JsonNode> nodes, ObjectMapper mapper
212212
private void buildFieldDefinition(Field field, Annotation annotation, ObjectMapper mapper,
213213
Map<Field, JsonNode> nodes) {
214214
ObjectNode fieldFormDefinition = mapper.createObjectNode();
215-
FormDefinitionGeneratorFactory.getInstance().getGenerator(annotation.annotationType().getName())
215+
FormDefinitionGeneratorFactory.getInstance().get(annotation.annotationType().getName())
216216
.ifPresent(generator -> {
217217
generator.generate(fieldFormDefinition, field);
218218
nodes.put(field, fieldFormDefinition);

0 commit comments

Comments
 (0)