1
22
23 package com.liferay.portal.servlet.filters.layoutcache;
24
25 import com.liferay.portal.kernel.cache.MultiVMPoolUtil;
26 import com.liferay.portal.kernel.cache.PortalCache;
27 import com.liferay.portal.kernel.util.StringMaker;
28 import com.liferay.portal.kernel.util.StringPool;
29 import com.liferay.portal.kernel.util.Validator;
30 import com.liferay.util.CollectionFactory;
31 import com.liferay.util.servlet.filters.CacheResponseData;
32
33 import java.util.Map;
34
35 import org.apache.commons.logging.Log;
36 import org.apache.commons.logging.LogFactory;
37
38
45 public class LayoutCacheUtil {
46
47 public static String CACHE_NAME = LayoutCacheUtil.class.getName();
48
49 public static void clearCache() {
50 MultiVMPoolUtil.clear(CACHE_NAME);
51 }
52
53 public static void clearCache(long companyId) {
54 String groupKey = _encodeGroupKey(companyId);
55
56 MultiVMPoolUtil.clearGroup(_groups, groupKey, _cache);
57
58 if (_log.isInfoEnabled()) {
59 _log.info("Cleared layout cache for " + companyId);
60 }
61 }
62
63 public static CacheResponseData getCacheResponseData(
64 long companyId, String key) {
65
66 if (Validator.isNull(key)) {
67 return null;
68 }
69
70 key = _encodeKey(companyId, key);
71
72 CacheResponseData data =
73 (CacheResponseData)MultiVMPoolUtil.get(_cache, key);
74
75 return data;
76 }
77
78 public static void putCacheResponseData(
79 long companyId, String key, CacheResponseData data) {
80
81 if (data != null) {
82 key = _encodeKey(companyId, key);
83
84 String groupKey = _encodeGroupKey(companyId);
85
86 MultiVMPoolUtil.put(_cache, key, _groups, groupKey, data);
87 }
88 }
89
90 private static String _encodeGroupKey(long companyId) {
91 StringMaker sm = new StringMaker();
92
93 sm.append(CACHE_NAME);
94 sm.append(StringPool.POUND);
95 sm.append(companyId);
96
97 return sm.toString();
98 }
99
100 private static String _encodeKey(long companyId, String key) {
101 StringMaker sm = new StringMaker();
102
103 sm.append(CACHE_NAME);
104 sm.append(StringPool.POUND);
105 sm.append(companyId);
106 sm.append(StringPool.POUND);
107 sm.append(key);
108
109 return sm.toString();
110 }
111
112 private static Log _log = LogFactory.getLog(LayoutCacheUtil.class);
113
114 private static PortalCache _cache = MultiVMPoolUtil.getCache(CACHE_NAME);
115
116 private static Map _groups = CollectionFactory.getSyncHashMap();
117
118 }