001
014
015 package com.liferay.portal.webserver;
016
017 import com.liferay.portal.kernel.cache.MultiVMPool;
018 import com.liferay.portal.kernel.cache.PortalCache;
019 import com.liferay.portal.kernel.security.pacl.DoPrivileged;
020 import com.liferay.portal.servlet.filters.cache.CacheUtil;
021 import com.liferay.registry.Registry;
022 import com.liferay.registry.RegistryUtil;
023 import com.liferay.registry.dependency.ServiceDependencyListener;
024 import com.liferay.registry.dependency.ServiceDependencyManager;
025
026
030 @DoPrivileged
031 public class WebServerServletTokenImpl implements WebServerServletToken {
032
033 public void afterPropertiesSet() {
034 ServiceDependencyManager serviceDependencyManager =
035 new ServiceDependencyManager();
036
037 serviceDependencyManager.addServiceDependencyListener(
038 new ServiceDependencyListener() {
039
040 @Override
041 public void dependenciesFulfilled() {
042 Registry registry = RegistryUtil.getRegistry();
043
044 MultiVMPool multiVMPool = registry.getService(
045 MultiVMPool.class);
046
047 _portalCache =
048 (PortalCache<Long, String>)multiVMPool.getPortalCache(
049 _CACHE_NAME);
050 }
051
052 @Override
053 public void destroy() {
054 }
055
056 });
057
058 serviceDependencyManager.registerDependencies(MultiVMPool.class);
059 }
060
061 @Override
062 public String getToken(long imageId) {
063 Long key = imageId;
064
065 String token = _portalCache.get(key);
066
067 if (token == null) {
068 token = _createToken();
069
070 _portalCache.put(key, token);
071 }
072
073 return token;
074 }
075
076 @Override
077 public void resetToken(long imageId) {
078 _portalCache.remove(imageId);
079
080
081
082 CacheUtil.clearCache();
083 }
084
085 private String _createToken() {
086 return String.valueOf(System.currentTimeMillis());
087 }
088
089 private static final String _CACHE_NAME =
090 WebServerServletToken.class.getName();
091
092 private PortalCache<Long, String> _portalCache;
093
094 }