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.framework;
35
36 import info.magnolia.config.registry.DefinitionProvider;
37 import info.magnolia.event.EventBus;
38 import info.magnolia.event.SystemEventBus;
39 import info.magnolia.periscope.search.SearchResultSupplierDefinitionRegistry;
40 import info.magnolia.ui.api.app.AppDescriptor;
41 import info.magnolia.ui.api.app.SubAppDescriptor;
42 import info.magnolia.ui.api.app.registry.AppDescriptorRegistry;
43 import info.magnolia.ui.contentapp.definition.ContentSubAppDescriptor;
44 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnectorDefinition;
45 import info.magnolia.ui.vaadin.integration.contentconnector.JcrContentConnectorDefinition;
46 import info.magnolia.ui.vaadin.integration.contentconnector.NodeTypeDefinition;
47
48 import java.util.stream.Collectors;
49
50 import javax.inject.Inject;
51 import javax.inject.Named;
52 import javax.inject.Singleton;
53
54 import org.apache.commons.lang3.StringUtils;
55
56
57
58
59 @Singleton
60 public class CompatibilityJcrSearchSuppliersGenerator extends JcrSearchSuppliersGenerator {
61
62 @Inject
63 public CompatibilityJcrSearchSuppliersGenerator(AppDescriptorRegistry appDescriptorRegistry, SearchResultSupplierDefinitionRegistry searchResultSupplierDefinitionRegistry, @Named(SystemEventBus.NAME) EventBus systemEventBus) {
64 super(appDescriptorRegistry, searchResultSupplierDefinitionRegistry, systemEventBus);
65 }
66
67 @Override
68 AutogeneratedDefinitionProvider autoGenerateSupplier(DefinitionProvider<AppDescriptor> appDescriptorDefinitionProvider) {
69 AutogeneratedDefinitionProvider autogeneratedDefinitionProvider = super.autoGenerateSupplier(appDescriptorDefinitionProvider);
70 if (autogeneratedDefinitionProvider == null) {
71 AppDescriptor appDescriptor = appDescriptorDefinitionProvider.get();
72 for (SubAppDescriptor subAppDescriptor : appDescriptor.getSubApps().values()) {
73 if (subAppDescriptor instanceof info.magnolia.ui.contentapp.definition.ContentSubAppDescriptor) {
74 ContentConnectorDefinition contentConnector = ((ContentSubAppDescriptor) subAppDescriptor).getContentConnector();
75 if (contentConnector instanceof JcrContentConnectorDefinition) {
76 String subAppName = appDescriptor.getSubApps().keySet().iterator().next();
77 JcrContentConnectorDefinitionn/contentconnector/JcrContentConnectorDefinition.html#JcrContentConnectorDefinition">JcrContentConnectorDefinition jcrContentConnectorDefinition = (JcrContentConnectorDefinition) contentConnector;
78 String workspaceName = jcrContentConnectorDefinition.getWorkspace();
79 if (StringUtils.isBlank(workspaceName)) {
80 continue;
81 }
82 autogeneratedDefinitionProvider = new AutogeneratedDefinitionProvider(appDescriptorDefinitionProvider, subAppName,
83 workspaceName,
84 jcrContentConnectorDefinition.getRootPath(),
85 jcrContentConnectorDefinition.getNodeTypes().stream()
86 .map(NodeTypeDefinition::getName)
87 .collect(Collectors.toSet())
88 );
89 break;
90 }
91 }
92 }
93 }
94 return autogeneratedDefinitionProvider;
95 }
96 }