Apache Commons logo Apache Commons JEXL

Apache Commons JEXL Release Notes

Release History

Version Date Description
3.4.0 2024-06-02 Java 8 is required.
3.3 2023-03-20  
3.2.1 2021-06-25  
3.2 2021-06-07  
3.1 2017-04-14  
3.0 2015-12-27  
2.1.1 2011-12-24  
2.1 2011-13-11  
2.0.1 2010-03-28  
2.0 2010-02-02  
1.1.1-SNAPSHOT unreleased  
1.1 2006-09-10  
1.0 2004-09-07  
1.0-RC1 2004-08-26  

Release 3.4.0 – 2024-06-02

Type Changes By
Add Add support for instanceof / !instanceof. Fixes JEXL-423. henrib
Add Add strict equality (===) and inequality (!==) operators. Fixes JEXL-422. henrib
Add ArrayBuilder: array type should reflect common class of its entries. Fixes JEXL-421. henrib
Add Add permission syntax to allow class/method/field. Fixes JEXL-419. henrib
Add Add try-catch support. Fixes JEXL-418. Thanks to Xu Pengcheng. henrib
Add Using JexlFeatures is tedious. Fixes JEXL-408. Thanks to sebb. henrib
Add Support array-access safe navigation (x?[y]). Fixes JEXL-404. Thanks to Xu Pengcheng. henrib
Add Captured variables should be read-only. Fixes JEXL-401. henrib
Add Allow 'trailing commas' or ellipsis while defining array, map and set literals. Fixes JEXL-398. Thanks to Xu Pengcheng. henrib
Add Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory. ggregory
Fix Error while comparing float and string value. Fixes JEXL-420. Thanks to Xu Pengcheng. henrib
Fix JexlArithmetic looses precision during arithmetic operator execution. Fixes JEXL-417. Thanks to Robert Lucas. henrib
Fix Null-valued pragma throws NPE in 3.3. Fixes JEXL-416. Thanks to William Price. henrib
Fix Incorrect template eval result. Fixes JEXL-415. Thanks to Xu Pengcheng. henrib
Fix SoftCache may suffer from race conditions. Fixes JEXL-414. Thanks to Holger Sunke. henrib
Fix Ambiguous syntax between namespace function call and map object definition. Fixes JEXL-412. Thanks to Xu Pengcheng. henrib
Fix JexlFeatures: ctor does not enable all features. Fixes JEXL-410. Thanks to sebb. henrib
Fix Disable LEXICAL should disable LEXICAL_SHADE. Fixes JEXL-409. Thanks to sebb. henrib
Fix Recursive functions corrupt evaluation frame if reassigned. Fixes JEXL-405. henrib
Fix Exception while evaluating template literal used in array assignment in loop. Fixes JEXL-403. Thanks to Xu Pengcheng. henrib
Fix Parse failed with empty return value. Fixes JEXL-402. Thanks to Xu Pengcheng. henrib
Fix [StepSecurity] ci: Harden GitHub Actions #180. Thanks to step-security-bot, Gary Gregory. ggregory
Fix Guard logging calls. Thanks to PMD, Gary Gregory. ggregory
Fix Deprecate SimpleNode.SimpleNode(Parser, int) in favor of SimpleNode.SimpleNode(int). Thanks to PMD, Gary Gregory. ggregory
Fix Deprecate JexlNode.JexlNode(Parser, int) in favor of JexlNode.JexlNode(int). Thanks to PMD, Gary Gregory. ggregory
Update Bump commons-parent from 67 to 69. Thanks to dependabot. henrib
Update Bump github actions. Thanks to dependabot. henrib
Update Bump commons-parent from 57 to 70. Thanks to Gary Gregory, Dependabot. ggregory
Update Bump org.ow2.asm:asm from 9.5 to 9.7 #200, #242. Thanks to dependabot. ggregory
Update Bump commons-logging from 1.2 to 1.3.2 #241, #255. Thanks to Gary Gregory, Dependabot. ggregory
Update Bump com.google.code.gson:gson from 2.10.1 to 2.11.0 #258. Thanks to Gary Gregory, Dependabot. ggregory

Release 3.3 – 2023-03-20

