Class ConfigurableResourceManager
- java.lang.Object
- 
- com.atlassian.confluence.velocity.ConfigurableResourceManager
 
- 
- All Implemented Interfaces:
- org.apache.velocity.runtime.resource.ResourceManager
 - Direct Known Subclasses:
- ConfluenceVelocityResourceManager
 
 public class ConfigurableResourceManager extends Object implements org.apache.velocity.runtime.resource.ResourceManager Class to manage the text resource for the Velocity Runtime. This is a copy of the Velocity 1.5 ResourceManagerImplwith the following changes for Confluence:- added post processing template method for more flexible loader configuration
-  a non-synchronized getResource(java.lang.String, int, java.lang.String)method
-  getLoaderNameForResource(String)is more useful. It returns the ID of the loader rather than the class name
 Ideally we would replace the entire implementation, making use of a richer resource loader interface. - Since:
- 8.4
- Author:
- Will Glass-Husain, Jason van Zyl, Paulo Gaspar, Geir Magnusson Jr., Henning P. Schmiedehausen
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description protected static interfaceConfigurableResourceManager.ResourceFactoryFactory methods for Velocity resource objects
 - 
Field SummaryFields Modifier and Type Field Description protected org.apache.velocity.runtime.resource.ResourceCacheglobalCacheObject implementing ResourceCache to be our resource manager's Resource cache.protected org.apache.velocity.runtime.log.LoglogLogging.static intRESOURCE_CONTENTA static content resource.static intRESOURCE_TEMPLATEA template resources.protected List<org.apache.velocity.runtime.resource.loader.ResourceLoader>resourceLoadersThe List of templateLoaders that the Runtime will use to locate the InputStream source of a template.protected org.apache.velocity.runtime.RuntimeServicesrsvcThe internal RuntimeServices object.
 - 
Constructor SummaryConstructors Constructor Description ConfigurableResourceManager()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description StringgetLoaderNameForResource(String resourceName)Determines if a template exists, and returns name of the loader that provides it.org.apache.velocity.runtime.resource.ResourcegetResource(String resourceName, int resourceType, String encoding)Gets the named resource.protected ConfigurableResourceManager.ResourceFactorygetResourceFactory()Template method for provisioning aConfigurableResourceManager.ResourceFactory.voidinitialize(org.apache.velocity.runtime.RuntimeServices rsvc)Initialize the ResourceManager.protected org.apache.velocity.runtime.resource.ResourceloadResource(String resourceName, int resourceType, String encoding)Loads a resource from the current set of resource loaders.protected org.apache.velocity.runtime.resource.loader.ResourceLoaderpostProcessLoader(org.apache.velocity.runtime.resource.loader.ResourceLoader loader, org.apache.commons.collections.ExtendedProperties properties)Template method to allow subclasses to post process and possibly wrap a resource loader before it is added to the loader list.protected voidrefreshResource(org.apache.velocity.runtime.resource.Resource resource, String encoding)Takes an existing resource, and 'refreshes' it.
 
- 
- 
- 
Field Detail- 
RESOURCE_TEMPLATEpublic static final int RESOURCE_TEMPLATE A template resources.- See Also:
- Constant Field Values
 
 - 
RESOURCE_CONTENTpublic static final int RESOURCE_CONTENT A static content resource.- See Also:
- Constant Field Values
 
 - 
globalCacheprotected org.apache.velocity.runtime.resource.ResourceCache globalCache Object implementing ResourceCache to be our resource manager's Resource cache.
 - 
resourceLoadersprotected final List<org.apache.velocity.runtime.resource.loader.ResourceLoader> resourceLoaders The List of templateLoaders that the Runtime will use to locate the InputStream source of a template.
 - 
rsvcprotected org.apache.velocity.runtime.RuntimeServices rsvc The internal RuntimeServices object.
 - 
logprotected org.apache.velocity.runtime.log.Log log Logging.
 
- 
 - 
Method Detail- 
initializepublic void initialize(org.apache.velocity.runtime.RuntimeServices rsvc) throws ExceptionInitialize the ResourceManager.- Specified by:
- initializein interface- org.apache.velocity.runtime.resource.ResourceManager
- Parameters:
- rsvc- The Runtime Services object which is associated with this Resource Manager.
- Throws:
- Exception
 
 - 
