提交 76c1e776 编写于 作者: D Daniel Beck

Merge pull request #1716 from ManuelB/jenkins-1.614-branch-JJI-188

 [JENKINS-28553] Stable workaround for adding PluginServletFilter
...@@ -27,6 +27,7 @@ import hudson.ExtensionPoint; ...@@ -27,6 +27,7 @@ import hudson.ExtensionPoint;
import hudson.security.SecurityRealm; import hudson.security.SecurityRealm;
import jenkins.model.Jenkins; import jenkins.model.Jenkins;
import javax.annotation.CheckForNull;
import javax.servlet.Filter; import javax.servlet.Filter;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
import javax.servlet.FilterConfig; import javax.servlet.FilterConfig;
...@@ -71,8 +72,11 @@ public class PluginServletFilter implements Filter, ExtensionPoint { ...@@ -71,8 +72,11 @@ public class PluginServletFilter implements Filter, ExtensionPoint {
/** /**
* Lookup the instance from servlet context. * 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); return (PluginServletFilter)c.getAttribute(KEY);
} }
...@@ -90,12 +94,17 @@ public class PluginServletFilter implements Filter, ExtensionPoint { ...@@ -90,12 +94,17 @@ public class PluginServletFilter implements Filter, ExtensionPoint {
public static void addFilter(Filter filter) throws ServletException { public static void addFilter(Filter filter) throws ServletException {
Jenkins j = Jenkins.getInstance(); 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 // report who is doing legacy registration
LOGGER.log(Level.WARNING, "Filter instance is registered too early: "+filter, new Exception()); LOGGER.log(Level.WARNING, "Filter instance is registered too early: "+filter, new Exception());
LEGACY.add(filter); LEGACY.add(filter);
} else { } else {
PluginServletFilter container = getInstance(j.servletContext);
filter.init(container.config); filter.init(container.config);
container.list.add(filter); container.list.add(filter);
} }
...@@ -103,7 +112,7 @@ public class PluginServletFilter implements Filter, ExtensionPoint { ...@@ -103,7 +112,7 @@ public class PluginServletFilter implements Filter, ExtensionPoint {
public static void removeFilter(Filter filter) throws ServletException { public static void removeFilter(Filter filter) throws ServletException {
Jenkins j = Jenkins.getInstance(); Jenkins j = Jenkins.getInstance();
if (j==null) { if (j==null || getInstance(j.servletContext) == null) {
LEGACY.remove(filter); LEGACY.remove(filter);
} else { } else {
getInstance(j.servletContext).list.remove(filter); getInstance(j.servletContext).list.remove(filter);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册