Type Changes By
Add Enable namespace declaration based on scripts. Fixes JEXL-392. henrib
Add Improve in/=~ operator when arguments are arrays and collections. Fixes JEXL-391. henrib
Add Pragmas should not be statements. Fixes JEXL-390. Thanks to Dmitri Blinov. henrib
Add Improve parsing timings. Fixes JEXL-389. Thanks to Dmitri Blinov. henrib
Add Support disabling fortran-style relational operators syntax. Fixes JEXL-385. Thanks to Dmitri Blinov. Dmitri Blinov
Add Simplify grammar and lexical state management. Fixes JEXL-382. Thanks to Dmitri Blinov. Dmitri Blinov
Add Multiple values per pragma key. Fixes JEXL-380. henrib
Add Allow new to use class identifier. Fixes JEXL-379. henrib
Add Add support for prefix/postfix increment/decrement operators. Fixes JEXL-373. Thanks to Dmitri Blinov. henrib
Add Add support for 'standard' for loop. Fixes JEXL-372. Thanks to Dmitri Blinov. henrib
Add Add 'let' and 'const' variable declarations. Fixes JEXL-369. Thanks to Dmitri Blinov. henrib
Add Named function and fat-arrow (=>) lambda syntax. Fixes JEXL-367. Thanks to Hussachai Puripunpinyo. henrib
Add Fail to evaluate string and number comparison. Fixes JEXL-366. Thanks to Hussachai Puripunpinyo. henrib
Add Lambda expressions. Fixes JEXL-365. Thanks to Dmitri Blinov. henrib
Add Allow retrieving captured variables in script. Fixes JEXL-363. henrib
Add Add missing bitshift operators (<<, >>>, >>). Fixes JEXL-360. Thanks to Ian Hawkins. henrib
Add Allow per-operator arithmetic handling of null arguments. Fixes JEXL-359. henrib
Add Configure accessible packages/classes/methods/fields. Fixes JEXL-357. henrib
Fix Non-inheritable permissions on interfaces are ignored in an inheritable sandbox. Fixes JEXL-386. Thanks to Song Fuchang. henrib
Add Improve control over JexlArithmetic null argument handling. Fixes JEXL-384. Thanks to Hussachai Puripunpinyo. henrib
Fix Incremental operator and decremental operator do not honor the side-effect flag. Fixes JEXL-378. Thanks to Hussachai Puripunpinyo. henrib
Fix Introspector captures methods on non-exported classes (modules, java9+). Fixes JEXL-376. henrib
Fix Cannot access enums by their name when using sandbox. Fixes JEXL-375. Thanks to Jan Klicka. henrib
Fix No exception if dereferencing null object using safe(false) and antish(false). Fixes JEXL-374. Thanks to Alex Hutton. henrib
Fix Override of a protected method with public visibility is not callable. Fixes JEXL-371. henrib
Fix Cannot check if variable is defined using ObjectContext if the value is null. Fixes JEXL-370. Thanks to Alex Hutton. henrib
Add Namespace functor resolution is not cached. Fixes JEXL-368. henrib
Fix Evaluator options not propagated in closures. Fixes JEXL-364. henrib
Fix JexlInfo position reporting is off. Fixes JEXL-362. henrib
Fix Null may be used as operand silently even in arithmetic strict(true) mode. Fixes JEXL-361. henrib
Fix JexlScript.curry(...) resulting scripts don't evaluate correctly. Fixes JEXL-358. henrib
Fix #pragma does not handle negative integer or real literals. Fixes JEXL-354. Thanks to William Price. henrib
Fix Documentation error for not-in/not-match operator. Fixes JEXL-353. Thanks to Mr.Z. henrib
Update Bump actions/cache from 3 to 3.0.8. Thanks to Gary Gregory. ggregory
Update Bump actions/checkout from 2 to 3.0.2 #79. Thanks to Dependabot, Gary Gregory. ggregory
Update Bump actions/setup-java from 2 to 3.5.1. Thanks to Gary Gregory. ggregory
Update Bump checkstyle from 9.2 to 9.2.1 #72. Thanks to Dependabot. ggregory
Update Bump spotbugs-maven-plugin from 4.4.1 to 4.5.3.0 #73. Thanks to Dependabot. ggregory
Update Bump maven-pmd-plugin from 3.15.0 to 3.16.0 #82. Thanks to Dependabot. ggregory
Update Bump pmd from 6.48.0 to 6.52.0. Thanks to Gary Gregory. ggregory
Update Bump commons-parent from 53 to 57 #121, #148, #155, #176. Thanks to Dependabot. ggregory
Update Bump junit from 4.13.2 to 5.9.1 Vintage. Thanks to Gary Gregory. ggregory

Release 3.2.1 – 2021-06-25

Type Changes By
Fix Possible memory leak regarding parser jjtree nodes in JEXL 3.2. Fixes JEXL-352. Thanks to Øyvind Horneland. henrib
Fix JXLT Template fails when using sandboxing. Fixes JEXL-351. Thanks to Francesco Chicchiricco. henrib
Fix map[null] throws "unsolvable property" when a Sandbox is used. Fixes JEXL-350. Thanks to David Costanzo. henrib

Release 3.2 – 2021-06-07

