diff --git a/pom.xml b/pom.xml
index 9d359f7..5355566 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
io.sfjava.ui
sf-java-ui
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT
jar
sf-java-ui
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 7e1e678..110adee 100644
--- a/src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java
+++ b/src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java
@@ -3,6 +3,7 @@
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
@@ -12,9 +13,12 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
+import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
+import org.reflections.ReflectionUtils;
+
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -43,7 +47,8 @@ public final class UiFormSchemaGenerator {
private static UiFormSchemaGenerator instance;
public UiForm generate(Class extends Serializable> formDto) throws JsonMappingException {
- Field[] declaredFields = formDto.getDeclaredFields();
+ Set declaredFields = ReflectionUtils.getAllFields(formDto,
+ field -> !Modifier.isStatic(field.getModifiers()));
ObjectMapper mapper = new ObjectMapper();
JsonSchemaGenerator schemaGen = initSchemaGen(mapper);
@@ -105,13 +110,13 @@ private ObjectNode buildActionNode(ObjectMapper mapper, Action action) {
return node;
}
- private ObjectNode handlerGroupedFields(ObjectMapper mapper, Field[] declaredFields,
+ private ObjectNode handlerGroupedFields(ObjectMapper mapper, Set declaredFields,
Map sortedNodes) {
Predicate super Field> checkFieldSetAnnotation = field -> field.isAnnotationPresent(FieldSet.class);
Map> groupedFields = new LinkedHashMap<>();
- Arrays.stream(declaredFields).filter(checkFieldSetAnnotation)
+ declaredFields.stream().filter(checkFieldSetAnnotation)
.forEach(field -> groupFieldsByTab(sortedNodes, field, groupedFields));
ArrayNode groups = mapper.createArrayNode();
@@ -123,7 +128,7 @@ private ObjectNode handlerGroupedFields(ObjectMapper mapper, Field[] declaredFie
}
- private ObjectNode handleTabbedFields(ObjectMapper mapper, Field[] declaredFields, Map nodes) {
+ private ObjectNode handleTabbedFields(ObjectMapper mapper, Set declaredFields, Map nodes) {
Predicate super Field> checkTabAnnotation = field -> field.isAnnotationPresent(Tab.class);
Comparator super Field> tabIndexComparator = (field1, field2) -> Integer
@@ -138,7 +143,7 @@ private ObjectNode handleTabbedFields(ObjectMapper mapper, Field[] declaredField
Map> groupedFieldsByTab = new LinkedHashMap<>();
- Arrays.stream(declaredFields).filter(checkTabAnnotation).sorted(fieldIndexComparator).sorted(tabIndexComparator)
+ declaredFields.stream().filter(checkTabAnnotation).sorted(fieldIndexComparator).sorted(tabIndexComparator)
.forEach(field -> groupFieldsByTab(nodes, field, groupedFieldsByTab));
ArrayNode tabs = mapper.createArrayNode();
@@ -161,10 +166,10 @@ private ObjectNode handleTabbedFields(ObjectMapper mapper, Field[] declaredField
}
- private Map initFieldsFormDefinition(ObjectMapper mapper, Field[] declaredFields) {
+ private Map initFieldsFormDefinition(ObjectMapper mapper, Set declaredFields) {
Map nodes = new HashMap<>();
- Arrays.stream(declaredFields).forEach(field -> buildFormDefinition(nodes, mapper, field));
+ declaredFields.forEach(field -> buildFormDefinition(nodes, mapper, field));
return nodes;
}