[ 
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]

Reply via email to