Mark,

Would it be worth adding conditional logic to 11.0.x and later depending upon the runtime version of Java?

-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]

Reply via email to