org.springframework.ui.velocity
Class VelocityEngineFactory

java.lang.Object
  extended byorg.springframework.ui.velocity.VelocityEngineFactory
Direct Known Subclasses:
VelocityConfigurer, VelocityEngineFactoryBean

public class VelocityEngineFactory
extends java.lang.Object

Factory that configures a VelocityEngine. Can be used standalone, but typically you will either use VelocityEngineFactoryBean for preparing a VelocityEngine as bean reference, or VelocityConfigurer for web views.

The optional "configLocation" property sets the location of the Velocity properties file, within the current application. Velocity properties can be overridden via "velocityProperties", or even completely specified locally, avoiding the need for an external properties file.

The "resourceLoaderPath" property can be used to specify the Velocity resource loader path via Spring's Resource abstraction, possibly relative to the Spring application context.

If "overrideLogging" is true (the default), the VelocityEngine will be configured to log via Commons Logging, i.e. using CommonsLoggingLogSystem as log system.

The simplest way to use this class is to specify just a "resourceLoaderPath": The VelocityEngine does not need any further configuration then.

Author:
Juergen Hoeller
See Also:
setConfigLocation(org.springframework.core.io.Resource), setVelocityProperties(java.util.Properties), setResourceLoaderPath(java.lang.String), setOverrideLogging(boolean), createVelocityEngine(), CommonsLoggingLogSystem, VelocityEngineFactoryBean, VelocityConfigurer

Field Summary
protected  org.apache.commons.logging.Log logger
           
 
Constructor Summary
VelocityEngineFactory()
           
 
Method Summary
 org.apache.velocity.app.VelocityEngine createVelocityEngine()
          Prepare the VelocityEngine instance and return it.
protected  org.apache.velocity.app.VelocityEngine newVelocityEngine()
          Return a new VelocityEngine.
protected  void postProcessVelocityEngine(org.apache.velocity.app.VelocityEngine velocityEngine)
          To be implemented by subclasses that want to to perform custom post-processing of the VelocityEngine after this FactoryBean performed its default configuration (but before VelocityEngine.init).
 void setConfigLocation(Resource configLocation)
          Set the location of the Velocity config file.
 void setOverrideLogging(boolean overrideLogging)
          If Velocity should log via Commons Logging, i.e. if Velocity's log system should be set to CommonsLoggingLogSystem.
 void setResourceLoader(ResourceLoader resourceLoader)
          Set the Spring ResourceLoader to use for loading Velocity template files.
 void setResourceLoaderPath(java.lang.String resourceLoaderPath)
          Set the Velocity resource loader path via a Spring resource location.
 void setVelocityProperties(java.util.Properties velocityProperties)
          Set Velocity properties, like "file.resource.loader.path".
 void setVelocityPropertiesMap(java.util.Map velocityPropertiesMap)
          Set Velocity properties as Map, to allow for non-String values like "ds.resource.loader.instance".
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final org.apache.commons.logging.Log logger
Constructor Detail

VelocityEngineFactory

public VelocityEngineFactory()
Method Detail

setConfigLocation

public void setConfigLocation(Resource configLocation)
Set the location of the Velocity config file. Alternatively, you can specify all properties locally.

See Also:
setVelocityProperties(java.util.Properties), setResourceLoaderPath(java.lang.String)

setVelocityProperties

public void setVelocityProperties(java.util.Properties velocityProperties)
Set Velocity properties, like "file.resource.loader.path". Can be used to override values in a Velocity config file, or to specify all necessary properties locally.

Note that the Velocity resource loader path also be set to any Spring resource location via the "resourceLoaderPath" property. Setting it here is just necessary when using a non-file-based resource loader.

See Also:
setVelocityPropertiesMap(java.util.Map), setConfigLocation(org.springframework.core.io.Resource), setResourceLoaderPath(java.lang.String)

setVelocityPropertiesMap

public void setVelocityPropertiesMap(java.util.Map velocityPropertiesMap)
Set Velocity properties as Map, to allow for non-String values like "ds.resource.loader.instance".

See Also:
setVelocityProperties(java.util.Properties)

setResourceLoaderPath

public void setResourceLoaderPath(java.lang.String resourceLoaderPath)
Set the Velocity resource loader path via a Spring resource location.

When populated via a String, standard URLs like "file:" and "classpath:" pseudo URLs are supported, as understood by ResourceEditor. Allows for relative paths when running in an ApplicationContext.

Will define a path for the default Velocity resource loader with the name "file". If the specified resource cannot be resolved to a java.io.File, the generic SpringResourceLoader will be used, without modification detection.

See Also:
ResourceEditor, ResourceLoader.getResource(java.lang.String), FileResourceLoader, SpringResourceLoader

setResourceLoader

public void setResourceLoader(ResourceLoader resourceLoader)
Set the Spring ResourceLoader to use for loading Velocity template files. The default is DefaultResourceLoader. Will get overridden by the ApplicationContext if running in a context.

See Also:
DefaultResourceLoader

setOverrideLogging

public void setOverrideLogging(boolean overrideLogging)
If Velocity should log via Commons Logging, i.e. if Velocity's log system should be set to CommonsLoggingLogSystem. Default value is true.

See Also:
CommonsLoggingLogSystem

createVelocityEngine

public org.apache.velocity.app.VelocityEngine createVelocityEngine()
                                                            throws java.io.IOException,
                                                                   org.apache.velocity.exception.VelocityException
Prepare the VelocityEngine instance and return it.

Returns:
the VelocityEngine instance
Throws:
java.io.IOException - if the config file wasn't found
org.apache.velocity.exception.VelocityException - on Velocity initialization failure

newVelocityEngine

protected org.apache.velocity.app.VelocityEngine newVelocityEngine()
                                                            throws java.io.IOException,
                                                                   org.apache.velocity.exception.VelocityException
Return a new VelocityEngine. Subclasses can override this for custom initialization, or for using a mock object for testing. Called by createVelocityEngine.

Returns:
the VelocityEngine instance
Throws:
java.io.IOException - if a config file wasn't found
org.apache.velocity.exception.VelocityException - on Velocity initialization failure
See Also:
createVelocityEngine()

postProcessVelocityEngine

protected void postProcessVelocityEngine(org.apache.velocity.app.VelocityEngine velocityEngine)
                                  throws java.io.IOException,
                                         org.apache.velocity.exception.VelocityException
To be implemented by subclasses that want to to perform custom post-processing of the VelocityEngine after this FactoryBean performed its default configuration (but before VelocityEngine.init). Called by createVelocityEngine.

Parameters:
velocityEngine - the current VelocityEngine
Throws:
java.io.IOException - if a config file wasn't found
org.apache.velocity.exception.VelocityException - on Velocity initialization failure
See Also:
createVelocityEngine(), VelocityEngine.init()


Copyright (C) 2003-2004 The Spring Framework Project.