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.dialog.registry.validator;
35
36 import info.magnolia.config.registry.DefinitionProvider;
37 import info.magnolia.ui.dialog.definition.DialogDefinition;
38 import info.magnolia.ui.dialog.definition.FormDialogDefinition;
39 import info.magnolia.ui.form.definition.TabDefinition;
40 import info.magnolia.ui.form.field.definition.ConfiguredFieldDefinition;
41 import info.magnolia.ui.form.field.definition.FieldDefinition;
42 import info.magnolia.ui.form.fieldtype.registry.AbstractFieldTypeDefinitionValidator;
43 import info.magnolia.ui.form.fieldtype.registry.FieldTypeDefinitionRegistry;
44 import info.magnolia.util.OptionalConsumer;
45
46 import java.util.Collection;
47
48 import javax.inject.Inject;
49
50 import org.apache.commons.lang3.StringUtils;
51
52
53
54
55
56
57 @Deprecated
58 public class DialogDefinitionValidator extends AbstractFieldTypeDefinitionValidator<DialogDefinition> {
59
60 @Inject
61 public DialogDefinitionValidator(FieldTypeDefinitionRegistry fieldTypeDefinitionRegistry) {
62 super(fieldTypeDefinitionRegistry);
63 }
64
65 @Override
66 protected void validateDefinition(Collection<DefinitionProvider.Problem> problems, DefinitionProvider<DialogDefinition> definitionProvider) {
67 if (definitionProvider.get() instanceof FormDialogDefinition) {
68 FormDialogDefinition definition = (FormDialogDefinition) definitionProvider.get();
69 if (definition.getForm() != null) {
70 definition.getForm()
71 .getTabs()
72 .forEach(tabDefinition -> tabDefinition.getFields().forEach(fieldDefinition -> {
73 final String path = getPath(tabDefinition, fieldDefinition);
74 OptionalConsumer.of(getFieldTypeDefinitionRegistry().getByDefinitionType(fieldDefinition.getClass()))
75 .ifPresent(fieldTypeDefinitionProvider -> validateFieldDefinition(problems, fieldTypeDefinitionProvider, path, definitionProvider.getMetadata()))
76 .ifNotPresent(() -> reportMissingFieldTypeDefinition(problems, fieldDefinition, path));
77 }));
78 }
79 }
80 }
81
82 private String getPath(TabDefinition tabDefinition, FieldDefinition fieldDefinition) {
83 String path = "/form/tabs/" + tabDefinition.getName() + "/fields/" + fieldDefinition.getName();
84 if (fieldDefinition instanceof ConfiguredFieldDefinition) {
85 ConfiguredFieldDefinition configuredFieldDefinition = (ConfiguredFieldDefinition) fieldDefinition;
86 if (StringUtils.isNotBlank(configuredFieldDefinition.getFieldType())) {
87 return path + "@fieldType";
88 }
89 }
90 return path + "@class";
91 }
92 }