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.setup.for4_0;
35
36 import info.magnolia.cms.beans.config.ContentRepository;
37 import info.magnolia.cms.core.Content;
38 import info.magnolia.cms.core.HierarchyManager;
39 import info.magnolia.cms.core.ItemType;
40 import info.magnolia.cms.util.NodeDataUtil;
41 import info.magnolia.cms.util.QueryUtil;
42 import info.magnolia.module.InstallContext;
43 import info.magnolia.module.delta.AbstractRepositoryTask;
44 import info.magnolia.module.delta.TaskExecutionException;
45 import org.apache.commons.lang.StringUtils;
46
47 import javax.jcr.RepositoryException;
48 import java.util.Collection;
49 import java.util.Iterator;
50
51
52
53
54
55
56 public class UpdatedDefaultPublicURIWarning extends AbstractRepositoryTask {
57
58 public UpdatedDefaultPublicURIWarning() {
59 super("Checks the default public URI is correct", "Warns the user if the URI has been changed wrongly.");
60 }
61
62 protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
63 if (templatesExist() && hasDefaultURI(installContext)) {
64 installContext.warn("Please set the default virtual URI mapping; it was incorrectly reset by a previous update.");
65 }
66 }
67
68
69
70
71 private boolean templatesExist() {
72 Collection nodeCollection = QueryUtil.query(ContentRepository.CONFIG, "select * from mgnl:content where jcr:path like '/modules/%/templates'");
73 Iterator nodesCollectionIt = nodeCollection.iterator();
74 while (nodesCollectionIt.hasNext()) {
75 Content templatesNode = (Content) nodesCollectionIt.next();
76 Iterator templatesCollectionIt = templatesNode.getChildren(ItemType.CONTENTNODE).iterator();
77 while (templatesCollectionIt.hasNext()) {
78 Content template = (Content) templatesCollectionIt.next();
79 if (NodeDataUtil.getBoolean(template, "visible", false)) {
80 return true;
81 }
82 }
83 }
84 return false;
85 }
86
87 private boolean hasDefaultURI(InstallContext installContext) throws RepositoryException {
88 final String defaultURI = installContext.getCurrentModuleDefinition().getProperty("defaultPublicURI");
89
90 final String defaultUriMappingPath = "/modules/adminInterface/virtualURIMapping/default/toURI";
91 final HierarchyManager hm = installContext.getConfigHierarchyManager();
92 if (hm.isExist(defaultUriMappingPath)) {
93 final String currentValue = hm.getNodeData(defaultUriMappingPath).getString();
94 if (StringUtils.equals(currentValue, defaultURI)) {
95 return true;
96 }
97 }
98 return false;
99 }
100
101 }