1
14
15 package com.liferay.portal.cache.cluster.clusterlink.messaging;
16
17 import com.liferay.portal.cache.ehcache.EhcachePortalCacheManager;
18 import com.liferay.portal.dao.orm.hibernate.EhCacheProvider;
19 import com.liferay.portal.kernel.cache.cluster.PortalCacheClusterEvent;
20 import com.liferay.portal.kernel.cache.cluster.PortalCacheClusterEventType;
21 import com.liferay.portal.kernel.exception.SystemException;
22 import com.liferay.portal.kernel.log.Log;
23 import com.liferay.portal.kernel.log.LogFactoryUtil;
24 import com.liferay.portal.kernel.messaging.Message;
25 import com.liferay.portal.kernel.messaging.MessageListener;
26
27 import net.sf.ehcache.Cache;
28 import net.sf.ehcache.CacheManager;
29
30
36 public class ClusterLinkPortalCacheClusterRemoveListener
37 implements MessageListener {
38
39 public ClusterLinkPortalCacheClusterRemoveListener(
40 EhcachePortalCacheManager ehcachePortalCacheManager)
41 throws SystemException {
42
43 _hibernateCacheManager = EhCacheProvider.getCacheManager();
44 _portalCacheManager = ehcachePortalCacheManager.getEhcacheManager();
45 }
46
47 public void receive(Message message) {
48 PortalCacheClusterEvent portalCacheClusterEvent =
49 (PortalCacheClusterEvent)message.getPayload();
50
51 if (portalCacheClusterEvent == null) {
52 if (_log.isWarnEnabled()) {
53 _log.warn("Payload is null");
54 }
55
56 return;
57 }
58
59 String cacheName = portalCacheClusterEvent.getCacheName();
60
61 Cache cache = _portalCacheManager.getCache(cacheName);
62
63 if (cache == null) {
64 cache = _hibernateCacheManager.getCache(cacheName);
65 }
66
67 if (cache != null) {
68 PortalCacheClusterEventType portalCacheClusterEventType =
69 portalCacheClusterEvent.getEventType();
70
71 if (portalCacheClusterEventType.equals(
72 PortalCacheClusterEventType.REMOVEALL)) {
73
74 cache.removeAll(true);
75 }
76 else {
77 cache.remove(portalCacheClusterEvent.getElementKey(), true);
78 }
79 }
80 }
81
82 private static Log _log = LogFactoryUtil.getLog(
83 ClusterLinkPortalCacheClusterRemoveListener.class);
84
85 private CacheManager _hibernateCacheManager;
86 private CacheManager _portalCacheManager;
87
88 }