Resource loader that uses the ServletContext of a webapp to load Velocity
templates. (it's much easier to use with servlets than the standard
FileResourceLoader, in particular the use of war files is transparent). The
default search path is '/' (relative to the webapp root), but you can change
this behaviour by specifying one or more paths by mean of as many
webapp.resource.loader.path properties as needed in the velocity.properties
file. All paths must be relative to the root of the webapp. To enable caching
and cache refreshing the webapp.resource.loader.cache and
webapp.resource.loader.modificationCheckInterval properties need to be set in
the velocity.properties file ... auto-reloading of global macros requires the
webapp.resource.loader.cache property to be set to 'false'.
- Geir Magnusson Jr.
- Nathan Bubna
- Claude Brisson
- $Id: WebappLoader.java 21575 2007-02-15 13:40:21Z
The root paths for templates (relative to webapp's root).
This is abstract in the base class, so we need it.
NOTE: this expects that the ServletContext has already been placed in the
runtime's application attributes under its full class name (i.e.
rsvc.debug("WebappLoader : initialization starting.");
rsvc.info("WebappLoader : added template path - '" + paths[i] + "'");
rsvc.error("WebappLoader : unable to retrieve ServletContext");
rsvc.debug("WebappLoader : initialization complete.");
Get an InputStream so that the Runtime can build a template with it.
if (name == null || name.length() == 0)
"WebappLoader : No template name provided");
msg = "WebappLoader : Resource '" + name + "' not found.";
return new File(rootPath + savedPath, fileName);
Checks to see if a resource has been deleted, moved or modified.
Resource The resource to check for modification
- boolean True if the resource has been modified
currentFile = new File(rootPath + paths[i], fileName);
Checks to see when a resource was last modified
Resource the resource to check
- long The time when the resource was last modified or 0 if the
file can't be read