1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.form.validator.definition;
35
36 import info.magnolia.ui.form.AbstractFormKeyGenerator;
37 import info.magnolia.ui.form.definition.TabDefinition;
38 import info.magnolia.ui.form.field.definition.FieldDefinition;
39
40 import java.lang.reflect.AnnotatedElement;
41 import java.util.List;
42 import java.util.Optional;
43
44
45
46
47
48 public class FieldValidatorDefinitionKeyGenerator extends AbstractFormKeyGenerator<FieldValidatorDefinition> {
49
50 private static final String VALIDATORS = "validators";
51 private static final String VALIDATION = "validation";
52
53 @Override
54 protected void keysFor(List<String> keys, FieldValidatorDefinition object, AnnotatedElement el) {
55 FieldDefinition fieldDefinition = getParentViaCast(object);
56 Optional<TabDefinition> tabDefinition = getTabDefinition(fieldDefinition);
57
58 final String rawIdOrName = getIdOrNameForUnknownRoot(object, false);
59 final String idOrName = keyify(rawIdOrName);
60 final String suffix = fieldOrGetterName(el);
61
62 tabDefinition.ifPresent(definition ->
63 addKey(keys, idOrName, definition.getName(), fieldDefinition.getName(), VALIDATION, suffix));
64 addKey(keys, idOrName, fieldDefinition.getName(), VALIDATION, suffix);
65 addKey(keys, fieldDefinition.getName(), VALIDATION, suffix);
66
67 getValidatorName(object).ifPresent(name -> addKey(keys, VALIDATORS, name, suffix));
68 }
69
70
71
72
73 private Optional<TabDefinition> getTabDefinition(FieldDefinition fieldDefinition) {
74 Object def = getParentViaCast(fieldDefinition);
75 if (def instanceof TabDefinition) {
76 return Optional.of((TabDefinition) def);
77 } else if (def instanceof FieldDefinition) {
78 return getTabDefinition((FieldDefinition) def);
79 }
80 return Optional.empty();
81 }
82
83 private Optional<String> getValidatorName(FieldValidatorDefinition definition) {
84 if (definition instanceof ConfiguredFieldValidatorDefinition) {
85 return Optional.of(((ConfiguredFieldValidatorDefinition) definition).getName());
86 }
87 return Optional.empty();
88 }
89 }