|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--freemarker.template.FileBinaryCache
A BinaryCache that loads binary files from a filesystem. Given a directory path, the cache assumes by default that all files in the directory are binary. It can optionally be given a filename suffix to select specific binary file types such as images.
Before using a FileBinaryCache, you must call its startAutoUpdate() method to begin periodic updates. The default loading policy is LOAD_ON_DEMAND: files are loaded into the cache only when requested, each file's modification date is checked each time it is requested, and the periodic updates are used only to remove deleted files from the cache. If the loading policy is set to PRELOAD, all files are loaded when startAutoUpdate() is called, and all files are checked during each periodic update. If binary files will not be changed frequently, use PRELOAD with a long delay value for maximum performance.
For maximum flexibility LOAD_AD_HOC mode exists so that all files are loaded when startAutoUpdate is called but they are not refreshed periodically. Instead, one can write a client that will ask the FileBinaryCache to update a single binary object via the Updatable#update(String name) method. Applications with a large number of files in cache many of which are not frequently updated will work well with LOAD_AD_HOC mode. Since files are updated 'ad hoc' in this mode rather than periodically calling startAutoUpdate() is not required.
The string argument to the getBinaryData() method is interpreted as the file's path relative to the cache's root directory, using a forward slash (/) as a separator (this is to facilitate using URL path info to request file). For example, if a BinaryCache object was made for the directory images, which contains a subdirectory foo, in which there is an image called site.jpg, you would call getBinaryData("foo/site.jpg") to retrieve that file.
The owner of the cache should implement the CacheListener interface and register itself using addCacheListener().
If the file cannot be read from its directory, the periodic updates will be cancelled until the next time startAutoUpdate() is called.
BinaryCache,
CacheListener,
Updatable.update(String)| Field Summary | |
static int |
LOAD_AD_HOC
Used with setLoadingPolicy() to indicate that files are preloaded but there is no automatic updating of them. |
static int |
LOAD_ON_DEMAND
Used with setLoadingPolicy() to indicate that files should be loaded as they are requested. |
static int |
PRELOAD
Used with setLoadingPolicy() to indicate that files should be preloaded. |
| Constructor Summary | |
FileBinaryCache()
Constructs an empty FileBinaryCache. |
|
FileBinaryCache(java.io.File dir)
Constructs a BinaryCache with a directory in which it will look for files. |
|
FileBinaryCache(java.io.File dir,
long delay)
Constructs a BinaryCache with a directory in which it will look for files, and a delay representing the number of seconds between cache updates. |
|
FileBinaryCache(java.lang.String path)
Constructs a BinaryCache with a directory in which it will look for files. |
|
FileBinaryCache(java.lang.String path,
long delay)
Constructs a BinaryCache with a directory in which it will look for files, and a delay representing the number of seconds between cache updates. |
|
| Method Summary | |
void |
addCacheListener(CacheListener listener)
Registers a CacheListener for this BinaryCache. |
BinaryData |
getBinaryData(java.lang.String name)
Gets a binary object from the cache |
long |
getDelay()
Returns the interval between two cache updates. |
java.io.File |
getDirectory()
Returns the binary cache root directory |
java.lang.String |
getFilenameSuffix()
Returns the file suffix. |
int |
getLoadingPolicy()
Returns the loading policy currently in effect |
java.lang.String |
getPath()
Returns the binary cache root directory |
java.util.Iterator |
listCachedFiles()
Returns a list of cached files |
void |
removeCacheListener(CacheListener listener)
Unregisters a CacheListener for this BinaryCache. |
void |
setDelay(long delay)
Sets the interval between two cache updates. |
void |
setDirectory(java.io.File dir)
Sets the binary cache root directory |
void |
setFilenameSuffix(java.lang.String filenameSuffix)
Sets the file suffix. |
void |
setLoadingPolicy(int loadingPolicy)
Sets the loading policy for this FileBinaryCache. |
void |
setPath(java.lang.String path)
Sets the binary cache root directory |
void |
startAutoUpdate()
Note: startAutoUpdate() is deprecated. |
void |
stopAutoUpdate()
Note: startAutoUpdate() is deprecated. |
void |
update()
Updates the cache. |
void |
update(java.lang.String name)
Update a named binary object if in the LOAD_AD_HOC mode Do nothing if in other modes |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static final int LOAD_ON_DEMAND
public static final int PRELOAD
public static final int LOAD_AD_HOC
| Constructor Detail |
public FileBinaryCache()
public FileBinaryCache(java.lang.String path)
path - the absolute path of the directory containing
files for this cache.public FileBinaryCache(java.io.File dir)
dir - the directory containing files for this cache.
public FileBinaryCache(java.lang.String path,
long delay)
path - the absolute path of the directory containing
files for this cache.delay - the number of seconds between cache updates.
public FileBinaryCache(java.io.File dir,
long delay)
dir - the directory containing files for this cache.delay - the number of seconds between cache updates.| Method Detail |
public int getLoadingPolicy()
public void setLoadingPolicy(int loadingPolicy)
loadingPolicy - cache modepublic void setPath(java.lang.String path)
path - the absolute path of the directory containing
files for this cache.public java.lang.String getPath()
public void setDirectory(java.io.File dir)
dir - the root directory containing files for this cachepublic java.io.File getDirectory()
public void setDelay(long delay)
delay - the number of seconds between cache updatespublic long getDelay()
public void setFilenameSuffix(java.lang.String filenameSuffix)
filenameSuffix - the optional filename suffix of
files to be read for this cache.public java.lang.String getFilenameSuffix()
the - optional filename suffix of
files to be read for this cache.public void addCacheListener(CacheListener listener)
BinaryCacheaddCacheListener in interface BinaryCachefreemarker.template.BinaryCacheCacheListener - the CacheListener to be registered.CacheListenerpublic void removeCacheListener(CacheListener listener)
BinaryCacheremoveCacheListener in interface BinaryCachefreemarker.template.BinaryCacheCacheListener - the CacheListener to be unregistered.CacheListenerpublic BinaryData getBinaryData(java.lang.String name)
getBinaryData in interface BinaryCachename - binary object's filename, including its
path relative to the cache's root directory.public void startAutoUpdate()
BinaryCacheBegins automatic updates of the cache.
startAutoUpdate in interface BinaryCachepublic void stopAutoUpdate()
BinaryCacheStops automatically updating the cache.
stopAutoUpdate in interface BinaryCachepublic java.util.Iterator listCachedFiles()
listCachedFiles in interface BinaryCachepublic void update(java.lang.String name)
update in interface Updatablename - of the binary object to updatepublic void update()
update in interface Updatable
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||