public class

ConfigurableResourceManager

extends Object
implements ResourceManager
java.lang.Object
   ↳ com.atlassian.confluence.util.velocity.ConfigurableResourceManager
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Class to manage the text resource for the Velocity Runtime.

This is a copy of the Velocity 1.5 org.apache.velocity.runtime.resource.ResourceManagerImpl with the following changes for Confluence:

Ideally we would replace the entire implementation, making use of a richer resource loader interface.

Summary

Nested Classes
interface ConfigurableResourceManager.ResourceFactory Factory methods for Velocity resource objects  
Constants
int RESOURCE_CONTENT A static content resource.
int RESOURCE_TEMPLATE A template resources.
[Expand]
Inherited Constants
From interface org.apache.velocity.runtime.resource.ResourceManager
Fields
protected ResourceCache globalCache Object implementing ResourceCache to be our resource manager's Resource cache.
protected Log log Logging.
protected final List<ResourceLoader> resourceLoaders The List of templateLoaders that the Runtime will use to locate the InputStream source of a template.
protected RuntimeServices rsvc The internal RuntimeServices object.
Public Constructors
ConfigurableResourceManager()
Public Methods
String getLoaderNameForResource(String resourceName)
Determines if a template exists, and returns name of the loader that provides it.
Resource getResource(String resourceName, int resourceType, String encoding)
Gets the named resource.
Resource getResource(String resourceName, int resourceType)
This method is deprecated. since 2.9 Use getResource(String, int, String)
synchronized void initialize(RuntimeServices rsvc)
Initialize the ResourceManager.
Protected Methods
ConfigurableResourceManager.ResourceFactory getResourceFactory()

Template method for provisioning a ConfigurableResourceManager.ResourceFactory.

Resource loadResource(String resourceName, int resourceType, String encoding)
Loads a resource from the current set of resource loaders.
ResourceLoader postProcessLoader(ResourceLoader loader, ExtendedProperties properties)
Template method to allow subclasses to post process and possibly wrap a resource loader before it is added to the loader list.
void refreshResource(Resource resource, String encoding)
Takes an existing resource, and 'refreshes' it.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.apache.velocity.runtime.resource.ResourceManager

Constants

public static final int RESOURCE_CONTENT

A static content resource.

Constant Value: 2 (0x00000002)

public static final int RESOURCE_TEMPLATE

A template resources.

Constant Value: 1 (0x00000001)

Fields

protected ResourceCache globalCache

Object implementing ResourceCache to be our resource manager's Resource cache.

protected Log log

Logging.

protected final List<ResourceLoader> resourceLoaders

The List of templateLoaders that the Runtime will use to locate the InputStream source of a template.

protected RuntimeServices rsvc

The internal RuntimeServices object.

Public Constructors

public ConfigurableResourceManager ()

Public Methods

public 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.

Parameters
resourceName Name of template or content resource
Returns
  • name of loader than can provide it

public Resource getResource (String resourceName, int resourceType, String encoding)

Gets the named resource. Returned class type corresponds to specified type (i.e. Template to RESOURCE_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.

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.
Exception if a problem in parse

public Resource getResource (String resourceName, int resourceType)

This method is deprecated.
since 2.9 Use getResource(String, int, String)

Gets the named resource. Returned class type corresponds to specified type (i.e. Template to RESOURCE_TEMPLATE).

Parameters
resourceName The name of the resource to retrieve.
resourceType The type of resource (RESOURCE_TEMPLATE, RESOURCE_CONTENT, etc.).
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.
Exception if a problem in parse

public synchronized void initialize (RuntimeServices rsvc)

Initialize the ResourceManager.

Parameters
rsvc The Runtime Services object which is associated with this Resource Manager.
Throws
Exception

Protected Methods

protected 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
  • com.atlassian.confluence.util.velocity.ConfigurableResourceManager.DefaultResourceFactory

protected Resource loadResource (String resourceName, int resourceType, String encoding)

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.
Exception if a problem in parse

protected ResourceLoader postProcessLoader (ResourceLoader loader, 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.

protected void refreshResource (Resource resource, String encoding)

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 refresh
encoding character encoding of the resource to refresh.
Throws
ResourceNotFoundException if template not found from current source for this Resource
ParseErrorException if template cannot be parsed due to syntax (or other) error.
Exception if a problem in parse