diff --git a/pom.xml b/pom.xml index 0ab5bf917..95e6a62e3 100644 --- a/pom.xml +++ b/pom.xml @@ -295,7 +295,6 @@ maven-changes-plugin 2.12.1 - ${basedir}/src/site/xdoc/changes.xml %URL%/%ISSUE% diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 702e6a1c0..46b7a99a1 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -1,58 +1,692 @@ - - + - - Apache Commons JEXL Release Notes - - - - - - - - - - Bump actions/setup-java from v1.4.3 to v2 #160. - - - + + Apache Commons JEXL Release Notes + Commons Developers + + + + + Bump actions/setup-java from v1.4.3 to v2 #160. + + + Don't fill stack trace for JexlExpression#Return (to improve performance) + + + Escape some control characters + + + Update JUnit to 4.13.1 + + + Remove offensive terminology from code and API + + + Allow declaration of namespace within script + + + Please document \uXXXX escape sequence + + + JexlException.Parsing.getMessage() throws exception when parse error is in long expression + + + JXLT template scripts evaluation do not process pragmas + + + map[null] does not work in assignment context + + + Link to "JavaCC" on syntax reference page is broken + + + Potential race-condition in NumberParser.toString() + + + JexlEngine.createExpression("new()").getParsedText() throws NPE + + + Ant-style variables can throw exception when evaluated for their value + + + JXLT String literals cannot contain curly braces + + + Empty do-while loop is broken + + + "mvn test" fails with COMPILATION ERROR in SynchronizedArithmetic.java on Java 11 + + + Apache project documentation gives instructions in subversion + + + Annotation processing may fail in lexical mode + + + Support script cancellation through less invasive API + + + JxltEngine literal string strings ending in \ $ or # throw JxltEngine$Exception + + + Comparison NULL values of variables NAME1.NAME2 + + + @NoJexl fails to disallow method call + + + Jxlt template scripts fail using verbatim expressions embedded in lambdas + + + Line numbers are not correct when template report errors + + + Variable redeclaration option + + + Ternary operator ? protects also its branches from resolution errors + + + Script debugger produces incorrect syntax + + + Error parsing overview.limit.var + + + Block syntax is broken + + + JexlScript.getVariables returns strange values for array access + + + Array access operator does not fail on null object in non-strict arithmetic mode + + + Improve message error when method could not be found + + + Unable to call 'empty' and 'size' member methods with parameters + + + Real literal in scientific format is not parsed without suffix + + + Add unary plus operator + + + Allow specifying custom Permissions class for Uberspect to be used later by Introspector + + + Using sandbox prevents array-syntax lookup by number in Map + + + Safe navigation fails on chained method calls + + + Passing undeclared function parameter can overwrite a local function variable + + + Annotation can not be specified for a standalone statement + + + Wrong resolution of local variables + + + For statement without a body should update its variable + + + For statement variable may seem unaffected by iteration + + + Pragmas with antish names are broken + + + MethodExecutor incorrectly tests for empty parameters list + + + break/continue statements outside of the loop + + + Null variables property access do not throw exceptions + + + Ambiguous exceptions should point to actual statement ambiguity + + + Allow safe navigation as option + + + Handle soft and hard stack overflow + + + Add do...while(...) loops + + + Dereferencing null property not reported on method call + + + Hoisted variable is lost when currying lambda + + + Wrong Script$Curried creation when script.curry() method is called inside script + + + Allow space, quote and double-quote in identifiers + + + JexlEngine.setClassLoader(...) should reload namespaces that are classes + + + Automatically inject JexlContext in constructor call when possible + + + Function throwing IllegalArgumentException may be called twice + + + Permissions by super type in JexlSandbox + + + Allow for interpolated strings to be used in property access operators + + + Safe navigation operator + + + Java 1.8 as minimum supported version + + + Allow range subexpression as an array property assignment identifier + + + Intermittent ambiguous method invocation when processing assignOverload + + + Engine in strict mode fails to fail on unsolvable variables or properties + + + Webapp classloader memory leaks + + + Allow restricting available features in Script/Expressions + + + NPE when script containing string interpolation executed in multiple threads + + + Unable to invoke a call operator using antish style variable resoltion + + + Restrict getLiteralClass to a Number for NumberLiterals + + + Ability to restrict usage of certain names when declaring local variables + + + Support CharSequence in size(), empty() and contains() operators + + + Extend application of operators startsWith and endsWith from String to CharSequence types + + + Syntax for accessing List elements is not mentioned in docs + + + List literal is not mentioned in docs + + + JexlScriptEngineFactory.getEngineVersion() should return actual version + + + add ?? operator support + + + Incorrect invoking methods with ObjectContext + + + The ability to overload call() operator in customized JexlArithmetic implementation + + + Restrict usage of assignment statements in JexlExpression + + + java.util.regex.Pattern creation operator (regex literals) + + + + + The ability to declare indexed property getter/setter in customised JexlArithmetic implementation + + + Sporadic undefined property error caused by NPE at MapGetExecutor.tryInvoke() + + + Blacklist by default in sandbox + + + Interpreter.getAttribute() raises exception in non-strict mode when cached property resolver is used + + + Improve parsing concurrency in multithreaded environment + + + JexlEngine.createInfo() is redundantly called when debug and caching is enabled leading to sub-optimal performance + + + Redundant call of fillInStackTrace() in JexlEngine.createInfo() ? + + + rename JexlBuilder.loader(Charset arg) to JexlBuilder.charset(Charset arg) + + + Add callable method to JexlExpression interface + + + The way to cancel script execution with an error + + + Unsolvable function/method '<?>.<null>(...)' + + + Documentation typos/inconsistencies + + + Inconsistent error handling + + + testCallableCancel() test hangs sporadically + + + testCancelForever() is not terminated properly + + + Script is not interrupted by a method call throwing Exception + + + JexlArithmetic.options() diverts Interpreter to use default implementation of JexlArithmetic instead of custom one + + + Detect invalid assignment operator usage with non-assignable l-value during script parsing + + + Allow Interpreter to use live values from JexlEngine.Option interface implemented by JexlContext + + + JxltEngine Template does not expose pragmas + + + Add annotations + + + Script execution hangs while calling method with one argument without parameter + + + Support for AtomicBoolean in logical expressions + + + allow synchronization on iterableValue in foreach statement + + + InterruptedException is swallowed in function call in silent and non-strict mode + + + Invalid return type when expected result is null + + + Jexl3 unsolvable property exception when using enum + + + local function within context is not resolved if function resolver class without namespace is specified + + + Possible bug in Interpreter.isCancelled() + + + Possible bug in JexlArithmetic.isFloatingPointNumber() + + + Jexl Syntax doc does not mention 'continue' and 'break' operators + + + Performance regression in arithmetic operations compared to JEXL 2.1 + + + + + dot-ed identifiers parsing failure + + + Documentation - suggests using float for financials + + + Added a 'curry' method to script returning script with bound arguments + + + 'Unsolvable property' message to provide details about underlying exception + + + Unified expressions to be used in String literals in JEXL scripts + + + Synonym operator name 'in' for operator =~ // Remove 'foreach...in' syntax + + + Overloadable property access operators + + + Duck-typed java closures + + + Map access operator does not work if key name clashes with map property name + + + Implement assignment operators + + + A string is wrongly identified as FloatingPointNumber + + + Dedicated operator for String concatenation + + + Add support for growable arrays (ArrayLists) + + + Possible loss of value when converting BigDecimal to BigInteger + + + Incorrect operator symbol for bitwise complement in jexlArithmetic + + + public getters for high/low properties for IntegerRange and LongRange + + + empty(new ("java.lang.Long", 4294967296)) returns true + + + empty() function throws an exception : unsupported type + + + typo in package.html + + + Handle locale decimal separators correctly + + + Replace File.pathSeparator with File.separator + + + Added a method to get parameters from a template + + + Identifiers beginning with 0s (like 00200) shoud not be considered integers + + + Extend Range literal to support Long values + + + Set Construction as per EL 3.0 spec + + + Added #pragma instruction, allowing scripts to communicate information to the underlying execution + context. + + + Hoisted variables in a lambda are seen as local variables; should be seen as global + + + Local variables must preclude antish variables handling + + + Depending on unkown conditions, overriden varargs method may return false to isVarArgs; + fix by checking method in declaring class hierarchy. + + + Performance problem in Interpreter.unknownVariable mechanism + + + Functions assigned to local variables can not perform recursive calls + + + Improved error reporting on undefined or null variables + + + Improved operator overloading logic in JexlArithmeric (caching) + + + Sandbox calling wrong check (classname vs class) + + + JXLT fails to parse expressions that use map constants + + + Added break/continue in JEXL syntax + + + Added convenience methods to pass/use JexlInfo and arguments in templates + + + Added ability to overload some operators in JexlArithmetic (through introspection, based on method names) + + + Fixed issue in edge case method resolution wrt overload and varargs + + + Switch logging to log4j 1.2 + + + Empty array property setting fails + + + Map expression issue with empty key + + + Suffix for Big Decimal and Big Integer Literal is incorrectly mentioned in Java docs + + + Invalid script variable list for nested array/map access + + + Fixed Engine.getVariables that was erroneously considering method calls as variable usage + + + Fixed issue in ternary expression + (grammar was not precise enough to differentiate namespace:function calls vs ternary right hand side) + + + NaN is now a keyword equivalent to #NaN (deprecated): POTENTIAL SCRIPT BREAK! + + + Syntactically enforce that expressions do not contain statements: POTENTIAL EXPRESSION BREAK! + (ie an expression is not a script and can NOT use 'if','for'... and blocks) + + + Added syntactic shortcut to create parametric scripts (script source creates an anonymous function) + + + Segregated JexlScript and JexlExpression further to avoid calling JexlExpression.evaluate on JexlScript + (instead of JexlScript.execute) which had the unexpected property of only evaluating the first statement + + + Fix an edge case of ambiguous method matching (see http://apache-commons.680414.n4.nabble.com/jexl-mathod-within-namespace-not-found-if-parameter-is-int-tt4637888.html) + + + Fix issue wrt isEmpty and method varargs (assignable types vs equal types) + (see http://apache-commons.680414.n4.nabble.com/jexl-empty-function-crashes-if-called-with-int-tt4637895.html) + + + String matching Operator short-hand inspired by CSS3 + + + Added the range operator (x .. y) + + + ObjectContext should implement NamespaceResolver + + + Allow the creation of functions + + + Redesign API for stability + + + Move JEXL from org.apache.comms.jexl2 to org.apache.commons.jexl3 + + + Script calls within scripts may fail with number arguments + + + using map as script parameter or local variable + + + Issue with evaluation of concat of variables : \r + \n gives 0 + + + UnifiedJexl (2.1.x) parsing may fail with NPE + + + Ternary Conditional fails for Object values + + + Decimal numbers literals fix be 'double' by default (instead of 'float') + + + + + Array parameters to methods don't work anymore (regression) + + + + + Add simple template features + + + Make ParseException work in sandboxed environment + + + Allow indexed properties container resolution in expressions + + + Provide an IN operator: =~ / match operator extended to provide IN behavior (!~ as NOT IN) + + + Add control over classes, methods, constructors and properties allowed in scripts + + + Add support for asynchronous script execution and cancellation + + + Allow scripts to create local variables // Add return keyword + + + Add functions to extract which variables, parameters and local variables are used to evaluate a script + + + Cannot parse Integer.MIN_VALUE. + + + Support Long for integer literal instead of Integers. + + + Added ObjectContext that wraps an object as JexlContext and added JexlContext as source to solve + top-level namespace functions. + + + expression execute error depending on numeric type + + + Make JexlArithmetic immutable (and threadsafe); also added a mutable JexlThreadedArithmetic. + + + Parsing error if i define a empty literal array/map + + + Literals and parenthesized expressions can not be used as references + + + When divide two BigDecimal values in an expression it results in java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. + + Array literals are considered constant even when they are not. + NPE in JexlArithmetic when an Array-Expression containing a null is used. + Add "jexl2" as a supported name + + Vararg methods where the first argument is no vararg can not be called with only the fixed parameters given + + + + Array access expressions fail when evaluated twice and cache is enabled + Documentation of Thread Safety / Invalid code examples on homepage + Quote escaping cannot be escaped + + + Bean-ish & ant-ish like assignment + Ternary operator support + adding Perl-like regular-expression operators + Support for ${...} and #{...} expressions + User definable functions + JSR-223 support + Make possible checking for unresolved variables + Don"t make null convertible into anything + Allow single-line comments with // + Comments don"t allow double-quotes + Array literal syntax is not supported + allowing quote escaping + Call method with varargs + BigDecimal values are treated as Long values which results in loss of precision + Remove unnecessary throws Exception from various classes + Div operator does not do integer division + Inconsistent behavior of arithmetical operations + operator overloading / hooks on operator processing + "new" operator support + Support Unicode escapes in string literals + Various performance enhancements & caches + + + Fix jdk1.3 only code that has crept into JEXL tests + Allow unicode literals to be used + + + Consistently throw ParseException in case of a parsing failure, not an Error. + Allow for static methods to be called on classes and not just objects. + Added Script and ScriptFactory to allow scripts to be executed from text, files or a URL. + Added implementation for bitwise operators: and, complement, or, xor. + Added implementation for the foreach statement. + Added implementation for the while statement. + Added implementation for block statements, e.g. curly braces containing multiple statements. + Added implementation for the if statement. + Unary minus was only working for integer values. + Add @since tags to code so we can track API additions via javadoc + Support assignment to variables + 'abc'.substring(0,1+1) is empty (method matching problem) + + + Support ant-style properties + + + Fix string concatenation broken for variables + Implement short circuit logic for boolean and/or + Handle any size() method that returns an int + Can't issue .size() on java.util.Set + + diff --git a/src/site/xdoc/changes.xml b/src/site/xdoc/changes.xml deleted file mode 100644 index ce6e90af9..000000000 --- a/src/site/xdoc/changes.xml +++ /dev/null @@ -1,689 +0,0 @@ - - - - - - - Apache Commons JEXL Release Notes - Commons Developers - - - - - Don't fill stack trace for JexlExpression#Return (to improve performance) - - - Escape some control characters - - - Update JUnit to 4.13.1 - - - Remove offensive terminology from code and API - - - Allow declaration of namespace within script - - - Please document \uXXXX escape sequence - - - JexlException.Parsing.getMessage() throws exception when parse error is in long expression - - - JXLT template scripts evaluation do not process pragmas - - - map[null] does not work in assignment context - - - Link to "JavaCC" on syntax reference page is broken - - - Potential race-condition in NumberParser.toString() - - - JexlEngine.createExpression("new()").getParsedText() throws NPE - - - Ant-style variables can throw exception when evaluated for their value - - - JXLT String literals cannot contain curly braces - - - Empty do-while loop is broken - - - "mvn test" fails with COMPILATION ERROR in SynchronizedArithmetic.java on Java 11 - - - Apache project documentation gives instructions in subversion - - - Annotation processing may fail in lexical mode - - - Support script cancellation through less invasive API - - - JxltEngine literal string strings ending in \ $ or # throw JxltEngine$Exception - - - Comparison NULL values of variables NAME1.NAME2 - - - @NoJexl fails to disallow method call - - - Jxlt template scripts fail using verbatim expressions embedded in lambdas - - - Line numbers are not correct when template report errors - - - Variable redeclaration option - - - Ternary operator ? protects also its branches from resolution errors - - - Script debugger produces incorrect syntax - - - Error parsing overview.limit.var - - - Block syntax is broken - - - JexlScript.getVariables returns strange values for array access - - - Array access operator does not fail on null object in non-strict arithmetic mode - - - Improve message error when method could not be found - - - Unable to call 'empty' and 'size' member methods with parameters - - - Real literal in scientific format is not parsed without suffix - - - Add unary plus operator - - - Allow specifying custom Permissions class for Uberspect to be used later by Introspector - - - Using sandbox prevents array-syntax lookup by number in Map - - - Safe navigation fails on chained method calls - - - Passing undeclared function parameter can overwrite a local function variable - - - Annotation can not be specified for a standalone statement - - - Wrong resolution of local variables - - - For statement without a body should update its variable - - - For statement variable may seem unaffected by iteration - - - Pragmas with antish names are broken - - - MethodExecutor incorrectly tests for empty parameters list - - - break/continue statements outside of the loop - - - Null variables property access do not throw exceptions - - - Ambiguous exceptions should point to actual statement ambiguity - - - Allow safe navigation as option - - - Handle soft and hard stack overflow - - - Add do...while(...) loops - - - Dereferencing null property not reported on method call - - - Hoisted variable is lost when currying lambda - - - Wrong Script$Curried creation when script.curry() method is called inside script - - - Allow space, quote and double-quote in identifiers - - - JexlEngine.setClassLoader(...) should reload namespaces that are classes - - - Automatically inject JexlContext in constructor call when possible - - - Function throwing IllegalArgumentException may be called twice - - - Permissions by super type in JexlSandbox - - - Allow for interpolated strings to be used in property access operators - - - Safe navigation operator - - - Java 1.8 as minimum supported version - - - Allow range subexpression as an array property assignment identifier - - - Intermittent ambiguous method invocation when processing assignOverload - - - Engine in strict mode fails to fail on unsolvable variables or properties - - - Webapp classloader memory leaks - - - Allow restricting available features in Script/Expressions - - - NPE when script containing string interpolation executed in multiple threads - - - Unable to invoke a call operator using antish style variable resoltion - - - Restrict getLiteralClass to a Number for NumberLiterals - - - Ability to restrict usage of certain names when declaring local variables - - - Support CharSequence in size(), empty() and contains() operators - - - Extend application of operators startsWith and endsWith from String to CharSequence types - - - Syntax for accessing List elements is not mentioned in docs - - - List literal is not mentioned in docs - - - JexlScriptEngineFactory.getEngineVersion() should return actual version - - - add ?? operator support - - - Incorrect invoking methods with ObjectContext - - - The ability to overload call() operator in customized JexlArithmetic implementation - - - Restrict usage of assignment statements in JexlExpression - - - java.util.regex.Pattern creation operator (regex literals) - - - - - The ability to declare indexed property getter/setter in customised JexlArithmetic implementation - - - Sporadic undefined property error caused by NPE at MapGetExecutor.tryInvoke() - - - Blacklist by default in sandbox - - - Interpreter.getAttribute() raises exception in non-strict mode when cached property resolver is used - - - Improve parsing concurrency in multithreaded environment - - - JexlEngine.createInfo() is redundantly called when debug and caching is enabled leading to sub-optimal performance - - - Redundant call of fillInStackTrace() in JexlEngine.createInfo() ? - - - rename JexlBuilder.loader(Charset arg) to JexlBuilder.charset(Charset arg) - - - Add callable method to JexlExpression interface - - - The way to cancel script execution with an error - - - Unsolvable function/method '<?>.<null>(...)' - - - Documentation typos/inconsistencies - - - Inconsistent error handling - - - testCallableCancel() test hangs sporadically - - - testCancelForever() is not terminated properly - - - Script is not interrupted by a method call throwing Exception - - - JexlArithmetic.options() diverts Interpreter to use default implementation of JexlArithmetic instead of custom one - - - Detect invalid assignment operator usage with non-assignable l-value during script parsing - - - Allow Interpreter to use live values from JexlEngine.Option interface implemented by JexlContext - - - JxltEngine Template does not expose pragmas - - - Add annotations - - - Script execution hangs while calling method with one argument without parameter - - - Support for AtomicBoolean in logical expressions - - - allow synchronization on iterableValue in foreach statement - - - InterruptedException is swallowed in function call in silent and non-strict mode - - - Invalid return type when expected result is null - - - Jexl3 unsolvable property exception when using enum - - - local function within context is not resolved if function resolver class without namespace is specified - - - Possible bug in Interpreter.isCancelled() - - - Possible bug in JexlArithmetic.isFloatingPointNumber() - - - Jexl Syntax doc does not mention 'continue' and 'break' operators - - - Performance regression in arithmetic operations compared to JEXL 2.1 - - - - - dot-ed identifiers parsing failure - - - Documentation - suggests using float for financials - - - Added a 'curry' method to script returning script with bound arguments - - - 'Unsolvable property' message to provide details about underlying exception - - - Unified expressions to be used in String literals in JEXL scripts - - - Synonym operator name 'in' for operator =~ // Remove 'foreach...in' syntax - - - Overloadable property access operators - - - Duck-typed java closures - - - Map access operator does not work if key name clashes with map property name - - - Implement assignment operators - - - A string is wrongly identified as FloatingPointNumber - - - Dedicated operator for String concatenation - - - Add support for growable arrays (ArrayLists) - - - Possible loss of value when converting BigDecimal to BigInteger - - - Incorrect operator symbol for bitwise complement in jexlArithmetic - - - public getters for high/low properties for IntegerRange and LongRange - - - empty(new ("java.lang.Long", 4294967296)) returns true - - - empty() function throws an exception : unsupported type - - - typo in package.html - - - Handle locale decimal separators correctly - - - Replace File.pathSeparator with File.separator - - - Added a method to get parameters from a template - - - Identifiers beginning with 0s (like 00200) shoud not be considered integers - - - Extend Range literal to support Long values - - - Set Construction as per EL 3.0 spec - - - Added #pragma instruction, allowing scripts to communicate information to the underlying execution - context. - - - Hoisted variables in a lambda are seen as local variables; should be seen as global - - - Local variables must preclude antish variables handling - - - Depending on unkown conditions, overriden varargs method may return false to isVarArgs; - fix by checking method in declaring class hierarchy. - - - Performance problem in Interpreter.unknownVariable mechanism - - - Functions assigned to local variables can not perform recursive calls - - - Improved error reporting on undefined or null variables - - - Improved operator overloading logic in JexlArithmeric (caching) - - - Sandbox calling wrong check (classname vs class) - - - JXLT fails to parse expressions that use map constants - - - Added break/continue in JEXL syntax - - - Added convenience methods to pass/use JexlInfo and arguments in templates - - - Added ability to overload some operators in JexlArithmetic (through introspection, based on method names) - - - Fixed issue in edge case method resolution wrt overload and varargs - - - Switch logging to log4j 1.2 - - - Empty array property setting fails - - - Map expression issue with empty key - - - Suffix for Big Decimal and Big Integer Literal is incorrectly mentioned in Java docs - - - Invalid script variable list for nested array/map access - - - Fixed Engine.getVariables that was erroneously considering method calls as variable usage - - - Fixed issue in ternary expression - (grammar was not precise enough to differentiate namespace:function calls vs ternary right hand side) - - - NaN is now a keyword equivalent to #NaN (deprecated): POTENTIAL SCRIPT BREAK! - - - Syntactically enforce that expressions do not contain statements: POTENTIAL EXPRESSION BREAK! - (ie an expression is not a script and can NOT use 'if','for'... and blocks) - - - Added syntactic shortcut to create parametric scripts (script source creates an anonymous function) - - - Segregated JexlScript and JexlExpression further to avoid calling JexlExpression.evaluate on JexlScript - (instead of JexlScript.execute) which had the unexpected property of only evaluating the first statement - - - Fix an edge case of ambiguous method matching (see http://apache-commons.680414.n4.nabble.com/jexl-mathod-within-namespace-not-found-if-parameter-is-int-tt4637888.html) - - - Fix issue wrt isEmpty and method varargs (assignable types vs equal types) - (see http://apache-commons.680414.n4.nabble.com/jexl-empty-function-crashes-if-called-with-int-tt4637895.html) - - - String matching Operator short-hand inspired by CSS3 - - - Added the range operator (x .. y) - - - ObjectContext should implement NamespaceResolver - - - Allow the creation of functions - - - Redesign API for stability - - - Move JEXL from org.apache.comms.jexl2 to org.apache.commons.jexl3 - - - Script calls within scripts may fail with number arguments - - - using map as script parameter or local variable - - - Issue with evaluation of concat of variables : \r + \n gives 0 - - - UnifiedJexl (2.1.x) parsing may fail with NPE - - - Ternary Conditional fails for Object values - - - Decimal numbers literals fix be 'double' by default (instead of 'float') - - - - - Array parameters to methods don't work anymore (regression) - - - - - Add simple template features - - - Make ParseException work in sandboxed environment - - - Allow indexed properties container resolution in expressions - - - Provide an IN operator: =~ / match operator extended to provide IN behavior (!~ as NOT IN) - - - Add control over classes, methods, constructors and properties allowed in scripts - - - Add support for asynchronous script execution and cancellation - - - Allow scripts to create local variables // Add return keyword - - - Add functions to extract which variables, parameters and local variables are used to evaluate a script - - - Cannot parse Integer.MIN_VALUE. - - - Support Long for integer literal instead of Integers. - - - Added ObjectContext that wraps an object as JexlContext and added JexlContext as source to solve - top-level namespace functions. - - - expression execute error depending on numeric type - - - Make JexlArithmetic immutable (and threadsafe); also added a mutable JexlThreadedArithmetic. - - - Parsing error if i define a empty literal array/map - - - Literals and parenthesized expressions can not be used as references - - - When divide two BigDecimal values in an expression it results in java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. - - Array literals are considered constant even when they are not. - NPE in JexlArithmetic when an Array-Expression containing a null is used. - Add "jexl2" as a supported name - - Vararg methods where the first argument is no vararg can not be called with only the fixed parameters given - - - - Array access expressions fail when evaluated twice and cache is enabled - Documentation of Thread Safety / Invalid code examples on homepage - Quote escaping cannot be escaped - - - Bean-ish & ant-ish like assignment - Ternary operator support - adding Perl-like regular-expression operators - Support for ${...} and #{...} expressions - User definable functions - JSR-223 support - Make possible checking for unresolved variables - Don"t make null convertible into anything - Allow single-line comments with // - Comments don"t allow double-quotes - Array literal syntax is not supported - allowing quote escaping - Call method with varargs - BigDecimal values are treated as Long values which results in loss of precision - Remove unnecessary throws Exception from various classes - Div operator does not do integer division - Inconsistent behavior of arithmetical operations - operator overloading / hooks on operator processing - "new" operator support - Support Unicode escapes in string literals - Various performance enhancements & caches - - - Fix jdk1.3 only code that has crept into JEXL tests - Allow unicode literals to be used - - - Consistently throw ParseException in case of a parsing failure, not an Error. - Allow for static methods to be called on classes and not just objects. - Added Script and ScriptFactory to allow scripts to be executed from text, files or a URL. - Added implementation for bitwise operators: and, complement, or, xor. - Added implementation for the foreach statement. - Added implementation for the while statement. - Added implementation for block statements, e.g. curly braces containing multiple statements. - Added implementation for the if statement. - Unary minus was only working for integer values. - Add @since tags to code so we can track API additions via javadoc - Support assignment to variables - 'abc'.substring(0,1+1) is empty (method matching problem) - - - Support ant-style properties - - - Fix string concatenation broken for variables - Implement short circuit logic for boolean and/or - Handle any size() method that returns an int - Can't issue .size() on java.util.Set - - -