<?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 xmlns="http://maven.apache.org/changes/1.0.0" | |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd"> | |
<properties> | |
<title>Apache Commons JEXL Release Notes</title> | |
<author email="dev@commons.apache.org">Commons Developers</author> | |
</properties> | |
<body> | |
<release version="3.3.1" date="20YY-MM-DD"> | |
<action dev="ggregory" type="update" due-to="Gary Gregory"> | |
Bump commons-parent from 57 to 58. | |
</action> | |
</release> | |
<release version="3.3" date="2020-03-20"> | |
<!-- ADD --> | |
<action dev="henrib" type="add" issue="JEXL-392"> | |
Enable namespace declaration based on scripts | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-391"> | |
Improve in/=~ operator when arguments are arrays and collections | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-390" due-to="Dmitri Blinov"> | |
Pragmas should not be statements | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-389" due-to="Dmitri Blinov"> | |
Improve parsing timings | |
</action> | |
<action dev="Dmitri Blinov" type="add" issue="JEXL-385" due-to="Dmitri Blinov"> | |
Support disabling fortran-style relational operators syntax | |
</action> | |
<action dev="Dmitri Blinov" type="add" issue="JEXL-382" due-to="Dmitri Blinov"> | |
Simplify grammar and lexical state management | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-380"> | |
Multiple values per pragma key | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-379"> | |
Allow new to use class identifier | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-373" due-to="Dmitri Blinov"> | |
Add support for prefix/postfix increment/decrement operators | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-372" due-to="Dmitri Blinov"> | |
Add support for 'standard' for loop | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-369" due-to="Dmitri Blinov"> | |
Add 'let' and 'const' variable declarations | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-367" due-to="Hussachai Puripunpinyo"> | |
Named function and fat-arrow (=>) lambda syntax | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-366" due-to="Hussachai Puripunpinyo"> | |
Fail to evaluate string and number comparison | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-365" due-to="Dmitri Blinov"> | |
Lambda expressions | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-363"> | |
Allow retrieving captured variables in script | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-360" due-to="Ian Hawkins"> | |
Add missing bitshift operators (<<, >>>, >>) | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-359"> | |
Allow per-operator arithmetic handling of null arguments | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-357"> | |
Configure accessible packages/classes/methods/fields | |
</action> | |
<!-- FIX --> | |
<action dev="henrib" type="fix" issue="JEXL-386" due-to="Song Fuchang"> | |
Non-inheritable permissions on interfaces are ignored in an inheritable sandbox | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-384" due-to="Hussachai Puripunpinyo"> | |
Improve control over JexlArithmetic null argument handling | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-378" due-to="Hussachai Puripunpinyo"> | |
Incremental operator and decremental operator do not honor the side-effect flag | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-376"> | |
Introspector captures methods on non-exported classes (modules, java9+) | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-375" due-to="Jan Klicka"> | |
Cannot access enums by their name when using sandbox | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-374" due-to="Alex Hutton"> | |
No exception if dereferencing null object using safe(false) and antish(false) | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-371"> | |
Override of a protected method with public visibility is not callable | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-370" due-to="Alex Hutton"> | |
Cannot check if variable is defined using ObjectContext if the value is null | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-368"> | |
Namespace functor resolution is not cached | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-364"> | |
Evaluator options not propagated in closures | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-362"> | |
JexlInfo position reporting is off | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-361"> | |
Null may be used as operand silently even in arithmetic strict(true) mode | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-358"> | |
JexlScript.curry(...) resulting scripts don't evaluate correctly | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-354" due-to="William Price"> | |
#pragma does not handle negative integer or real literals | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-353" due-to="Mr.Z"> | |
Documentation error for not-in/not-match operator | |
</action> | |
<!-- UPDATE --> | |
<action dev="ggregory" type="update" due-to="Gary Gregory"> | |
Bump actions/cache from 3 to 3.0.8. | |
</action> | |
<action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> | |
Bump actions/checkout from 2 to 3.0.2 #79. | |
</action> | |
<action dev="ggregory" type="update" due-to="Gary Gregory"> | |
Bump actions/setup-java from 2 to 3.5.1. | |
</action> | |
<action dev="ggregory" type="update" due-to="Dependabot"> | |
Bump checkstyle from 9.2 to 9.2.1 #72. | |
</action> | |
<action dev="ggregory" type="update" due-to="Dependabot"> | |
Bump spotbugs-maven-plugin from 4.4.1 to 4.5.3.0 #73. | |
</action> | |
<action dev="ggregory" type="update" due-to="Dependabot"> | |
Bump maven-pmd-plugin from 3.15.0 to 3.16.0 #82. | |
</action> | |
<action dev="ggregory" type="update" due-to="Gary Gregory"> | |
Bump pmd from 6.48.0 to 6.52.0. | |
</action> | |
<action dev="ggregory" type="update" due-to="Dependabot"> | |
Bump commons-parent from 53 to 57 #121, #148, #155, #176. | |
</action> | |
<action dev="ggregory" type="update" due-to="Gary Gregory"> | |
Bump junit from 4.13.2 to 5.9.1 Vintage. | |
</action> | |
</release> | |
<release version="3.2.1" date="2021-06-25"> | |
<action dev="henrib" type="fix" issue="JEXL-352" due-to="Øyvind Horneland"> | |
Possible memory leak regarding parser jjtree nodes in JEXL 3.2 | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-351" due-to="Francesco Chicchiricco"> | |
JXLT Template fails when using sandboxing | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-350" due-to="David Costanzo"> | |
map[null] throws "unsolvable property" when a Sandbox is used | |
</action> | |
</release> | |
<release version="3.2" date="2021-06-07"> | |
<action dev="henrib" type="fix" issue="JEXL-349" due-to="Cameron Samak"> | |
Script valid in 3.0 no longer valid | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-348" due-to="Cameron Samak"> | |
Parsing error when mixing namespaces with conditional expressions | |
</action> | |
<action dev="csamak" type="update" due-to="Cameron Samak"> | |
Update to ph-javacc-maven-plugin 4.1.4. | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-347" due-to="Cameron Samak"> | |
Missing unsolvable property exception for reference when used with equals | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-346" due-to="David Costanzo"> | |
namespace function syntax leads to strange error for "common case" of ternary operator | |
</action> | |
<action dev="ggregory" type="update" due-to="Gary Gregory"> | |
Bump actions/setup-java from v1.4.3 to v2 #160. | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-344" due-to="David Costanzo"> | |
Don't fill stack trace for JexlExpression#Return (to improve performance) | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-341" due-to="Garret Wilson"> | |
Errors needs to provide more information on caught exceptions. | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-340" due-to="Garret Wilson"> | |
JexlException message access is incomplete and reversed | |
</action> | |
<action dev="Hussachai Puripunpinyo" type="fix" issue="JEXL-336"> | |
Escape some control characters | |
</action> | |
<action dev="henrib" type="update" issue="JEXL-335"> | |
Update JUnit to 4.13.1 | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-334"> | |
Remove offensive terminology from code and API | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-333"> | |
Allow declaration of namespace within script | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-331" due-to="David Costanzo"> | |
Please document \uXXXX escape sequence | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-330" due-to="David Costanzo"> | |
JexlException.Parsing.getMessage() throws exception when parse error is in long expression | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-328"> | |
JXLT template scripts evaluation do not process pragmas | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-327" due-to="David Costanzo"> | |
map[null] does not work in assignment context | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-326" due-to="David Costanzo"> | |
Link to "JavaCC" on syntax reference page is broken | |
</action> | |
<action dev="Dmitri Blinov" type="fix" issue="JEXL-325" due-to="Dmitri Blinov"> | |
Potential race-condition in NumberParser.toString() | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-324" due-to="David Costanzo"> | |
JexlEngine.createExpression("new()").getParsedText() throws NPE | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-323" due-to="David Costanzo"> | |
Ant-style variables can throw exception when evaluated for their value | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-322" due-to="Constantin Hirsch"> | |
JXLT String literals cannot contain curly braces | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-321" due-to="Dmitri Blinov"> | |
Empty do-while loop is broken | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-320" due-to="David Costanzo"> | |
"mvn test" fails with COMPILATION ERROR in SynchronizedArithmetic.java on Java 11 | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-319" due-to="David Costanzo"> | |
Apache project documentation gives instructions in subversion | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-318" due-to="Dmitri Blinov"> | |
Annotation processing may fail in lexical mode | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-317"> | |
Support script cancellation through less invasive API | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-315" due-to="Mike Bartlett"> | |
JxltEngine literal string strings ending in \ $ or # throw JxltEngine$Exception | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-314" due-to="Osy"> | |
Comparison NULL values of variables NAME1.NAME2 | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-312"> | |
@NoJexl fails to disallow method call | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-311"> | |
Jxlt template scripts fail using verbatim expressions embedded in lambdas | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-309"> | |
Line numbers are not correct when template report errors | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-307" due-to="Dmitri Blinov"> | |
Variable redeclaration option | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-306" due-to="Dmitri Blinov"> | |
Ternary operator ? protects also its branches from resolution errors | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-305" due-to="Dmitri Blinov"> | |
Script debugger produces incorrect syntax | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-304" due-to="Marcus Warm"> | |
Error parsing overview.limit.var | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-303" due-to="Dmitri Blinov"> | |
Block syntax is broken | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-302" due-to="Dmitri Blinov"> | |
JexlScript.getVariables returns strange values for array access | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-301" due-to="Dmitri Blinov"> | |
Array access operator does not fail on null object in non-strict arithmetic mode | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-299" due-to="Jarek Cecho"> | |
Improve message error when method could not be found | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-298" due-to="Dmitri Blinov"> | |
Unable to call 'empty' and 'size' member methods with parameters | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-296" due-to="Dmitri Blinov"> | |
Real literal in scientific format is not parsed without suffix | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-295"> | |
Add unary plus operator | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-292" due-to="Dmitri Blinov"> | |
Allow specifying custom Permissions class for Uberspect to be used later by Introspector | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-291" due-to="David Costanzo"> | |
Using sandbox prevents array-syntax lookup by number in Map | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-290"> | |
Safe navigation fails on chained method calls | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-289" due-to="Dmitri Blinov"> | |
Passing undeclared function parameter can overwrite a local function variable | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-288" due-to="Dmitri Blinov"> | |
Annotation can not be specified for a standalone statement | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-287" due-to="Dmitri Blinov"> | |
Wrong resolution of local variables | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-286" due-to="Dmitri Blinov"> | |
For statement without a body should update its variable | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-285"> | |
For statement variable may seem unaffected by iteration | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-282" due-to="Dmitri Blinov"> | |
Pragmas with antish names are broken | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-281" due-to="Mirek Hankus"> | |
MethodExecutor incorrectly tests for empty parameters list | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-280" due-to="Dmitri Blinov"> | |
break/continue statements outside of the loop | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-279"> | |
Null variables property access do not throw exceptions | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-278"> | |
Ambiguous exceptions should point to actual statement ambiguity | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-275"> | |
Allow safe navigation as option | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-274"> | |
Handle soft and hard stack overflow | |
</action> | |
<action dev="Dmitri Blinov" type="add" issue="JEXL-175" due-to="Dmitri Blinov"> | |
Add do...while(...) loops | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-272"> | |
Dereferencing null property not reported on method call | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-271" due-to="Dmitri Blinov"> | |
Hoisted variable is lost when currying lambda | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-270" due-to="Dmitri Blinov"> | |
Wrong Script$Curried creation when script.curry() method is called inside script | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-264"> | |
Allow space, quote and double-quote in identifiers | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-261"> | |
JexlEngine.setClassLoader(...) should reload namespaces that are classes | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-260" due-to="Dmitri Blinov"> | |
Automatically inject JexlContext in constructor call when possible | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-257" due-to="Dmitri Blinov"> | |
Function throwing IllegalArgumentException may be called twice | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-253" due-to="Woonsan Ko"> | |
Permissions by super type in JexlSandbox | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-252" due-to="Dmitri Blinov"> | |
Allow for interpolated strings to be used in property access operators | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-250" due-to="Dmitri Blinov"> | |
Safe navigation operator | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-249" due-to="Dmitri Blinov"> | |
Java 1.8 as minimum supported version | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-248" due-to="Dmitri Blinov"> | |
Allow range subexpression as an array property assignment identifier | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-246" due-to="Dmitri Blinov"> | |
Intermittent ambiguous method invocation when processing assignOverload | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-245" due-to="Ate Douma"> | |
Engine in strict mode fails to fail on unsolvable variables or properties | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-244" due-to="Dmitri Blinov"> | |
Webapp classloader memory leaks | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-243"> | |
Allow restricting available features in Script/Expressions | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-241" due-to="Yang Wang"> | |
NPE when script containing string interpolation executed in multiple threads | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-240" due-to="Dmitri Blinov"> | |
Unable to invoke a call operator using antish style variable resoltion | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-238" due-to="Cameron Samak"> | |
Restrict getLiteralClass to a Number for NumberLiterals | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-237" due-to="Dmitri Blinov"> | |
Ability to restrict usage of certain names when declaring local variables | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-236" due-to="Dmitri Blinov"> | |
Support CharSequence in size(), empty() and contains() operators | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-234" due-to="Dmitri Blinov"> | |
Extend application of operators startsWith and endsWith from String to CharSequence types | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-231" due-to="Dmitri Blinov"> | |
Syntax for accessing List elements is not mentioned in docs | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-230" due-to="Dmitri Blinov"> | |
List literal is not mentioned in docs | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-227" due-to="Dmitri Blinov"> | |
JexlScriptEngineFactory.getEngineVersion() should return actual version | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-226" due-to="Min Wei"> | |
add ?? operator support | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-225" due-to="Vyacheslav Shago"> | |
Incorrect invoking methods with ObjectContext | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-224" due-to="Dmitri Blinov"> | |
The ability to overload call() operator in customized JexlArithmetic implementation | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-212" due-to="Dmitri Blinov"> | |
Restrict usage of assignment statements in JexlExpression | |
</action> | |
<action dev="Dmitri Blinov" type="add" issue="JEXL-175" due-to="Dmitri Blinov"> | |
java.util.regex.Pattern creation operator (regex literals) | |
</action> | |
</release> | |
<release version="3.1" date="2017-04-14"> | |
<action dev="henrib" type="add" issue="JEXL-222" due-to="Dmitri Blinov"> | |
The ability to declare indexed property getter/setter in customised JexlArithmetic implementation | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-221" due-to="Dmitri Blinov"> | |
Sporadic undefined property error caused by NPE at MapGetExecutor.tryInvoke() | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-219"> | |
Blacklist by default in sandbox | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-217" due-to="Dmitri Blinov"> | |
Interpreter.getAttribute() raises exception in non-strict mode when cached property resolver is used | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-216" due-to="Dmitri Blinov"> | |
Improve parsing concurrency in multithreaded environment | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-215" due-to="Dmitri Blinov"> | |
JexlEngine.createInfo() is redundantly called when debug and caching is enabled leading to sub-optimal performance | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-214" due-to="Dmitri Blinov"> | |
Redundant call of fillInStackTrace() in JexlEngine.createInfo() ? | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-213" due-to="Dmitri Blinov"> | |
rename JexlBuilder.loader(Charset arg) to JexlBuilder.charset(Charset arg) | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-211" due-to="Dmitri Blinov"> | |
Add callable method to JexlExpression interface | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-210" due-to="Dmitri Blinov"> | |
The way to cancel script execution with an error | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-209" due-to="Dmitri Blinov"> | |
Unsolvable function/method '<?>.<null>(...)' | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-208" due-to="Joe Tom"> | |
Documentation typos/inconsistencies | |
</action> | |
<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 | |
</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-203" due-to="Dmitri Blinov"> | |
JexlArithmetic.options() diverts Interpreter to use default implementation of JexlArithmetic instead of custom one | |
</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="add" issue="JEXL-201" due-to="Dmitri Blinov"> | |
Allow Interpreter to use live values from JexlEngine.Option interface implemented by JexlContext | |
</action> | |
<action dev="henrib" type="fix" issue="JEXL-198" due-to="Terefang Verigorn"> | |
JxltEngine Template does not expose pragmas | |
</action> | |
<action dev="henrib" type="add" issue="JEXL-197" due-to="Dmitri Blinov"> | |
Add annotations | |
</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="add" 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 behavior 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> |