[
http://issues.apache.org/jira/browse/VELOCITY-98?page=comments#action_12330240
]
Will Glass-Husain commented on VELOCITY-98:
-------------------------------------------
Hi,
Tested this against the unreleased Velocity 1.5. I couldn't duplicate the
problem. I know it has been a long time, but has anyone hit this recently?
Here's the code I used to test it:
/**
* Tests for fix of bug VELOCITY-98 where a #include followed by #parse
* of the same file throws ClassCastException when caching is on.
* @throws Exception
*/
public void testIncludeParseCaching ()
throws Exception
{
VelocityEngine ve = new VelocityEngine();
ve.setProperty("file.resource.loader.cache", "true");
ve.setProperty("file.resource.loader.path", FILE_RESOURCE_LOADER_PATH);
ve.init();
Template template = ve.getTemplate("testincludeparse.vm");
Writer writer = new StringWriter();
VelocityContext context = new VelocityContext();
// will produce a ClassCastException if Velocity-98 is not solved
template.merge(context, writer);
writer.flush();
writer.close();
}
And two files:
testincludeparse.vm
#include("include1.vm")
#parse("include1.vm")
include1.vm
test
> #parse / #include causing ClassCastException
> --------------------------------------------
>
> Key: VELOCITY-98
> URL: http://issues.apache.org/jira/browse/VELOCITY-98
> Project: Velocity
> Type: Bug
> Components: Source
> Versions: 1.3-rc1
> Environment: Operating System: Linux
> Platform: All
> Reporter: Simon Christian
> Priority: Minor
> Fix For: 1.5
>
> If caching is on, and a template has been previously cached due to a #parse
> or
> #include directive, subsequently using the other directive will cause a
> ClassCastException and fail.
> Example: if I have two templates, the first one loaded includes the line:
> #include( "include/header.vtl" )
> and the second one the line:
> #parse( "include/header.vtl" )
> When the second page is viewed, a ClassCastException is thrown with an error
> in
> the log like:
> [error] #parse() : arg = include/header.vtl. Exception :
> java.lang.ClassCastException:
> org.apache.velocity.runtime.resource.ContentResource
> A solution might be to include the resourceType as part of the key when
> caching/retrieving the resource, within the getResource() method of the
> org.apache.velocity.runtime.resource.ResourceManagerImpl class. Alternatively
> seperate caches could be used for the different types of Resource.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]