Also, in Velocity 1.5 the ClasspathResourceLoader looks for the
resources in the ThreadContext classloader, meaning you can stick
velocity.jar in the container classpath and the templates in the
webapp classpath.

WILL

On 12/6/06, Nathan Bubna <[EMAIL PROTECTED]> wrote:
Actually, the resource loader is the issue.  The
ClasspathResourceLoader is not as full featured as the
FileResourceLoader or the WebappLoader (from VelocityTools).
Specifically, it doesn't have functional implementations of
isSourceModified() or getLastModified(), these always return false and
0 respectively for the ClasspathResourceLoader.   Without any way to
tell if the macro library has changed, there is no way to reload it.

If you are able to use a different resource loader during development,
that should do the trick for you.  I don't believe there is a way (at
least not for a component like Velocity) to check for file
modifications on the classpath, but if you know of one, we'd love a
patch!

On 12/6/06, Peter Locke <[EMAIL PROTECTED]> wrote:
> I've searched the archives and have seen this discussed before, although I've
> failed to find a definitive answer, and I'm hoping to get one.  I also have
> not seen evidence that this is addressed in Velocity 1.5.
>
> My templates reload on the fly as expected if changed, but changes to the
> macro library macros used by these same templates do not take effect until a
> Tomcat restart.  According to the documentation setting
> velocimacro.library.autoreload to true should mean that they take effect
> immediately.  This is a real annoyance when developing
>
> Here are my relevant config properties for the development environment.
> Velocity 1.4, Tomcat 4.1.  Note I'm including the fact that I'm using a
> custom ClasspathResourceLoader in case that is relevant, although I don't see
> why it would be.  I need to do this because it seems velocity's built in one
> must be loaded from a different class loader then my .jar that contains the
> templates as it won't find them.  Code below.
>
>       p.setProperty(Velocity.RESOURCE_LOADER, "class");
>       p.setProperty("class.resource.loader.class",
> ABEVelocityTemplateLoader.class.getName());
>       p.setProperty("class.resource.loader.cache", "false");
>       p.setProperty("velocimacro.library.autoreload", "true");
>       p.setProperty("runtime.log.invalid.references", "true");
>
>
> thanks,
> Peter
>
>
> -------------
>
> public class ABEVelocityTemplateLoader extends ClasspathResourceLoader {
>   public ABEVelocityTemplateLoader() {
>   }
>
>   public synchronized InputStream getResourceStream(String name)
>         throws ResourceNotFoundException
>     {
>         InputStream result = null;
>         if(name == null || name.length() == 0)
>             throw new ResourceNotFoundException("No template name provided");
>         try
>         {
>             ClassLoader classLoader = getClass().getClassLoader();
>             result = classLoader.getResourceAsStream(name);
>
>             if (result == null)
>             {
>               result = ClassLoader.getSystemResourceAsStream(name);
>             }
>         }
>         catch(Exception fnfe)
>         {
>             throw new ResourceNotFoundException(fnfe.getMessage());
>         }
>         return result;
>     }
>
>     public static String getDefaultResourceLocation(Class classUsingResource)
>     {
>       if (classUsingResource == null)
>       {
>         throw new IllegalArgumentException("classUsingResource cannot be
> null");
>       }
>
>       return classUsingResource.getPackage().getName().replace('.', '/') +
> '/';
>
>     }
>
>
> --
> Peter Locke
> Senior Engineer / Dev Lead
> www.abebooks.com <http://www.abebooks.com/>
>
> t: 250.412.3240
> f: 250.475-6014
> e: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> --
> P.S. I'm currently reading Rainbow Six
> <http://www.abebooks.com/servlet/SearchResults?bx=off&sts=t&ds=30&bi=0&an=Tom
> +Clancy&tn=Rainbow+Six>  by Tom Clancy
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Forio Business Simulations

Will Glass-Husain
[EMAIL PROTECTED]
www.forio.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to