Macros encountered in templates are placed in global scope if no global library 
is specified and velocimacro.permissions.allow.inline.to.replace.global = false
---------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: VELOCITY-652
                 URL: https://issues.apache.org/jira/browse/VELOCITY-652
             Project: Velocity
          Issue Type: Improvement
          Components: Engine
    Affects Versions: 1.6
            Reporter: Lauri Piispanen
            Priority: Minor


This is a minor issue and more of a documentation/implementation mismatch. With 
default settings (allow.inline.to.replace.global=false, velocimacro.library not 
specified etc.) the first time a velocimacro is encountered in a template, it 
is placed in global scope and thus replaces all inline macros. Explicitly 
setting "allow.inline.to.replace.global=true" will cure the issue, even though 
it should have no effect as there are no global macros specified - hence 
nothing to replace! Albeit this is a configuration documentation issue, the 
behavior can be quite confusing and should probably be changed to have an empty 
global library if none is specified.

Steps to reproduce:
1) create new RuntimeInstance and only define the resource loader in properties 
2) create two templates, named test1.vtl and test2.vtl:

--- test1.vtl:
#macro( myMacro )
Macro A
#end

#myMacro()

--- test2.vtl:
#macro( myMacro )
Macro B
#end

#myMacro()

3) first merge() test1.vm, should return "Macro A" (and it does)
4) now merge() test2.vm, should return "Macro B" but returns "Macro A" instead
5) create new RuntimeInstance with 
"velocimacro.permissions.allow.inline.to.replace.global = true"
6) retry merging and observe correct behavior

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to