History of Changes
Version 2.2.7 (2014/02/06)
- developer: cbe type: update fixes: 73
- updated method invocation code to use Method.setAccessible() only if necessary.
- developer: cbe context: build type: add fixes: 79
- Catch SecurityException when accessing default el.properties.
Version 2.2.6 (2013/01/11)
- developer: cbe type: update thanks to: Oleg Varaksin, Arjan Tijms. fixes: 71
- For a single identifier method expression, if the identifier evaluates to another method expression, invoke that method expression. (The semantics for this case is not covered in the specification. See also this issue . This change was made to improve compatibility with other EL implementations.)
- developer: cbe context: build type: add thanks to: Adam Crume.
- Added OSGi bundle manifest entries for juel-api and juel-impl and declared de.odysseus.el.ExpressionFactoryImpl as an OSGi service.
Version 2.2.5 (2012/07/08)
- developer: cbe context: build type: update thanks to: Oleg Varaksin. fixes: 3521406
- Changed scope for dependency from juel-impl to juel-api to provided. Therefore, to include juel-api, users now need to explicitly add it as a dependency.
- developer: cbe context: code type: update
- Re-implemented Cache based on ConcurrentHashMap and ConcurrentLinkedQueue to improve performance in multi-threaded environments.
- developer: cbe context: code type: update thanks to: Martin Koci. fixes: 3529970
- Determine target type and coerce argument in ExpressionNode.setValue().
- developer: cbe context: code type: fix thanks to: Martin Koci. fixes: 834616
- Catch and re-throw IllegalArgumentException as ELException in BeanELResolver.setValue().
- developer: cbe context: code type: update
- Updated messages with keys error.coerce.type and error.coerce.value to include value that could not be coerced.
- developer: cbe context: code type: update
- Create HashMap in ELContext lazily.
- developer: cbe context: code type: update
- BeanELResolver now caches property access methods.
- developer: cbe context: code type: fix fixes: 3420591
- ELContext.getContext(key) and putContext(key, value) should throw NPE if key is null
Version 2.2.4 (2011/09/30)
- developer: cbe context: code type: add
- Added property javax.el.ignoreReturnType to ignore the expected return type passed to EpressionFactory.createMethodExpression() when looking up a method to invoke. (This option has no effect when evaluating literal method expressions, where the expected return type acts as coercion target type.)
Version 2.2.3 (2011/01/30)
- developer: cbe context: code type: update thanks to: Martin Koci. fixes: 3154206
- fixed: a method invocation node invoked via ValueExpression.getValue(...) should return null if its base (prefix) expression evaluates to null.
- developer: cbe context: build type: update
- Moved parent pom.xml from modules to project root to simplify maven release build.
Version 2.2.2 (2010/11/12)
- developer: cbe context: build type: update
- Updated POMs to sync JUEL releases to maven central via Sonatype's repository hosting service.
- developer: cbe context: code type: update fixes: 3104608
- fixed: MethodExpression.invoke(...) should ignore passed parameter types if arguments are specified in the expression as in ${foo.bar(123)}.
- developer: cbe context: code type: update fixes: 3095122
- Improved method lookup in method expressions (when calling MethodExpression.invoke(...), Method.setAccessible(true) is used if necessary).
- developer: cbe context: code type: update
- Changed implementation of ASTProperty.getValueReference() to throw an exception if base expression evaluates to null. Updated documentation of ValueExpression.getValueReference() accordingly.
Version 2.2.1 (2009/12/13)
- developer: cbe context: code type: add
- Added MethodExpression.isParametersProvided(). This method was added silently to the API (wasn't mentioned anywhere prior to the final release of EE6) and forces this release...
- developer: cbe context: build type: update
- Added OSGi attributes to manifest files of juel-api-2.2.x.jar, juel-impl-2.2.x.jar and juel-spi-2.2.x.jar. E.g. the latter two can now be added as OSGi modules to glassfish v3.
- developer: cbe context: code type: add
- Added SimpleResolver.setELResolver(ELResolver).
- developer: cbe context: code type: update
- Removed static field BeanELResolver.DEFAULT_FACTORY. Lazily get a factory for type conversions when needed to coerce method parameters instead.
Version 2.2.0 (2009/12/01)
- developer: cbe context: code type: update
- Improved implementation of type conversions in de.odysseus.el.misc.TypeConverterImpl.
- developer: cbe context: code type: add
- Added some more unit tests.
Version 2.2.0-rc3 (2009/11/08)
- developer: cbe context: code type: update
- If no properties are available in JUEL's expression factory (neither passed in nor from el.properties), use system properties if System.getProperty("javax.el.ExpressionFactory") points to JUEL.
- developer: cbe context: admin type: update
- Split code base into modules modules/api, modules/impl and modules/spi; added maven build for these.
- developer: cbe context: build type: add
- Separated the JAR service provider (META-INF/services/javax.el.ExpressionFactory) into its own juel-spi-2.2.x.jar. This allows to have juel-impl-2.2.x.jar on your classpath without forcing JUEL to be used by ExpressionFactory.newInstance().
- developer: cbe context: code type: add
- Added ExpressionFactoryImpl.Profile enum type and several new constructors to easily choose between JEE5 and JEE6 (default) behavior.
- developer: cbe context: docs type: update
- Updated documentation for 2.2.
Version 2.1.3/2.2.0-rc2 (2009/10/09)
- developer: cbe context: code type: add
- Added ExpressionFactoryImpl(TreeStore store, TypeConverter converter) constructor.
- developer: cbe context: code type: fix thanks to: Pavel Vojtechovsky. fixes: 2871773
- Fixed: ListELResolver.getValue(...) should return null when index is out of range.
- developer: cbe context: code type: fix thanks to: Pavel Vojtechovsky. fixes: 2871795
- Fixed: second operand is always evaluated in and/or operations (e.g. ${true or false}).
- developer: cbe context: code type: fix fixes: 2822943
- Fixed: BeanELResolver should use Method.setAccessible(true).
- developer: cbe context: docs type: update
- Updated copyright notes.
Version 2.2.0-rc1 (2009/08/09)
- developer: cbe context: code type: add
- Implemented changes from JSR 245, maintenance release 2. This replaces JUELs proprietary API for method invocations. The BeanELResolver class now provides a generic default for method invocations using reflection. Method invocations are disabled/enabled via the javax.el.methodInvocations property.
Version 2.1.2 (2009/04/26)
- developer: cbe context: code type: fix thanks to: Gerhard Petracek. fixes: 2748538
- Fixed: for a single identifier expression ${foo}, ValueExpression.setValue(...) always calls ELContext.setValue(...), even if foo is bound to a variable.
- developer: cbe context: build type: update
- Renamed API/impl jars to juel-api-<version>.jar and juel-impl-<version>.jar to reflect maven artifact names juel-api and juel-impl.
Version 2.1.1 (2009/03/21)
- developer: cbe context: code type: add
- Added support for bracket operator in method invocations (e.g. ${foo[bar](baz)}).
- developer: cbe context: code type: add
- Added implementation of javax.el api classes.
- developer: cbe context: build type: update thanks to: Wolfgang Häfelinger.
- Updated pom.xml to package the following jar files: juel-<version>.jar, juel-<version>-api.jar and juel-<version>-impl.jar.
- developer: cbe context: code type: fix thanks to: Adam Winer. fixes: 2590830
- Fixed: SimpleContext.getVariableMapper() returns null
- developer: cbe context: code type: add
- Experimental support for syntax extensions.
- developer: cbe context: build type: update
- Reorganized project structure to meet maven's standard layout.
- developer: cbe context: code type: update
- Improved method invocation support by passing de.odysseus.el.misc.MethodInvocation as property to ELResolver.getValue(..., Object property).
- developer: cbe context: code type: add
- Added support for varargs.
- developer: cbe context: code type: add
- Introduce TypeConverter to allow for customized coercion rules.
- developer: cbe context: code type: remove
- Removed old TypeConversions (use TypeConverter.DEFAULT).
- developer: cbe context: docs type: update
- Update to fop-0.95-beta and forrester-0.3.3.
- developer: cbe context: admin type: update
- Moved to SVN.
Version 2.1.0 (2007/03/06)
- developer: cbe context: code type: update
- Use StringBuilder instead of StringBuffer (performance).
- developer: cbe context: code type: update
- Update API sources from glassfish.
Version 2.1.0-rc3 (2006/10/20)
- developer: cbe context: code type: fix thanks to: Frédéric Esnault.
- ListELResolver was missing in SimpleResolver's default chain of resolver delegates.
- developer: cbe context: code type: update
- Update API sources from glassfish.
- developer: cbe context: code type: update
- Minor performance improvements in type conversions and number operations.
Version 2.1.0-rc2 (2006/10/06)
- developer: cbe context: code type: update
- Relaxed matching of return type for nonliteral MethodExpression's. The actual method return type is checked be assignable to the expression's expected return type.
- developer: cbe context: code type: add
- Let ExpressionFactory's default constructor read properties from el.properties.
- developer: cbe context: admin type: update
- Updated API classes to include new API methods ExpressionFactory.newInstance() and ExpressionFactory.newInstance(java.util.Properties).
- developer: cbe context: build type: add
- Package Jars with META-INF/services/javax.el.ExpressionFactory to register JUEL as EL service provider.
- developer: cbe context: code type: add
- Added Builder.Feature.NULL_PROPERTIES to resolve ${map[null]}.
- developer: cbe context: code type: update
- Generified TypeConversions.coerceToEnum(...) and TypeConversions.coerceToEnum(...).
- developer: cbe context: code type: fix
- Coerce null function parameters whose type is primitive.
- developer: cbe context: code type: update
- Minor scanner cleanup.
- developer: cbe context: code type: update
- Increased default cache size to 1000.
- developer: cbe context: code type: update
- ExpressionFactoryImpl no longer final to allow customization by subclassing. E.g. using JUEL with JSF requires calling a default constructor.
Version 2.1.0-rc1 (2006/07/18)
- developer: cbe context: code type: add
- Added support for method invocations as in ${foo.bar(1)} (disabled by default).
- developer: cbe context: code type: fix
- Reject identifier instanceof.
- developer: cbe context: docs type: add
- Added "Advanced Topics" section.
- developer: cbe context: code type: remove
- Removed support for system property de.odysseus.el.factory.builder.
- developer: cbe context: design type: update
- Moved default tree cache implementation to package de.odysseus.el.tree.impl.
- developer: cbe context: design type: update
- Moved node implementation classes to package de.odysseus.el.tree.impl.ast.
- developer: cbe context: code type: remove
- Removed deprecated methods from SimpleResolver.
- developer: cbe context: code type: update
- Do not coerce null function parameters.
- developer: cbe context: code type: update
- Minor improvemnents in BooleanOperations and TypeConversions.
- developer: cbe context: code type: update
- Replaced JFlex scanner by handcoded scanner.
- developer: cbe context: code type: update
- Lazy initialize parser's lookahead token list.
Version 2.1.0-b2 (2006/07/01)
- developer: cbe context: docs type: add
- Added specification issues on number literals.
- developer: cbe context: code type: remove
- Finally removed the old JavaCC parser.
- developer: cbe context: docs type: add
- Added some more Javadocs.
- developer: cbe context: code type: fix
- Avoid NumberFormatException when parsing integer/floating point literals.
- developer: cbe context: code type: remove
- Removed staticTreeBuilder.DEFAULT constant.
- developer: cbe context: code type: fix
- Take builder and expected type into account when comparing tree expressions.
Version 2.1.0-b1 (2006/06/18)
- developer: cbe context: docs type: add
- Added documentation (HTML and PDF).
- developer: cbe context: code type: add
- Added TreeValueExpression.isLeftValue().
- developer: cbe context: code type: remove
- Removed ExpressionNode.isLiteralValue().
- developer: cbe context: build type: add
- Added more jar manifest attributes.
- developer: cbe context: build type: update
- Let javac include line and source debug information.
- developer: cbe context: code type: add
- Added secondary cache (WeakHashMap) to TreeCache.Default.
- developer: cbe context: code type: update
- Lazy initialize SimpleContext.ELResolver.
- developer: cbe context: code type: add
- Configure default builder class via system property de.odysseus.el.factory.builder.
- developer: cbe context: code type: update
- Added @Override annotations.
- developer: cbe context: code type: add
- Added SAX XML filter sample.
- developer: cbe context: code type: update
- Simplified SimpleResolver (now only handles top-level properties) .
- developer: cbe context: code type: update
- Deprecated SimpleContext.setValue(...) and SimpleContext.setFunctions(...). These methods will be removed in 2.1.0.
- developer: cbe context: code type: update
- Lots of minor refactorings.
Version 2.1.0-a3 (2006/06/04)
- developer: cbe context: code type: fix
- Re-throw NumberFormatException in number coercion as ELException.
- developer: cbe context: code type: fix
- Expected type now mandatory for value expressions.
- developer: cbe context: docs type: add
- Added SourceForge logo to JUEL home page.
- developer: cbe context: code type: add
- Added a calculator sample.
- developer: cbe context: code type: update
- Now use a new hand crafted top-down parser and a JFlex generated scanner. This almost doubles parsing performance!
- developer: cbe context: code type: update
- Moved the Javacc parser to package de.odysseus.el.tree.impl.javacc. By default, it is excluded from the JUEL jar file.
Version 2.1.0-a2 (2006/06/01)
- developer: cbe context: code type: update
- Include EL api sources from glassfish now (the tomcat6 code was too buggy). The sources are available under Sun's CDDL and are redistributed here. Also added a note on that in the README.txt file.
- developer: cbe context: code type: update
- Use pure Javacc parser. We no longer use the JJTree preprocessor. The AST classes are now Javacc independent and could easily be reused with other parser generators.
- developer: cbe context: code type: update
- Improved unit tests
- developer: cbe context: docs type: add
- Added some documentation
- developer: cbe context: code type: update
- Improved parse exception formatting
Version 2.1.0-a1 (2006/05/13)
- developer: cbe context: admin type: add
- Initial Release