From aef474a797c8164b9b603ab4ee4f0d9c57c55355 Mon Sep 17 00:00:00 2001 From: Mark Thomas Date: Fri, 28 Feb 2020 20:52:17 +0000 Subject: [PATCH] Simplify changelog --- spec/src/main/asciidoc/ELSpec.adoc | 256 +---------------------------- 1 file changed, 3 insertions(+), 253 deletions(-) diff --git a/spec/src/main/asciidoc/ELSpec.adoc b/spec/src/main/asciidoc/ELSpec.adoc index 9c61a51..d167da7 100644 --- a/spec/src/main/asciidoc/ELSpec.adoc +++ b/spec/src/main/asciidoc/ELSpec.adoc @@ -2929,257 +2929,7 @@ empty. This appendix lists the changes in the EL specification. This appendix is non-normative. -=== Changes between 4.0 and 3.0 Final Release +=== Changes between 4.0 and JSR 341 -* Update specification document for move to Jakarta EE. - -* Convert from `javax.\*` to `jakarta.*`. - - - -=== Changes between 3.0 Final Release and Proposed Final Draft - -* Added link:ELSpec.html#a173[Invoking method expressions]. - -* Added link:ELSpec.html#a1355[count]. - - - -=== Changes between 3.0 Proposed Final Draft and 3.0 EDR - -* Complete rewrite of Chapter 2, to align with -Java SE 8 libraries. - -* Replace `+` and `cat` with `+=` as the String concatenation operator. - -* Removed `T(...)` syntax as a type specifier. - - - -=== New in 3.0 EDR - -* Removed API from the specification document, -since they are included in the javadocs. - -* Added link:ELSpec.html#a1063[ -Operations on Collection Objects]. - -* Added -link:ELSpec.html#a265[String -Concatenation Operator - A += B]. - -* Added link:ELSpec.html#a337[Assignment Operator - A = B]. - -* Added link:ELSpec.html#a350[Semicolon Operator - A ; B]. - -* Added link:ELSpec.html#a398[Lambda Expressions]. - -* Added link:ELSpec.html#a421[Static -Field and Method Reference]. - -* Added `T` and `cat` to link:ELSpec.html#a380[Reserved Words]. - -* Modified link:ELSpec.html#a356[Operator Precedence]. - -* Modified coercion rule from nulls to non-primitive types. - -* Many changes to the javadoc API. - - - -=== Incompatibilities between EL 3.0 and EL 2.2 - -EL 3.0 introduces many new features, and -although we take care to keep it backward compatible, there are a few -areas that cannot be made backward compatible, either because the new -features requires it, or because the feature in EL 2.2 is a bug that -needs to be fixed. An implementation can provide an option to revert to -the 2.2 behavior, if desired. - -* The default coercion for ``null``s to non-primitive -types (except `String`) returns ``null``s. For instance, a `null` coerced -to `Boolean` now returns a `null`, while a `null` coerced to `boolean` -returns `false`. - - - -=== Changes between Maintenance 1 and Maintenance Release 2 - -* The main change in this release is the addition -of method invocations with parameters in the EL, such as -`#{trader.buy(“JAVA”)}`. - -* Added one method in `javax.el.ELResolver`: + -`Object invoke(ELContext context, Object base, -Object method, Class[] paramTypes, Object[] params)`. - -* Added one method in `javax.el.BeanELResolver`: + -`Object invoke(ELContext context, Object base, -Object method, Class[] paramTypes, Object[] params)`. - -* Added one method in `javax.el.CompositeELResolver`: + -`Object invoke(ELContext context, Object base, -Object method, Class[] paramTypes, Object[] params)`. - -* Section 1.1.1. Added to the first paragraph: + -Simlarly, `.` operator can also be used to invoke -methods, when the method name is known, but the `[]` operator can be used -to invoke methods dynamically - -* Section 1.2.1. Change the last part of the last -paragraph from: + -Upon evaluation, the EL API verifies that the -method conforms to the expected signature provided at parse time. There -is therefore no coercion performed. + -to: + -Upon evaluation, if the expected signature is -provided at parse time, the EL API verifies that the method conforms to -the expected signature, and there is therefore no coercion performed. If -the expected signature is not provided at parse time, then at -evaluation, the method is identified with the information of the -parameters in the expression and the parameters are coerced to the -respective formal types. - -* Section 1.6 - -** Added syntax for method invocation with -parameters. - -** The steps for evaluation of the expression was -modified to handle the method invocations with parameters. - -* Section 1.19 + -Production of ValueSuffix includes the optional -parameters. - - - -=== Changes between 1.0 Final Release and Maintenance Release 1 - -Added two methods in `javax.el.ExpressionFactory`: - -* `newInstance()` - -* `newInstance(Properties)` - - - -=== Changes between Final Release and Proposed Final Draft 2 - -* Added support for enumerated data types. - -* Coercions and comparisons were updated to include enumerated type types. - - -=== Changes between Public Review and Proposed Final Draft - -* New constructor for derived exception classes + -Exception classes that extend -`ELException(PropertyNotFoundException, PropertyNotWritableException, MethodNotFoundException)` -did not have a constructor with both -`message` and `rootCause` as arguments (as it exists in -`ELException`). The constructor has been added to these classes. - -* `javax.el.ELContext` API changes - -** removed the `ELContext` constructor + -`protected ELContext(javax.el.ELResolver resolver)` - -** added the following abstract method in `ELContext` + -`public abstract javax.el.ELResolver getELResolver();` - -* Section 1.8.1 - A {<,>,<=,>=,lt,gt,le,ge} B + -If the first condition `(A==B)` is `false`, simply -fall through to the next step (do not return `false`). - -* `javax.el.ResourceBundleELResolver` + -New `ELResolver` class added to support easy -access to localized messages. - -* Generics + -Since JSP 2.1 requires J2SE 5.0, we’ve modified -the APIs that can take advantage of generics. These include: -`ExpressionFactory:createValueExpression()`, -`ExpressionFactory:createMethodExpression()`, -`ExpressionFactory:coerceToType()`, `ELResolver:getType()`, -`ELResolver:getCommonPropertyType()`, `MethodInfo:MethodInfo()`, -`MethodInfo.getReturnType()`, `MethodInfo:getParamTypes()` - - - -=== Changes between Early Draft Release and Public Review - -* New concept: EL Variables + -The EL now supports the concept of EL Variables -to properly support code structures such as where a nested -action accesses a deferred expression that includes a reference to an -iteration variable. + -At a few locations in the spec, the term -"variable" has been replaced with "model object" to avoid confusion -between model objects and the newly introduced EL variables. + -Added new section “Variables” after section -1.15 to introduce the concept of EL Variables. + -Resulting API changes are: - -** `The javax.el` package description describes -the motivation behind EL variables. - -** `ElContext` has two additional methods to -provide access to `FunctionMapper` and `VariableMapper` . - -** `ExpressionFactory` creation methods now take -an `ELContext` parameter. `FunctionMapper` has been removed as a -parameter to these methods. - -** Added new class `VariableMapper` - - -* EL in a nutshell (section 1.1.1)+ -Added a paragraph commenting on the flexibility -of the EL, thanks to its pluggable API for the resolution of model -objects, functions, and variables. - -* `javax.el.ELException` - -** `ElException` now extends `RuntimeException` -instead of `Exception` . - -** Method `getRootCause()` has been removed in -favor of `Throwable.getCause().` - -* `javax.el.ExpressionFactory` - -** Creation methods now use `ELContext` instead -of `FunctionMapper` (see EL Variables above). - -** Added method `coerceToType()`. - -* `javax.el.MethodExpression` - -** `invoke()` must unwrap an -`InvocationTargetExceptions` before re-throwing as an `ELException` . - -* Section 1.6 - Operators `[]` and `.` + - `PropertyNotFoundException` is now thrown -instead of `NullPointerException` when this is the last property being -resolved and we’re dealing with an lvalue that is null. - -* Section 1.13 - Operator Precedence + -Clarified the fact that qualified functions -with a namespace prefix have precedence over the operators. - -* Faces Action Attribute and MethodExpression + -In Faces, the `action` attribute accepts both a -String literal or a `MethodExpression` . When migrating to JSF 1.2, if -the attribute's type is set as `MethodExpression`, an error would be -reported if a String literal is specified because a String literal -cannot evaluate to a valid `javax.el.MethodExpression`. + -To solve this issue, the specification of -MethodExpression has been expanded to also support String -literal-expressions. Changes have been made to: - -** Section 1.2.2 - -** `ExpressionFactory.createMethodExpression()` - -** `javax.el.MethodExpression:invoke()` +* The API has moved from the `javax.el` package to the `jakarta.el` + package.