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;
35
36 import info.magnolia.config.registry.DefinitionProvider;
37 import info.magnolia.config.registry.DefinitionProviderBuilder;
38 import info.magnolia.config.registry.DefinitionProviderWrapper;
39 import info.magnolia.config.registry.validator.DefinitionValidator;
40 import info.magnolia.module.ModuleRegistry;
41 import info.magnolia.ui.dialog.ConfiguredDialogDefinition;
42 import info.magnolia.ui.dialog.DialogDefinition;
43 import info.magnolia.ui.dialog.DialogDefinitionRegistry;
44 import info.magnolia.ui.dialog.registry.validator.DialogDefinitionValidator;
45 import info.magnolia.ui.form.fieldtype.registry.FieldTypeDefinitionRegistry;
46
47 import javax.inject.Inject;
48 import javax.inject.Singleton;
49
50
51
52
53 @Singleton
54 public class CompatibilityDialogDefinitionRegistry extends DialogDefinitionRegistry {
55
56 @Inject
57 public CompatibilityDialogDefinitionRegistry(ModuleRegistry moduleRegistry, FieldTypeDefinitionRegistry fieldTypeDefinitionRegistry) {
58 super(moduleRegistry);
59 addValidator((DefinitionValidator) new DialogDefinitionValidator(fieldTypeDefinitionRegistry));
60 }
61
62 @Override
63 public DefinitionProviderBuilder<DialogDefinition> newDefinitionProviderBuilder() {
64 return new DefinitionProviderBuilder<DialogDefinition>() {
65 @Override
66 public DefinitionProvider<DialogDefinition> build() {
67 return new DefinitionProviderWrapper<DialogDefinition>(super.build()) {
68 @Override
69 public DialogDefinition get() {
70 DialogDefinition dialogDefinition = super.get();
71 if (dialogDefinition.getId() == null) {
72 final String referenceId = getDelegate().getMetadata().getReferenceId();
73 if (dialogDefinition instanceof ConfiguredDialogDefinition) {
74 ((ConfiguredDialogDefinition) dialogDefinition).setId(referenceId);
75 } else if (dialogDefinition instanceof info.magnolia.ui.dialog.definition.ConfiguredDialogDefinition) {
76 ((info.magnolia.ui.dialog.definition.ConfiguredDialogDefinition) dialogDefinition).setId(referenceId);
77 }
78 }
79 return dialogDefinition;
80 }
81 };
82 }
83 };
84 }
85 }