This is an automated email from the ASF dual-hosted git repository.

markt-asf pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new 3f8761a0f3 Follow up to "Use an instanceof check when instantiating 
..."
3f8761a0f3 is described below

commit 3f8761a0f3df65c695e91678487e497a4bb0f460
Author: Mark Thomas <[email protected]>
AuthorDate: Thu Oct 1 16:53:26 2026 +0100

    Follow up to "Use an instanceof check when instantiating ..."
    
    - Simplify
    - Add missing checks for other, similar code
---
 java/javax/el/ExpressionFactory.java                           |  2 +-
 java/org/apache/catalina/authenticator/AuthenticatorBase.java  |  2 +-
 .../catalina/authenticator/jaspic/AuthConfigFactoryImpl.java   |  2 +-
 .../catalina/authenticator/jaspic/SimpleServerAuthConfig.java  |  7 ++++---
 java/org/apache/catalina/filters/CsrfPreventionFilterBase.java | 10 ++--------
 java/org/apache/catalina/filters/RateLimitFilter.java          |  9 ++-------
 java/org/apache/catalina/realm/JAASMemoryLoginModule.java      |  2 +-
 java/org/apache/catalina/realm/RealmBase.java                  |  2 +-
 java/org/apache/catalina/startup/Tomcat.java                   |  5 +++--
 java/org/apache/jasper/JspCompilationContext.java              |  2 +-
 10 files changed, 17 insertions(+), 26 deletions(-)

diff --git a/java/javax/el/ExpressionFactory.java 
b/java/javax/el/ExpressionFactory.java
index f2aac0cc88..de5187b1d7 100644
--- a/java/javax/el/ExpressionFactory.java
+++ b/java/javax/el/ExpressionFactory.java
@@ -161,7 +161,7 @@ public abstract class ExpressionFactory {
             Throwable cause = e.getCause();
             Util.handleThrowable(cause);
             throw new ELException(Util.message(null, 
"expressionFactory.cannotCreate", clazz.getName()), e);
-        } catch (ReflectiveOperationException | IllegalArgumentException e) {
+        } catch (ReflectiveOperationException | IllegalArgumentException | 
ClassCastException e) {
             throw new ELException(Util.message(null, 
"expressionFactory.cannotCreate", clazz.getName()), e);
         }
 
diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java 
b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
index 514678d83b..3c14fec87a 100644
--- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
+++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
@@ -1491,7 +1491,7 @@ public abstract class AuthenticatorBase extends ValveBase 
implements Authenticat
                 clazz = Class.forName(jaspicCallbackHandlerClass);
             }
             callbackHandler = (CallbackHandler) 
clazz.getConstructor().newInstance();
-        } catch (ReflectiveOperationException e) {
+        } catch (ReflectiveOperationException | ClassCastException e) {
             throw new SecurityException(e);
         }
 
diff --git 
a/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java 
b/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
index aff2e72874..c6a667f30c 100644
--- a/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
+++ b/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
@@ -179,7 +179,7 @@ public class AuthConfigFactoryImpl extends 
AuthConfigFactory {
             }
             Constructor<?> constructor = clazz.getConstructor(Map.class, 
AuthConfigFactory.class);
             provider = (AuthConfigProvider) 
constructor.newInstance(properties, null);
-        } catch (ReflectiveOperationException | IllegalArgumentException e) {
+        } catch (ReflectiveOperationException | IllegalArgumentException | 
ClassCastException e) {
             throw new SecurityException(e);
         }
         return provider;
