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.ehcache3.setup;
35
36 import info.magnolia.init.MagnoliaConfigurationProperties;
37 import info.magnolia.init.MagnoliaInitPaths;
38 import info.magnolia.jcr.util.NodeUtil;
39 import info.magnolia.module.DefaultModuleVersionHandler;
40 import info.magnolia.module.InstallContext;
41 import info.magnolia.module.cache.setup.MigrateEhcache15ConfigurationTask;
42 import info.magnolia.module.delta.BootstrapSingleResource;
43 import info.magnolia.module.delta.DeltaBuilder;
44 import info.magnolia.module.delta.NodeExistsDelegateTask;
45 import info.magnolia.module.delta.NodeVisitorTask;
46 import info.magnolia.module.delta.Task;
47 import info.magnolia.module.delta.WarnCondition;
48 import info.magnolia.repository.RepositoryConstants;
49
50 import java.util.ArrayList;
51 import java.util.List;
52
53 import javax.inject.Inject;
54 import javax.jcr.Node;
55 import javax.jcr.RepositoryException;
56
57
58
59
60 public class EhCache3ModuleVersionHandler extends DefaultModuleVersionHandler {
61
62 @Inject
63 public EhCache3ModuleVersionHandler(MagnoliaConfigurationProperties configurationProperties, MagnoliaInitPaths magnoliaInitPaths) {
64 register(DeltaBuilder.update("5.5.5", "")
65 .addTask(new MoveDiskStoreDirectoryTask())
66 );
67
68 register(DeltaBuilder.update("5.8", "")
69 .addTask(new NodeExistsDelegateTask("Rename 'expiry' in ehcache3 configuration to 'expiryPolicy'", "/modules/cache/config/cacheFactory/delegateFactories/ehcache3",
70 new NodeVisitorTask("Rename 'expiry' in ehcache3 configuration to 'expiryPolicy'", "Expiry configuration was deprecated", RepositoryConstants.CONFIG, "/modules/cache/config/cacheFactory/delegateFactories/ehcache3") {
71 @Override
72 protected boolean nodeMatches(Node node) {
73 return NodeUtil.getName(node).equals("expiry");
74 }
75
76 @Override
77 protected void operateOnNode(InstallContext installContext, Node node) {
78 try {
79 NodeUtil.renameNode(node, "expiryPolicy");
80 } catch (RepositoryException e) {
81 installContext.error(e.getMessage(), e);
82 }
83 }
84 })
85 )
86 .addCondition(new WarnCondition("Cached items persisted on disk will be removed!", "Cached items persisted on disk will be removed!", "Persisted cached items removed."))
87 .addTask(new CleanUpDiskStoreDirectoryTask(configurationProperties, magnoliaInitPaths))
88 );
89 }
90
91 @Override
92 protected List<Task> getExtraInstallTasks(InstallContext installContext) {
93 final List<Task> tasks = new ArrayList<>();
94
95 tasks.add(new NodeExistsDelegateTask("EhCache configuration", "/modules/cache/config/cacheFactory/delegateFactories/ehcache/defaultCacheConfiguration",
96 new MigrateEhcache15ConfigurationTask()
97 ));
98 tasks.add(new NodeExistsDelegateTask("Configure EhCache3", "/modules/cache/config/cacheFactory/delegateFactories/ehcache",
99
100 new MigrateEhCache2ConfigurationTask(),
101
102 new BootstrapSingleResource("EhCache3 clean install", "EhCache3 clean install", "/info/magnolia/module/ehcache3/setup/config.modules.cache.config.cacheFactory.delegateFactories.ehcache3.xml")
103 ));
104 return tasks;
105 }
106 }