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.commands;
35
36 import java.util.Arrays;
37 import java.util.Collection;
38 import java.util.HashSet;
39 import java.util.Set;
40
41 import info.magnolia.commands.MgnlCommand;
42 import info.magnolia.context.Context;
43 import info.magnolia.module.ModuleRegistry;
44 import info.magnolia.module.cache.Cache;
45 import info.magnolia.module.cache.CacheConfiguration;
46 import info.magnolia.module.cache.CacheFactory;
47 import info.magnolia.module.cache.CacheModule;
48 import info.magnolia.module.cache.CachePolicy;
49
50
51
52
53
54
55 public class FlushFromCachesByUUIDCommand extends MgnlCommand {
56
57 public static final String REPOSITORY = "repository";
58 public static final String UUID = "uuid";
59
60 private final CacheModule cacheModule;
61
62 public FlushFromCachesByUUIDCommand() {
63 cacheModule = ModuleRegistry.Factory.getInstance().getModuleInstance(CacheModule.class);
64 }
65
66 @Override
67 public boolean execute(Context ctx) throws Exception {
68 final String uuid = (String) ctx.get(UUID);
69 final String repository = (String) ctx.get(REPOSITORY);
70 final Set<Object> keySet = new HashSet<Object>();
71 Collection<CacheConfiguration> cacheConfigs = cacheModule.getConfigurations().values();
72 for (CacheConfiguration config : cacheConfigs) {
73 CachePolicy policy = config.getCachePolicy();
74 if (policy == null) {
75 continue;
76 }
77 keySet.addAll(Arrays.asList(policy.removeCacheKeys(uuid, repository)));
78 }
79
80 CacheFactory factory = cacheModule.getCacheFactory();
81
82 for (Object key : keySet) {
83 for (CacheConfiguration config : cacheConfigs) {
84 final Cache cache = factory.getCache(config.getName());
85 cache.remove(key);
86 }
87 }
88 return true;
89 }
90
91 }