Type Changes By
Fix Script valid in 3.0 no longer valid. Fixes JEXL-349. Thanks to Cameron Samak. henrib
Fix Parsing error when mixing namespaces with conditional expressions. Fixes JEXL-348. Thanks to Cameron Samak. henrib
Update Update to ph-javacc-maven-plugin 4.1.4. Thanks to Cameron Samak. csamak
Fix Missing unsolvable property exception for reference when used with equals. Fixes JEXL-347. Thanks to Cameron Samak. henrib
Fix namespace function syntax leads to strange error for "common case" of ternary operator. Fixes JEXL-346. Thanks to David Costanzo. henrib
Update Bump actions/setup-java from v1.4.3 to v2 #160. Thanks to Gary Gregory. ggregory
Add Don't fill stack trace for JexlExpression#Return (to improve performance). Fixes JEXL-344. Thanks to David Costanzo. henrib
Add Errors needs to provide more information on caught exceptions. Fixes JEXL-341. Thanks to Garret Wilson. henrib
Add JexlException message access is incomplete and reversed. Fixes JEXL-340. Thanks to Garret Wilson. henrib
Fix Escape some control characters. Fixes JEXL-336. Hussachai Puripunpinyo
Update Update JUnit to 4.13.1. Fixes JEXL-335. henrib
Add Remove offensive terminology from code and API. Fixes JEXL-334. henrib
Add Allow declaration of namespace within script. Fixes JEXL-333. henrib
Fix Please document \uXXXX escape sequence. Fixes JEXL-331. Thanks to David Costanzo. henrib
Fix JexlException.Parsing.getMessage() throws exception when parse error is in long expression. Fixes JEXL-330. Thanks to David Costanzo. henrib
Fix JXLT template scripts evaluation do not process pragmas. Fixes JEXL-328. henrib
Fix map[null] does not work in assignment context. Fixes JEXL-327. Thanks to David Costanzo. henrib
Fix Link to "JavaCC" on syntax reference page is broken. Fixes JEXL-326. Thanks to David Costanzo. henrib
Fix Potential race-condition in NumberParser.toString(). Fixes JEXL-325. Thanks to Dmitri Blinov. Dmitri Blinov
Fix JexlEngine.createExpression("new()").getParsedText() throws NPE. Fixes JEXL-324. Thanks to David Costanzo. henrib
Fix Ant-style variables can throw exception when evaluated for their value. Fixes JEXL-323. Thanks to David Costanzo. henrib
Fix JXLT String literals cannot contain curly braces. Fixes JEXL-322. Thanks to Constantin Hirsch. henrib
Fix Empty do-while loop is broken. Fixes JEXL-321. Thanks to Dmitri Blinov. henrib
Fix "mvn test" fails with COMPILATION ERROR in SynchronizedArithmetic.java on Java 11. Fixes JEXL-320. Thanks to David Costanzo. henrib
Fix Apache project documentation gives instructions in subversion. Fixes JEXL-319. Thanks to David Costanzo. henrib
Fix Annotation processing may fail in lexical mode. Fixes JEXL-318. Thanks to Dmitri Blinov. henrib
Add Support script cancellation through less invasive API. Fixes JEXL-317. henrib
Fix JxltEngine literal string strings ending in \ $ or # throw JxltEngine$Exception. Fixes JEXL-315. Thanks to Mike Bartlett. henrib
Fix Comparison NULL values of variables NAME1.NAME2. Fixes JEXL-314. Thanks to Osy. henrib
Fix @NoJexl fails to disallow method call. Fixes JEXL-312. henrib
Fix Jxlt template scripts fail using verbatim expressions embedded in lambdas. Fixes JEXL-311. henrib
Fix Line numbers are not correct when template report errors. Fixes JEXL-309. henrib
Fix Variable redeclaration option. Fixes JEXL-307. Thanks to Dmitri Blinov. henrib
Fix Ternary operator ? protects also its branches from resolution errors. Fixes JEXL-306. Thanks to Dmitri Blinov. henrib
Fix Script debugger produces incorrect syntax. Fixes JEXL-305. Thanks to Dmitri Blinov. henrib
Fix Error parsing overview.limit.var. Fixes JEXL-304. Thanks to Marcus Warm. henrib
Fix Block syntax is broken. Fixes JEXL-303. Thanks to Dmitri Blinov. henrib
Fix JexlScript.getVariables returns strange values for array access. Fixes JEXL-302. Thanks to Dmitri Blinov. henrib
Fix Array access operator does not fail on null object in non-strict arithmetic mode. Fixes JEXL-301. Thanks to Dmitri Blinov. henrib
Fix Improve message error when method could not be found. Fixes JEXL-299. Thanks to Jarek Cecho. henrib
Fix Unable to call 'empty' and 'size' member methods with parameters. Fixes JEXL-298. Thanks to Dmitri Blinov. henrib
Fix Real literal in scientific format is not parsed without suffix. Fixes JEXL-296. Thanks to Dmitri Blinov. henrib
Add Add unary plus operator. Fixes JEXL-295. henrib
Add Allow specifying custom Permissions class for Uberspect to be used later by Introspector. Fixes JEXL-292. Thanks to Dmitri Blinov. henrib
Fix Using sandbox prevents array-syntax lookup by number in Map. Fixes JEXL-291. Thanks to David Costanzo. henrib
Fix Safe navigation fails on chained method calls. Fixes JEXL-290. henrib
Fix Passing undeclared function parameter can overwrite a local function variable. Fixes JEXL-289. Thanks to Dmitri Blinov. henrib
Add Annotation can not be specified for a standalone statement. Fixes JEXL-288. Thanks to Dmitri Blinov. henrib
Fix Wrong resolution of local variables. Fixes JEXL-287. Thanks to Dmitri Blinov. henrib
Fix For statement without a body should update its variable. Fixes JEXL-286. Thanks to Dmitri Blinov. henrib
Fix For statement variable may seem unaffected by iteration. Fixes JEXL-285. henrib
Fix Pragmas with antish names are broken. Fixes JEXL-282. Thanks to Dmitri Blinov. henrib
Fix MethodExecutor incorrectly tests for empty parameters list. Fixes JEXL-281. Thanks to Mirek Hankus. henrib
Fix break/continue statements outside of the loop. Fixes JEXL-280. Thanks to Dmitri Blinov. henrib
Fix Null variables property access do not throw exceptions. Fixes JEXL-279. henrib
Fix Ambiguous exceptions should point to actual statement ambiguity. Fixes JEXL-278. henrib
Add Allow safe navigation as option. Fixes JEXL-275. henrib
Add Handle soft and hard stack overflow. Fixes JEXL-274. henrib
Add Add do...while(...) loops. Fixes JEXL-175. Thanks to Dmitri Blinov. Dmitri Blinov
Fix Dereferencing null property not reported on method call. Fixes JEXL-272. henrib
Fix Hoisted variable is lost when currying lambda. Fixes JEXL-271. Thanks to Dmitri Blinov. henrib
Fix Wrong Script$Curried creation when script.curry() method is called inside script. Fixes JEXL-270. Thanks to Dmitri Blinov. henrib
Add Allow space, quote and double-quote in identifiers. Fixes JEXL-264. henrib
Add JexlEngine.setClassLoader(...) should reload namespaces that are classes. Fixes JEXL-261. henrib
Add Automatically inject JexlContext in constructor call when possible. Fixes JEXL-260. Thanks to Dmitri Blinov. henrib
Fix Function throwing IllegalArgumentException may be called twice. Fixes JEXL-257. Thanks to Dmitri Blinov. henrib
Add Permissions by super type in JexlSandbox. Fixes JEXL-253. Thanks to Woonsan Ko. henrib
Add Allow for interpolated strings to be used in property access operators. Fixes JEXL-252. Thanks to Dmitri Blinov. henrib
Add Safe navigation operator. Fixes JEXL-250. Thanks to Dmitri Blinov. henrib
Add Java 1.8 as minimum supported version. Fixes JEXL-249. Thanks to Dmitri Blinov. henrib
Add Allow range subexpression as an array property assignment identifier. Fixes JEXL-248. Thanks to Dmitri Blinov. henrib
Fix Intermittent ambiguous method invocation when processing assignOverload. Fixes JEXL-246. Thanks to Dmitri Blinov. henrib
Fix Engine in strict mode fails to fail on unsolvable variables or properties. Fixes JEXL-245. Thanks to Ate Douma. henrib
Fix Webapp classloader memory leaks. Fixes JEXL-244. Thanks to Dmitri Blinov. henrib
Add Allow restricting available features in Script/Expressions. Fixes JEXL-243. henrib
Fix NPE when script containing string interpolation executed in multiple threads. Fixes JEXL-241. Thanks to Yang Wang. henrib
Add Unable to invoke a call operator using antish style variable resoltion. Fixes JEXL-240. Thanks to Dmitri Blinov. henrib
Add Restrict getLiteralClass to a Number for NumberLiterals. Fixes JEXL-238. Thanks to Cameron Samak. henrib
Add Ability to restrict usage of certain names when declaring local variables. Fixes JEXL-237. Thanks to Dmitri Blinov. henrib
Add Support CharSequence in size(), empty() and contains() operators. Fixes JEXL-236. Thanks to Dmitri Blinov. henrib
Add Extend application of operators startsWith and endsWith from String to CharSequence types. Fixes JEXL-234. Thanks to Dmitri Blinov. henrib
Fix Syntax for accessing List elements is not mentioned in docs. Fixes JEXL-231. Thanks to Dmitri Blinov. henrib
Fix List literal is not mentioned in docs. Fixes JEXL-230. Thanks to Dmitri Blinov. henrib
Fix JexlScriptEngineFactory.getEngineVersion() should return actual version. Fixes JEXL-227. Thanks to Dmitri Blinov. henrib
Add add ?? operator support. Fixes JEXL-226. Thanks to Min Wei. henrib
Fix Incorrect invoking methods with ObjectContext. Fixes JEXL-225. Thanks to Vyacheslav Shago. henrib
Add The ability to overload call() operator in customized JexlArithmetic implementation. Fixes JEXL-224. Thanks to Dmitri Blinov. henrib
Add Restrict usage of assignment statements in JexlExpression. Fixes JEXL-212. Thanks to Dmitri Blinov. henrib
Add java.util.regex.Pattern creation operator (regex literals). Fixes JEXL-175. Thanks to Dmitri Blinov. Dmitri Blinov

