Sure, the default implementation class is: http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/resource/ResourceManagerImpl.java?revision=729843&view=markup
You can change that using this property: resource.manager.class = org.apache.velocity.runtime.resource.ResourceManagerImpl The ResourceManager sits atop the ResourceCache and the ResourceLoaders, coordinating their activity. I think the basic problem is that when multiple loaders are configured, the ResourceManager is not paying attention to which loader a cached resource came from. I imagine changing the refreshResource method to check if a cached resource that came from a lower-rung resource loader can be found in a higher one should do the trick. If you do get around to fixing this for yourself, would you consider sharing the fix? On Tue, Feb 17, 2009 at 8:51 AM, ChadDavis <[email protected]> wrote: > Can you give me a little low down on how the ResourceManager works > with the ResourceLoaders? Maybe I can do a little fix and build for > my own needs. > > On Mon, Feb 16, 2009 at 10:30 PM, Nathan Bubna <[email protected]> wrote: >> I don't think you're doing anything wrong, just something that no one >> else has tried. I think this is a limitation of the default >> ResourceManager implementation. Would you open a JIRA issue for this? >> It seems like something that could and should be fixed. >> >> On Mon, Feb 16, 2009 at 4:16 PM, ChadDavis <[email protected]> >> wrote: >>> I've got an app where I use a file resource loader followed by a >>> classpath resource loader. I want the templates in the file location >>> to override the templates on the classpath. This works partially. If >>> a template with the same name is in both locations, it definitely >>> picks up the one in the file system. If I remove the filesystem >>> template, during run time, the template on the classpath is then >>> found. So far, so good. If I then, however, try to put the template >>> back in the file system location, it is NOT picked up. >>> >>> Note, this is all during run time. If I restart my app ( a web >>> application -- not using the velocity servlet ), the filesystem >>> template is again picked up. >>> >>> >>> Here is my configuration: >>> >>> #resource.loader=class >>> resource.loader=file, class >>> >>> # File resource loader information >>> # >>> file.resource.loader.description=Velocity File Resource Loader >>> file.resource.loader.class=org.apache.velocity.runtime.resource.loader.FileResourceLoader >>> file.resource.loader.cache=true >>> file.resource.loader.modificationCheckInterval=1 >>> file.resource.loader.path=/home/readyportal/Desktop/machineOneWorkspaces/bipSpace/BIP/src/wego/velocity/templates/ >>> >>> #file.resource.loader.path=/home/readyportal/ReadyPortal/conf/velocity/templates/ >>> >>> # >>> # Class resource loader information >>> # >>> class.resource.loader.description=Velocity Classpath Resource Loader >>> class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader >>> class.resource.loader.cache=true >>> class.resource.loader.modificationCheckInterval=1 >>> >>> >>> Other notes: >>> >>> If I turn the caching off on the classpath resource loader ( i.e. >>> change only the class.resource.loader.cache to false in the above >>> config ), everything works at runtime. >>> >>> What am I doing wrong? >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
