@@ -, +, @@ functionality into a private method. --- .../catalina/core/DefaultInstanceManager.java | 83 ++++++++++------------ 1 file changed, 37 insertions(+), 46 deletions(-) --- a/java/org/apache/catalina/core/DefaultInstanceManager.java +++ a/java/org/apache/catalina/core/DefaultInstanceManager.java @@ -49,6 +49,7 @@ import org.apache.catalina.ContainerServlet; import org.apache.catalina.Globals; import org.apache.catalina.security.SecurityUtil; import org.apache.catalina.util.Introspection; +import org.apache.juli.logging.Log; import org.apache.tomcat.InstanceManager; import org.apache.tomcat.util.ExceptionUtils; import org.apache.tomcat.util.res.StringManager; @@ -71,13 +72,34 @@ public class DefaultInstanceManager implements InstanceManager { protected final ClassLoader containerClassLoader; protected final boolean privileged; protected final boolean ignoreAnnotations; - private final Properties restrictedFilters = new Properties(); - private final Properties restrictedListeners = new Properties(); - private final Properties restrictedServlets = new Properties(); + private final Properties restrictedFilters; + private final Properties restrictedListeners; + private final Properties restrictedServlets; private final Map, AnnotationCacheEntry[]> annotationCache = new WeakHashMap<>(); private final Map postConstructMethods; private final Map preDestroyMethods; + + private Properties loadProperties(String propertiesName, String errorString, Log logger) { + Properties result = new Properties(); + InputStream is = this.getClass().getClassLoader().getResourceAsStream(propertiesName); + if (is != null) { + try { + result.load(is); + } catch (IOException e) { + logger.error(errorString, e); + } finally { + try { + is.close(); + } catch (IOException e) { + // do nothing, since we either already read it, or got an exception already + } + } + } else { + logger.error(errorString); + } + return result; + } public DefaultInstanceManager(Context context, Map> injectionMap, @@ -88,49 +110,18 @@ public class DefaultInstanceManager implements InstanceManager { this.containerClassLoader = containerClassLoader; ignoreAnnotations = catalinaContext.getIgnoreAnnotations(); StringManager sm = StringManager.getManager(Constants.Package); - try { - InputStream is = - this.getClass().getClassLoader().getResourceAsStream - ("org/apache/catalina/core/RestrictedServlets.properties"); - if (is != null) { - restrictedServlets.load(is); - } else { - catalinaContext.getLogger().error(sm.getString( - "defaultInstanceManager.restrictedServletsResource")); - } - } catch (IOException e) { - catalinaContext.getLogger().error(sm.getString( - "defaultInstanceManager.restrictedServletsResource"), e); - } - - try { - InputStream is = - this.getClass().getClassLoader().getResourceAsStream - ("org/apache/catalina/core/RestrictedListeners.properties"); - if (is != null) { - restrictedListeners.load(is); - } else { - catalinaContext.getLogger().error(sm.getString( - "defaultInstanceManager.restrictedListenersResources")); - } - } catch (IOException e) { - catalinaContext.getLogger().error(sm.getString( - "defaultInstanceManager.restrictedListenersResources"), e); - } - try { - InputStream is = - this.getClass().getClassLoader().getResourceAsStream - ("org/apache/catalina/core/RestrictedFilters.properties"); - if (is != null) { - restrictedFilters.load(is); - } else { - catalinaContext.getLogger().error(sm.getString( - "defaultInstanceManager.restrictedFiltersResource")); - } - } catch (IOException e) { - catalinaContext.getLogger().error(sm.getString( - "defaultInstanceManager.restrictedServletsResources"), e); - } + restrictedServlets = loadProperties( + "org/apache/catalina/core/RestrictedServlets.properties", + sm.getString("defaultInstanceManager.restrictedServletsResource"), + catalinaContext.getLogger()); + restrictedListeners = loadProperties( + "org/apache/catalina/core/RestrictedListeners.properties", + "defaultInstanceManager.restrictedListenersResources", + catalinaContext.getLogger()); + restrictedFilters = loadProperties( + "org/apache/catalina/core/RestrictedFilters.properties", + "defaultInstanceManager.restrictedFiltersResource", + catalinaContext.getLogger()); this.context = context; this.injectionMap = injectionMap; this.postConstructMethods = catalinaContext.findPostConstructMethods(); --