org.apache.velocity.runtime.resource.loader
Class JarResourceLoader

java.lang.Object
  |
  +--org.apache.velocity.runtime.resource.loader.ResourceLoader
        |
        +--org.apache.velocity.runtime.resource.loader.JarResourceLoader

public class JarResourceLoader
extends ResourceLoader

ResourceLoader to load templates from multiple Jar files.

The configuration of the JarResourceLoader is straightforward - You simply add the JarResourceLoader to the configuration via

    resource.loader = jar
    jar.resource.loader.class = org.apache.velocity.runtime.resource.loader.JarResourceLoader
    jar.resource.loader.path = list of JAR <URL>s
 

So for example, if you had a jar file on your local filesystem, you could simply do

    jar.resource.loader.path = jar:file:/opt/myfiles/jar1.jar
    

Note that jar specification for the .path configuration property conforms to the same rules for the java.net.JarUrlConnection class.

For a working example, see the unit test case, org.apache.velocity.test.MultiLoaderTestCase class

Version:
$Id: JarResourceLoader.java,v 1.15 2002/01/02 09:03:17 dlr Exp $
Author:
Dave Bryson

Field Summary
private  java.util.Hashtable entryDirectory
          Maps entries to the parent JAR File Key = the entry *excluding* plain directories Value = the JAR URL
private  java.util.Hashtable jarfiles
          Maps JAR URLs to the actual JAR Key = the JAR URL Value = the JAR
 
Fields inherited from class org.apache.velocity.runtime.resource.loader.ResourceLoader
className, isCachingOn, modificationCheckInterval, rsvc
 
Constructor Summary
JarResourceLoader()
           
 
Method Summary
private  void addEntries(java.util.Hashtable entries)
          Copy all the entries into the entryDirectory It will overwrite any duplicate keys.
private  void closeJar(java.lang.String path)
          Closes a Jar file and set its URLConnection to null.
 long getLastModified(Resource resource)
          Get the last modified time of the InputStream source that was used to create the template.
 java.io.InputStream getResourceStream(java.lang.String source)
          Get an InputStream so that the Runtime can build a template with it.
 void init(org.apache.commons.collections.ExtendedProperties configuration)
          Called by Velocity to initialize the loader
 boolean isSourceModified(Resource resource)
          Given a template, check to see if the source of InputStream has been modified.
private  void loadJar(java.lang.String path)
           
 
Methods inherited from class org.apache.velocity.runtime.resource.loader.ResourceLoader
commonInit, getClassName, getModificationCheckInterval, isCachingOn, setCachingOn, setModificationCheckInterval
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

entryDirectory

private java.util.Hashtable entryDirectory
Maps entries to the parent JAR File Key = the entry *excluding* plain directories Value = the JAR URL

jarfiles

private java.util.Hashtable jarfiles
Maps JAR URLs to the actual JAR Key = the JAR URL Value = the JAR
Constructor Detail

JarResourceLoader

public JarResourceLoader()
Method Detail

init

public void init(org.apache.commons.collections.ExtendedProperties configuration)
Called by Velocity to initialize the loader
Overrides:
init in class ResourceLoader

loadJar

private void loadJar(java.lang.String path)

closeJar

private void closeJar(java.lang.String path)
Closes a Jar file and set its URLConnection to null.

addEntries

private void addEntries(java.util.Hashtable entries)
Copy all the entries into the entryDirectory It will overwrite any duplicate keys.

getResourceStream

public java.io.InputStream getResourceStream(java.lang.String source)
                                      throws ResourceNotFoundException
Get an InputStream so that the Runtime can build a template with it.
Overrides:
getResourceStream in class ResourceLoader
Parameters:
name - name of template to get
Returns:
InputStream containing the template
Throws:
ResourceNotFoundException - if template not found in the file template path.

isSourceModified

public boolean isSourceModified(Resource resource)
Description copied from class: ResourceLoader
Given a template, check to see if the source of InputStream has been modified.
Overrides:
isSourceModified in class ResourceLoader

getLastModified

public long getLastModified(Resource resource)
Description copied from class: ResourceLoader
Get the last modified time of the InputStream source that was used to create the template. We need the template here because we have to extract the name of the template in order to locate the InputStream source.
Overrides:
getLastModified in class ResourceLoader


Copyright © 2003 Apache Software Foundation. All Rights Reserved.