Release 3.1 – 2017-04-14

Type Changes By
Add The ability to declare indexed property getter/setter in customised JexlArithmetic implementation. Fixes JEXL-222. Thanks to Dmitri Blinov. henrib
Fix Sporadic undefined property error caused by NPE at MapGetExecutor.tryInvoke(). Fixes JEXL-221. Thanks to Dmitri Blinov. henrib
Add Blacklist by default in sandbox. Fixes JEXL-219. henrib
Fix Interpreter.getAttribute() raises exception in non-strict mode when cached property resolver is used. Fixes JEXL-217. Thanks to Dmitri Blinov. henrib
Add Improve parsing concurrency in multithreaded environment. Fixes JEXL-216. Thanks to Dmitri Blinov. henrib
Add JexlEngine.createInfo() is redundantly called when debug and caching is enabled leading to sub-optimal performance. Fixes JEXL-215. Thanks to Dmitri Blinov. henrib
Fix Redundant call of fillInStackTrace() in JexlEngine.createInfo() ?. Fixes JEXL-214. Thanks to Dmitri Blinov. henrib
Fix rename JexlBuilder.loader(Charset arg) to JexlBuilder.charset(Charset arg). Fixes JEXL-213. Thanks to Dmitri Blinov. henrib
Add Add callable method to JexlExpression interface. Fixes JEXL-211. Thanks to Dmitri Blinov. henrib
Fix The way to cancel script execution with an error. Fixes JEXL-210. Thanks to Dmitri Blinov. henrib
Fix Unsolvable function/method '<?>.<null>(...)'. Fixes JEXL-209. Thanks to Dmitri Blinov. henrib
Fix Documentation typos/inconsistencies. Fixes JEXL-208. Thanks to Joe Tom. henrib
Fix Inconsistent error handling. Fixes JEXL-207. Thanks to Dmitri Blinov. henrib
Fix testCallableCancel() test hangs sporadically. Fixes JEXL-206. Thanks to Dmitri Blinov. henrib
Fix testCancelForever() is not terminated properly. Fixes JEXL-205. Thanks to Dmitri Blinov. henrib
Fix Script is not interrupted by a method call throwing Exception. Fixes JEXL-204. Thanks to Dmitri Blinov. henrib
Fix JexlArithmetic.options() diverts Interpreter to use default implementation of JexlArithmetic instead of custom one. Fixes JEXL-203. Thanks to Dmitri Blinov. henrib
Fix Detect invalid assignment operator usage with non-assignable l-value during script parsing. Fixes JEXL-202. Thanks to Dmitri Blinov. henrib
Add Allow Interpreter to use live values from JexlEngine.Option interface implemented by JexlContext. Fixes JEXL-201. Thanks to Dmitri Blinov. henrib
Fix JxltEngine Template does not expose pragmas. Fixes JEXL-198. Thanks to Terefang Verigorn. henrib
Add Add annotations. Fixes JEXL-197. Thanks to Dmitri Blinov. henrib
Fix Script execution hangs while calling method with one argument without parameter. Fixes JEXL-196. Thanks to Dmitri Blinov. henrib
Fix Support for AtomicBoolean in logical expressions. Fixes JEXL-195. Thanks to Dmitri Blinov. henrib
Add allow synchronization on iterableValue in foreach statement. Fixes JEXL-194. Thanks to Dmitri Blinov. henrib
Fix InterruptedException is swallowed in function call in silent and non-strict mode. Fixes JEXL-193. Thanks to Dmitri Blinov. henrib
Fix Invalid return type when expected result is null. Fixes JEXL-192. Thanks to Constantin Mitocaru. henrib
Fix Jexl3 unsolvable property exception when using enum. Fixes JEXL-191. Thanks to Constantin Mitocaru. henrib
Fix local function within context is not resolved if function resolver class without namespace is specified. Fixes JEXL-190. Thanks to Dmitri Blinov. henrib
Fix Possible bug in Interpreter.isCancelled(). Fixes JEXL-189. Thanks to Dmitri Blinov. henrib
Fix Possible bug in JexlArithmetic.isFloatingPointNumber(). Fixes JEXL-188. Thanks to Dmitri Blinov. henrib
Fix Jexl Syntax doc does not mention 'continue' and 'break' operators. Fixes JEXL-187. Thanks to Dmitri Blinov. henrib
Fix Performance regression in arithmetic operations compared to JEXL 2.1. Fixes JEXL-186. Thanks to Philippe Mouawad. henrib

