This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new a92a7a1d53 Additional changes to support the length property via
ArrayELResolver
a92a7a1d53 is described below
commit a92a7a1d53bef0270c9ab96f42f8d424cd884117
Author: Mark Thomas <[email protected]>
AuthorDate: Mon Jan 15 17:58:31 2024 +0000
Additional changes to support the length property via ArrayELResolver
Fixes some TCK failures (or at least it will once I get the new tests
added to the TCK).
---
java/jakarta/el/ArrayELResolver.java | 15 +++++++++++++++
webapps/docs/changelog.xml | 10 +++++++++-
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/java/jakarta/el/ArrayELResolver.java
b/java/jakarta/el/ArrayELResolver.java
index 88176320ed..0f2b77ce5f 100644
--- a/java/jakarta/el/ArrayELResolver.java
+++ b/java/jakarta/el/ArrayELResolver.java
@@ -50,6 +50,12 @@ public class ArrayELResolver extends ELResolver {
if (base != null && base.getClass().isArray()) {
context.setPropertyResolved(base, property);
+
+ if (LENGTH_PROPERTY_NAME.equals(property)) {
+ // Always read-only
+ return null;
+ }
+
try {
int idx = coerce(property);
checkBounds(base, idx);
@@ -95,6 +101,11 @@ public class ArrayELResolver extends ELResolver {
if (base != null && base.getClass().isArray()) {
context.setPropertyResolved(base, property);
+ if (LENGTH_PROPERTY_NAME.equals(property)) {
+ throw new PropertyNotWritableException(
+ Util.message(context, "propertyNotWritable",
base.getClass().getName(), property));
+ }
+
if (this.readOnly) {
throw new PropertyNotWritableException(
Util.message(context, "resolverNotWritable",
base.getClass().getName()));
@@ -116,6 +127,10 @@ public class ArrayELResolver extends ELResolver {
if (base != null && base.getClass().isArray()) {
context.setPropertyResolved(base, property);
+ if (LENGTH_PROPERTY_NAME.equals(property)) {
+ // Always read-only
+ return true;
+ }
try {
int idx = coerce(property);
checkBounds(base, idx);
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index aa7fce0034..fbda5cdec1 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -139,6 +139,14 @@
</fix>
</changelog>
</subsection>
+ <subsection name="Jasper">
+ <changelog>
+ <fix>
+ Additional fixes to correctly support <code>length</code> as a
read-only
+ property of an array via the <code>ArrayELResolver</code>. (markt)
+ </fix>
+ </changelog>
+ </subsection>
</section>
<section name="Tomcat 11.0.0-M16 (markt)" rtext="2024-01-09">
<subsection name="Catalina">
@@ -1269,7 +1277,7 @@
<add>
Align the EL implementation with the latest changes to the Jakarta EL
specification and add support for the length attribute to the
- <code>ArrayElResolver</code>. (markt)
+ <code>ArrayELResolver</code>. (markt)
</add>
</changelog>
</subsection>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]