[ 
https://issues.apache.org/jira/browse/JEXL-83?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12743322#action_12743322
 ] 

Henri Biestro commented on JEXL-83:
-----------------------------------


I guess the real question is whether there is any functional need to make this 
property mutable in the first place - besides convenience & testing purpose. 
The same could be said for "silent" & "debug" mode in the JexlEngine btw.

The other options are:
1/ document these methods as non-thread safe; ie, use these at initialization 
time or in a single threaded environment.
2/ make these field volatile or synchronize their get/set, document their 
effects more & tag them as convenience methods; we'd only gain thread safety 
but would avoid added code complexity.
3/ make these properties immutabe, get rid of the setters & modify the 
JexlEngine ctor; since there are already 4 params in the ctor, a "builder" 
would seem in order.

My personal vote goes for option 1/.


> Make JexlArithmetic immutable (and threadsafe)
> ----------------------------------------------
>
>                 Key: JEXL-83
>                 URL: https://issues.apache.org/jira/browse/JEXL-83
>             Project: Commons JEXL
>          Issue Type: Improvement
>            Reporter: Sebb
>             Fix For: Later
>
>
> The JexlArithmetic class is currently not thread-safe because of the single 
> field:
>     /** Whether this JexlArithmetic instance behaves in strict or lenient 
> mode. */
>     protected boolean strict;
> If this field were made final, and the setLenient() method removed, then the 
> class would be immutable and therefore thread-safe.
> This would mean that JexlEngine would also have to change.
> The class is new to 2.0, so this is the best time to fix this.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to