On 20/05/2026 20:36, Christopher Schultz wrote:
Mark,
Would it be worth adding conditional logic to 11.0.x and later depending
upon the runtime version of Java?
I'm not sure. It would mean some form of JreCompat being added to the EL
code. I'm leaning towards it not being worth it unless someone complains
about the performance.
Mark
-chris
On 5/20/26 4:44 AM, [email protected] wrote:
This is an automated email from the ASF dual-hosted git repository.
markt-asf 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 115bfeb411 Remove pre-Java 21 workaround
115bfeb411 is described below
commit 115bfeb4116f328938162e333b01b7671edc664e
Author: Mark Thomas <[email protected]>
AuthorDate: Wed May 20 09:44:22 2026 +0100
Remove pre-Java 21 workaround
Minimum Java version is 21 for Jakarta EE 12 / Tomcat 12
---
java/jakarta/el/BeanSupportFull.java | 25 -------------------------
1 file changed, 25 deletions(-)
diff --git a/java/jakarta/el/BeanSupportFull.java b/java/jakarta/el/
BeanSupportFull.java
index ac35a3b1ff..2311f8ca23 100644
--- a/java/jakarta/el/BeanSupportFull.java
+++ b/java/jakarta/el/BeanSupportFull.java
@@ -42,35 +42,10 @@ class BeanSupportFull extends BeanSupport {
for (PropertyDescriptor pd : pds) {
this.properties.put(pd.getName(), new
BeanPropertyFull(type, pd));
}
- /*
- * https://bugs.openjdk.org/browse/JDK-8071693 -
Introspector ignores default interface methods.
- *
- * This bug is fixed in Java 21 b21. This workaround
can be removed once the minimum Java version is 21.
- * Populating from any interfaces causes default
methods to be included.
- */
- populateFromInterfaces(type);
} catch (IntrospectionException ie) {
throw new ELException(ie);
}
}
-
- private void populateFromInterfaces(Class<?> aClass) throws
IntrospectionException {
- Class<?>[] interfaces = aClass.getInterfaces();
- for (Class<?> ifs : interfaces) {
- BeanInfo info = Introspector.getBeanInfo(ifs);
- PropertyDescriptor[] pds =
info.getPropertyDescriptors();
- for (PropertyDescriptor pd : pds) {
- if (!this.properties.containsKey(pd.getName())) {
- this.properties.put(pd.getName(), new
BeanPropertyFull(this.type, pd));
- }
- }
- populateFromInterfaces(ifs);
- }
- Class<?> superclass = aClass.getSuperclass();
- if (superclass != null) {
- populateFromInterfaces(superclass);
- }
- }
}
static final class BeanPropertyFull extends BeanProperty {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]