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.module.admininterface;
35
36 import info.magnolia.cms.core.Content;
37 import info.magnolia.cms.gui.dialog.Dialog;
38 import info.magnolia.objectfactory.Components;
39 import info.magnolia.registry.RegistryMap;
40
41 import java.util.List;
42 import java.util.Set;
43
44 import javax.inject.Singleton;
45 import javax.jcr.RepositoryException;
46 import javax.servlet.http.HttpServletRequest;
47 import javax.servlet.http.HttpServletResponse;
48
49
50
51
52
53 @Singleton
54 public class DialogHandlerManager {
55
56 private final RegistryMap<String, DialogHandlerProvider> registry = new RegistryMap<String, DialogHandlerProvider>() {
57
58 @Override
59 protected String keyFromValue(DialogHandlerProvider value) {
60 return value.getId();
61 }
62 };
63
64 public void register(DialogHandlerProvider provider) {
65 registry.put(provider.getId(), provider);
66 }
67
68 public void unregister(String id) {
69 registry.remove(id);
70 }
71
72 public Set<String> unregisterAndRegister(Set<String> registeredIds, List<DialogHandlerProvider> providers) {
73 return this.registry.removeAndPutAll(registeredIds, providers);
74 }
75
76
77
78
79 @Deprecated
80 public Content getDialogConfigNode(String id) {
81 DialogHandlerProvider provider = registry.get(id);
82 if (provider == null) {
83 throw new InvalidDialogHandlerException(id, registry.keySet().toString());
84 }
85 return provider.getDialogConfigNode();
86 }
87
88 public DialogMVCHandler getDialogHandler(String id, HttpServletRequest request, HttpServletResponse response) {
89 DialogHandlerProvider provider = registry.get(id);
90 if (provider == null) {
91 throw new InvalidDialogHandlerException(id, registry.keySet().toString());
92 }
93 return provider.getDialogHandler(request, response);
94 }
95
96
97
98
99
100 public Dialog getDialog(String id) throws RepositoryException {
101 DialogHandlerProvider provider = registry.get(id);
102 if (provider == null) {
103 throw new InvalidDialogHandlerException(id, registry.keySet().toString());
104 }
105 return provider.getDialog();
106 }
107
108
109
110
111 public static DialogHandlerManager getInstance() {
112 return Components.getSingleton(DialogHandlerManager.class);
113 }
114
115 }