Save This Page
Home » velocity-1.5 » org.apache » velocity » runtime » resource » loader » [javadoc | source]
org.apache.velocity.runtime.resource.loader
public class: DataSourceResourceLoader [javadoc | source]
java.lang.Object
   org.apache.velocity.runtime.resource.loader.ResourceLoader
      org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader

This is a simple template file loader that loads templates from a DataSource instead of plain files.

It can be configured with a datasource name, a table name, id column (name), content column (the template body) and a datetime column (for last modification info).

Example configuration snippet for velocity.properties:

resource.loader = file, ds

ds.resource.loader.public.name = DataSource
ds.resource.loader.description = Velocity DataSource Resource Loader
ds.resource.loader.class = org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader
ds.resource.loader.resource.datasource = java:comp/env/jdbc/Velocity
ds.resource.loader.resource.table = tb_velocity_template
ds.resource.loader.resource.keycolumn = id_template
ds.resource.loader.resource.templatecolumn = template_definition
ds.resource.loader.resource.timestampcolumn = template_timestamp
ds.resource.loader.cache = false
ds.resource.loader.modificationCheckInterval = 60

Optionally, the developer can instantiate the DataSourceResourceLoader and set the DataSource via code in a manner similar to the following:

DataSourceResourceLoader ds = new DataSourceResourceLoader();
ds.setDataSource(DATASOURCE);
Velocity.setProperty("ds.resource.loader.instance",ds);

The property ds.resource.loader.class should be left out, otherwise all the other properties in velocity.properties would remain the same.

Example WEB-INF/web.xml:


Velocity template DataSource
jdbc/Velocity
javax.sql.DataSource
Container



and Tomcat 4 server.xml file:
[...]

[...]


driverClassName
org.hsql.jdbcDriver


driverName
jdbc:HypersonicSQL:database


user
database_username


password
database_password


[...]

[...]

Example sql script:
CREATE TABLE tb_velocity_template (
id_template varchar (40) NOT NULL ,
template_definition text (16) NOT NULL ,
template_timestamp datetime NOT NULL
)

Fields inherited from org.apache.velocity.runtime.resource.loader.ResourceLoader:
isCachingOn,  modificationCheckInterval,  className,  rsvc,  log
Method from org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader Summary:
getLastModified,   getResourceStream,   init,   isSourceModified,   setDataSource
Methods from org.apache.velocity.runtime.resource.loader.ResourceLoader:
commonInit,   getClassName,   getLastModified,   getModificationCheckInterval,   getResourceStream,   init,   isCachingOn,   isSourceModified,   setCachingOn,   setModificationCheckInterval
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader Detail:
 public long getLastModified(Resource resource) 
 public synchronized InputStream getResourceStream(String name) throws ResourceNotFoundException 
    Get an InputStream so that the Runtime can build a template with it.
 public  void init(ExtendedProperties configuration) 
 public boolean isSourceModified(Resource resource) 
 public  void setDataSource(DataSource dataSource) 
    Set the DataSource used by this resource loader. Call this as an alternative to specifying the data source name via properties.