Your assessment appears correct.
PropertyExpression works like this:
public Expression transformExpression(ExpressionTransformer transformer) {
PropertyExpression ret = new
PropertyExpression(transformer.transform(objectExpression),
transformer.transform(property), safe);
PoppingMethodCallExpression works like this:
public Expression transformExpression(final ExpressionTransformer
transformer) {
PoppingMethodCallExpression call = new
PoppingMethodCallExpression(getObjectExpression().transformExpression(transformer),
getMethodTarget(), (TemporaryVariableExpression)
tmp.transformExpression(transformer));
There may be several instances of this to correct and test if all of the
Expression sub-types are looked at. I'd start by filing a new Jira ticket.
-----Original Message-----
From: Saravanan Palanichamy <[email protected]>
Sent: Thursday, August 6, 2020 8:43 AM
To: [email protected]
Subject: StaticPropertyAccessHelper transforms are not routed through my
expression transformer
Hello
My class derives from ClassCodeExpressionTransformer and I use it to transform
my method call expression. Lets say I add an extra parameter to these methods.
This works for normal expression, however for property setter expressions, this
does not work because it does not route through my class
I root caused this to the StaticPropertyAccessHelper class which uses a
PoppingMethodCallExpression. In this class, it does not call
transformer.transform(receiver), instead it invokes
receiver.transformExpression(transformer). This means code like this
myObj.property = myFunction()
Where property is a setProperty() function will result in not routing through
my transformer. Am I root causing this correctly or is my understanding wrong?
What is the fix for this? I am using Groovy 2.5.x. Is this fixed in newer
versions?
regards
Saravanan