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.admincentral.apps.messages;
35
36 import info.magnolia.i18nsystem.SimpleTranslator;
37 import info.magnolia.ui.contentapp.browser.preview.NoOpPreviewProvider;
38 import info.magnolia.ui.contentapp.browser.preview.PreviewProvider;
39 import info.magnolia.ui.framework.datasource.DatasourceBundle;
40 import info.magnolia.ui.framework.message.MessagesManager;
41
42 import java.util.HashMap;
43 import java.util.Map;
44
45 import javax.inject.Inject;
46 import javax.inject.Singleton;
47
48
49
50
51 @Singleton
52 public class MessageDataSourceBundle extends DatasourceBundle<MessageDataSourceDefinition> {
53
54
55 private Map<MessageDataSourceDefinition, MessageDataProvider> messageDataProviders = new HashMap<>();
56
57 @Inject
58 public MessageDataSourceBundle(MessagesManager messagesManager, SimpleTranslator i18n) {
59 super(MessageDataSourceDefinition.class);
60
61 register(MessagePropertySetFactory.class, def -> new MessagePropertySetFactory());
62 register(MessageDataProvider.class, def -> getMessageDataProvider(messagesManager, def));
63 register(MessageItemDescriber.class, def -> new MessageItemDescriber(def, getMessageDataProvider(messagesManager, def), i18n));
64 register(MessageItemResolver.class, def -> new MessageItemResolver(messageDataProviders.get(def)));
65 register(PreviewProvider.class, def -> new NoOpPreviewProvider());
66 }
67
68 protected MessageDataProvider getMessageDataProvider(MessagesManager messagesManager, MessageDataSourceDefinition definition) {
69 MessageDataProvider currentMsgDataProvider = messageDataProviders.get(definition);
70 if (currentMsgDataProvider == null) {
71 final MessageDataProvider messageDataProvider = new MessageDataProvider(messagesManager, definition);
72 messageDataProviders.put(definition, messageDataProvider);
73 currentMsgDataProvider = messageDataProvider;
74 }
75 return currentMsgDataProvider;
76 }
77
78 }