getResourcepublic org.apache.velocity.runtime.resource.Resource getResource(String resourceName, int resourceType, String encoding) throws org.apache.velocity.exception.ResourceNotFoundException, org.apache.velocity.exception.ParseErrorException, Exception Gets the named resource. Returned class type corresponds to specified type (i.e.TemplatetoRESOURCE_TEMPLATE).The original version of this class logs and rethrows virtually any exception thrown. This logging has been removed since these exceptions are often expected. - Specified by:
- getResourcein interface- org.apache.velocity.runtime.resource.ResourceManager
- Parameters:
- resourceName- The name of the resource to retrieve.
- resourceType- The type of resource (- RESOURCE_TEMPLATE,- RESOURCE_CONTENT, etc.).
- encoding- The character encoding to use.
- Returns:
- Resource with the template parsed and ready.
- Throws:
- org.apache.velocity.exception.ResourceNotFoundException- if template not found from any available source.
- org.apache.velocity.exception.ParseErrorException- if template cannot be parsed due to syntax (or other) error.
- Exception- if a problem in parse
 
 - 
loadResourceprotected org.apache.velocity.runtime.resource.Resource loadResource(String resourceName, int resourceType, String encoding) throws org.apache.velocity.exception.ResourceNotFoundException, org.apache.velocity.exception.ParseErrorException, Exception Loads a resource from the current set of resource loaders.- Parameters:
- resourceName- The name of the resource to retrieve.
- resourceType- The type of resource (- RESOURCE_TEMPLATE,- RESOURCE_CONTENT, etc.).
- encoding- The character encoding to use.
- Returns:
- Resource with the template parsed and ready.
- Throws:
- org.apache.velocity.exception.ResourceNotFoundException- if template not found from any available source.
- org.apache.velocity.exception.ParseErrorException- if template cannot be parsed due to syntax (or other) error.
- Exception- if a problem in parse
 
 - 
refreshResourceprotected void refreshResource(org.apache.velocity.runtime.resource.Resource resource, String encoding) throws org.apache.velocity.exception.ResourceNotFoundException, org.apache.velocity.exception.ParseErrorException, ExceptionTakes an existing resource, and 'refreshes' it. This generally means that the source of the resource is checked for changes according to some cache/check algorithm and if the resource changed, then the resource data is reloaded and re-parsed.- Parameters:
- resource- resource to refresh
- encoding- character encoding of the resource to refresh.
- Throws:
- org.apache.velocity.exception.ResourceNotFoundException- if template not found from current source for this Resource
- org.apache.velocity.exception.ParseErrorException- if template cannot be parsed due to syntax (or other) error.
- Exception- if a problem in parse
 
 - 
getLoaderNameForResourcepublic String getLoaderNameForResource(String resourceName) Determines if a template exists, and returns name of the loader that provides it. This is a slightly less hokey way to support the Velocity.templateExists() utility method, which was broken when per-template encoding was introduced. We can revisit this.- Specified by:
- getLoaderNameForResourcein interface- org.apache.velocity.runtime.resource.ResourceManager
- Parameters:
- resourceName- Name of template or content resource
- Returns:
- name of loader than can provide it
 
 - 
postProcessLoaderprotected org.apache.velocity.runtime.resource.loader.ResourceLoader postProcessLoader(org.apache.velocity.runtime.resource.loader.ResourceLoader loader, org.apache.commons.collections.ExtendedProperties properties)Template method to allow subclasses to post process and possibly wrap a resource loader before it is added to the loader list. This implementation does nothing.- Parameters:
- loader- Resource loader to process
- properties- Configured properties for the resource loader
- Returns:
- final resource loader instance to be used at runtime. Must not be null.
 
 - 
getResourceFactoryprotected ConfigurableResourceManager.ResourceFactory getResourceFactory() Template method for provisioning a ConfigurableResourceManager.ResourceFactory. Subclasses may customise this factory where necessary.This implementation returns a strategy that delegates to the default Velocity resource factory methods. - Returns:
- resource factory to use for this resource manager
- See Also:
- ConfigurableResourceManager.DefaultResourceFactory
 
 
- 
 
-