Class ResourceManagerImpl
java.lang.Object
org.apache.velocity.runtime.resource.ResourceManagerImpl
- All Implemented Interfaces:
ResourceManager
Class to manage the text resource for the Velocity Runtime.
- Version:
- $Id$
- Author:
- Will Glass-Husain, Jason van Zyl, Paulo Gaspar, Geir Magnusson Jr., Henning P. Schmiedehausen
-
Field Summary
Modifier and TypeFieldDescriptionprotected ResourceCache
Object implementing ResourceCache to be our resource manager's Resource cache.protected org.slf4j.Logger
Logging.static final int
A static content resource.static final int
A template resources.protected final List
<ResourceLoader> The List of templateLoaders that the Runtime will use to locate the InputStream source of a template.protected RuntimeServices
The internal RuntimeServices object. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected Resource
createResource
(String resourceName, int resourceType) Create a new Resource of the specified type.getLoaderNameForResource
(String resourceName) Determines if a template exists, and returns name of the loader that provides it.getResource
(String resourceName, int resourceType, String encoding) Gets the named resource.void
Initialize the ResourceManager.protected Resource
loadResource
(String resourceName, int resourceType, String encoding) Loads a resource from the current set of resource loaders.protected Resource
refreshResource
(Resource resource, String encoding) Takes an existing resource, and 'refreshes' it.
-
Field Details
-
RESOURCE_TEMPLATE
public static final int RESOURCE_TEMPLATEA template resources.- See Also:
-
RESOURCE_CONTENT
public static final int RESOURCE_CONTENTA static content resource.- See Also:
-
globalCache
Object implementing ResourceCache to be our resource manager's Resource cache. -
resourceLoaders
The List of templateLoaders that the Runtime will use to locate the InputStream source of a template. -
rsvc
The internal RuntimeServices object. -
log
protected org.slf4j.Logger logLogging.
-
-
Constructor Details
-
ResourceManagerImpl
public ResourceManagerImpl()
-
-
Method Details
-
initialize
Initialize the ResourceManager.- Specified by:
initialize
in interfaceResourceManager
- Parameters:
rs
- The Runtime Services object which is associated with this Resource Manager.
-
getResource
public Resource getResource(String resourceName, int resourceType, String encoding) throws ResourceNotFoundException, ParseErrorException Gets the named resource. Returned class type corresponds to specified type (i.e.Template
toRESOURCE_TEMPLATE
). This method is now unsynchronized which requires that ResourceCache implementations be thread safe (as the default is).- Specified by:
getResource
in interfaceResourceManager
- 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:
ResourceNotFoundException
- if template not found from any available source.ParseErrorException
- if template cannot be parsed due to syntax (or other) error.
-
createResource
Create a new Resource of the specified type.- Parameters:
resourceName
- The name of the resource to retrieve.resourceType
- The type of resource (RESOURCE_TEMPLATE
,RESOURCE_CONTENT
, etc.).- Returns:
- new instance of appropriate resource type
- Since:
- 1.6
-
loadResource
protected Resource loadResource(String resourceName, int resourceType, String encoding) throws ResourceNotFoundException, ParseErrorException 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:
ResourceNotFoundException
- if template not found from any available source.ParseErrorException
- if template cannot be parsed due to syntax (or other) error.
-
refreshResource
protected Resource refreshResource(Resource resource, String encoding) throws ResourceNotFoundException, ParseErrorException Takes 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 refreshencoding
- character encoding of the resource to refresh.- Returns:
- resource
- Throws:
ResourceNotFoundException
- if template not found from current source for this ResourceParseErrorException
- if template cannot be parsed due to syntax (or other) error.
-
getLoaderNameForResource
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:
getLoaderNameForResource
in interfaceResourceManager
- Parameters:
resourceName
- Name of template or content resource- Returns:
- class name of loader than can provide it
-