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.module.InstallContext;
37 import info.magnolia.module.cache.AbstractCacheModule;
38 import info.magnolia.module.cache.filter.CacheFilter;
39 import info.magnolia.module.delta.NodeVisitorTask;
40 import info.magnolia.repository.RepositoryConstants;
41
42 import javax.jcr.Node;
43 import javax.jcr.Property;
44 import javax.jcr.RepositoryException;
45
46 import org.slf4j.Logger;
47 import org.slf4j.LoggerFactory;
48
49
50
51
52 public class MigrateCacheFilterConfigurationTask extends NodeVisitorTask {
53
54 private static final Logger log = LoggerFactory.getLogger(MigrateCacheFilterConfigurationTask.class);
55
56 private static final String OLD_DEFAULT_CACHE_CONFIG = "default";
57
58 private static final String FILTERS_PATH = "/server/filters";
59
60 public MigrateCacheFilterConfigurationTask() {
61 super("Set defaultContentConfigurationName property to cache filters.", "Set defaultContentConfigurationName property to cache filters.", RepositoryConstants.CONFIG, FILTERS_PATH);
62 }
63
64
65
66 @Override
67 protected boolean nodeMatches(Node node) {
68 try {
69 if (node.hasProperty("class") && CacheFilter.class.isAssignableFrom(Class.forName(node.getProperty("class").getString()))) {
70 return true;
71 }
72 } catch (RepositoryException e) {
73 log.error("Could not execute task: ", e);
74 } catch (ClassNotFoundException e) {
75 log.warn("Filter class '{}' not found.", e.getMessage());
76 }
77 return false;
78 }
79
80 @Override
81 protected void operateOnNode(InstallContext installContext, Node node) {
82 try {
83 if (node.hasProperty("cacheConfigurationName")) {
84 Property oldProperty = node.getProperty("cacheConfigurationName");
85 if (oldProperty.getString().equals(OLD_DEFAULT_CACHE_CONFIG)) {
86 node.setProperty("defaultContentCachingConfigurationName", AbstractCacheModule.DEFAULT_CACHE_CONFIG);
87 } else {
88 node.setProperty("defaultContentCachingConfigurationName", oldProperty.getValue());
89 }
90 oldProperty.remove();
91 } else if (node.hasProperty(AbstractCacheModule.DEFAULT_CACHE_CONFIG)) {
92
93 Property oldProperty = node.getProperty(AbstractCacheModule.DEFAULT_CACHE_CONFIG);
94 node.setProperty("defaultContentCachingConfigurationName", oldProperty.getValue());
95 oldProperty.remove();
96 } else {
97 node.setProperty("defaultContentCachingConfigurationName", AbstractCacheModule.DEFAULT_CACHE_CONFIG);
98 }
99 } catch (RepositoryException e) {
100 installContext.error("Could not execute task: ", e);
101 }
102 }
103 }