Package org.apache.jackrabbit.core.data
Class LocalCache
java.lang.Object
org.apache.jackrabbit.core.data.LocalCache
This class implements a LRU cache used by
CachingDataStore. If cache
size exceeds limit, this cache goes in purge mode. In purge mode any
operation to cache is no-op. After purge cache size would be less than
cachePurgeResizeFactor * maximum size.-
Constructor Summary
ConstructorsConstructorDescriptionLocalCache(String path, String tmpPath, long maxSizeInBytes, double cachePurgeTrigFactor, double cachePurgeResizeFactor, AsyncUploadCache asyncUploadCache) Build LRU cache of files located at 'path'. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Close the cache.voidDelete file from cache.getFileIfStored(String fileName) getFileLength(String fileName) Returns length of file if exists in cache else returns null.getIfStored(String fileName) Return the inputstream from from cache, or null if not in the cache.Store an item along with file in cache.This method add file toLocalCacheand tries that file can be added toAsyncUploadCache.store(String fileName, InputStream in) Store an item in the cache and return the input stream.
-
Constructor Details
-
LocalCache
public LocalCache(String path, String tmpPath, long maxSizeInBytes, double cachePurgeTrigFactor, double cachePurgeResizeFactor, AsyncUploadCache asyncUploadCache) Build LRU cache of files located at 'path'. It uses lastModified property of file to build LRU cache. If cache size exceeds limit size, this cache goes in purge mode. In purge mode any operation to cache is no-op.- Parameters:
path- file system pathtmpPath- temporary directory used by cache.maxSizeInBytes- maximum size of cache.cachePurgeTrigFactor- factor which triggers cache to purge mode. That is if current size exceed (cachePurgeTrigFactor * maxSizeInBytes), the cache will go in auto-purge mode.cachePurgeResizeFactor- after cache purge size of cache will be just less (cachePurgeResizeFactor * maxSizeInBytes).asyncUploadCache-AsyncUploadCache
-
-
Method Details
-
store
Store an item in the cache and return the input stream. If cache is in purgeMode or file doesn't exists, inputstream from aTransientFileFactory.createTransientFile(String, String, File)is returned. Otherwise inputStream from cached file is returned. This method doesn't close the incoming inputstream.- Parameters:
fileName- the key of cache.in-InputStream- Returns:
- the (new) input stream.
- Throws:
IOException
-
store
Store an item along with file in cache. Cache size is increased byFile.length()If file already exists in cache,File.setLastModified(long)is updated with current time.- Parameters:
fileName- the key of cache.src- file to be added to cache.
-
store
public AsyncUploadCacheResult store(String fileName, File src, boolean tryForAsyncUpload) throws IOException This method add file toLocalCacheand tries that file can be added toAsyncUploadCache. If file is added toAsyncUploadCachesuccessfully, it setsAsyncUploadCacheResult.setAsyncUpload(boolean)to true.- Parameters:
fileName- name of the file.src- source file.tryForAsyncUpload- If true it tries to add fileName toAsyncUploadCache- Returns:
AsyncUploadCacheResult. This method setsAsyncUploadCacheResult.setAsyncUpload(boolean)to true, if fileName is added toAsyncUploadCachesuccessfully else it setsAsyncUploadCacheResult.setAsyncUpload(boolean)to false.AsyncUploadCacheResult.getFile()contains cached file, if it is added toLocalCacheor original file.- Throws:
IOException
-
getIfStored
Return the inputstream from from cache, or null if not in the cache.- Parameters:
fileName- name of file.- Returns:
- stream or null.
- Throws:
IOException
-
getFileIfStored
- Throws:
IOException
-
delete
Delete file from cache. Size of cache is reduced by file length. The method is no-op if file doesn't exist in cache.- Parameters:
fileName- file name that need to be removed from cache.
-
getFileLength
Returns length of file if exists in cache else returns null.- Parameters:
fileName- name of the file.
-
close
public void close()Close the cache. Cache maintain set of files which it was not able to delete successfully. This method will an attempt to delete all unsuccessful delete files.
-