[
https://issues.apache.org/jira/browse/JEXL-99?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12849191#action_12849191
]
Henri Biestro commented on JEXL-99:
-----------------------------------
Thank you for pointing out the obsolete example; I'll update those momentarily.
Till then, the test sources might be better examples.
Regarding thread-safety; a JEXL instance can be used as a singleton - they way
it used to be in JEXL 1.x -, its exposed methods are thread-safe (besides when
stating they are not) and common usage is to use one shared JexlEngine instance.
Btw, setting a cache - JexlEngine.setCache(...) - during the engine
initialization is also usually a good practice.
A typical initialization example for your case should likely be:
{code}
private static final JexlEngine jexl = new JexlEngine();
static {
jexl.setCache(512);
jexl.setLenient(false);
jexl.setSilent(false);
}
{code}
About setLenient / setSilent;
- lenient/strict tells whether 'null' is a valid operand or not, ie what is
considered an error
- silent/verbose drives whether errors are logged (as warnings) or reported as
JexlExcepttion (runtime exceptions), ie what should be done with errors
I gather that
http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl2/JexlEngine.html
javadoc is not clear enough on the topic.
> Documentation of Thread Safety / Invalid code examples on homepage
> ------------------------------------------------------------------
>
> Key: JEXL-99
> URL: https://issues.apache.org/jira/browse/JEXL-99
> Project: Commons JEXL
> Issue Type: Task
> Affects Versions: 2.0
> Reporter: Marcel Schoen
> Priority: Minor
>
> I had trouble with a custom method invoked in a JEXL script. This method
> throws a RuntimeException, which got swallowed with JEXL 2. Using the
> debugger, I found the "strict" flag of the Interpreter to be false, even
> though I had invoked "JexlEngine.setLenient(false)" in my initialization code.
> Now I suspect my initialization logic to be faulty, but while I looked into
> this, I realized that the javadoc of JexlEngine doesn't really tell me if I
> can use it as a singleton or not (or if I should, for that matter). If so,
> are its various methods thread-safe or not? It only says so for a few methods
> like "setDebug()".
> In addition, some code examples on the homepage are heavily outdated. For
> example, the first code fragment on this page
> http://commons.apache.org/jexl/reference/examples.html
> shows the usage of a class "ExpressionFactory" which doesn't even exist in
> the JEXL 2 source tree. Of course it would be nice if these examples would
> show how to correctly use "JexlEngine", for instance.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.