Skip to content

Commit 656ba16

Browse files
fakhreddinefakhreddine
fakhreddine
authored and
fakhreddine
committed
GeneratorLoader and some other modification
1 parent cc4458e commit 656ba16

File tree

5 files changed

+43
-27
lines changed

5 files changed

+43
-27
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@
2929
<artifactId>jackson-annotations</artifactId>
3030
<version>2.8.6</version>
3131
</dependency>
32+
<dependency>
33+
<groupId>org.reflections</groupId>
34+
<artifactId>reflections</artifactId>
35+
<version>0.9.11</version>
36+
</dependency>
3237
<dependency>
3338
<groupId>com.fasterxml.jackson.module</groupId>
3439
<artifactId>jackson-module-jsonSchema</artifactId>

src/main/java/io/asfjava/ui/schema/generators/DefaultGenerator.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,10 @@
77

88
import io.asfjava.ui.schema.interfaces.SchemaGenerator;
99

10-
public final class DefaultGenerator implements SchemaGenerator{
11-
12-
private static SchemaGenerator defaultGenerator=new DefaultGenerator();
13-
14-
private DefaultGenerator() {
15-
16-
}
17-
10+
public final class DefaultGenerator implements SchemaGenerator {
1811
@Override
1912
public ArrayNode generate(ObjectNode fieldFormDefinition, ArrayNode formDefinition, Field field) {
2013
return formDefinition;
2114
}
22-
23-
public static SchemaGenerator getDefaultGenerator()
24-
{
25-
return defaultGenerator;
26-
}
2715

2816
}

src/main/java/io/asfjava/ui/schema/generators/TextFieldGenerator.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@
1010

1111
public final class TextFieldGenerator implements SchemaGenerator {
1212

13-
private static SchemaGenerator textFieldGenerator = new TextFieldGenerator();
14-
15-
private TextFieldGenerator() {
16-
17-
}
18-
1913
@Override
2014
public ArrayNode generate(ObjectNode fieldFormDefinition, ArrayNode formDefinition, Field field) {
2115
TextField annotation = field.getAnnotation(TextField.class);
@@ -51,8 +45,4 @@ public ArrayNode generate(ObjectNode fieldFormDefinition, ArrayNode formDefiniti
5145
return formDefinition;
5246
}
5347

54-
public static SchemaGenerator getTextFieldGenerator() {
55-
return textFieldGenerator;
56-
}
57-
5848
}

src/main/java/io/asfjava/ui/schema/generators/factory/GeneratorFactory.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.asfjava.ui.schema.generators.factory;
22

3-
import java.security.GeneralSecurityException;
43
import java.util.concurrent.ConcurrentHashMap;
54

65
import io.asfjava.ui.schema.generators.DefaultGenerator;
@@ -10,14 +9,16 @@ public class GeneratorFactory {
109

1110
private static ConcurrentHashMap<String, SchemaGenerator> generators = new ConcurrentHashMap<>();
1211

13-
public static SchemaGenerator getGenerator(Class genertor) {
12+
private static DefaultGenerator defaultGenerator = new DefaultGenerator();
13+
14+
public static SchemaGenerator getGenerator(Class<? extends SchemaGenerator> genertor) {
1415
if (!generators.contains(genertor.getName())) {
15-
return DefaultGenerator.getDefaultGenerator();
16+
return defaultGenerator;
1617
}
1718
return generators.get(genertor.getName());
1819
}
1920

20-
public static void registerDriver(Class genertor, SchemaGenerator schemaGenerator) {
21+
public static void registerDriver(Class<? extends SchemaGenerator> genertor, SchemaGenerator schemaGenerator) {
2122
if (genertor != null && schemaGenerator != null) {
2223
generators.put(genertor.getName(), schemaGenerator);
2324
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.asfjava.ui.schema.generators.loader;
2+
3+
import java.util.Set;
4+
5+
import org.reflections.Reflections;
6+
7+
import io.asfjava.ui.schema.generators.factory.GeneratorFactory;
8+
import io.asfjava.ui.schema.interfaces.SchemaGenerator;
9+
10+
public class GeneratorsLoader {
11+
12+
private static final String PACKAGESCAN = "io.asfjava.ui.schema.generators";
13+
private static Reflections reflections = new Reflections(PACKAGESCAN);
14+
15+
public static void loadGenerators() {
16+
Set<Class<? extends SchemaGenerator>> subTypes = reflections.getSubTypesOf(SchemaGenerator.class);
17+
for (Class<? extends SchemaGenerator> subtype : subTypes)
18+
{ SchemaGenerator schemaGenerator;
19+
try {
20+
schemaGenerator = (SchemaGenerator) Class.forName(subtype.getName()).newInstance();
21+
GeneratorFactory.registerDriver(subtype,schemaGenerator);
22+
} catch (InstantiationException e) {
23+
e.printStackTrace();
24+
} catch (IllegalAccessException e) {
25+
e.printStackTrace();
26+
} catch (ClassNotFoundException e) {
27+
e.printStackTrace();
28+
}
29+
}
30+
}
31+
32+
}

0 commit comments

Comments
 (0)