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.AbstractRegistry;
37 import info.magnolia.config.registry.DefinitionMetadataBuilder;
38 import info.magnolia.config.registry.DefinitionProvider;
39 import info.magnolia.config.registry.DefinitionProviderBuilder;
40 import info.magnolia.config.registry.DefinitionProviderWrapper;
41 import info.magnolia.config.registry.DefinitionRawView;
42 import info.magnolia.config.registry.DefinitionType;
43 import info.magnolia.module.ModuleRegistry;
44 import info.magnolia.objectfactory.Components;
45 import info.magnolia.registry.RegistrationException;
46 import info.magnolia.ui.dialog.definition.ConfiguredDialogDefinition;
47 import info.magnolia.ui.dialog.definition.DialogDefinition;
48 import info.magnolia.ui.dialog.definition.FormDialogDefinition;
49 import info.magnolia.ui.dialog.formdialog.FormDialogPresenter;
50 import info.magnolia.ui.dialog.registry.validator.DialogDefinitionValidator;
51 import info.magnolia.ui.form.fieldtype.registry.FieldTypeDefinitionRegistry;
52
53 import javax.inject.Inject;
54 import javax.inject.Singleton;
55
56
57
58
59 @Singleton
60 public class DialogDefinitionRegistry extends AbstractRegistry<DialogDefinition> {
61
62 @Inject
63 public DialogDefinitionRegistry(ModuleRegistry moduleRegistry, FieldTypeDefinitionRegistry fieldTypeDefinitionRegistry) {
64 super(moduleRegistry);
65 addValidator(new DialogDefinitionValidator(fieldTypeDefinitionRegistry));
66 }
67
68
69
70
71 @Deprecated
72 public DialogDefinitionRegistry(ModuleRegistry moduleRegistry) {
73 this(moduleRegistry, Components.getComponent(FieldTypeDefinitionRegistry.class));
74 }
75
76
77
78
79 @Deprecated
80 public DialogDefinitionRegistry() {
81 this(Components.getComponent(ModuleRegistry.class), Components.getComponent(FieldTypeDefinitionRegistry.class));
82 }
83
84 @Override
85 public DefinitionType type() {
86 return DefinitionTypes.DIALOG;
87 }
88
89 @Override
90 public DefinitionMetadataBuilder newMetadataBuilder() {
91 return DefinitionMetadataBuilder.usingModuleAndRelativePathAsId();
92 }
93
94 @Override
95 protected DefinitionProvider<DialogDefinition> onRegister(DefinitionProvider<DialogDefinition> provider) {
96 return new DefinitionProviderWrapper<DialogDefinition>(provider) {
97 @Override
98 public DialogDefinition get() {
99 DialogDefinition dd = super.get();
100 if (dd instanceof ConfiguredDialogDefinition && dd.getId() == null) {
101 String referenceId = getDelegate().getMetadata().getReferenceId();
102 ((ConfiguredDialogDefinition) dd).setId(referenceId);
103 }
104 return dd;
105 }
106 };
107 }
108
109
110
111
112
113
114 @Deprecated
115 public void register(DialogDefinitionProvider provider) {
116 try {
117
118
119
120 final String[] idParts = provider.getId().split(":", 2);
121 final String module = idParts[0];
122
123 final DialogDefinition td = provider.getDialogDefinition();
124 final String relativeLocation = idParts[1];
125 final DefinitionProvider<DialogDefinition> dp = DefinitionProviderBuilder.<DialogDefinition> newBuilder()
126 .metadata(newMetadataBuilder().type(type()).module(module).relativeLocation(relativeLocation))
127 .rawView(DefinitionRawView.EMPTY)
128 .definition(td)
129 .build();
130 register(dp);
131 } catch (RegistrationException e) {
132 throw new RuntimeException(e);
133 }
134 }
135
136
137
138
139 @Deprecated
140 public FormDialogDefinition getDialogDefinition(String id) throws RegistrationException {
141 try {
142 DefinitionProvider<DialogDefinition> dialogDefinitionProvider = getProvider(id);
143 DialogDefinition dialogDefinition = dialogDefinitionProvider.get();
144 return (FormDialogDefinition) dialogDefinition;
145 } catch (NoSuchDefinitionException | InvalidDefinitionException e) {
146 throw new RegistrationException(e.getMessage(), e);
147 }
148 }
149
150
151
152
153 @Deprecated
154 public Class<? extends FormDialogPresenter> getPresenterClass(String id) throws RegistrationException {
155 return (Class<? extends FormDialogPresenter>) getProvider(id).get().getPresenterClass();
156 }
157
158 }