diff --git 
a/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java 
b/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
index 28d165e5fa..266590a39b 100644
--- a/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
+++ b/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
@@ -143,18 +143,19 @@ public class SimpleServerAuthConfig implements 
ServerAuthConfig {
                         try {
                             Class<?> clazz = null;
                             try {
-                                clazz = Class.forName((String) 
moduleClassName, true,
+                                clazz = Class.forName(moduleClassName, true,
                                         
Thread.currentThread().getContextClassLoader());
                             } catch (ClassNotFoundException ignore) {
                                 // Ignore so the re-try below can proceed
                             }
                             if (clazz == null) {
-                                clazz = Class.forName((String) 
moduleClassName);
+                                clazz = Class.forName(moduleClassName);
                             }
                             ServerAuthModule module = (ServerAuthModule) 
clazz.getConstructor().newInstance();
                             module.initialize(null, null, handler, 
mergedProperties);
                             modules.add(module);
-                        } catch (ReflectiveOperationException | 
IllegalArgumentException | SecurityException e) {
+                        } catch (ReflectiveOperationException | 
IllegalArgumentException | SecurityException |
+                                ClassCastException e) {
                             AuthException ae = new AuthException();
                             ae.initCause(e);
                             throw ae;
diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java 
b/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
index 17fdd6ccba..90ee1b9e9a 100644
--- a/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
+++ b/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
@@ -87,14 +87,8 @@ public abstract class CsrfPreventionFilterBase extends 
FilterBase {
         super.init(filterConfig);
 
         try {
-            Class<?> clazz = Class.forName(randomClass);
-            Object instance = clazz.getConstructor().newInstance();
-            if (instance instanceof Random) {
-                randomSource = (Random) instance;
-            } else {
-                throw new 
ServletException(sm.getString("csrfPrevention.invalidRandomClass", 
randomClass));
-            }
-        } catch (ReflectiveOperationException e) {
+            randomSource = (Random) 
Class.forName(randomClass).getConstructor().newInstance();
+        } catch (ReflectiveOperationException | ClassCastException e) {
             throw new 
ServletException(sm.getString("csrfPrevention.invalidRandomClass", 
randomClass), e);
         }
     }
diff --git a/java/org/apache/catalina/filters/RateLimitFilter.java 
b/java/org/apache/catalina/filters/RateLimitFilter.java
index d1dfd2b6ee..d24de66a23 100644
--- a/java/org/apache/catalina/filters/RateLimitFilter.java
+++ b/java/org/apache/catalina/filters/RateLimitFilter.java
@@ -254,13 +254,8 @@ public class RateLimitFilter extends FilterBase {
         super.init(filterConfig);
 
         try {
-            Object instance = 
Class.forName(rateLimitClassName).getConstructor().newInstance();
-            if (instance instanceof RateLimiter) {
-                rateLimiter = (RateLimiter) instance;
-            } else {
-                throw new 
ServletException(sm.getString("rateLimitFilter.classNotFound", 
rateLimitClassName));
-            }
-        } catch (ReflectiveOperationException e) {
+            rateLimiter = (RateLimiter) 
Class.forName(rateLimitClassName).getConstructor().newInstance();
+        } catch (ReflectiveOperationException | ClassCastException e) {
             throw new 
ServletException(sm.getString("rateLimitFilter.classNotFound", 
rateLimitClassName), e);
         }
 
diff --git a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java 
b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
index 136f19e9f5..57ece9f304 100644
--- a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
+++ b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
@@ -213,7 +213,7 @@ public class JAASMemoryLoginModule extends MemoryRealm 
implements LoginModule {
             try {
                 Class<?> clazz = Class.forName((String) option);
                 credentialHandler = (CredentialHandler) 
clazz.getConstructor().newInstance();
-            } catch (ReflectiveOperationException e) {
+            } catch (ReflectiveOperationException | ClassCastException e) {
                 throw new IllegalArgumentException(e);
             }
         }
diff --git a/java/org/apache/catalina/realm/RealmBase.java 
b/java/org/apache/catalina/realm/RealmBase.java
index 072eda533f..8a962dc896 100644
--- a/java/org/apache/catalina/realm/RealmBase.java
+++ b/java/org/apache/catalina/realm/RealmBase.java
@@ -1497,7 +1497,7 @@ public abstract class RealmBase extends 
LifecycleMBeanBase implements Realm {
                 Class<?> clazz = Class.forName(handlerClassName);
                 handler = (DigestCredentialHandlerBase) 
clazz.getConstructor().newInstance();
                 IntrospectionUtils.setProperty(handler, "algorithm", 
algorithm);
-            } catch (ReflectiveOperationException e) {
+            } catch (ReflectiveOperationException | ClassCastException e) {
                 throw new RuntimeException(e);
             }
         }
diff --git a/java/org/apache/catalina/startup/Tomcat.java 
b/java/org/apache/catalina/startup/Tomcat.java
index 3e59fbada6..570355af85 100644
--- a/java/org/apache/catalina/startup/Tomcat.java
+++ b/java/org/apache/catalina/startup/Tomcat.java
@@ -695,7 +695,7 @@ public class Tomcat {
         try {
             Class<?> clazz = Class.forName((host != null ? host : 
getHost()).getConfigClass());
             listener = (LifecycleListener) 
clazz.getConstructor().newInstance();
-        } catch (ReflectiveOperationException e) {
+        } catch (ReflectiveOperationException | ClassCastException e) {
             // Wrap in IAE since we can't easily change the method signature
             // to throw the specific checked exceptions
             throw new IllegalArgumentException(e);
@@ -980,7 +980,8 @@ public class Tomcat {
                 return (Context) 
Class.forName(contextClass).getConstructor().newInstance();
             }
 
-        } catch (ReflectiveOperationException | IllegalArgumentException | 
SecurityException e) {
+        } catch (ReflectiveOperationException | IllegalArgumentException | 
SecurityException |
+                ClassCastException e) {
             throw new 
IllegalArgumentException(sm.getString("tomcat.noContextClass", contextClass, 
host, url), e);
         }
     }
diff --git a/java/org/apache/jasper/JspCompilationContext.java 
b/java/org/apache/jasper/JspCompilationContext.java
index 110a35c825..334baff24b 100644
--- a/java/org/apache/jasper/JspCompilationContext.java
+++ b/java/org/apache/jasper/JspCompilationContext.java
@@ -276,7 +276,7 @@ public class JspCompilationContext {
             if (log.isDebugEnabled()) {
                 log.debug(Localizer.getMessage("jsp.error.compiler"), e);
             }
-        } catch (ReflectiveOperationException e) {
+        } catch (ReflectiveOperationException | ClassCastException e) {
             log.warn(Localizer.getMessage("jsp.error.compiler"), e);
         }
         return compiler;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to