1 46 47 package org.mr.kernel.security.authorization; 48 49 import org.mr.MantaAgent; 50 import org.mr.kernel.security.SecurityConfigurationPaths; 51 import org.mr.kernel.security.SecurityConstants; 52 import org.apache.commons.logging.Log; 53 import org.apache.commons.logging.LogFactory; 54 55 import java.util.Map ; 56 import java.util.HashMap ; 57 58 66 public class MantaPermissionCache extends MantaCache implements SecurityConfigurationPaths, SecurityConstants { 67 private Log _logger; 68 69 private Map _cache; 71 72 76 public MantaPermissionCache(){ 77 _cache = new HashMap (); 78 _timeToLive = MantaAgent.getInstance().getSingletonRepository().getConfigManager().getLongProperty(ACL + "." + PERMISSION_CACHE_TTL, DEFAULT_PERMISSION_CACHE_TIME_TO_LIVE); 79 if (getLogger().isDebugEnabled()) 80 getLogger().debug("[MantaPermissionCache] TTL is " + _timeToLive); 81 } 82 83 89 public void add(ACLKeyEntry keyEntry, AuthorizationValue authorizationValue){ 90 if (!(keyEntry instanceof PermissionKeyEntry)) 91 return; 92 PermissionKeyEntry permissionEntry = (PermissionKeyEntry) keyEntry; 93 if (getLogger().isDebugEnabled()) 94 getLogger().debug("[add] Adding: key = [" + permissionEntry + "], value = [" + authorizationValue + "] to the permission cache."); 95 _cache.put(permissionEntry, authorizationValue); 96 } 97 98 105 public AuthorizationValue isAuthorized(ACLKeyEntry keyEntry){ 106 if (!(keyEntry instanceof PermissionKeyEntry)) 107 return null; 108 PermissionKeyEntry permissionEntry = (PermissionKeyEntry) keyEntry; 109 if (_cache.containsKey(permissionEntry)){ 110 AuthorizationValue value = (AuthorizationValue) _cache.get(permissionEntry); 111 if (value.isValid(_timeToLive)){ 112 if (getLogger().isDebugEnabled()) 113 getLogger().debug("[isAuthorized] AuthorizationValue for key = [" + permissionEntry + "] found and has valid TTL."); 114 return value; 115 } 116 } 117 return null; 118 } 119 120 126 public boolean contains(ACLKeyEntry keyEntry){ 127 if (!(keyEntry instanceof PermissionKeyEntry)) 128 return false; 129 PermissionKeyEntry permissionEntry = (PermissionKeyEntry) keyEntry; 130 return _cache.containsKey(permissionEntry); 131 } 132 133 138 public Log getLogger(){ 139 if (_logger == null){ 140 _logger = LogFactory.getLog(getClass().getName()); 141 } 142 return _logger; 143 } 144 } 145 | Popular Tags |