com.atlassian.confluence.util.velocity
Class ConfigurableResourceManager

java.lang.Object
  extended by com.atlassian.confluence.util.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 ResourceManagerImpl with the following changes for Confluence:

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

Author:
Will Glass-Husain, Jason van Zyl, Paulo Gaspar, Geir Magnusson Jr., Henning P. Schmiedehausen

Nested Class Summary
protected static interface ConfigurableResourceManager.ResourceFactory
          Factory methods for Velocity resource objects
 
Field Summary
protected  org.apache.velocity.runtime.resource.ResourceCache globalCache
          Object implementing ResourceCache to be our resource manager's Resource cache.
protected  org.apache.velocity.runtime.log.Log log
          Logging.
static int RESOURCE_CONTENT
          A static content resource.
static int RESOURCE_TEMPLATE
          A template resources.
protected  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.
protected  org.apache.velocity.runtime.RuntimeServices rsvc
          The internal RuntimeServices object.
 
Constructor Summary
ConfigurableResourceManager()
           
 
Method Summary
 String getLoaderNameForResource(String resourceName)
          Determines if a template exists, and returns name of the loader that provides it.
 org.apache.velocity.runtime.resource.Resource getResource(String resourceName, int resourceType)
          Deprecated. since 2.9 Use getResource(String resourceName, int resourceType, String encoding )
 org.apache.velocity.runtime.resource.Resource getResource(String resourceName, int resourceType, String encoding)
          Gets the named resource.
protected  ConfigurableResourceManager.ResourceFactory getResourceFactory()
          Template method for provisioning a ConfigurableResourceManager.ResourceFactory.
 void initialize(org.apache.velocity.runtime.RuntimeServices rsvc)
          Initialize the ResourceManager.
protected  org.apache.velocity.runtime.resource.Resource loadResource(String resourceName, int resourceType, String encoding)
          Loads a resource from the current set of resource loaders.
protected  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.
protected  void refreshResource(org.apache.velocity.runtime.resource.Resource resource, String encoding)
          Takes an existing resource, and 'refreshes' it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RESOURCE_TEMPLATE

public static final int RESOURCE_TEMPLATE
A template resources.

See Also:
Constant Field Values

RESOURCE_CONTENT

public static final int RESOURCE_CONTENT
A static content resource.

See Also:
Constant Field Values

globalCache

protected org.apache.velocity.runtime.resource.ResourceCache globalCache
Object implementing ResourceCache to be our resource manager's Resource cache.


resourceLoaders

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


rsvc

protected org.apache.velocity.runtime.RuntimeServices rsvc
The internal RuntimeServices object.


log

protected org.apache.velocity.runtime.log.Log log
Logging.

Constructor Detail

ConfigurableResourceManager

public ConfigurableResourceManager()
Method Detail

initialize

public void initialize(org.apache.velocity.runtime.RuntimeServices rsvc)
                throws Exception
Initialize the ResourceManager.

Specified by:
initialize in interface org.apache.velocity.runtime.resource.ResourceManager
Parameters:
rsvc - The Runtime Services object which is associated with this Resource Manager.
Throws:
Exception

getResource

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

Specified by:
getResource in 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

loadResource

protected 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

refreshResource

protected void refreshResource(org.apache.velocity.runtime.resource.Resource resource,
                               String encoding)
                        throws org.apache.velocity.exception.ResourceNotFoundException,
                               org.apache.velocity.exception.ParseErrorException,
                               Exception
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:
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

getResource

public org.apache.velocity.runtime.resource.Resource getResource(String resourceName,
                                                                 int resourceType)
                                                          throws org.apache.velocity.exception.ResourceNotFoundException,
                                                                 org.apache.velocity.exception.ParseErrorException,
                                                                 Exception
Deprecated. since 2.9 Use getResource(String resourceName, int resourceType, String encoding )

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:
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

getLoaderNameForResource

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.

Specified by:
getLoaderNameForResource in interface org.apache.velocity.runtime.resource.ResourceManager
Parameters:
resourceName - Name of template or content resource
Returns:
name of loader than can provide it

postProcessLoader

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

getResourceFactory

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:
ConfigurableResourceManager.DefaultResourceFactory


Copyright © 2003-2011 Atlassian. All Rights Reserved.