Release 3.0 – 2015-12-27

Type Changes By
Fix dot-ed identifiers parsing failure. Fixes JEXL-184. henrib
Fix Documentation - suggests using float for financials. Fixes JEXL-180. Thanks to Kimball Robinson. henrib
Add Added a 'curry' method to script returning script with bound arguments henrib
Add 'Unsolvable property' message to provide details about underlying exception. Fixes JEXL-178. Thanks to Dmitri Blinov. henrib
Add Unified expressions to be used in String literals in JEXL scripts. Fixes JEXL-177. Thanks to Dmitri Blinov. henrib
Add Synonym operator name 'in' for operator =~ // Remove 'foreach...in' syntax. Fixes JEXL-176. Thanks to Dmitri Blinov. henrib
Add Overloadable property access operators. Fixes JEXL-174. Thanks to Dmitri Blinov. henrib
Add Duck-typed java closures. Fixes JEXL-173. Thanks to Dmitri Blinov. henrib
Fix Map access operator does not work if key name clashes with map property name. Fixes JEXL-171. Thanks to Dmitri Blinov. henrib
Add Implement assignment operators. Fixes JEXL-170. henrib
Fix A string is wrongly identified as FloatingPointNumber. Fixes JEXL-169. Thanks to Robert Neßelrath. henrib
Fix Dedicated operator for String concatenation. Fixes JEXL-168. Thanks to Dmitri Blinov. henrib
Fix Add support for growable arrays (ArrayLists). Fixes JEXL-79. Thanks to sebb. henrib
Fix Possible loss of value when converting BigDecimal to BigInteger. Fixes JEXL-167. Thanks to Dmitri Blinov. henrib
Fix Incorrect operator symbol for bitwise complement in jexlArithmetic. Fixes JEXL-166. Thanks to Dmitri Blinov. henrib
Add public getters for high/low properties for IntegerRange and LongRange. Fixes JEXL-164. Thanks to Dmitri Blinov. henrib
Fix empty(new ("java.lang.Long", 4294967296)) returns true. Fixes JEXL-163. Thanks to Dmitri Blinov. henrib
Fix empty() function throws an exception : unsupported type. Fixes JEXL-162. Thanks to Dmitri Blinov. henrib
Fix typo in package.html. Fixes JEXL-160. Thanks to Dmitri Blinov. henrib
Fix Handle locale decimal separators correctly. Fixes JEXL-158. Thanks to Lars Cebulla. henrib
Fix Replace File.pathSeparator with File.separator. Fixes JEXL-157. Thanks to Lars Cebulla. henrib
Add Added a method to get parameters from a template henrib
Fix Identifiers beginning with 0s (like 00200) shoud not be considered integers henrib
Add Extend Range literal to support Long values. Fixes JEXL-152. Thanks to Dmitri Blinov. henrib
Add Set Construction as per EL 3.0 spec. Fixes JEXL-149. Thanks to Dmitri Blinov. henrib
Add Added #pragma instruction, allowing scripts to communicate information to the underlying execution context. henrib
Fix Hoisted variables in a lambda are seen as local variables; should be seen as global henrib
Fix Local variables must preclude antish variables handling henrib
Fix Depending on unkown conditions, overriden varargs method may return false to isVarArgs; fix by checking method in declaring class hierarchy. henrib
Fix Performance problem in Interpreter.unknownVariable mechanism. Fixes JEXL-146. Thanks to David Maplesden. henrib
Fix Functions assigned to local variables can not perform recursive calls henrib
Fix Improved error reporting on undefined or null variables henrib
Fix Improved operator overloading logic in JexlArithmeric (caching) henrib
Fix Sandbox calling wrong check (classname vs class). Fixes JEXL-145. Thanks to Ian Connor. henrib
Fix JXLT fails to parse expressions that use map constants henrib
Add Added break/continue in JEXL syntax henrib
Add Added convenience methods to pass/use JexlInfo and arguments in templates henrib
Add Added ability to overload some operators in JexlArithmetic (through introspection, based on method names) henrib
Fix Fixed issue in edge case method resolution wrt overload and varargs henrib
Add Switch logging to log4j 1.2 henrib
Fix Empty array property setting fails. Fixes JEXL-144. Thanks to Woonsang Ko. henrib
Fix Map expression issue with empty key. Fixes JEXL-142. Thanks to Juozas Baliuks. henrib
Fix Suffix for Big Decimal and Big Integer Literal is incorrectly mentioned in Java docs. Fixes JEXL-141. Thanks to Harpreet Singh. henrib
Fix Invalid script variable list for nested array/map access. Fixes JEXL-137. henrib
Fix Fixed Engine.getVariables that was erroneously considering method calls as variable usage henrib
Fix Fixed issue in ternary expression (grammar was not precise enough to differentiate namespace:function calls vs ternary right hand side) henrib
Add NaN is now a keyword equivalent to #NaN (deprecated): POTENTIAL SCRIPT BREAK! henrib
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) henrib
Add Added syntactic shortcut to create parametric scripts (script source creates an anonymous function) henrib
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 henrib
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) henrib
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) henrib
Add String matching Operator short-hand inspired by CSS3. Fixes JEXL-133. Thanks to Alfred Reibenschuh. henrib
Add Added the range operator (x .. y) henrib
Add ObjectContext should implement NamespaceResolver. Fixes JEXL-128. Thanks to Matteo Trotta. henrib
Add Allow the creation of functions. Fixes JEXL-127. henrib
Add Redesign API for stability. Fixes JEXL-123. henrib
Add Move JEXL from org.apache.comms.jexl2 to org.apache.commons.jexl3. Fixes JEXL-122. henrib
Fix Script calls within scripts may fail with number arguments. Fixes JEXL-136. henrib
Fix using map as script parameter or local variable. Fixes JEXL-135. Thanks to Tomas Kukosa. henrib
Fix Issue with evaluation of concat of variables : \r + \n gives 0. Fixes JEXL-134. Thanks to Manoj Mokashi. henrib
Fix UnifiedJexl (2.1.x) parsing may fail with NPE. Fixes JEXL-131. Thanks to Clay Bruce. henrib
Fix Ternary Conditional fails for Object values. Fixes JEXL-130. Thanks to William Bakker. henrib
Add Decimal numbers literals fix be 'double' by default (instead of 'float'). Fixes JEXL-126. Thanks to Grace. henrib

