refactored to pass along original ServletContext (for WebLogic and Resin JSP compatibility; SPR-6606)

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2752 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
Juergen Hoeller 2010-01-05 13:27:53 +00:00
parent eadbf7a057
commit 6462b4d6ed
1 changed files with 23 additions and 22 deletions

View File

@ -17,8 +17,9 @@
package org.springframework.web.servlet.view.tiles2; package org.springframework.web.servlet.view.tiles2;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties; import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -36,7 +37,6 @@ import org.apache.tiles.servlet.context.ServletUtil;
import org.apache.tiles.servlet.context.wildcard.WildcardServletTilesApplicationContextFactory; import org.apache.tiles.servlet.context.wildcard.WildcardServletTilesApplicationContextFactory;
import org.apache.tiles.startup.BasicTilesInitializer; import org.apache.tiles.startup.BasicTilesInitializer;
import org.apache.tiles.startup.TilesInitializer; import org.apache.tiles.startup.TilesInitializer;
import org.apache.tiles.web.util.ServletContextAdapter;
import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
@ -199,8 +199,8 @@ public class TilesConfigurer implements ServletContextAware, InitializingBean, D
* @see #createTilesInitializer() * @see #createTilesInitializer()
*/ */
public void afterPropertiesSet() throws TilesException { public void afterPropertiesSet() throws TilesException {
ServletContextAdapter adaptedContext = new ServletContextAdapter(new DelegatingServletConfig()); createTilesInitializer().initialize(
createTilesInitializer().initialize(new ServletTilesApplicationContext(adaptedContext)); new PropertyExposingServletTilesApplicationContext(this.servletContext, this.tilesPropertyMap));
} }
/** /**
@ -221,27 +221,28 @@ public class TilesConfigurer implements ServletContextAware, InitializingBean, D
} }
/** private static class PropertyExposingServletTilesApplicationContext extends ServletTilesApplicationContext {
* Internal implementation of the ServletConfig interface, to be passed
* to the wrapped servlet. Delegates to ServletWrappingController fields
* and methods to provide init parameters and other environment info.
*/
private class DelegatingServletConfig implements ServletConfig {
public String getServletName() { private final Map<String, String> mergedInitParams;
return "TilesConfigurer";
public PropertyExposingServletTilesApplicationContext(ServletContext servletContext, Properties properties) {
super(servletContext);
this.mergedInitParams = new LinkedHashMap<String, String>();
Enumeration initParamNames = servletContext.getInitParameterNames();
while (initParamNames.hasMoreElements()) {
String initParamName = (String) initParamNames.nextElement();
this.mergedInitParams.put(initParamName, servletContext.getInitParameter(initParamName));
}
Enumeration propertyNames = properties.propertyNames();
while (propertyNames.hasMoreElements()) {
String propertyName = (String) propertyNames.nextElement();
this.mergedInitParams.put(propertyName, properties.getProperty(propertyName));
}
} }
public ServletContext getServletContext() { @Override
return servletContext; public Map<String, String> getInitParams() {
} return this.mergedInitParams;
public String getInitParameter(String paramName) {
return tilesPropertyMap.getProperty(paramName);
}
public Enumeration getInitParameterNames() {
return tilesPropertyMap.keys();
} }
} }