Author: markt Date: Fri Oct 6 09:59:31 2017 New Revision: 1811311 URL: http://svn.apache.org/viewvc?rev=1811311&view=rev Log: Refactor Use ReflectiveOperationException rather than multiple sub-classes
Modified: tomcat/trunk/java/javax/el/ExpressionFactory.java tomcat/trunk/java/javax/el/StaticFieldELResolver.java tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java tomcat/trunk/java/javax/websocket/ContainerProvider.java tomcat/trunk/java/javax/websocket/server/ServerEndpointConfig.java tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java tomcat/trunk/java/org/apache/catalina/connector/Request.java tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java tomcat/trunk/java/org/apache/catalina/realm/JAASRealm.java tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java tomcat/trunk/java/org/apache/juli/logging/LogFactory.java tomcat/trunk/java/org/apache/tomcat/util/compat/Jre9Compat.java tomcat/trunk/java/org/apache/tomcat/util/compat/JreCompat.java Modified: tomcat/trunk/java/javax/el/ExpressionFactory.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ExpressionFactory.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/javax/el/ExpressionFactory.java (original) +++ tomcat/trunk/java/javax/el/ExpressionFactory.java Fri Oct 6 09:59:31 2017 @@ -175,17 +175,16 @@ public abstract class ExpressionFactory (ExpressionFactory) constructor.newInstance(properties); } - } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | - NoSuchMethodException e) { - throw new ELException( - "Unable to create ExpressionFactory of type: " + clazz.getName(), - e); } catch (InvocationTargetException e) { Throwable cause = e.getCause(); Util.handleThrowable(cause); throw new ELException( "Unable to create ExpressionFactory of type: " + clazz.getName(), e); + } catch (ReflectiveOperationException | IllegalArgumentException e) { + throw new ELException( + "Unable to create ExpressionFactory of type: " + clazz.getName(), + e); } return result; Modified: tomcat/trunk/java/javax/el/StaticFieldELResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/StaticFieldELResolver.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/javax/el/StaticFieldELResolver.java (original) +++ tomcat/trunk/java/javax/el/StaticFieldELResolver.java Fri Oct 6 09:59:31 2017 @@ -101,13 +101,12 @@ public class StaticFieldELResolver exten try { result = match.newInstance(parameters); - } catch (IllegalArgumentException | IllegalAccessException | - InstantiationException e) { - throw new ELException(e); } catch (InvocationTargetException e) { Throwable cause = e.getCause(); Util.handleThrowable(cause); throw new ELException(cause); + } catch (ReflectiveOperationException e) { + throw new ELException(e); } return result; Modified: tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java (original) +++ tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java Fri Oct 6 09:59:31 2017 @@ -16,7 +16,6 @@ */ package javax.security.auth.message.config; -import java.lang.reflect.InvocationTargetException; import java.security.AccessController; import java.security.Permission; import java.security.PrivilegedAction; @@ -65,9 +64,8 @@ public abstract class AuthConfigFactory factory = AccessController.doPrivileged( new PrivilegedExceptionAction<AuthConfigFactory>() { @Override - public AuthConfigFactory run() throws ClassNotFoundException, - InstantiationException, IllegalAccessException, IllegalArgumentException, - InvocationTargetException, NoSuchMethodException, SecurityException { + public AuthConfigFactory run() throws ReflectiveOperationException, + IllegalArgumentException, SecurityException { // Load this class with the same class loader as used for // this class. Note that the Thread context class loader // should not be used since that would trigger a memory leak Modified: tomcat/trunk/java/javax/websocket/ContainerProvider.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/ContainerProvider.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/ContainerProvider.java (original) +++ tomcat/trunk/java/javax/websocket/ContainerProvider.java Fri Oct 6 09:59:31 2017 @@ -16,7 +16,6 @@ */ package javax.websocket; -import java.lang.reflect.InvocationTargetException; import java.util.Iterator; import java.util.ServiceLoader; @@ -52,8 +51,7 @@ public abstract class ContainerProvider (Class<WebSocketContainer>) Class.forName( DEFAULT_PROVIDER_CLASS_NAME); result = clazz.getConstructor().newInstance(); - } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | - IllegalArgumentException | InvocationTargetException | NoSuchMethodException | + } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) { // No options left. Just return null. } Modified: tomcat/trunk/java/javax/websocket/server/ServerEndpointConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/server/ServerEndpointConfig.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/server/ServerEndpointConfig.java (original) +++ tomcat/trunk/java/javax/websocket/server/ServerEndpointConfig.java Fri Oct 6 09:59:31 2017 @@ -16,7 +16,6 @@ */ package javax.websocket.server; -import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -177,9 +176,8 @@ public interface ServerEndpointConfig ex (Class<Configurator>) Class.forName( DEFAULT_IMPL_CLASSNAME); result = clazz.getConstructor().newInstance(); - } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | - IllegalArgumentException | InvocationTargetException | - NoSuchMethodException | SecurityException e) { + } catch (ReflectiveOperationException | IllegalArgumentException | + SecurityException e) { // No options left. Just return null. } } Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java Fri Oct 6 09:59:31 2017 @@ -18,7 +18,6 @@ package org.apache.catalina.authenticato import java.io.File; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -115,8 +114,7 @@ public class AuthConfigFactoryImpl exten clazz = Class.forName(className); Constructor<?> constructor = clazz.getConstructor(Map.class, AuthConfigFactory.class); provider = (AuthConfigProvider) constructor.newInstance(properties, null); - } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | - IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + } catch (ReflectiveOperationException | IllegalArgumentException e) { throw new SecurityException(e); } Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java Fri Oct 6 09:59:31 2017 @@ -16,7 +16,6 @@ */ package org.apache.catalina.authenticator.jaspic; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -118,9 +117,7 @@ public class SimpleServerAuthConfig impl (ServerAuthModule) clazz.getConstructor().newInstance(); module.initialize(null, null, handler, mergedProperties); modules.add(module); - } catch (ClassNotFoundException | InstantiationException | - IllegalAccessException | IllegalArgumentException | - InvocationTargetException | NoSuchMethodException | + } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) { AuthException ae = new AuthException(); ae.initCause(e); Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Fri Oct 6 09:59:31 2017 @@ -22,7 +22,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.io.UnsupportedEncodingException; -import java.lang.reflect.InvocationTargetException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.Principal; @@ -1988,8 +1987,7 @@ public class Request implements HttpServ instanceManager = getContext().getInstanceManager(); handler = (T) instanceManager.newInstance(httpUpgradeHandlerClass); } - } catch (InstantiationException | IllegalAccessException | InvocationTargetException | - NamingException | IllegalArgumentException | NoSuchMethodException | + } catch (ReflectiveOperationException | NamingException | IllegalArgumentException | SecurityException e) { throw new ServletException(e); } Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Fri Oct 6 09:59:31 2017 @@ -825,8 +825,7 @@ public class ApplicationContext implemen } catch (InvocationTargetException e) { ExceptionUtils.handleThrowable(e.getCause()); throw new ServletException(e); - } catch (IllegalAccessException | NamingException | InstantiationException | - ClassNotFoundException | NoSuchMethodException e) { + } catch (ReflectiveOperationException | NamingException e) { throw new ServletException(e); } } @@ -959,8 +958,7 @@ public class ApplicationContext implemen } catch (InvocationTargetException e) { ExceptionUtils.handleThrowable(e.getCause()); throw new ServletException(e); - } catch (IllegalAccessException | NamingException | InstantiationException | - ClassNotFoundException | NoSuchMethodException e) { + } catch (ReflectiveOperationException | NamingException e) { throw new ServletException(e); } } @@ -1100,8 +1098,7 @@ public class ApplicationContext implemen throw new IllegalArgumentException(sm.getString( "applicationContext.addListener.iae.cnfe", className), e); - } catch (IllegalAccessException | NamingException | InstantiationException | - ClassNotFoundException | NoSuchMethodException e) { + } catch (ReflectiveOperationException| NamingException e) { throw new IllegalArgumentException(sm.getString( "applicationContext.addListener.iae.cnfe", className), e); @@ -1173,8 +1170,7 @@ public class ApplicationContext implemen } catch (InvocationTargetException e) { ExceptionUtils.handleThrowable(e.getCause()); throw new ServletException(e); - } catch (IllegalAccessException | NamingException | InstantiationException | - NoSuchMethodException e) { + } catch (ReflectiveOperationException | NamingException e) { throw new ServletException(e); } } Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java Fri Oct 6 09:59:31 2017 @@ -20,7 +20,6 @@ package org.apache.catalina.core; import java.io.Serializable; -import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; @@ -89,15 +88,12 @@ public final class ApplicationFilterConf * instantiating the filter object * @exception ServletException if thrown by the filter's init() method * @throws NamingException - * @throws InvocationTargetException * @throws SecurityException - * @throws NoSuchMethodException * @throws IllegalArgumentException */ ApplicationFilterConfig(Context context, FilterDef filterDef) - throws ClassCastException, ClassNotFoundException, IllegalAccessException, - InstantiationException, ServletException, InvocationTargetException, NamingException, - IllegalArgumentException, NoSuchMethodException, SecurityException { + throws ClassCastException, ReflectiveOperationException, ServletException, + NamingException, IllegalArgumentException, SecurityException { super(); @@ -244,14 +240,12 @@ public final class ApplicationFilterConf * instantiating the filter object * @exception ServletException if thrown by the filter's init() method * @throws NamingException - * @throws InvocationTargetException + * @throws ReflectiveOperationException * @throws SecurityException - * @throws NoSuchMethodException * @throws IllegalArgumentException */ - Filter getFilter() throws ClassCastException, ClassNotFoundException, IllegalAccessException, - InstantiationException, ServletException, InvocationTargetException, NamingException, - IllegalArgumentException, NoSuchMethodException, SecurityException { + Filter getFilter() throws ClassCastException, ReflectiveOperationException, ServletException, + NamingException, IllegalArgumentException, SecurityException { // Return the existing filter instance, if any if (this.filter != null) Modified: tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java Fri Oct 6 09:59:31 2017 @@ -268,8 +268,7 @@ public class AsyncContextImpl implements try { listener = (T) getInstanceManager().newInstance(clazz.getName(), clazz.getClassLoader()); - } catch (InstantiationException | IllegalAccessException | NamingException | - ClassNotFoundException e) { + } catch (ReflectiveOperationException | NamingException e) { ServletException se = new ServletException(e); throw se; } catch (Exception e) { Modified: tomcat/trunk/java/org/apache/catalina/realm/JAASRealm.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JAASRealm.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/realm/JAASRealm.java (original) +++ tomcat/trunk/java/org/apache/catalina/realm/JAASRealm.java Fri Oct 6 09:59:31 2017 @@ -628,23 +628,11 @@ public class JAASRealm extends RealmBase this.jaasConfigurationLoaded = true; return this.jaasConfiguration; } - } catch (URISyntaxException ex) { - throw new RuntimeException(ex); - } catch (NoSuchMethodException ex) { - throw new RuntimeException(ex); - } catch (SecurityException ex) { - throw new RuntimeException(ex); - } catch (InstantiationException ex) { - throw new RuntimeException(ex); - } catch (IllegalAccessException ex) { - throw new RuntimeException(ex); - } catch (IllegalArgumentException ex) { - throw new RuntimeException(ex); } catch (InvocationTargetException ex) { throw new RuntimeException(ex.getCause()); - } catch (ClassNotFoundException ex) { + } catch (SecurityException | URISyntaxException | ReflectiveOperationException | + IllegalArgumentException ex) { throw new RuntimeException(ex); } - } } Modified: tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java Fri Oct 6 09:59:31 2017 @@ -18,7 +18,6 @@ package org.apache.catalina.startup; import java.io.File; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; import java.net.URL; import java.security.Principal; @@ -853,10 +852,7 @@ public class Tomcat { try { return (Context) Class.forName(contextClass).getConstructor() .newInstance(); - } catch (InstantiationException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException - | NoSuchMethodException | SecurityException - | ClassNotFoundException e) { + } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) { throw new IllegalArgumentException( "Can't instantiate context-class " + contextClass + " for host " + host + " and url " Modified: tomcat/trunk/java/org/apache/juli/logging/LogFactory.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/juli/logging/LogFactory.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/juli/logging/LogFactory.java (original) +++ tomcat/trunk/java/org/apache/juli/logging/LogFactory.java Fri Oct 6 09:59:31 2017 @@ -17,7 +17,6 @@ package org.apache.juli.logging; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.util.ServiceLoader; import java.util.logging.LogManager; @@ -119,8 +118,7 @@ public class LogFactory { try { return discoveredLogConstructor.newInstance(name); - } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | - InvocationTargetException e) { + } catch (ReflectiveOperationException | IllegalArgumentException e) { throw new LogConfigurationException(e); } } Modified: tomcat/trunk/java/org/apache/tomcat/util/compat/Jre9Compat.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/compat/Jre9Compat.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/compat/Jre9Compat.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/compat/Jre9Compat.java Fri Oct 6 09:59:31 2017 @@ -19,7 +19,11 @@ package org.apache.tomcat.util.compat; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; import java.net.URLConnection; +import java.util.Deque; +import java.util.Optional; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLParameters; @@ -97,4 +101,19 @@ class Jre9Compat extends JreCompat { throw new UnsupportedOperationException(e); } } + + + @Override + public void addClassPath(Deque<URL> classPathUrlsToProcess) { + ModuleLayer.boot().configuration().modules().stream().map( + rm -> rm.reference().location()).flatMap(Optional::stream).map(u -> { + try { + return u.toURL(); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + }).forEach(classPathUrlsToProcess::add); + } } Modified: tomcat/trunk/java/org/apache/tomcat/util/compat/JreCompat.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/compat/JreCompat.java?rev=1811311&r1=1811310&r2=1811311&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/compat/JreCompat.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/compat/JreCompat.java Fri Oct 6 09:59:31 2017 @@ -19,6 +19,7 @@ package org.apache.tomcat.util.compat; import java.io.IOException; import java.net.URL; import java.net.URLConnection; +import java.util.Deque; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLParameters; @@ -115,4 +116,16 @@ public class JreCompat { URLConnection uConn = url.openConnection(); uConn.setDefaultUseCaches(false); } + + + /** + * Scans the module path and adds the locations of each module found to the + * queue for URLs to be processed. + * + * @param classPathUrlsToProcess The queue of URLs to which found + * locations should be added + */ + public void addClassPath(Deque<URL> classPathUrlsToProcess) { + // NO-OP unless running on Java 9 or later + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org