restricted onApplicationEvent callbacks for local ApplicationContext only (SPR-6964)

master
Juergen Hoeller 15 years ago
parent a614430899
commit 461c200ce6
  1. 25
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/FrameworkServlet.java

@ -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.
@ -93,8 +93,7 @@ import org.springframework.web.util.WebUtils;
* @see #setContextConfigLocation
* @see #setNamespace
*/
public abstract class FrameworkServlet extends HttpServletBean
implements ApplicationListener<ContextRefreshedEvent> {
public abstract class FrameworkServlet extends HttpServletBean {
/**
* Suffix for WebApplicationContext namespaces. If a servlet of this class is
@ -437,7 +436,7 @@ public abstract class FrameworkServlet extends HttpServletBean
wac.setServletConfig(getServletConfig());
wac.setNamespace(getNamespace());
wac.setConfigLocation(getContextConfigLocation());
wac.addApplicationListener(new SourceFilteringListener(wac, this));
wac.addApplicationListener(new SourceFilteringListener(wac, new ContextRefreshListener()));
postProcessWebApplicationContext(wac);
wac.refresh();
@ -514,10 +513,8 @@ public abstract class FrameworkServlet extends HttpServletBean
}
/**
* ApplicationListener endpoint that receives events from this servlet's
* WebApplicationContext.
* <p>The default implementation calls {@link #onRefresh} in case of a
* {@link org.springframework.context.event.ContextRefreshedEvent},
* Callback that receives refresh events from this servlet's WebApplicationContext.
* <p>The default implementation calls {@link #onRefresh},
* triggering a refresh of this servlet's context-dependent state.
* @param event the incoming ApplicationContext event
*/
@ -741,4 +738,16 @@ public abstract class FrameworkServlet extends HttpServletBean
}
}
/**
* ApplicationListener endpoint that receives events from this servlet's WebApplicationContext
* only, delegating to <code>onApplicationEvent</code> on the FrameworkServlet instance.
*/
private class ContextRefreshListener implements ApplicationListener<ContextRefreshedEvent> {
public void onApplicationEvent(ContextRefreshedEvent event) {
FrameworkServlet.this.onApplicationEvent(event);
}
}
}

Loading…
Cancel
Save