You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by nl...@apache.org on 2012/07/31 20:09:10 UTC

svn commit: r1367698 - /tiles/request/trunk/tiles-request-api/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java

Author: nlebas
Date: Tue Jul 31 18:09:10 2012
New Revision: 1367698

URL: http://svn.apache.org/viewvc?rev=1367698&view=rev
Log:
TREQ-12 Spring integration

Modified:
    tiles/request/trunk/tiles-request-api/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java

Modified: tiles/request/trunk/tiles-request-api/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java
URL: http://svn.apache.org/viewvc/tiles/request/trunk/tiles-request-api/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java?rev=1367698&r1=1367697&r2=1367698&view=diff
==============================================================================
--- tiles/request/trunk/tiles-request-api/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java (original)
+++ tiles/request/trunk/tiles-request-api/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java Tue Jul 31 18:09:10 2012
@@ -24,6 +24,7 @@ import java.io.IOException;
 
 import org.apache.tiles.request.Request;
 import org.apache.tiles.request.DispatchRequest;
+import org.apache.tiles.request.RequestWrapper;
 
 /**
  * Renders an attribute that contains a reference to a template.
@@ -38,15 +39,27 @@ public class DispatchRenderer implements
         if (path == null) {
             throw new CannotRenderException("Cannot dispatch a null path");
         }
-        if (!(request instanceof DispatchRequest)) {
+        DispatchRequest dispatchRequest = getDispatchRequest(request);
+        if (dispatchRequest == null) {
             throw new CannotRenderException("Cannot dispatch outside of a web environment");
         }
 
-        ((DispatchRequest) request).dispatch(path);
+        dispatchRequest.dispatch(path);
     }
 
     /** {@inheritDoc} */
     public boolean isRenderable(String path, Request request) {
-        return path != null && path.startsWith("/");
+        return path != null && getDispatchRequest(request) != null && path.startsWith("/");
+    }
+
+    private DispatchRequest getDispatchRequest(Request request) {
+        Request result = request;
+        while (!(result instanceof DispatchRequest) && result instanceof RequestWrapper) {
+            result = ((RequestWrapper) result).getWrappedRequest();
+        }
+        if (!(result instanceof DispatchRequest)) {
+            result = null;
+        }
+        return (DispatchRequest) result;
     }
 }