Title: [waffle-scm] [323] trunk/distribution/src/site/content: refactored out the use of a DispatchAssistant

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:

http://xircles.codehaus.org/manage_email

Reply via email to