diff --git a/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java b/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java index fb963e61..466be5de 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java @@ -286,6 +286,36 @@ public class ServletExternalContext implements ExternalContext { return redirectInPopup; } + // hooks for subclasses + + /** + * Returns the servlet context. + */ + protected ServletContext getContext() { + return context; + } + + /** + * Returns the underlying HttpServletRequest. + */ + protected HttpServletRequest getRequest() { + return request; + } + + /** + * Returns the underlying HttpServletResponse. + */ + protected HttpServletResponse getResponse() { + return response; + } + + /** + * Returns the configured flow url handler. + */ + protected FlowUrlHandler getFlowUrlHandler() { + return flowUrlHandler; + } + // private helpers private void init(ServletContext context, HttpServletRequest request, HttpServletResponse response, diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowController.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowController.java index 4cc5e671..7b0bd585 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowController.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowController.java @@ -173,7 +173,7 @@ public class FlowController extends AbstractController { protected ServletExternalContext createServletExternalContext(HttpServletRequest request, HttpServletResponse response) { - ServletExternalContext context = new ServletExternalContext(getServletContext(), request, response, urlHandler); + ServletExternalContext context = new MvcExternalContext(getServletContext(), request, response, urlHandler); context.setAjaxRequest(ajaxHandler.isAjaxRequest(getServletContext(), request, response)); return context; } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowHandlerAdapter.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowHandlerAdapter.java index 1a90a9d4..90a3afc9 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowHandlerAdapter.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowHandlerAdapter.java @@ -137,7 +137,7 @@ public class FlowHandlerAdapter extends WebApplicationObjectSupport implements H protected ServletExternalContext createServletExternalContext(HttpServletRequest request, HttpServletResponse response) { - ServletExternalContext context = new ServletExternalContext(getServletContext(), request, response, urlHandler); + ServletExternalContext context = new MvcExternalContext(getServletContext(), request, response, urlHandler); context.setAjaxRequest(ajaxHandler.isAjaxRequest(getServletContext(), request, response)); return context; } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/MvcExternalContext.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/MvcExternalContext.java new file mode 100644 index 00000000..da023c50 --- /dev/null +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/MvcExternalContext.java @@ -0,0 +1,37 @@ +package org.springframework.webflow.mvc.servlet; + +import java.util.Locale; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.support.RequestContextUtils; +import org.springframework.webflow.context.servlet.FlowUrlHandler; +import org.springframework.webflow.context.servlet.ServletExternalContext; + +/** + * Spring MVC external context implementation. Is a {@link ServletExternalContext}, but overrides operations to plug in + * specific functionality available in a Spring MVC Environment. + * + * @author Keith Donald + */ +public class MvcExternalContext extends ServletExternalContext { + + /** + * Create a new external context wrapping given servlet HTTP request and response and given servlet context. + * @param context the servlet context + * @param request the http servlet request + * @param response the http servlet response + * @param flowUrlHandler the flow url handler + */ + public MvcExternalContext(ServletContext context, HttpServletRequest request, HttpServletResponse response, + FlowUrlHandler flowUrlHandler) { + super(context, request, response, flowUrlHandler); + } + + public Locale getLocale() { + return RequestContextUtils.getLocale(getRequest()); + } + +}