| <?xml version="1.0" encoding="UTF-8"?> |
| |
| <!-- |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| --> |
| |
| <document> |
| <properties> |
| <title>Changes</title> |
| <author email="dev@commons.apache.org">Commons Developers</author> |
| </properties> |
| <body> |
| <release version="3.0.1" date="unreleased"> |
| <action dev="henrib" type="fix" issue="JEXL-207" due-to="Dmitri Blinov"> |
| Inconsistent error handling |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-206" due-to="Dmitri Blinov"> |
| testCallableCancel() test hangs sporadically |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-205" due-to="Dmitri Blinov"> |
| testCancelForever() is not terminated properly as 'Fixed' |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-204" due-to="Dmitri Blinov"> |
| Script is not interrupted by a method call throwing Exception |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-202" due-to="Dmitri Blinov"> |
| Detect invalid assignment operator usage with non-assignable l-value during script parsing |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-198" due-to="Terefang Verigorn"> |
| JxltEngine Template does not expose pragmas |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-196" due-to="Dmitri Blinov"> |
| Script execution hangs while calling method with one argument without parameter |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-195" due-to="Dmitri Blinov"> |
| Support for AtomicBoolean in logical expressions |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-194" due-to="Dmitri Blinov"> |
| allow synchronization on iterableValue in foreach statement |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-193" due-to="Dmitri Blinov"> |
| InterruptedException is swallowed in function call in silent and non-strict mode |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-192" due-to="Constantin Mitocaru"> |
| Invalid return type when expected result is null |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-191" due-to="Constantin Mitocaru"> |
| Jexl3 unsolvable property exception when using enum |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-190" due-to="Dmitri Blinov"> |
| local function within context is not resolved if function resolver class without namespace is specified |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-189" due-to="Dmitri Blinov"> |
| Possible bug in Interpreter.isCancelled() |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-188" due-to="Dmitri Blinov"> |
| Possible bug in JexlArithmetic.isFloatingPointNumber() |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-187" due-to="Dmitri Blinov"> |
| Jexl Syntax doc does not mention 'continue' and 'break' operators |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-186" due-to="Philippe Mouawad"> |
| Performance regression in arithmetic operations compared to JEXL 2.1 |
| </action> |
| </release> |
| <release version="3.0" date="2015-12-27"> |
| <action dev="henrib" type="fix" issue="JEXL-184"> |
| dot-ed identifiers parsing failure |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-180" due-to="Kimball Robinson"> |
| Documentation - suggests using float for financials |
| </action> |
| <action dev="henrib" type="add"> |
| Added a 'curry' method to script returning script with bound arguments |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-178 " due-to="Dmitri Blinov"> |
| 'Unsolvable property' message to provide details about underlying exception |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-177" due-to="Dmitri Blinov"> |
| Unified expressions to be used in String literals in JEXL scripts |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-176" due-to="Dmitri Blinov"> |
| Synonym operator name 'in' for operator =~ // Remove 'foreach...in' syntax |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-174" due-to="Dmitri Blinov"> |
| Overloadable property access operators |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-173" due-to="Dmitri Blinov"> |
| Duck-typed java closures |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-171" due-to="Dmitri Blinov"> |
| Map access operator does not work if key name clashes with map property name |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-170"> |
| Implement assignment operators |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-169" due-to="Robert Neßelrath"> |
| A string is wrongly identified as FloatingPointNumber |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-168" due-to="Dmitri Blinov"> |
| Dedicated operator for String concatenation |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-79" due-to="sebb"> |
| Add support for growable arrays (ArrayLists) |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-167" due-to="Dmitri Blinov"> |
| Possible loss of value when converting BigDecimal to BigInteger |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-166" due-to="Dmitri Blinov"> |
| Incorrect operator symbol for bitwise complement in jexlArithmetic |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-164" due-to="Dmitri Blinov"> |
| public getters for high/low properties for IntegerRange and LongRange |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-163" due-to="Dmitri Blinov"> |
| empty(new ("java.lang.Long", 4294967296)) returns true |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-162" due-to="Dmitri Blinov"> |
| empty() function throws an exception : unsupported type |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-160" due-to="Dmitri Blinov"> |
| typo in package.html |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-158" due-to="Lars Cebulla"> |
| Handle locale decimal separators correctly |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-157" due-to="Lars Cebulla"> |
| Replace File.pathSeparator with File.separator |
| </action> |
| <action dev="henrib" type="add" > |
| Added a method to get parameters from a template |
| </action> |
| <action dev="henrib" type="fix" > |
| Identifiers beginning with 0s (like 00200) shoud not be considered integers |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-152" due-to="Dmitri Blinov"> |
| Extend Range literal to support Long values |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-149" due-to="Dmitri Blinov"> |
| Set Construction as per EL 3.0 spec |
| </action> |
| <action dev="henrib" type="add" > |
| Added #pragma instruction, allowing scripts to communicate information to the underlying execution |
| context. |
| </action> |
| <action dev="henrib" type="fix" > |
| Hoisted variables in a lambda are seen as local variables; should be seen as global |
| </action> |
| <action dev="henrib" type="fix" > |
| Local variables must preclude antish variables handling |
| </action> |
| <action dev="henrib" type="fix" > |
| Depending on unkown conditions, overriden varargs method may return false to isVarArgs; |
| fix by checking method in declaring class hierarchy. |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-146" due-to="David Maplesden"> |
| Performance problem in Interpreter.unknownVariable mechanism |
| </action> |
| <action dev="henrib" type="fix"> |
| Functions assigned to local variables can not perform recursive calls |
| </action> |
| <action dev="henrib" type="fix"> |
| Improved error reporting on undefined or null variables |
| </action> |
| <action dev="henrib" type="fix"> |
| Improved operator overloading logic in JexlArithmeric (caching) |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-145" due-to="Ian Connor"> |
| Sandbox calling wrong check (classname vs class) |
| </action> |
| <action dev="henrib" type="fix" > |
| JXLT fails to parse expressions that use map constants |
| </action> |
| <action dev="henrib" type="add" > |
| Added break/continue in JEXL syntax |
| </action> |
| <action dev="henrib" type="add" > |
| Added convenience methods to pass/use JexlInfo and arguments in templates |
| </action> |
| <action dev="henrib" type="add" > |
| Added ability to overload some operators in JexlArithmetic (through introspection, based on method names) |
| </action> |
| <action dev="henrib" type="fix" > |
| Fixed issue in edge case method resolution wrt overload and varargs |
| </action> |
| <action dev="henrib" type="add" > |
| Switch logging to log4j 1.2 |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-144" due-to="Woonsang Ko"> |
| Empty array property setting fails |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-142" due-to="Juozas Baliuks"> |
| Map expression issue with empty key |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-141" due-to="Harpreet Singh"> |
| Suffix for Big Decimal and Big Integer Literal is incorrectly mentioned in Java docs |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-137"> |
| Invalid script variable list for nested array/map access |
| </action> |
| <action dev="henrib" type="fix"> |
| Fixed Engine.getVariables that was erroneously considering method calls as variable usage |
| </action> |
| <action dev="henrib" type="fix"> |
| Fixed issue in ternary expression |
| (grammar was not precise enough to differentiate namespace:function calls vs ternary right hand side) |
| </action> |
| <action dev="henrib" type="add"> |
| NaN is now a keyword equivalent to #NaN (deprecated): POTENTIAL SCRIPT BREAK! |
| </action> |
| <action dev="henrib" type="add"> |
| 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) |
| </action> |
| <action dev="henrib" type="add"> |
| Added syntactic shortcut to create parametric scripts (script source creates an anonymous function) |
| </action> |
| <action dev="henrib" type="fix"> |
| 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 |
| </action> |
| <action dev="henrib" type="fix"> |
| 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) |
| </action> |
| <action dev="henrib" type="fix"> |
| 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) |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-133" due-to="Alfred Reibenschuh"> |
| String matching Operator short-hand inspired by CSS3 |
| </action> |
| <action dev="henrib" type="add" > |
| Added the range operator (x .. y) |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-128" due-to="Matteo Trotta"> |
| ObjectContext should implement NamespaceResolver |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-127"> |
| Allow the creation of functions |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-123"> |
| Redesign API for stability |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-122"> |
| Move JEXL from org.apache.comms.jexl2 to org.apache.commons.jexl3 |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-136"> |
| Script calls within scripts may fail with number arguments |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-135" due-to="Tomas Kukosa"> |
| using map as script parameter or local variable |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-134" due-to="Manoj Mokashi"> |
| Issue with evaluation of concat of variables : \r + \n gives 0 |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-131" due-to="Clay Bruce"> |
| UnifiedJexl (2.1.x) parsing may fail with NPE |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-130" due-to="William Bakker"> |
| Ternary Conditional fails for Object values |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-126" due-to="Grace"> |
| Decimal numbers literals fix be 'double' by default (instead of 'float') |
| </action> |
| </release> |
| <release version="2.1.1" date="2011-12-24"> |
| <action dev="henrib" type="fix" issue="JEXL-124"> |
| Array parameters to methods don't work anymore (regression) |
| </action> |
| </release> |
| <release version="2.1" date="2011-13-11"> |
| <action dev="henrib" type="add" issue="JEXL-121"> |
| Add simple template features |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-120" due-to="Lukas Krecan"> |
| Make ParseException work in sandboxed environment |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-119"> |
| Allow indexed properties container resolution in expressions |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-118" due-to="Max Tardiveau"> |
| Provide an IN operator: =~ / match operator extended to provide IN behavior (!~ as NOT IN) |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-116" due-to="Sarel Botha"> |
| Add control over classes, methods, constructors and properties allowed in scripts |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-115" due-to="Sarel Botha"> |
| Add support for asynchronous script execution and cancellation |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-114"> |
| Allow scripts to create local variables // Add return keyword |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-113" due-to="Max Tardiveau"> |
| Add functions to extract which variables, parameters and local variables are used to evaluate a script |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-112" due-to="sebb"> |
| Cannot parse Integer.MIN_VALUE. |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-24" due-to="freish"> |
| Support Long for integer literal instead of Integers. |
| </action> |
| <action dev="henrib" type="add"> |
| Added ObjectContext that wraps an object as JexlContext and added JexlContext as source to solve |
| top-level namespace functions. |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-111" due-to="freish"> |
| expression execute error depending on numeric type |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-83" due-to="sebb"> |
| Make JexlArithmetic immutable (and threadsafe); also added a mutable JexlThreadedArithmetic. |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-108" due-to="Cristian Lorenzetto"> |
| Parsing error if i define a empty literal array/map |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-107"> |
| Literals and parenthesized expressions can not be used as references |
| </action> |
| <action dev="henrib" type="fix" issue="JEXL-106" due-to="Michal Sabol"> |
| When divide two BigDecimal values in an expression it results in java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. |
| </action> |
| <action dev="henrib" type="add" issue="JEXL-105" due-to="Cary Thompson">Array literals are considered constant even when they are not.</action> |
| <action dev="henrib" type="fix" issue="JEXL-104" due-to="Andreas Haufler">NPE in JexlArithmetic when an Array-Expression containing a null is used.</action> |
| <action dev="henrib" type="add" issue="JEXL-102" due-to="sebb">Add "jexl2" as a supported name</action> |
| <action dev="henrib" type="add" issue="JEXL-101" due-to="Tobias Shulte"> |
| Vararg methods where the first argument is no vararg can not be called with only the fixed parameters given |
| </action> |
| </release> |
| <release version="2.0.1" date="2010-03-28"> |
| <action dev="henrib" type="add" issue="JEXL-100">Array access expressions fail when evaluated twice and cache is enabled</action> |
| <action dev="henrib" type="add" issue="JEXL-99" due-to="Marcel Schoen">Documentation of Thread Safety / Invalid code examples on homepage</action> |
| <action dev="henrib" type="add" issue="JEXL-98" due-to="Marcel Schoen">Quote escaping cannot be escaped</action> |
| </release> |
| <release version="2.0" date="2010-02-02"> |
| <action dev="henrib" type="add" issue="JEXL-27" due-to="Weikuo Liaw">Bean-ish & ant-ish like assignment</action> |
| <action dev="henrib" type="add" issue="JEXL-19" due-to="Jesse Glick">Ternary operator support</action> |
| <action dev="henrib" type="add" issue="JEXL-46" due-to="Alfred Reibenschuh">adding Perl-like regular-expression operators</action> |
| <action dev="henrib" type="add" issue="JEXL-41" due-to="Alejandro Torras">Support for ${...} and #{...} expressions</action> |
| <action dev="henrib" type="add" issue="JEXL-15" due-to="Paul Libbrecht">User definable functions</action> |
| <action dev="sebb" type="add" issue="JEXL-63">JSR-223 support</action> |
| <action dev="henrib" type="update" issue="JEXL-10" due-to="Paul Libbrecht">Make possible checking for unresolved variables</action> |
| <action dev="henrib" type="update" issue="JEXL-11" due-to="Paul Libbrecht">Don"t make null convertible into anything</action> |
| <action dev="henrib" type="fix" issue="JEXL-47" due-to="sebb">Allow single-line comments with //</action> |
| <action dev="henrib" type="fix" issue="JEXL-44" due-to="sebb">Comments don"t allow double-quotes</action> |
| <action dev="henrib" type="add" issue="JEXL-71" due-to="sebb">Array literal syntax is not supported</action> |
| <action dev="dion" type="fix" issue="JEXL-17" due-to="Nestor Urquiza">allowing quote escaping</action> |
| <action dev="dion" type="fix" issue="JEXL-25" due-to="Marek Lewczuk">Call method with varargs</action> |
| <action dev="dion" type="fix" issue="JEXL-32" due-to="Kedar Dave">BigDecimal values are treated as Long values which results in loss of precision</action> |
| <action dev="dion" type="fix" issue="JEXL-33">Remove unnecessary throws Exception from various classes</action> |
| <action dev="henrib" type="fix" issue="JEXL-50" due-to="sebb">Div operator does not do integer division</action> |
| <action dev="henrib" type="fix" issue="JEXL-87" due-to="sebb">Inconsistent behaviour of arithmetical operations</action> |
| <action dev="henrib" type="fix" issue="JEXL-21" due-to="AC">operator overloading / hooks on operator processing</action> |
| <action dev="henrib" type="add">"new" operator support</action> |
| <action dev="henrib" type="add">Support Unicode escapes in string literals</action> |
| <action dev="henrib" type="update">Various performance enhancements & caches</action> |
| </release> |
| <release version="1.1.1-SNAPSHOT" date="unreleased"> |
| <action dev="dion" type="update" issue="JEXL-23">Fix jdk1.3 only code that has crept into JEXL tests</action> |
| <action dev="dion" type="update" issue="JEXL-22" due-to="Randy H.">Allow unicode literals to be used</action> |
| </release> |
| <release version="1.1" date="2006-09-10"> |
| <action dev="rahul" type="fix" issue="JEXL-17" due-to="Kohsuke Kawaguchi">Consistently throw ParseException in case of a parsing failure, not an Error.</action> |
| <action dev="dion" type="fix" issue="JEXL-3" due-to="Guido Anzuoni">Allow for static methods to be called on classes and not just objects.</action> |
| <action dev="dion" type="add">Added Script and ScriptFactory to allow scripts to be executed from text, files or a URL.</action> |
| <action dev="dion" type="add">Added implementation for bitwise operators: and, complement, or, xor.</action> |
| <action dev="dion" type="add">Added implementation for the foreach statement.</action> |
| <action dev="dion" type="add">Added implementation for the while statement.</action> |
| <action dev="dion" type="add">Added implementation for block statements, e.g. curly braces containing multiple statements.</action> |
| <action dev="dion" type="add">Added implementation for the if statement.</action> |
| <action dev="dion" type="fix" issue="JEXL-6">Unary minus was only working for integer values.</action> |
| <action dev="dion" type="update">Add @since tags to code so we can track API additions via javadoc</action> |
| <action dev="dion" type="add" issue="JEXL-4" due-to="Barry Lagerweij">Support assignment to variables</action> |
| <action dev="dion" type="fix" issue="JEXL-5">'abc'.substring(0,1+1) is empty (method matching problem)</action> |
| </release> |
| <release version="1.0" date="2004-09-07"> |
| <action dev="dion" type="fix">Support ant-style properties</action> |
| </release> |
| <release version="1.0-RC1" date="2004-08-26"> |
| <action dev="dion" type="fix" due-to="Geoff Waggott">Fix string concatenation broken for variables</action> |
| <action dev="dion" type="fix" issue="JEXL-12">Implement short circuit logic for boolean and/or</action> |
| <action dev="dion" type="add">Handle any size() method that returns an int</action> |
| <action dev="dion" type="fix" issue="JEXL-9">Can't issue .size() on java.util.Set</action> |
| </release> |
| </body> |
| </document> |