Release 2.1.1 – 2011-12-24

Type Changes By
Fix Array parameters to methods don't work anymore (regression). Fixes JEXL-124. henrib

Release 2.1 – 2011-13-11

Type Changes By
Add Add simple template features. Fixes JEXL-121. henrib
Fix Make ParseException work in sandboxed environment. Fixes JEXL-120. Thanks to Lukas Krecan. henrib
Add Allow indexed properties container resolution in expressions. Fixes JEXL-119. henrib
Add Provide an IN operator: =~ / match operator extended to provide IN behavior (!~ as NOT IN). Fixes JEXL-118. Thanks to Max Tardiveau. henrib
Add Add control over classes, methods, constructors and properties allowed in scripts. Fixes JEXL-116. Thanks to Sarel Botha. henrib
Add Add support for asynchronous script execution and cancellation. Fixes JEXL-115. Thanks to Sarel Botha. henrib
Add Allow scripts to create local variables // Add return keyword. Fixes JEXL-114. henrib
Add Add functions to extract which variables, parameters and local variables are used to evaluate a script. Fixes JEXL-113. Thanks to Max Tardiveau. henrib
Fix Cannot parse Integer.MIN_VALUE. Fixes JEXL-112. Thanks to sebb. henrib
Fix Support Long for integer literal instead of Integers. Fixes JEXL-24. Thanks to freish. henrib
Add Added ObjectContext that wraps an object as JexlContext and added JexlContext as source to solve top-level namespace functions. henrib
Fix expression execute error depending on numeric type. Fixes JEXL-111. Thanks to freish. henrib
Add Make JexlArithmetic immutable (and threadsafe); also added a mutable JexlThreadedArithmetic. Fixes JEXL-83. Thanks to sebb. henrib
Fix Parsing error if i define a empty literal array/map. Fixes JEXL-108. Thanks to Cristian Lorenzetto. henrib
Fix Literals and parenthesized expressions can not be used as references. Fixes JEXL-107. henrib
Fix When divide two BigDecimal values in an expression it results in java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. Fixes JEXL-106. Thanks to Michal Sabol. henrib
Add Array literals are considered constant even when they are not. Fixes JEXL-105. Thanks to Cary Thompson. henrib
Fix NPE in JexlArithmetic when an Array-Expression containing a null is used. Fixes JEXL-104. Thanks to Andreas Haufler. henrib
Add Add "jexl2" as a supported name. Fixes JEXL-102. Thanks to sebb. henrib
Add Vararg methods where the first argument is no vararg can not be called with only the fixed parameters given. Fixes JEXL-101. Thanks to Tobias Shulte. henrib

