[ 
https://issues.apache.org/jira/browse/VELOCITY-652?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claude Brisson resolved VELOCITY-652.
-------------------------------------
       Resolution: Fixed
         Assignee: Claude Brisson
    Fix Version/s: 2.x

User guide documentation updated in commit 1760183.

> 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
>            Assignee: Claude Brisson
>            Priority: Minor
>             Fix For: 2.x
>
>         Attachments: VelociMacroNamespaceTestCase.zip
>
>
> 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 was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to