Pull request now submitted, sorry for all the emails. My implementation now requires the implementor to return a value which is to be used as the replacement. It can be any value or as I've done in the SimpleMenuItem implementation return a copy of itself with the expressions resolved.
It would be beneficial for the attribute classes to be immutable as they would not be thread safe. I have one question, because I could not figure it out. How do attributes added to a list attribute get evaluated? I could not find anything that processes the contents of list attributes themselves. Interestingly it does work however. There's probably some extra tests that could be added, namely what happens when the model changes, the tests do show that indeed attribute expansion works, but do not show what happens when the variable values themselves change on subsequent requests. This could be something to look at when we reevaluate the tests. I'm happy to work on the tests if you like and might start work on first merging them to their higher occurrences. Note, I've only updated TILES_3_0_X, if you're happy I'll merge this back to trunk. > On 15 Jun 2015, at 12:44, Brett Ryan <brett.r...@johnsands.com.au> wrote: > > I've just been doing further testing and only just realised that the > instances created are actually singletons, I thought they were created per > request. So once the values are updated they won't change again. > > I need to rethink what I've done and get back to you. > > >> On 12 Jun 2015, at 18:47, mck <m...@apache.org> wrote: >> >> >> >>> Alrighty, I've implemented the support just the way I want it, and >>> wondered if I could contribute it back. >>> >>> What I've done is created a new interface (ExpressionAware) which >>> provides the following method: >>> >>> void evaluateExpressions(AttributeEvaluator, Request) >>> >>> This is then called from AbstractAttributeEvaluator.evaluate(Attribute, >>> Request) which then allows the implementor to update expression values or >>> do set new properties etc. I've implemented this in the MenuItem class to >>> replace its values when called. >>> >> >> >> Fantastic! >> I'm not seeing the patch. But could you anyhow create a jira ticket and >> upload the patch to it. >> I can review it there and we can continue the ongoing development >> discussion on the ticket. >> >> Feel free to create a separate ticket to for optimising the evaluation >> tests back to tiles-core, sounds like a good idea. >> >> ~mck >> >