Release 2.0.1 – 2010-03-28

Type Changes By
Add Array access expressions fail when evaluated twice and cache is enabled. Fixes JEXL-100. henrib
Add Documentation of Thread Safety / Invalid code examples on homepage. Fixes JEXL-99. Thanks to Marcel Schoen. henrib
Add Quote escaping cannot be escaped. Fixes JEXL-98. Thanks to Marcel Schoen. henrib

Release 2.0 – 2010-02-02

Type Changes By
Add Bean-ish & ant-ish like assignment. Fixes JEXL-27. Thanks to Weikuo Liaw. henrib
Add Ternary operator support. Fixes JEXL-19. Thanks to Jesse Glick. henrib
Add adding Perl-like regular-expression operators. Fixes JEXL-46. Thanks to Alfred Reibenschuh. henrib
Add Support for ${...} and #{...} expressions. Fixes JEXL-41. Thanks to Alejandro Torras. henrib
Add User definable functions. Fixes JEXL-15. Thanks to Paul Libbrecht. henrib
Add JSR-223 support. Fixes JEXL-63. sebb
Update Make possible checking for unresolved variables. Fixes JEXL-10. Thanks to Paul Libbrecht. henrib
Update Don"t make null convertible into anything. Fixes JEXL-11. Thanks to Paul Libbrecht. henrib
Fix Allow single-line comments with //. Fixes JEXL-47. Thanks to sebb. henrib
Fix Comments don"t allow double-quotes. Fixes JEXL-44. Thanks to sebb. henrib
Add Array literal syntax is not supported. Fixes JEXL-71. Thanks to sebb. henrib
Fix allowing quote escaping. Fixes JEXL-17. Thanks to Nestor Urquiza. dion
Fix Call method with varargs. Fixes JEXL-25. Thanks to Marek Lewczuk. dion
Fix BigDecimal values are treated as Long values which results in loss of precision. Fixes JEXL-32. Thanks to Kedar Dave. dion
Fix Remove unnecessary throws Exception from various classes. Fixes JEXL-33. dion
Fix Div operator does not do integer division. Fixes JEXL-50. Thanks to sebb. henrib
Fix Inconsistent behavior of arithmetical operations. Fixes JEXL-87. Thanks to sebb. henrib
Fix operator overloading / hooks on operator processing. Fixes JEXL-21. Thanks to AC. henrib
Add "new" operator support henrib
Add Support Unicode escapes in string literals henrib
Update Various performance enhancements & caches henrib

