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.cache.setup;
35
36 import info.magnolia.jcr.util.NodeUtil;
37 import info.magnolia.module.InstallContext;
38 import info.magnolia.module.delta.AbstractRepositoryTask;
39 import info.magnolia.repository.RepositoryConstants;
40
41 import java.util.Arrays;
42 import java.util.List;
43
44 import javax.jcr.Node;
45 import javax.jcr.RepositoryException;
46
47
48
49
50 public class ExcludeWorkspacesFromFlushCachePolicy extends AbstractRepositoryTask {
51
52 protected static final String EXCLUDED_WORKSPACES_CONFIG_PATH = "flushPolicy/policies/flushAll/excludedWorkspaces";
53 protected static final String CACHE_CONFIGURATION_PATH = "modules/cache/config/contentCaching/";
54
55 private final List<String> workspaceNames;
56
57 public ExcludeWorkspacesFromFlushCachePolicy(String... workspaceNames) {
58 super("Exclude workspace from flush cache policy", "Exclude from flush cache policy these workspaces: " + Arrays.asList(workspaceNames));
59 this.workspaceNames = Arrays.asList(workspaceNames);
60 }
61
62 @Override
63 public void doExecute(InstallContext ctx) throws RepositoryException {
64 Node root = ctx.getJCRSession(RepositoryConstants.CONFIG).getRootNode();
65 if (!root.hasNode(CACHE_CONFIGURATION_PATH)) {
66 return;
67 }
68 for (Node cache : NodeUtil.getNodes(root.getNode(CACHE_CONFIGURATION_PATH))) {
69 if (cache.hasNode(EXCLUDED_WORKSPACES_CONFIG_PATH)) {
70 Node excludedWorkspaces = cache.getNode(EXCLUDED_WORKSPACES_CONFIG_PATH);
71 for (String workspace : workspaceNames) {
72 excludedWorkspaces.setProperty(workspace, workspace);
73 }
74 }
75 }
76 }
77 }