[
https://issues.apache.org/jira/browse/JEXL-207?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Henri Biestro resolved JEXL-207.
--------------------------------
Resolution: Fixed
src/main/java/org/apache/commons/jexl3/JexlException.java
src/main/java/org/apache/commons/jexl3/internal/Interpreter.java
src/main/java/org/apache/commons/jexl3/internal/InterpreterBase.java
src/main/java/org/apache/commons/jexl3/internal/Operators.java
src/test/java/org/apache/commons/jexl3/AnnotationTest.java
src/test/java/org/apache/commons/jexl3/ArithmeticOperatorTest.java
src/test/java/org/apache/commons/jexl3/CaptureLog.java
src/test/java/org/apache/commons/jexl3/ExceptionTest.java
src/test/java/org/apache/commons/jexl3/IssuesTest.java
src/test/java/org/apache/commons/jexl3/ScriptCallableTest.java
src/test/java/org/apache/commons/jexl3/ScriptTest.java
src/test/resources/log4j.xml // !!!!
src/test/scripts/testAdd.jexl
Committed revision 1754746.
> Inconsistent error handling
> ---------------------------
>
> Key: JEXL-207
> URL: https://issues.apache.org/jira/browse/JEXL-207
> Project: Commons JEXL
> Issue Type: Bug
> Affects Versions: 3.0
> Reporter: Dmitri Blinov
> Assignee: Henri Biestro
> Fix For: 3.0.1
>
>
> I can't figure out what is the logic behind current implementation of script
> interruptablity/error handling.
> For example the following script will execute up to the end and return 42 in
> any mode (strict/silent)
> {code}
> x = null.1; return 42
> {code}
> whereas the following script will break with exception "bean is null" also in
> any mode (strict/silent)
> {code}
> null.1 = 2; return 42
> {code}
> and the following script will throw an exception in strict mode regardless of
> being silent/non-silent
> {code}
> z = [1,2]; x = z[3]; return 42
> {code}
> The documentation states that
> {quote}
> The strict flag tells the engine when and if null as operand is considered an
> error, the silent flag tells the engine what to do with the error (log as
> warning or throw exception)
> {quote}
> From the first example we see that null is not considered as error when we
> resolve bean property value, even does not log a message, while it might be
> expected in strict mode. From the second example we see that null is always
> considered as an error when we set bean property value, but is never ignored
> (always breaks script execution), even in silent mode. From the third example
> we see that AIOOBE is also considered as an error that breaks script
> execution in strict mode, regardless of silent/non-silent mode.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)