Release 1.1.1-SNAPSHOT – unreleased

Type Changes By
Update Fix jdk1.3 only code that has crept into JEXL tests. Fixes JEXL-23. dion
Update Allow unicode literals to be used. Fixes JEXL-22. Thanks to Randy H.. dion

Release 1.1 – 2006-09-10

Type Changes By
Fix Consistently throw ParseException in case of a parsing failure, not an Error. Fixes JEXL-17. Thanks to Kohsuke Kawaguchi. rahul
Fix Allow for static methods to be called on classes and not just objects. Fixes JEXL-3. Thanks to Guido Anzuoni. dion
Add Added Script and ScriptFactory to allow scripts to be executed from text, files or a URL. dion
Add Added implementation for bitwise operators: and, complement, or, xor. dion
Add Added implementation for the foreach statement. dion
Add Added implementation for the while statement. dion
Add Added implementation for block statements, e.g. curly braces containing multiple statements. dion
Add Added implementation for the if statement. dion
Fix Unary minus was only working for integer values. Fixes JEXL-6. dion
Update Add @since tags to code so we can track API additions via javadoc dion
Add Support assignment to variables. Fixes JEXL-4. Thanks to Barry Lagerweij. dion
Fix 'abc'.substring(0,1+1) is empty (method matching problem). Fixes JEXL-5. dion

Release 1.0 – 2004-09-07

Type Changes By
Fix Support ant-style properties dion

Release 1.0-RC1 – 2004-08-26

Type Changes By
Fix Fix string concatenation broken for variables Thanks to Geoff Waggott. dion
Fix Implement short circuit logic for boolean and/or. Fixes JEXL-12. dion
Add Handle any size() method that returns an int dion
Fix Can't issue .size() on java.util.Set. Fixes JEXL-9. dion