i love tests. but lately, attention is all i have time for. ;) On Tue, Jun 7, 2011 at 2:10 PM, Christopher Schultz <ch...@christopherschultz.net> wrote: > Nathan, > > On 6/2/2011 4:17 PM, Nathan Bubna wrote: >> 2011/6/2 Șergiu Dumitriu <ser...@xwiki.com>: >>> On 06/02/2011 05:55 PM, Nathan Bubna wrote: >>>> >>>> Hi Andreas, >>>> >>>> Sorry to have inconvenienced you with this change. The old behavior >>>> was causing problems and had some notable flaws (see my discussion of >>>> the quirks in https://issues.apache.org/jira/browse/VELOCITY-681). >>>> There are no clean workarounds to recover the proxying behavior. You >>>> can set the original reference directly if you know it, of course, but >>>> that could get messy if a variety of references are passed in. You >>>> might also restructure to pass in references to objects or maps so >>>> that changes to the referenced variable are seen in the original >>>> reference when #set on the macro argument reference to that variable. >>>> I know neither of these is ideal. >>> >>> There is a trick that can be used to achieve the old behavior. I've detailed >>> the problem here: >>> http://www.xwiki.org/xwiki/bin/ReleaseNotes/ReleaseNotesXWikiEnterprise30#HMacroevaluationstrategy >>> >>> The solution is to use #evaluate to set the new value to the original >>> reference. The loophole that allows this to work is that >>> "$formalParameterName" expands to "$actualParameterName" when >>> $formalParameter is undefined/null. >>> >>> I've written a macro that does this: >>> https://github.com/xwiki/xwiki-platform/blob/e9051c85ae78fb973f4edbaa968db6bf235eb582/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm#L1131 >>> You use it by first setting the formal parameter to null, then calling >>> #setVariable("$formalParameterName" $value). >>> >>> By the way, will the loophole be preserved in future versions as well, or is >>> it in danger of being "fixed" at some point? >> >> Oooh. That's a neat trick. I hadn't thought of that. As for the >> future, the loophole won't go anywhere in 1.x so long as i'm paying >> attention. > > Instead of relying on your (impeccable, I'm sure) attention, we could > create a unit test specifically for this behavior. > > -chris > >
--------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org For additional commands, e-mail: user-h...@velocity.apache.org