1
22
23 package com.liferay.portal.security.permission;
24
25 import com.liferay.portal.kernel.cache.MultiVMPoolUtil;
26 import com.liferay.portal.kernel.cache.PortalCache;
27 import com.liferay.portal.kernel.util.StringPool;
28
29
36 public class PermissionCacheUtil {
37
38 public static final String CACHE_NAME = PermissionCacheUtil.class.getName();
39
40 public static void clearCache() {
41 _cache.removeAll();
42 }
43
44 public static PermissionCheckerBag getBag(long userId, long groupId) {
45 String key = _encodeKey(userId, groupId);
46
47 return (PermissionCheckerBag)MultiVMPoolUtil.get(_cache, key);
48 }
49
50 public static Boolean getPermission(
51 long userId, long groupId, String name, String primKey,
52 String actionId) {
53
54 String key = _encodeKey(userId, groupId, name, primKey, actionId);
55
56 return (Boolean)MultiVMPoolUtil.get(_cache, key);
57 }
58
59 public static PermissionCheckerBag putBag(
60 long userId, long groupId, PermissionCheckerBag bag) {
61
62 if (bag != null) {
63 String key = _encodeKey(userId, groupId);
64
65 MultiVMPoolUtil.put(_cache, key, bag);
66 }
67
68 return bag;
69 }
70
71 public static Boolean putPermission(
72 long userId, long groupId, String name, String primKey, String actionId,
73 Boolean value) {
74
75 if (value != null) {
76 String key = _encodeKey(userId, groupId, name, primKey, actionId);
77
78 MultiVMPoolUtil.put(_cache, key, value);
79 }
80
81 return value;
82 }
83
84 private static String _encodeKey(long userId, long groupId) {
85 StringBuilder sb = new StringBuilder();
86
87 sb.append(CACHE_NAME);
88 sb.append(StringPool.POUND);
89 sb.append(userId);
90 sb.append(StringPool.POUND);
91 sb.append(groupId);
92
93 return sb.toString();
94 }
95
96 private static String _encodeKey(
97 long userId, long groupId, String name, String primKey,
98 String actionId) {
99
100 StringBuilder sb = new StringBuilder();
101
102 sb.append(CACHE_NAME);
103 sb.append(StringPool.POUND);
104 sb.append(userId);
105 sb.append(StringPool.POUND);
106 sb.append(groupId);
107 sb.append(StringPool.POUND);
108 sb.append(name);
109 sb.append(StringPool.POUND);
110 sb.append(primKey);
111 sb.append(StringPool.POUND);
112 sb.append(actionId);
113
114 return sb.toString();
115 }
116
117 private static PortalCache _cache = MultiVMPoolUtil.getCache(CACHE_NAME);
118
119 }