1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.tiles.request.render;
22
23 import java.io.IOException;
24
25 import org.apache.tiles.request.Request;
26 import org.apache.tiles.request.DispatchRequest;
27 import org.apache.tiles.request.RequestWrapper;
28
29
30
31
32
33
34 public class DispatchRenderer implements Renderer {
35
36
37 @Override
38 public void render(String path, Request request) throws IOException {
39 if (path == null) {
40 throw new CannotRenderException("Cannot dispatch a null path");
41 }
42 DispatchRequest dispatchRequest = getDispatchRequest(request);
43 if (dispatchRequest == null) {
44 throw new CannotRenderException("Cannot dispatch outside of a web environment");
45 }
46
47 dispatchRequest.dispatch(path);
48 }
49
50
51 public boolean isRenderable(String path, Request request) {
52 return path != null && getDispatchRequest(request) != null && path.startsWith("/");
53 }
54
55 private DispatchRequest getDispatchRequest(Request request) {
56 Request result = request;
57 while (!(result instanceof DispatchRequest) && result instanceof RequestWrapper) {
58 result = ((RequestWrapper) result).getWrappedRequest();
59 }
60 if (!(result instanceof DispatchRequest)) {
61 result = null;
62 }
63 return (DispatchRequest) result;
64 }
65 }