Adding ability to resolve flow-local Spring Beans from EL expressions.
This commit is contained in:
@@ -15,6 +15,7 @@ import org.springframework.binding.expression.el.ELExpressionParser;
|
||||
import org.springframework.webflow.core.collection.MutableAttributeMap;
|
||||
import org.springframework.webflow.core.expression.el.RequestContextELResolver;
|
||||
import org.springframework.webflow.core.expression.el.ScopeSearchingELResolver;
|
||||
import org.springframework.webflow.core.expression.el.SpringBeanWebFlowELResolver;
|
||||
import org.springframework.webflow.execution.RequestContext;
|
||||
|
||||
/**
|
||||
@@ -46,6 +47,7 @@ public class LegacyJSFELExpressionParser extends ELExpressionParser {
|
||||
public ELContext getELContext(Object target) {
|
||||
List customResolvers = new ArrayList();
|
||||
customResolvers.add(new RequestContextELResolver());
|
||||
customResolvers.add(new SpringBeanWebFlowELResolver());
|
||||
customResolvers.add(new ScopeSearchingELResolver());
|
||||
customResolvers.add(new LegacyJSFBeanResolver());
|
||||
ELResolver resolver = new DefaultELResolver(target, customResolvers);
|
||||
|
||||
@@ -34,16 +34,12 @@ public class JsfViewFactoryCreator implements ViewFactoryCreator {
|
||||
|
||||
private Lifecycle lifecycle;
|
||||
|
||||
public JsfViewFactoryCreator() {
|
||||
lifecycle = createFlowFacesLifecycle();
|
||||
}
|
||||
|
||||
public Action createFinalResponseAction(Expression viewName, ResourceLoader resourceLoader) {
|
||||
return new JsfFinalResponseAction(new JsfViewFactory(viewName, resourceLoader, lifecycle));
|
||||
return new JsfFinalResponseAction(new JsfViewFactory(viewName, resourceLoader, getLifecycle()));
|
||||
}
|
||||
|
||||
public ViewFactory createViewFactory(Expression viewName, ResourceLoader resourceLoader) {
|
||||
return new JsfViewFactory(viewName, resourceLoader, lifecycle);
|
||||
return new JsfViewFactory(viewName, resourceLoader, getLifecycle());
|
||||
}
|
||||
|
||||
private Lifecycle createFlowFacesLifecycle() {
|
||||
@@ -53,4 +49,11 @@ public class JsfViewFactoryCreator implements ViewFactoryCreator {
|
||||
return new FlowLifecycle(defaultLifecycle);
|
||||
}
|
||||
|
||||
private Lifecycle getLifecycle() {
|
||||
if (lifecycle == null) {
|
||||
lifecycle = createFlowFacesLifecycle();
|
||||
}
|
||||
return lifecycle;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package org.springframework.faces.ui.resource;
|
||||
|
||||
import javax.servlet.ServletConfig;
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.mock.web.MockServletConfig;
|
||||
import org.springframework.mock.web.MockServletContext;
|
||||
|
||||
public class ResourceServletTests extends TestCase {
|
||||
|
||||
ServletContext servletContext = new ResourceTestMockServletContext();
|
||||
ServletConfig config = new MockServletConfig(servletContext);
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
|
||||
String[] requestElements;
|
||||
|
||||
ResourceServlet servlet;
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
servlet = new ResourceServlet();
|
||||
servlet.init(config);
|
||||
}
|
||||
|
||||
public final void testExecute() throws Exception {
|
||||
|
||||
String requestPath = "/dojo/dojo.js";
|
||||
request.setPathInfo(requestPath);
|
||||
servlet.doGet(request, response);
|
||||
}
|
||||
|
||||
public final void testExecute_ResourceNotFound() throws Exception {
|
||||
|
||||
String requestPath = "/xxx/xxx.js";
|
||||
request.setPathInfo(requestPath);
|
||||
servlet.doGet(request, response);
|
||||
|
||||
assertEquals(404, response.getStatus());
|
||||
}
|
||||
|
||||
private class ResourceTestMockServletContext extends MockServletContext {
|
||||
|
||||
public String getMimeType(String filePath) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user