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 16046e3b36 Follow up to "Use an instanceof check when instantiating
..."
16046e3b36 is described below
commit 16046e3b3634246952732c77467599536d2f71bf
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/jakarta/el/ExpressionFactory.java | 2 +-
.../security/auth/message/config/AuthConfigFactory.java | 2 +-
java/org/apache/catalina/authenticator/AuthenticatorBase.java | 2 +-
.../catalina/authenticator/jaspic/AuthConfigFactoryImpl.java | 2 +-
.../catalina/authenticator/jaspic/SimpleServerAuthConfig.java | 3 ++-
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/catalina/valves/FilterValve.java | 3 ++-
java/org/apache/jasper/JspCompilationContext.java | 2 +-
12 files changed, 18 insertions(+), 26 deletions(-)
diff --git a/java/jakarta/el/ExpressionFactory.java
b/java/jakarta/el/ExpressionFactory.java
index e327f7338b..65fe056ad6 100644
--- a/java/jakarta/el/ExpressionFactory.java
+++ b/java/jakarta/el/ExpressionFactory.java
@@ -160,7 +160,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/jakarta/security/auth/message/config/AuthConfigFactory.java
b/java/jakarta/security/auth/message/config/AuthConfigFactory.java
index f8b740fde2..d35861e3ef 100644
--- a/java/jakarta/security/auth/message/config/AuthConfigFactory.java
+++ b/java/jakarta/security/auth/message/config/AuthConfigFactory.java
@@ -71,7 +71,7 @@ public abstract class AuthConfigFactory {
Class<?> clazz = Class.forName(className);
factory = (AuthConfigFactory)
clazz.getConstructor().newInstance();
}
- } catch (ReflectiveOperationException e) {
+ } catch (ReflectiveOperationException | ClassCastException e) {
Throwable cause = e.getCause() == null ? e : e.getCause();
throw new RuntimeException("AuthConfigFactory error:" +
cause.getMessage(), cause);
}
diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
index f376a49fce..026a376d4b 100644
--- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
+++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
@@ -1497,7 +1497,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 9563d5d9fa..b78130a0b4 100644
--- a/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
+++ b/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
@@ -191,7 +191,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 27c8eca20b..89a9dcd030 100644
--- a/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
+++ b/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
@@ -154,7 +154,8 @@ public class SimpleServerAuthConfig implements
ServerAuthConfig {
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) {
throw new AuthException(e);
}
diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
b/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
index a899aa71da..fe23b8c452 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 random) {
- randomSource = random;
- } 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 cefc14ebcb..5133bcb33f 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 limiter) {
- rateLimiter = limiter;
- } 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 7dca65e684..2a805cff3d 100644
--- a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
+++ b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
@@ -214,7 +214,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 389a193962..4866ddc40f 100644
--- a/java/org/apache/catalina/realm/RealmBase.java
+++ b/java/org/apache/catalina/realm/RealmBase.java
@@ -1448,7 +1448,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 135b41d4a2..fadc49f262 100644
--- a/java/org/apache/catalina/startup/Tomcat.java
+++ b/java/org/apache/catalina/startup/Tomcat.java
@@ -691,7 +691,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);
@@ -976,7 +976,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/catalina/valves/FilterValve.java
b/java/org/apache/catalina/valves/FilterValve.java
index 2d2203a908..015fe0a582 100644
--- a/java/org/apache/catalina/valves/FilterValve.java
+++ b/java/org/apache/catalina/valves/FilterValve.java
@@ -199,7 +199,8 @@ public class FilterValve extends ValveBase implements
FilterConfig {
filter.init(this);
} catch (ServletException | InstantiationException |
IllegalAccessException | IllegalArgumentException |
- InvocationTargetException | NoSuchMethodException |
SecurityException | ClassNotFoundException se) {
+ InvocationTargetException | NoSuchMethodException |
SecurityException | ClassNotFoundException |
+ ClassCastException se) {
throw new LifecycleException(sm.getString("filterValve.initError",
getFilterClassName()), se);
}
}
diff --git a/java/org/apache/jasper/JspCompilationContext.java
b/java/org/apache/jasper/JspCompilationContext.java
index 8d246b6f05..4466f85e00 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]