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;
}
}