Skip to content

Commit f3923fd

Browse files
committed
update package, working in progress to optimize the core design #1
1 parent 41b745c commit f3923fd

13 files changed

+79
-146
lines changed

demo/src/main/java/io/asfjava/ui/demo/DemoApplication.java

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
@SpringBootApplication
88
@ServletComponentScan
99
public class DemoApplication {
10-
1110
public static void main(String[] args) {
1211
SpringApplication.run(DemoApplication.class, args);
1312
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.asfjava.ui.demo;
2+
3+
import javax.servlet.ServletContextEvent;
4+
import javax.servlet.ServletContextListener;
5+
import javax.servlet.annotation.WebListener;
6+
7+
@WebListener
8+
class GeneratorFactoryInitializer implements ServletContextListener {
9+
10+
@Override
11+
public final void contextInitialized(final ServletContextEvent sce) {
12+
System.out.println("Hellooooo ");
13+
}
14+
15+
@Override
16+
public final void contextDestroyed(final ServletContextEvent sce) {
17+
18+
}
19+
}

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

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package io.asfjava.ui.core;
22

3-
import java.lang.annotation.Annotation;
43
import java.util.HashMap;
54

5+
import io.asfjava.ui.core.generators.FormDefinitionGenerator;
6+
67
public final class FormDefinitionGeneratorFactory {
78

8-
public FormDefinitionGenerator getGenerator(Annotation annotation) {
9-
return GENERATORS.get(annotation.annotationType().getName());
9+
public FormDefinitionGenerator getGenerator(String annotationName) {
10+
return GENERATORS.get(annotationName);
1011
}
1112

12-
void register(Annotation annotation, FormDefinitionGenerator generator) {
13-
GENERATORS.put(annotation.annotationType().getName(), generator);
13+
void register(String annotationName, FormDefinitionGenerator generator) {
14+
GENERATORS.put(annotationName, generator);
1415
}
1516

1617
public static FormDefinitionGeneratorFactory getInstance() {

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

+25-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
11
package io.asfjava.ui.core;
22

3+
import java.util.Set;
4+
5+
import org.reflections.Reflections;
6+
7+
import io.asfjava.ui.core.generators.FormDefinitionGenerator;
8+
39
final class GeneratorFactoryLoader {
10+
private static final String PACKAGESCAN = "io.asfjava.ui.schema.generators";
11+
private static Reflections reflections = new Reflections(PACKAGESCAN);
412

513
void load() {
6-
System.out.println("I'm loader");
14+
15+
Set<Class<? extends FormDefinitionGenerator>> subTypes = reflections
16+
.getSubTypesOf(FormDefinitionGenerator.class);
17+
for (Class<? extends FormDefinitionGenerator> subtype : subTypes) {
18+
FormDefinitionGenerator formDefinitionGenerator;
19+
try {
20+
formDefinitionGenerator = (FormDefinitionGenerator) Class.forName(subtype.getName()).newInstance();
21+
FormDefinitionGeneratorFactory.getInstance().register(formDefinitionGenerator.getAnnoation(),
22+
formDefinitionGenerator);
23+
} catch (InstantiationException e) {
24+
e.printStackTrace();
25+
} catch (IllegalAccessException e) {
26+
e.printStackTrace();
27+
} catch (ClassNotFoundException e) {
28+
e.printStackTrace();
29+
}
30+
}
731
}
832

933
void unload() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.asfjava.ui.core.generators;
2+
3+
import java.lang.reflect.Field;
4+
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
6+
7+
final class DefaultGenerator implements FormDefinitionGenerator {
8+
@Override
9+
public void generate(ObjectNode node, Field field) {
10+
11+
}
12+
13+
@Override
14+
public String getAnnoation() {
15+
return "";
16+
}
17+
18+
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.asfjava.ui.core;
1+
package io.asfjava.ui.core.generators;
22

33
import java.lang.reflect.Field;
44

@@ -7,4 +7,6 @@
77
public interface FormDefinitionGenerator {
88

99
void generate(ObjectNode node, Field field);
10+
11+
String getAnnoation();
1012
}

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import com.fasterxml.jackson.databind.node.ObjectNode;
66

7-
import io.asfjava.ui.core.FormDefinitionGenerator;
87
import io.asfjava.ui.core.form.TextField;
98

109
class TextFieldGenerator implements FormDefinitionGenerator {
@@ -42,4 +41,9 @@ public void generate(ObjectNode fieldFormDefinition, Field field) {
4241
}
4342
}
4443

44+
@Override
45+
public String getAnnoation() {
46+
return TextField.class.getName();
47+
}
48+
4549
}

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
1515
import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator;
1616

17-
import io.asfjava.ui.core.FormDefinitionGenerator;
1817
import io.asfjava.ui.core.FormDefinitionGeneratorFactory;
18+
import io.asfjava.ui.core.generators.FormDefinitionGenerator;
1919
import io.asfjava.ui.dto.UiForm;
2020

2121
public final class UiFormSchemaGenerator {
@@ -44,7 +44,8 @@ private void buildFormDefinition(ObjectMapper mapper, ArrayNode formDefinition,
4444

4545
private JsonNode buildFieldDefinition(Field field, Annotation annotation, ObjectMapper mapper) {
4646
ObjectNode fieldFormDefinition = mapper.createObjectNode();
47-
FormDefinitionGenerator generator = FormDefinitionGeneratorFactory.getInstance().getGenerator(annotation);
47+
FormDefinitionGenerator generator = FormDefinitionGeneratorFactory.getInstance()
48+
.getGenerator(annotation.getClass().getName());
4849
generator.generate(fieldFormDefinition, field);
4950
return fieldFormDefinition;
5051

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

-16
This file was deleted.

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

-48
This file was deleted.

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

-28
This file was deleted.

src/main/java/io/asfjava/ui/schema/generators/loader/GeneratorsLoader.java

-32
This file was deleted.

src/main/java/io/asfjava/ui/schema/interfaces/SchemaGenerator.java

-11
This file was deleted.

0 commit comments

Comments
 (0)