This project has retired. For details please refer to its
Attic page.
VelocityAutotagRuntime xref
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.velocity.autotag;
22
23 import java.io.Writer;
24 import java.util.Map;
25 import javax.servlet.ServletContext;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import org.apache.tiles.autotag.core.runtime.ModelBody;
29 import org.apache.tiles.autotag.core.runtime.AutotagRuntime;
30 import org.apache.tiles.request.Request;
31 import org.apache.tiles.request.servlet.ServletUtil;
32 import org.apache.tiles.request.velocity.VelocityRequest;
33 import org.apache.velocity.context.InternalContextAdapter;
34 import org.apache.velocity.runtime.directive.Directive;
35 import org.apache.velocity.runtime.parser.node.ASTBlock;
36 import org.apache.velocity.runtime.parser.node.ASTMap;
37 import org.apache.velocity.runtime.parser.node.Node;
38 import org.apache.velocity.tools.view.ViewContext;
39
40
41
42
43 public class VelocityAutotagRuntime extends Directive implements AutotagRuntime<Request> {
44 private InternalContextAdapter context;
45 private Writer writer;
46 private Node node;
47 private Map<String, Object> params;
48
49
50 @Override
51 public Request createRequest() {
52 ViewContext viewContext = (ViewContext) context.getInternalUserContext();
53 HttpServletRequest request = viewContext.getRequest();
54 HttpServletResponse response = viewContext.getResponse();
55 ServletContext servletContext = viewContext.getServletContext();
56 return VelocityRequest.createVelocityRequest(ServletUtil.getApplicationContext(servletContext),
57 request,
58 response,
59 context,
60 writer);
61 }
62
63
64 @Override
65 public ModelBody createModelBody() {
66 ASTBlock block = (ASTBlock) node.jjtGetChild(1);
67 return new VelocityModelBody(context, block, writer);
68 }
69
70
71 @Override
72 @SuppressWarnings("unchecked")
73 public <T> T getParameter(String name, Class<T> type, T defaultValue) {
74 if (params == null) {
75 ASTMap astMap = (ASTMap) node.jjtGetChild(0);
76 params = (Map<String, Object>) astMap.value(context);
77 }
78 T result = (T) params.get(name);
79 if (result == null) {
80 result = defaultValue;
81 }
82 return result;
83 }
84
85
86 @Override
87 public String getName() {
88 return null;
89 }
90
91
92 @Override
93 public int getType() {
94 return 0;
95 }
96
97
98 @Override
99 public boolean render(InternalContextAdapter context, Writer writer, Node node) {
100 this.context = context;
101 this.writer = writer;
102 this.node = node;
103 return false;
104 }
105
106 }