Fabio Nascimento Brandão created VELOCITY-947: -------------------------------------------------
Summary: Input macro variable not changed outside scope Key: VELOCITY-947 URL: https://issues.apache.org/jira/browse/VELOCITY-947 Project: Velocity Issue Type: Bug Components: Engine Affects Versions: 1.7.x Reporter: Fabio Nascimento Brandão Attachments: variable_velocity.tar.gz I am migrating an application from Velocity Engine 1.5 to 1.7 (I am planning to migrate to 2.x later) and I found a different behavior between 1.5, 1.6.x and 1.7 versions. If you have this template: {code:java} #macro(testMacro $variable $newValue) #set($variable = $newValue) #end #set($testevar = 'INCORRECT') Var before: $testevar #testMacro($testevar 'TEST OK') Var after: $testevar {code} The output for the versions 1.5, 1.6, 1.6.2, 1.6.3 and 1.6.4 are: {code:java} Var before: INCORRECT Var after: TEST OK {code} And for versions 1.6.1 and 1.7 are: {code:java} Var before: INCORRECT Var after: INCORRECT {code} In 1.5, the set inside macro was changing the referenced variable outside macro's scope. In 1.6.1 and 1.7 the variable is not changed. I think this change was introduced by this issue: https://issues.apache.org/jira/browse/VELOCITY-615 In this method: [https://github.com/apache/velocity-engine/commit/e0dec30ef0107ba0066fa18facdc1f7f2677087c#diff-79959d90eea878dd1d2550fa30aff8653a583339fe8125133b6a23573f2a0848L169-R173] Before the change, the context was updated with the key from getRootString() method. I am attaching a project with the tests. You can change the velocity version in _build.gradle_ and run with _./gradlew run_ -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org For additional commands, e-mail: dev-h...@velocity.apache.org