001
014
015 package com.liferay.portal.util;
016
017 import com.liferay.portal.kernel.concurrent.ConcurrentLFUCache;
018
019 import java.io.File;
020
021
024 public class LimitedFilesCache<T> {
025
026 public LimitedFilesCache(int maxSize) {
027 _fileRemovingLFUCache = new FileRemovingLFUCache<T>(maxSize);
028 }
029
030 public File get(T key) {
031 return _fileRemovingLFUCache.get(key);
032 }
033
034 public void put(T key) {
035 _fileRemovingLFUCache.put(key, null);
036 }
037
038 public void put(T key, File file) {
039 _fileRemovingLFUCache.put(key, file);
040 }
041
042 private FileRemovingLFUCache<T> _fileRemovingLFUCache;
043
044 private class FileRemovingLFUCache<K> extends ConcurrentLFUCache<K, File> {
045
046 public FileRemovingLFUCache(int maxSize) {
047 super(maxSize);
048 }
049
050 @Override
051 protected void onRemove(K key, File cachedFile) {
052 if (cachedFile != null) {
053 cachedFile.delete();
054 }
055 else {
056 File file = new File(key.toString());
057
058 file.delete();
059 }
060 }
061
062 }
063
064 }