Merge pull request #243 from panchenko/SEC-3158
SEC-3158 findRequiredWebApplicationContext() compatibility with spring framework 4.1
This commit is contained in:
commit
7d5af63510
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package org.springframework.security.web.context.support;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
|
@ -43,10 +44,33 @@ public abstract class SecurityWebApplicationContextUtils extends WebApplicationC
|
|||
* @throws IllegalStateException if no WebApplicationContext can be found
|
||||
*/
|
||||
public static WebApplicationContext findRequiredWebApplicationContext(ServletContext servletContext) {
|
||||
WebApplicationContext wac = findWebApplicationContext(servletContext);
|
||||
WebApplicationContext wac = _findWebApplicationContext(servletContext);
|
||||
if (wac == null) {
|
||||
throw new IllegalStateException("No WebApplicationContext found: no ContextLoaderListener registered?");
|
||||
}
|
||||
return wac;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy of {@link #findWebApplicationContext(ServletContext)} for compatibility with spring framework 4.1.x.
|
||||
* @see #findWebApplicationContext(ServletContext)
|
||||
*/
|
||||
private static WebApplicationContext _findWebApplicationContext(ServletContext sc) {
|
||||
WebApplicationContext wac = getWebApplicationContext(sc);
|
||||
if (wac == null) {
|
||||
Enumeration<String> attrNames = sc.getAttributeNames();
|
||||
while (attrNames.hasMoreElements()) {
|
||||
String attrName = attrNames.nextElement();
|
||||
Object attrValue = sc.getAttribute(attrName);
|
||||
if (attrValue instanceof WebApplicationContext) {
|
||||
if (wac != null) {
|
||||
throw new IllegalStateException("No unique WebApplicationContext found: more than one " +
|
||||
"DispatcherServlet registered with publishContext=true?");
|
||||
}
|
||||
wac = (WebApplicationContext) attrValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
return wac;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue