Skip to content

Commit 99b832c

Browse files
committed
start working on displayAllFiels
Initial commit adding the new annotation display the unannotated field
1 parent e300f8c commit 99b832c

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.asfjava.ui.core.form;
2+
3+
import static java.lang.annotation.ElementType.TYPE;
4+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
5+
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.Target;
8+
9+
@Retention(RUNTIME)
10+
@Target(TYPE)
11+
public @interface DisplayAllFields {
12+
13+
}

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

+14
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.function.Predicate;
1616
import java.util.stream.Collectors;
1717

18+
import com.fasterxml.jackson.annotation.JsonIgnore;
1819
import com.fasterxml.jackson.databind.JsonMappingException;
1920
import com.fasterxml.jackson.databind.JsonNode;
2021
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -26,6 +27,7 @@
2627
import io.asfjava.ui.core.FormDefinitionGeneratorFactory;
2728
import io.asfjava.ui.core.form.Action;
2829
import io.asfjava.ui.core.form.ActionsGroup;
30+
import io.asfjava.ui.core.form.DisplayAllFields;
2931
import io.asfjava.ui.core.form.FieldSet;
3032
import io.asfjava.ui.core.form.Index;
3133
import io.asfjava.ui.core.form.Tab;
@@ -62,11 +64,23 @@ public UiForm generate(Class<? extends Serializable> formDto) throws JsonMapping
6264
tabbedFields.ifPresent(formDefinition::add);
6365
sortedNodes.entrySet().stream().forEach(nodesElement -> formDefinition.add(nodesElement.getValue()));
6466

67+
if (formDto.getDeclaredAnnotation(DisplayAllFields.class) != null) {
68+
// check if fields is not handled and haven't jackson json ignore annotation
69+
List<Field> unannotatedFiedls = Arrays.stream(declaredFields)
70+
.filter(field -> !nodes.containsKey(field) && !field.isAnnotationPresent(JsonIgnore.class))
71+
.collect(Collectors.toList());
72+
handleUnAnnotatedFields(formDefinition, unannotatedFiedls);
73+
}
74+
6575
handleActionsAnnotation(mapper, formDto, formDefinition);
6676

6777
return new UiForm(schema, formDefinition);
6878
}
6979

80+
private void handleUnAnnotatedFields(ArrayNode formDefinition, List<Field> unannotatedFiedls) {
81+
unannotatedFiedls.stream().forEach(field -> formDefinition.add(field.getName()));
82+
}
83+
7084
private void handleActionsAnnotation(ObjectMapper mapper, Class<? extends Serializable> formDto,
7185
ArrayNode formDefinition) {
7286
ObjectNode groupedActionsNode = mapper.createObjectNode();

0 commit comments

Comments
 (0)