[ 
https://issues.apache.org/jira/browse/VELOCITY-681?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666381#action_12666381
 ] 

Sergiu Dumitriu commented on VELOCITY-681:
------------------------------------------

Provided a fix, which doesn't break any of the existing tests.

The behavior of org.apache.velocity.context.ProxyVMContext#put was changed to 
match the following behavior:
- If this is a valid proxy to a variable, set the value of the proxied 
variable; otherwise:
- If a local scope is enforced, set a local variable; otherwise:
- If this is a local variable, set a local variable; otherwise:
- If this is a proxy to a literal, set a local literal variable, and a global 
variable; otherwise:
- Set a global variable (where global means the parent context)

Also, #get was changed to take into account local literal variables.

Local literal variable means a context parameter with the key 
".literal.$varName", which was already used in #addVMProxyArg.

> [regression] Changes on the macro parameters are not persisted outside the 
> macro call
> -------------------------------------------------------------------------------------
>
>                 Key: VELOCITY-681
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-681
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 1.6.1
>            Reporter: Sergiu Dumitriu
>            Priority: Critical
>             Fix For: 1.6.2, 1.7
>
>         Attachments: VELOCITY-681-1.6.patch, VELOCITY-681-trunk.patch
>
>
> The fix for VELOCITY-615 was too radical, since it completely disables 
> #setting new values to the formal arguments. A minimalistic example that used 
> to work up until 1.6 is:
> {noformat}
> #macro(myMacro $result)
>   #set($result = 'some value')
> #end
> #myMacro($x)
> $x
> {/noformat}
> which prints $x (as an undefined variable).

-- 
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: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to