diff --git a/core/src/main/java/hudson/util/PluginServletFilter.java b/core/src/main/java/hudson/util/PluginServletFilter.java index dfc8bdf03e38f670f9bbeec4273627959ea531a5..41d83899a593d46d65d8d9dd63e651cb45283212 100644 --- a/core/src/main/java/hudson/util/PluginServletFilter.java +++ b/core/src/main/java/hudson/util/PluginServletFilter.java @@ -27,6 +27,7 @@ import hudson.ExtensionPoint; import hudson.security.SecurityRealm; import jenkins.model.Jenkins; +import javax.annotation.CheckForNull; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -71,8 +72,11 @@ public class PluginServletFilter implements Filter, ExtensionPoint { /** * Lookup the instance from servlet context. + * + * @param c the ServletContext most of the time taken from a Jenkins instance + * @return get the current PluginServletFilter if it is already available */ - private static PluginServletFilter getInstance(ServletContext c) { + private static @CheckForNull PluginServletFilter getInstance(ServletContext c) { return (PluginServletFilter)c.getAttribute(KEY); } @@ -90,12 +94,17 @@ public class PluginServletFilter implements Filter, ExtensionPoint { public static void addFilter(Filter filter) throws ServletException { Jenkins j = Jenkins.getInstance(); - if (j==null) { + + PluginServletFilter container = null; + if(j != null) { + container = getInstance(j.servletContext); + } + // https://marvelution.atlassian.net/browse/JJI-188 + if (j==null || container == null) { // report who is doing legacy registration LOGGER.log(Level.WARNING, "Filter instance is registered too early: "+filter, new Exception()); LEGACY.add(filter); } else { - PluginServletFilter container = getInstance(j.servletContext); filter.init(container.config); container.list.add(filter); } @@ -103,7 +112,7 @@ public class PluginServletFilter implements Filter, ExtensionPoint { public static void removeFilter(Filter filter) throws ServletException { Jenkins j = Jenkins.getInstance(); - if (j==null) { + if (j==null || getInstance(j.servletContext) == null) { LEGACY.remove(filter); } else { getInstance(j.servletContext).list.remove(filter);