WebApplicationObjectSupport's initServletContext will be called only once in any scenario (SPR-6914)

This commit is contained in:
Juergen Hoeller 2010-03-03 16:26:47 +00:00
parent 3c8a47bd06
commit 57993d871e
3 changed files with 18 additions and 21 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2009 the original author or authors.
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -110,7 +110,7 @@ public class FreeMarkerViewTests {
wac.getParentBeanFactory();
wmc.setReturnValue(null);
wac.getServletContext();
wmc.setReturnValue(sc, 5);
wmc.setReturnValue(sc, 2);
wmc.replay();
fv.setUrl("templateName");
@ -147,7 +147,7 @@ public class FreeMarkerViewTests {
wac.getParentBeanFactory();
wmc.setReturnValue(null);
wac.getServletContext();
wmc.setReturnValue(sc, 5);
wmc.setReturnValue(sc, 2);
wmc.replay();
fv.setUrl("templateName");

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2009 the original author or authors.
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,16 +16,10 @@
package org.springframework.web.servlet.view.velocity;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -38,7 +32,9 @@ import org.apache.velocity.tools.generic.DateTool;
import org.apache.velocity.tools.generic.MathTool;
import org.apache.velocity.tools.generic.NumberTool;
import org.easymock.MockControl;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.context.ApplicationContextException;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
@ -145,7 +141,7 @@ public class VelocityViewTests {
wac.getParentBeanFactory();
wmc.setReturnValue(null);
wac.getServletContext();
wmc.setReturnValue(sc, 4);
wmc.setReturnValue(sc, 3);
wmc.replay();
HttpServletRequest request = new MockHttpServletRequest();
@ -201,7 +197,7 @@ public class VelocityViewTests {
wac.getParentBeanFactory();
wmc.setReturnValue(null);
wac.getServletContext();
wmc.setReturnValue(sc, 4);
wmc.setReturnValue(sc, 3);
wmc.replay();
HttpServletRequest request = new MockHttpServletRequest();

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 the original author or authors.
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -17,7 +17,6 @@
package org.springframework.web.context.support;
import java.io.File;
import javax.servlet.ServletContext;
import org.springframework.context.ApplicationContext;
@ -42,11 +41,13 @@ public abstract class WebApplicationObjectSupport extends ApplicationObjectSuppo
public final void setServletContext(ServletContext servletContext) {
if (servletContext != this.servletContext) {
this.servletContext = servletContext;
if (servletContext != null) {
initServletContext(servletContext);
}
}
}
/**
* Overrides the base class behavior to enforce running in an ApplicationContext.
@ -69,10 +70,10 @@ public abstract class WebApplicationObjectSupport extends ApplicationObjectSuppo
@Override
protected void initApplicationContext(ApplicationContext context) {
super.initApplicationContext(context);
if (context instanceof WebApplicationContext) {
ServletContext servletContext = ((WebApplicationContext) context).getServletContext();
if (servletContext != null) {
initServletContext(servletContext);
if (this.servletContext == null && context instanceof WebApplicationContext) {
this.servletContext = ((WebApplicationContext) context).getServletContext();
if (this.servletContext != null) {
initServletContext(this.servletContext);
}
}
}