org.alfresco.repo.content.caching
Class ContentCacheImpl

java.lang.Object
  extended by org.alfresco.repo.content.caching.ContentCacheImpl
All Implemented Interfaces:
ContentCache

public class ContentCacheImpl
extends java.lang.Object
implements ContentCache

The one and only implementation of the ContentCache class. Binary content data itself is stored on disk in the location specified by cacheRoot.

The in-memory lookup table is provided by Ehcache.


Constructor Summary
ContentCacheImpl()
           
 
Method Summary
protected  java.lang.String cacheFileLocation(java.lang.String url)
           
 boolean contains(Key key)
          Allows caller to perform lookup using a Key.
 boolean contains(java.lang.String contentUrl)
          Check to see if the content - specified by URL - exists in the cache.
static java.lang.String createNewCacheFilePath()
          Creates a relative path for a new cache file.
 java.lang.String getCacheFilePath(java.lang.String contentUrl)
          Get the path of a cache file for the given content URL - will return null if there is no entry in the cache for the specified URL.
 java.io.File getCacheRoot()
          Returns the directory where cache files will be written (cacheRoot).
 java.lang.String getContentUrl(java.io.File file)
          Get a content URL from the cache - keyed by File.
 org.alfresco.service.cmr.repository.ContentReader getReader(java.lang.String contentUrl)
          Retrieve a ContentReader for the cached content specified by URL.
 org.alfresco.service.cmr.repository.ContentWriter getWriter(java.lang.String url)
          Retrieve a ContentWriter to write content to a cache file.
 void processFiles(FileHandler handler)
           
 boolean put(java.lang.String contentUrl, org.alfresco.service.cmr.repository.ContentReader source)
          Put an item into cache - this will populate both a disk file (with content) and the in-memory lookup table (with the URL and cache file location).
 void putIntoLookup(Key key, java.lang.String value)
          Put an item in the lookup table.
 void remove(java.lang.String contentUrl)
          Remove a cached item from the in-memory lookup table.
 void setCacheRoot(java.io.File cacheRoot)
          Specify the directory where cache files will be written.
 void setMemoryStore(org.alfresco.repo.cache.SimpleCache memoryStore)
          Configure ContentCache with a memory store - an EhCacheAdapter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ContentCacheImpl

public ContentCacheImpl()
Method Detail

contains

public boolean contains(java.lang.String contentUrl)
Description copied from interface: ContentCache
Check to see if the content - specified by URL - exists in the cache.

Note that just because the in-memory cache has a record of the content item having been placed into the cache, it does not mean that the disk item is guaranteed to be there. The temp file clean-up process, for example, may have removed it.

Specified by:
contains in interface ContentCache
Returns:
true if the URL exists in the in-memory cache. It may therefore be cached on disk.

contains

public boolean contains(Key key)
Allows caller to perform lookup using a Key.

Parameters:
key -
Returns:
true if the cache contains, false otherwise.

putIntoLookup

public void putIntoLookup(Key key,
                          java.lang.String value)
Put an item in the lookup table.

Parameters:
key -
value -

getCacheFilePath

public java.lang.String getCacheFilePath(java.lang.String contentUrl)
Get the path of a cache file for the given content URL - will return null if there is no entry in the cache for the specified URL.

Parameters:
contentUrl -
Returns:
cache file path

getContentUrl

public java.lang.String getContentUrl(java.io.File file)
Get a content URL from the cache - keyed by File.

Parameters:
file -
Returns:

getReader

public org.alfresco.service.cmr.repository.ContentReader getReader(java.lang.String contentUrl)
Description copied from interface: ContentCache
Retrieve a ContentReader for the cached content specified by URL.

Specified by:
getReader in interface ContentCache
Returns:
ContentReader

put

public boolean put(java.lang.String contentUrl,
                   org.alfresco.service.cmr.repository.ContentReader source)
Description copied from interface: ContentCache
Put an item into cache - this will populate both a disk file (with content) and the in-memory lookup table (with the URL and cache file location). Empty content will NOT be cached - in which case false is returned.

Specified by:
put in interface ContentCache
Returns:
true if the content was cached, false otherwise.

remove

public void remove(java.lang.String contentUrl)
Description copied from interface: ContentCache
Remove a cached item from the in-memory lookup table. Implementation should not remove the actual cached content (file) - this should be left to the clean-up process.

Specified by:
remove in interface ContentCache

getWriter

public org.alfresco.service.cmr.repository.ContentWriter getWriter(java.lang.String url)
Description copied from interface: ContentCache
Retrieve a ContentWriter to write content to a cache file. Upon closing the stream a listener will add the new content file to the in-memory lookup table.

Specified by:
getWriter in interface ContentCache
Returns:
ContentWriter

createNewCacheFilePath

public static java.lang.String createNewCacheFilePath()
Creates a relative path for a new cache file. The path is based upon the current date/time: year/month/day/hour/minute/guid.bin

e.g. 2011/12/3/13/55/27d56416-bf9f-4d89-8f9e-e0a52de0a59e.bin

Returns:
The relative path for the new cache file.

setMemoryStore

public void setMemoryStore(org.alfresco.repo.cache.SimpleCache memoryStore)
Configure ContentCache with a memory store - an EhCacheAdapter.

Parameters:
memoryStore - the memoryStore to set

setCacheRoot

public void setCacheRoot(java.io.File cacheRoot)
Specify the directory where cache files will be written.

Parameters:
cacheRoot -

getCacheRoot

public java.io.File getCacheRoot()
Returns the directory where cache files will be written (cacheRoot).

Returns:
cacheRoot

cacheFileLocation

protected java.lang.String cacheFileLocation(java.lang.String url)

processFiles

public void processFiles(FileHandler handler)
Parameters:
cachedContentCleaner -


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.