On 20/05/2026 21:00, Christopher Schultz wrote:
Mark,
On 5/20/26 3:47 PM, Mark Thomas wrote:
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.
Oh right I forgot about EL being somewhat segregated.
I'm leaning towards it not being worth it unless someone complains
about the performance.
+1
Does that workaround just do "more work" on Java 21 and not accomplish
anyting, or might it actually result in wrong behavior?
It just does unnecessary work.
Your email made me remember something I'd been thinking about for
JreCompat stuff a while ago. I think there is a simple solution to this
case.
/me goes and does a little coding
Yes. That works. Commit to follow shortly. Thanks for the prompt.
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]
---------------------------------------------------------------------
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]