- Revision
- 323
- Author
- mward
- Date
- 2007-10-11 07:44:28 -0500 (Thu, 11 Oct 2007)
Log Message
refactored out the use of a DispatchAssistant
Modified Paths
- trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java
- trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java
- trunk/core/src/main/java/org/codehaus/waffle/view/DefaultViewDispatcher.java
- trunk/core/src/main/java/org/codehaus/waffle/view/RedirectView.java
- trunk/core/src/main/java/org/codehaus/waffle/view/View.java
- trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java
- trunk/core/src/test/java/org/codehaus/waffle/view/DefaultViewDispatcherTest.java
- trunk/distribution/src/site/content/pluggability.html
- trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/action/UsersController.java
- trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/interceptor/AuthorizationInterceptor.java
Added Paths
Removed Paths
- trunk/core/src/main/java/org/codehaus/waffle/view/DefaultDispatchAssistant.java
- trunk/core/src/main/java/org/codehaus/waffle/view/DispatchAssistant.java
- trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubDispatchAssistant.java
- trunk/core/src/test/java/org/codehaus/waffle/view/DefaultDispatchAssistantTest.java
Diff
Modified: trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java (322 => 323)
--- trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java 2007-10-11 12:44:28 UTC (rev 323) @@ -26,7 +26,6 @@ import org.codehaus.waffle.i18n.MessageResources; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.validation.Validator; -import org.codehaus.waffle.view.DispatchAssistant; import org.codehaus.waffle.view.ViewDispatcher; import org.codehaus.waffle.view.ViewResolver; @@ -57,8 +56,6 @@ DataBinder getDataBinder(); - DispatchAssistant getDispatchAssistant(); - MessageResources getMessageResources(); MethodDefinitionFinder getMethodDefinitionFinder();
Modified: trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java (322 => 323)
--- trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2007-10-11 12:44:28 UTC (rev 323) @@ -41,10 +41,8 @@ import org.codehaus.waffle.monitor.SilentMonitor; import org.codehaus.waffle.validation.DefaultValidator; import org.codehaus.waffle.validation.Validator; -import org.codehaus.waffle.view.DefaultDispatchAssistant; import org.codehaus.waffle.view.DefaultViewDispatcher; import org.codehaus.waffle.view.DefaultViewResolver; -import org.codehaus.waffle.view.DispatchAssistant; import org.codehaus.waffle.view.ViewDispatcher; import org.codehaus.waffle.view.ViewResolver; import org.picocontainer.ComponentAdapter; @@ -81,7 +79,6 @@ register(ControllerDefinitionFactory.class, ContextControllerDefinitionFactory.class, servletContext); register(ControllerNameResolver.class, ContextPathControllerNameResolver.class, servletContext); register(DataBinder.class, OgnlDataBinder.class, servletContext); - register(DispatchAssistant.class, DefaultDispatchAssistant.class, servletContext); register(MessageResources.class, DefaultMessageResources.class, servletContext); register(MethodDefinitionFinder.class, AnnotatedMethodDefinitionFinder.class, servletContext); register(MethodNameResolver.class, RequestParameterMethodNameResolver.class, servletContext); @@ -222,10 +219,6 @@ return locateByType(DataBinder.class); } - public DispatchAssistant getDispatchAssistant() { - return locateByType(DispatchAssistant.class); - } - public MessageResources getMessageResources() { return locateByType(MessageResources.class); }
Deleted: trunk/core/src/main/java/org/codehaus/waffle/view/DefaultDispatchAssistant.java (322 => 323)
--- trunk/core/src/main/java/org/codehaus/waffle/view/DefaultDispatchAssistant.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/main/java/org/codehaus/waffle/view/DefaultDispatchAssistant.java 2007-10-11 12:44:28 UTC (rev 323) @@ -1,65 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2005,2006 Michael Ward * - * All rights reserved. * - * ------------------------------------------------------------------------- * - * The software in this package is published under the terms of the BSD * - * style license a copy of which has been included with this distribution in * - * the LICENSE.txt file. * - * * - * Original code by: Michael Ward * - *****************************************************************************/ -package org.codehaus.waffle.view; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URLEncoder; -import java.util.Map; - -/** - * @author Michael Ward - */ -public class DefaultDispatchAssistant implements DispatchAssistant { - public static final String DEFAULT_CHARACTER_ENCODING = "UTF-8"; - - public void redirect(HttpServletRequest request, - HttpServletResponse response, - Map model, - String path) throws IOException { - String encoding = request.getCharacterEncoding(); - - if (encoding == null) { - encoding = DEFAULT_CHARACTER_ENCODING; - } - - StringBuilder url = "" StringBuilder(path); - Object[] keys = model.keySet().toArray(); - - // add parameters to the url using each key value pair from the model. - for (int i = 0; i < keys.length; i++) { - Object key = keys[i]; - - if (i == 0 && url.indexOf("?") == -1) { - url.append("?"); - } else { - url.append("&"); - } - - // append key and value - url.append(URLEncoder.encode(key.toString(), encoding)) - .append("=") - .append(URLEncoder.encode(model.get(key).toString(), encoding)); - } - - response.setCharacterEncoding(encoding); - response.sendRedirect(response.encodeRedirectURL(url.toString())); - } - - public void forward(HttpServletRequest request, HttpServletResponse response, String path) - throws IOException, ServletException { - RequestDispatcher requestDispatcher = request.getRequestDispatcher(path); - requestDispatcher.forward(request, response); - } -}
Modified: trunk/core/src/main/java/org/codehaus/waffle/view/DefaultViewDispatcher.java (322 => 323)
--- trunk/core/src/main/java/org/codehaus/waffle/view/DefaultViewDispatcher.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/main/java/org/codehaus/waffle/view/DefaultViewDispatcher.java 2007-10-11 12:44:28 UTC (rev 323) @@ -11,10 +11,10 @@ package org.codehaus.waffle.view; import javax.servlet.ServletException; +import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.Map; /** * The ViewDispatcher handles redirecting/forwarding to the view @@ -24,11 +24,9 @@ */ public class DefaultViewDispatcher implements ViewDispatcher { private final ViewResolver viewResolver; - private final DispatchAssistant dispatchAssistant; - public DefaultViewDispatcher(ViewResolver viewResolver, DispatchAssistant dispatchAssistant) { + public DefaultViewDispatcher(ViewResolver viewResolver) { this.viewResolver = viewResolver; - this.dispatchAssistant = dispatchAssistant; } // todo may need to handle ... http://java.sun.com/products/servlet/Filters.html for Character Encoding from request @@ -38,12 +36,15 @@ String url = "" if (view instanceof RedirectView) { - Map model = ((RedirectView) view).getModel(); - dispatchAssistant.redirect(request, response, model, url); + RedirectView redirectView = (RedirectView) view; + + response.setStatus(redirectView.getStatusCode()); + response.setHeader("Location", url); } else if (view instanceof ResponderView) { ((ResponderView) view).respond(request, response); } else { - dispatchAssistant.forward(request, response, url); + RequestDispatcher requestDispatcher = request.getRequestDispatcher(url); + requestDispatcher.forward(request, response); } } }
Deleted: trunk/core/src/main/java/org/codehaus/waffle/view/DispatchAssistant.java (322 => 323)
--- trunk/core/src/main/java/org/codehaus/waffle/view/DispatchAssistant.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/main/java/org/codehaus/waffle/view/DispatchAssistant.java 2007-10-11 12:44:28 UTC (rev 323) @@ -1,30 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2005,2006 Michael Ward * - * All rights reserved. * - * ------------------------------------------------------------------------- * - * The software in this package is published under the terms of the BSD * - * style license a copy of which has been included with this distribution in * - * the LICENSE.txt file. * - * * - * Original code by: Michael Ward * - *****************************************************************************/ -package org.codehaus.waffle.view; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Map; - -/** - * - * @author Michael Ward - */ -public interface DispatchAssistant { - - void redirect(HttpServletRequest request, HttpServletResponse response, Map model, String path) - throws IOException; - - void forward(HttpServletRequest request, HttpServletResponse response, String path) - throws IOException, ServletException; -}
Modified: trunk/core/src/main/java/org/codehaus/waffle/view/RedirectView.java (322 => 323)
--- trunk/core/src/main/java/org/codehaus/waffle/view/RedirectView.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/main/java/org/codehaus/waffle/view/RedirectView.java 2007-10-11 12:44:28 UTC (rev 323) @@ -10,20 +10,24 @@ *****************************************************************************/ package org.codehaus.waffle.view; -import java.util.Map; +import javax.servlet.http.HttpServletResponse; /** * @author Michael Ward */ public class RedirectView extends View { - private final Map model; + private int statusCode; - public RedirectView(String value, Object fromController, Map model) { + public RedirectView(String value, Object fromController) { + this(value, fromController, HttpServletResponse.SC_SEE_OTHER); + } + + public RedirectView(String value, Object fromController, int statusCode) { super(value, fromController); - this.model = model; + this.statusCode = statusCode; } - public Map getModel() { - return model; + public int getStatusCode() { + return statusCode; } }
Modified: trunk/core/src/main/java/org/codehaus/waffle/view/View.java (322 => 323)
--- trunk/core/src/main/java/org/codehaus/waffle/view/View.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/main/java/org/codehaus/waffle/view/View.java 2007-10-11 12:44:28 UTC (rev 323) @@ -25,9 +25,14 @@ private final String value; private final Object fromController; - public View(String name, Object fromAction) { - this.value = name; - this.fromController = fromAction; + /** + * + * @param value represents the name of the View to be resolved + * @param fromController where this view orginated from + */ + public View(String value, Object fromController) { + this.value = value; + this.fromController = fromController; } // the term "value" is used to be purposely open ended @@ -37,6 +42,8 @@ /** * Represent which Controller this View originated from + * + * @return the controller instance */ public Object getFromController() { return fromController;
Modified: trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java (322 => 323)
--- trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2007-10-11 12:44:28 UTC (rev 323) @@ -35,7 +35,6 @@ import org.codehaus.waffle.testmodel.StubControllerDefinitionFactory; import org.codehaus.waffle.testmodel.StubControllerNameResolver; import org.codehaus.waffle.testmodel.StubDataBinder; -import org.codehaus.waffle.testmodel.StubDispatchAssistant; import org.codehaus.waffle.testmodel.StubMessageResources; import org.codehaus.waffle.testmodel.StubMethodDefinitionFinder; import org.codehaus.waffle.testmodel.StubMethodNameResolver; @@ -46,10 +45,8 @@ import org.codehaus.waffle.testmodel.StubRequestAttributeBinder; import org.codehaus.waffle.validation.DefaultValidator; import org.codehaus.waffle.validation.Validator; -import org.codehaus.waffle.view.DefaultDispatchAssistant; import org.codehaus.waffle.view.DefaultViewDispatcher; import org.codehaus.waffle.view.DefaultViewResolver; -import org.codehaus.waffle.view.DispatchAssistant; import org.codehaus.waffle.view.ViewDispatcher; import org.codehaus.waffle.view.ViewResolver; import org.jmock.Mock; @@ -97,7 +94,7 @@ mockServletContext.expects(once()) .method("getInitParameterNames") .will(returnValue(EMPTY_ENUMERATION)); - mockServletContext.expects(exactly(18)) + mockServletContext.expects(exactly(17)) .method("getInitParameter") .will(returnValue(null)); ServletContext servletContext = (ServletContext) mockServletContext.proxy(); @@ -108,7 +105,6 @@ assertTrue(componentRegistry.getContextContainerFactory() instanceof AbstractContextContainerFactory); assertTrue(componentRegistry.getBindErrorMessageResolver() instanceof DefaultBindErrorMessageResolver); assertTrue(componentRegistry.getDataBinder() instanceof OgnlDataBinder); - assertTrue(componentRegistry.getDispatchAssistant() instanceof DefaultDispatchAssistant); assertTrue(componentRegistry.getActionMethodExecutor() instanceof InterceptingActionMethodExecutor); assertTrue(componentRegistry.getActionMethodResponseHandler() instanceof DefaultActionMethodResponseHandler); assertTrue(componentRegistry.getMethodNameResolver() instanceof RequestParameterMethodNameResolver); @@ -138,9 +134,6 @@ .with(eq(DataBinder.class.getName())) .will(returnValue(StubDataBinder.class.getName())); mockServletContext.expects(once()).method("getInitParameter") - .with(eq(DispatchAssistant.class.getName())) - .will(returnValue(StubDispatchAssistant.class.getName())); - mockServletContext.expects(once()).method("getInitParameter") .with(eq(ActionMethodResponseHandler.class.getName())) .will(returnValue(StubActionMethodResponseHandler.class.getName())); mockServletContext.expects(once()).method("getInitParameter") @@ -189,7 +182,6 @@ assertTrue(componentRegistry.getBindErrorMessageResolver() instanceof StubBindErrorMessageResolver); assertTrue(componentRegistry.getContextContainerFactory() instanceof StubContextContainerFactory); assertFalse(componentRegistry.getDataBinder() instanceof OgnlDataBinder); - assertTrue(componentRegistry.getDispatchAssistant() instanceof StubDispatchAssistant); assertTrue(componentRegistry.getActionMethodExecutor() instanceof StubActionMethodExecutor); assertTrue(componentRegistry.getMethodDefinitionFinder() instanceof StubMethodDefinitionFinder); assertTrue(componentRegistry.getMethodNameResolver() instanceof StubMethodNameResolver); @@ -211,7 +203,7 @@ mockServletContext.expects(once()) .method("getInitParameterNames") .will(returnValue(Collections.enumeration(names))); - mockServletContext.expects(exactly(18)) + mockServletContext.expects(exactly(17)) .method("getInitParameter") .will(returnValue(null)); mockServletContext.expects(once()) @@ -235,7 +227,7 @@ mockServletContext.expects(once()) .method("getInitParameterNames") .will(returnValue(Collections.enumeration(names))); - mockServletContext.expects(exactly(18)) + mockServletContext.expects(exactly(17)) .method("getInitParameter") .will(returnValue(null)); mockServletContext.expects(once())
Deleted: trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubDispatchAssistant.java (322 => 323)
--- trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubDispatchAssistant.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubDispatchAssistant.java 2007-10-11 12:44:28 UTC (rev 323) @@ -1,19 +0,0 @@ -package org.codehaus.waffle.testmodel; - -import org.codehaus.waffle.view.DispatchAssistant; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Map; - -public class StubDispatchAssistant implements DispatchAssistant { - public void redirect(HttpServletRequest request, HttpServletResponse response, Map model, String path) throws IOException { - - } - - public void forward(HttpServletRequest request, HttpServletResponse response, String path) throws IOException, ServletException { - - } -}
Deleted: trunk/core/src/test/java/org/codehaus/waffle/view/DefaultDispatchAssistantTest.java (322 => 323)
--- trunk/core/src/test/java/org/codehaus/waffle/view/DefaultDispatchAssistantTest.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/test/java/org/codehaus/waffle/view/DefaultDispatchAssistantTest.java 2007-10-11 12:44:28 UTC (rev 323) @@ -1,153 +0,0 @@ -package org.codehaus.waffle.view; - -import org.jmock.Mock; -import org.jmock.MockObjectTestCase; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -public class DefaultDispatchAssistantTest extends MockObjectTestCase { - - public void testRedirectWithRequestCharacterEncodingOfNull() throws IOException { - // Mock HttpServletRequest - Mock mockHttpServletRequest = mock(HttpServletRequest.class); - mockHttpServletRequest - .expects(once()) - .method("getCharacterEncoding") - .will(returnValue(null)); - HttpServletRequest request = (HttpServletRequest) mockHttpServletRequest.proxy(); - - // Mock HttpServletResponse - Mock mockHttpServletResponse = mock(HttpServletResponse.class); - mockHttpServletResponse.expects(once()) - .method("setCharacterEncoding") - .with(eq("UTF-8")); - mockHttpServletResponse.expects(once()) - .method("encodeRedirectURL") - .with(eq("/foobar/hello.html")) - .will(returnValue("/foobar/hello.html;jsessionid=foobar")); - mockHttpServletResponse.expects(once()) - .method("sendRedirect") - .with(eq("/foobar/hello.html;jsessionid=foobar")); - HttpServletResponse response = (HttpServletResponse) mockHttpServletResponse.proxy(); - - DispatchAssistant dispatchAssistant = new DefaultDispatchAssistant(); - dispatchAssistant.redirect(request, response, new HashMap(), "/foobar/hello.html"); - } - - public void testRedirectWithRequestCharacterEncodingNotNull() throws IOException { - // Mock HttpServletRequest - Mock mockHttpServletRequest = mock(HttpServletRequest.class); - mockHttpServletRequest - .expects(once()) - .method("getCharacterEncoding") - .will(returnValue("ISO-8859-1")); - HttpServletRequest request = (HttpServletRequest) mockHttpServletRequest.proxy(); - - // Mock HttpServletResponse - Mock mockHttpServletResponse = mock(HttpServletResponse.class); - mockHttpServletResponse.expects(once()) - .method("setCharacterEncoding") - .with(eq("ISO-8859-1")); - mockHttpServletResponse.expects(once()) - .method("encodeRedirectURL") - .with(eq("/foobar/hello.html")) - .will(returnValue("/foobar/hello.html;jsessionid=foobar")); - mockHttpServletResponse.expects(once()) - .method("sendRedirect") - .with(eq("/foobar/hello.html;jsessionid=foobar")); - HttpServletResponse response = (HttpServletResponse) mockHttpServletResponse.proxy(); - - DispatchAssistant dispatchAssistant = new DefaultDispatchAssistant(); - dispatchAssistant.redirect(request, response, new HashMap(), "/foobar/hello.html"); - } - - public void testRedirectBuildsRequestParameters() throws IOException { - Map<String, Object> model = new HashMap<String, Object>(); - model.put("foo", 5); - model.put("bar", "<hello world>"); - - // Mock HttpServletRequest - Mock mockHttpServletRequest = mock(HttpServletRequest.class); - mockHttpServletRequest - .expects(once()) - .method("getCharacterEncoding") - .will(returnValue(null)); - HttpServletRequest request = (HttpServletRequest) mockHttpServletRequest.proxy(); - - // Mock HttpServletResponse - Mock mockHttpServletResponse = mock(HttpServletResponse.class); - mockHttpServletResponse.expects(once()) - .method("setCharacterEncoding") - .with(eq("UTF-8")); - mockHttpServletResponse.expects(once()) - .method("encodeRedirectURL") - .with(eq("/foobar/hello.html?foo=5&bar=%3Chello+world%3E")) - .will(returnValue("/foobar/hello.html?foo=5&bar=%3Chello+world%3E;jsessionid=foobar")); - mockHttpServletResponse.expects(once()) - .method("sendRedirect") - .with(eq("/foobar/hello.html?foo=5&bar=%3Chello+world%3E;jsessionid=foobar")); - HttpServletResponse response = (HttpServletResponse) mockHttpServletResponse.proxy(); - - DispatchAssistant dispatchAssistant = new DefaultDispatchAssistant(); - dispatchAssistant.redirect(request, response, model, "/foobar/hello.html"); - } - - public void testRedirectAppendsRequestParameters() throws IOException { - Map<String, Object> model = new HashMap<String, Object>(); - model.put("foo", 99); - model.put("bar", "hola!"); - - // Mock HttpServletRequest - Mock mockHttpServletRequest = mock(HttpServletRequest.class); - mockHttpServletRequest - .expects(once()) - .method("getCharacterEncoding") - .will(returnValue(null)); - HttpServletRequest request = (HttpServletRequest) mockHttpServletRequest.proxy(); - - // Mock HttpServletResponse - Mock mockHttpServletResponse = mock(HttpServletResponse.class); - mockHttpServletResponse.expects(once()) - .method("setCharacterEncoding") - .with(eq("UTF-8")); - mockHttpServletResponse.expects(once()) - .method("encodeRedirectURL") - .with(eq("/foobar/hello.html? - .will(returnValue("/foobar/hello.html? - mockHttpServletResponse.expects(once()) - .method("sendRedirect") - .with(eq("/foobar/hello.html? - HttpServletResponse response = (HttpServletResponse) mockHttpServletResponse.proxy(); - - DispatchAssistant dispatchAssistant = new DefaultDispatchAssistant(); - dispatchAssistant.redirect(request, response, model, "/foobar/hello.html? - } - - public void testForward() throws IOException, ServletException { - // Mock HttpServletResponse - Mock mockHttpServletResponse = mock(HttpServletResponse.class); - HttpServletResponse response = (HttpServletResponse) mockHttpServletResponse.proxy(); - - // Mock RequestDispatcher - Mock mockRequestDispatcher = mock(RequestDispatcher.class); - mockRequestDispatcher.expects(once()).method("forward") - .with(isA(HttpServletRequest.class), isA(HttpServletResponse.class)); - RequestDispatcher requestDispatcher = (RequestDispatcher) mockRequestDispatcher.proxy(); - - // Mock HttpServletRequest - Mock mockRequest = mock(HttpServletRequest.class); - mockRequest.expects(once()).method("getRequestDispatcher") - .will(returnValue(requestDispatcher)); - HttpServletRequest request = (HttpServletRequest) mockRequest.proxy(); - - DispatchAssistant dispatchAssistant = new DefaultDispatchAssistant(); - dispatchAssistant.forward(request, response, "/foobar.html"); - } - -}
Modified: trunk/core/src/test/java/org/codehaus/waffle/view/DefaultViewDispatcherTest.java (322 => 323)
--- trunk/core/src/test/java/org/codehaus/waffle/view/DefaultViewDispatcherTest.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/core/src/test/java/org/codehaus/waffle/view/DefaultViewDispatcherTest.java 2007-10-11 12:44:28 UTC (rev 323) @@ -9,11 +9,10 @@ import javax.servlet.ServletException; import javax.servlet.ServletRequest; +import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.HashMap; -import java.util.Map; /** * @author Michael Ward @@ -32,8 +31,7 @@ private boolean responded = false; @Override - public void respond(ServletRequest req, HttpServletResponse resp) - throws IOException { + public void respond(ServletRequest req, HttpServletResponse resp) throws IOException { responded = true; } @@ -43,59 +41,47 @@ } @Test - public void testRespondCalled() throws IOException, ServletException { + public void dispatchShouldCallRespondIfViewIsOfTypeResponder() throws IOException, ServletException { SomeResponderView view = new SomeResponderView(); ViewResolver viewResolver = mockViewResolver(view, PATH); - DefaultViewDispatcher viewDispatcher = new DefaultViewDispatcher( - viewResolver, null); + DefaultViewDispatcher viewDispatcher = new DefaultViewDispatcher(viewResolver); viewDispatcher.dispatch(mockRequest, mockResponse, view); Assert.assertTrue(view.isResponded()); } @Test - public void testDispatchCalled() throws IOException, ServletException { - Map model = new HashMap(); - RedirectView redirectView = new RedirectView(PATH, null, model); + public void dispatchShouldHandleRedirectView() throws IOException, ServletException { + RedirectView redirectView = new RedirectView(PATH, null); ViewResolver viewResolver = mockViewResolver(redirectView, PATH); - DispatchAssistant dispatchAssistant = mockDispatchAssistant(model, PATH); - DefaultViewDispatcher viewDispatcher = new DefaultViewDispatcher( - viewResolver, dispatchAssistant); + mockery.checking(new Expectations() {{ + one(mockResponse).setStatus(HttpServletResponse.SC_SEE_OTHER); + one(mockResponse).setHeader("Location", PATH); + }}); + + DefaultViewDispatcher viewDispatcher = new DefaultViewDispatcher(viewResolver); viewDispatcher.dispatch(mockRequest, mockResponse, redirectView); } @Test - public void testForwardCalled() throws IOException, ServletException { + public void dispatchShouldHandleStandardView() throws IOException, ServletException { View view = new View(PATH, null); ViewResolver viewResolver = mockViewResolver(view, PATH); - DispatchAssistant dispatchAssistant = mockDispatchAssistant(null, PATH); - DefaultViewDispatcher viewDispatcher = new DefaultViewDispatcher( - viewResolver, dispatchAssistant); + final RequestDispatcher requestDispatcher = mockery.mock(RequestDispatcher.class); + + mockery.checking(new Expectations() {{ + one(mockRequest).getRequestDispatcher(PATH); + will(returnValue(requestDispatcher)); + one(requestDispatcher).forward(mockRequest, mockResponse); + }}); + + DefaultViewDispatcher viewDispatcher = new DefaultViewDispatcher(viewResolver); viewDispatcher.dispatch(mockRequest, mockResponse, view); } - private DispatchAssistant mockDispatchAssistant(final Map model, - final String path) throws IOException, ServletException { - final DispatchAssistant dispatchAssistant = mockery - .mock(DispatchAssistant.class); - Expectations expectations = new Expectations() { - { - if (model != null) { - allowing(dispatchAssistant).redirect(mockRequest, - mockResponse, model, path); - } else { - allowing(dispatchAssistant).forward(mockRequest, - mockResponse, path); - } - } - }; - mockery.checking(expectations); - return dispatchAssistant; - } - private ViewResolver mockViewResolver(final View view, final String path) { final ViewResolver viewResolver = mockery.mock(ViewResolver.class); Expectations expectations = new Expectations() {
Added: trunk/core/src/test/java/org/codehaus/waffle/view/RedirectViewTest.java (0 => 323)
--- trunk/core/src/test/java/org/codehaus/waffle/view/RedirectViewTest.java (rev 0) +++ trunk/core/src/test/java/org/codehaus/waffle/view/RedirectViewTest.java 2007-10-11 12:44:28 UTC (rev 323) @@ -0,0 +1,21 @@ +package org.codehaus.waffle.view; + +import org.junit.Assert; +import org.junit.Test; + +import javax.servlet.http.HttpServletResponse; + +public class RedirectViewTest { + + @Test + public void defaultStatusCodeShouldBe303() { + RedirectView redirectView = new RedirectView("foo", null); + Assert.assertEquals(HttpServletResponse.SC_SEE_OTHER, redirectView.getStatusCode()); + } + + @Test + public void shouldBeAbleToSetStatusCode() { + RedirectView redirectView = new RedirectView("foo", null, 1985); + Assert.assertEquals(1985, redirectView.getStatusCode()); + } +}
Modified: trunk/distribution/src/site/content/pluggability.html (322 => 323)
--- trunk/distribution/src/site/content/pluggability.html 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/distribution/src/site/content/pluggability.html 2007-10-11 12:44:28 UTC (rev 323) @@ -55,9 +55,6 @@ <tr class="b"> <td align="left">org.codehaus.waffle.context.ContextContainerFactory</td> </tr> - <tr class="a"> - <td align="left">org.codehaus.waffle.view.DispatchHelper</td> - </tr> <tr class="b"> <td align="left">org.codehaus.waffle.i18n.MessageResources</td> </tr>
Modified: trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/action/UsersController.java (322 => 323)
--- trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/action/UsersController.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/action/UsersController.java 2007-10-11 12:44:28 UTC (rev 323) @@ -1,14 +1,12 @@ package org.codehaus.waffle.example.mydvds.action; import org.codehaus.waffle.action.annotation.ActionMethod; -import org.codehaus.waffle.example.mydvds.persistence.PersistenceManager; import org.codehaus.waffle.example.mydvds.model.Passport; import org.codehaus.waffle.example.mydvds.model.User; +import org.codehaus.waffle.example.mydvds.persistence.PersistenceManager; import org.codehaus.waffle.view.RedirectView; import org.codehaus.waffle.view.View; -import java.util.HashMap; - public class UsersController { private final PersistenceManager persistenceManager; @@ -24,7 +22,7 @@ User user = this.persistenceManager.getUserDao().search(login, password); this.passport.setUser(user); - return new RedirectView("dvds.waffle", this, new HashMap()); + return new RedirectView("dvds.waffle", this); } @ActionMethod(parameters = {"name", "login", "password"}) @@ -38,6 +36,6 @@ public View logout() { this.passport.invalidate(); - return new RedirectView("users.waffle", this, new HashMap()); + return new RedirectView("users.waffle", this); } }
Modified: trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/interceptor/AuthorizationInterceptor.java (322 => 323)
--- trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/interceptor/AuthorizationInterceptor.java 2007-10-10 22:24:19 UTC (rev 322) +++ trunk/examples/mydvds-example/src/main/java/org/codehaus/waffle/example/mydvds/interceptor/AuthorizationInterceptor.java 2007-10-11 12:44:28 UTC (rev 323) @@ -9,7 +9,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.HashMap; import java.util.HashSet; import java.util.Set; @@ -46,7 +45,7 @@ return chain.proceed(controllerDefinition, method, arguments); } else { System.out.println("Not Authenticated"); - return new RedirectView("users.waffle", controllerDefinition.getController(), new HashMap()); + return new RedirectView("users.waffle", controllerDefinition.getController()); } }
To unsubscribe from this list please visit:
