SWF-1367 Add support for JSF 2 Ajax requests, update booking-faces sample (JSF 2 based Ajax, jsr-303 validation), add chained delegation to AjaxHandlers, other miscellaneous improvements

This commit is contained in:
Rossen Stoyanchev
2010-07-28 12:56:24 +00:00
parent 507fec3edf
commit fe9229cf15
36 changed files with 722 additions and 494 deletions

View File

@@ -153,12 +153,8 @@ public class FlowFacesContextTests extends TestCase {
EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext);
EasyMock.replay(new Object[] { requestContext });
int iterationCount = 0;
Iterator i = facesContext.getMessages("unknown");
while (i.hasNext()) {
iterationCount++;
}
assertEquals(0, iterationCount);
assertFalse(i.hasNext());
}
public final void testGetClientIdsWithMessages() {

View File

@@ -127,7 +127,6 @@ public class JSFMockHelper {
FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY, MockRenderKitFactory.class.getName());
FactoryFinder.setFactory(FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY, MockPartialViewContextFactory.class
.getName());
externalContext = new MockExternalContext(servletContext, request, response);
lifecycleFactory = (MockLifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
lifecycle = (MockLifecycle) lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
facesContextFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);

View File

@@ -0,0 +1,39 @@
package org.springframework.faces.webflow;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.myfaces.test.mock.MockPrintWriter;
import org.springframework.web.context.support.StaticWebApplicationContext;
public class JsfAjaxHandlerTests extends TestCase {
private JSFMockHelper jsfMock = new JSFMockHelper();
private JsfAjaxHandler ajaxHandler;
protected void setUp() throws Exception {
jsfMock.setUp();
StaticWebApplicationContext webappContext = new StaticWebApplicationContext();
webappContext.setServletContext(jsfMock.servletContext());
ajaxHandler = new JsfAjaxHandler();
ajaxHandler.setApplicationContext(webappContext);
}
protected void tearDown() throws Exception {
jsfMock.tearDown();
}
public void testSendAjaxRedirect() throws Exception {
ajaxHandler.sendAjaxRedirectInternal("/target", jsfMock.request(), jsfMock.response(), false);
assertEquals(
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<partial-response><redirect url=\"/target\"/></partial-response>",
extractResponseContent());
}
private String extractResponseContent() throws IOException {
MockPrintWriter writer = (MockPrintWriter) jsfMock.response().getWriter();
return new String(writer.content());
}
}

View File

@@ -22,7 +22,6 @@ import org.easymock.EasyMock;
import org.jboss.el.ExpressionFactoryImpl;
import org.springframework.binding.expression.ExpressionParser;
import org.springframework.binding.expression.support.FluentParserContext;
import org.springframework.faces.ui.AjaxViewRoot;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockServletContext;
@@ -218,7 +217,7 @@ public class JsfViewFactoryTests extends TestCase {
assertNotNull("A View was not restored", restoredView);
assertTrue("A JsfView was expected", restoredView instanceof JsfView);
assertTrue("An AjaxViewRoot was not set", ((JsfView) restoredView).getViewRoot() instanceof AjaxViewRoot);
assertTrue("An ViewRoot was not set", ((JsfView) restoredView).getViewRoot() instanceof UIViewRoot);
assertEquals("View name did not match", VIEW_ID, ((JsfView) restoredView).getViewRoot().getViewId());
assertFalse("An unexpected event was signaled,", restoredView.hasFlowEvent());
}

View File

@@ -9,7 +9,7 @@ import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.myfaces.test.mock.MockExternalContext;
import org.apache.myfaces.test.mock.MockExternalContext20;
public class MockBaseFacesContextFactory extends FacesContextFactory {
@@ -21,7 +21,7 @@ public class MockBaseFacesContextFactory extends FacesContextFactory {
return FacesContext.getCurrentInstance();
} else {
ExternalContext ext = new MockExternalContext((ServletContext) context, (HttpServletRequest) request,
ExternalContext ext = new MockExternalContext20((ServletContext) context, (HttpServletRequest) request,
(HttpServletResponse) response);
return new MockBaseFacesContext(ext, lifecycle);