groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MG <>
Subject Re: How to find out the names of variables used in a groovy expression
Date Sun, 26 Nov 2017 20:32:41 GMT
After the clarification I would also recommend and approach along the 
line of waiting until the binding actually tries to access an unbound 
variable and evaluate its value then (since the name of the variables is 
not actually needed for anything else)...

On 26.11.2017 19:47, Marcin Erdmann wrote:
> Wouldn't it be easier for you then to implement a class which extends 
> groovy.lang.Binding which lazy evaluates your default variables and 
> use that as your script binding instead?
> On Sun, Nov 26, 2017 at 6:26 PM, bayareagreg < 
> <>> wrote:
>     All right, let me explain why I need this.
>     In my product, we let our users evaluate "custom" groovy
>     expressions they
>     construct. This is done in Java via groovy Script object. There
>     are half a
>     dozen "standard" product variables users can refer to in those
>     expressions.
>     The values of these variables are bound into Bindings object
>     before the
>     script is run. The values may be a String, a GPathResult, a
>     java.util.Map,
>     etc. The problem is that some of the variables are quite expensive to
>     compute and it is a waste of time to do so if the expression does not
>     reference these variables.
>     For example, if the expression happens to be "${x}", I would be
>     nice to only
>     compute the value of x and bind it before invoking the script, not
>     y, z, w,
>     etc.
>     That is why I was wondering if there was a simple way to get the
>     list of all
>     variables used in an expression. Another way to solve the problem
>     would be
>     some kind of "lazy evaluation" approach where we would bind all
>     variables to
>     some type of "proxy" object, such that the real values are only
>     computed on
>     "as needed" basis. I could not find an easy way to do that either.
>     Some
>     pointers would be very much appreciated
>     Thanks in advance
>     Greg
>     --
>     Sent from:
>     <>

View raw message