1 package org.apache.turbine.modules.layouts;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import java.io.StringReader;
25
26 import org.apache.commons.logging.Log;
27 import org.apache.commons.logging.LogFactory;
28 import org.apache.ecs.ConcreteElement;
29 import org.apache.fulcrum.xslt.XSLTServiceFacade;
30 import org.apache.turbine.TurbineConstants;
31 import org.apache.turbine.modules.Layout;
32 import org.apache.turbine.modules.Screen;
33 import org.apache.turbine.modules.ScreenLoader;
34 import org.apache.turbine.pipeline.PipelineData;
35 import org.apache.turbine.services.assemblerbroker.TurbineAssemblerBroker;
36 import org.apache.turbine.services.velocity.TurbineVelocity;
37 import org.apache.turbine.util.RunData;
38 import org.apache.turbine.util.template.TemplateNavigation;
39 import org.apache.velocity.context.Context;
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 public class VelocityXslLayout extends Layout
61 {
62
63 private static Log log = LogFactory.getLog(VelocityXslLayout.class);
64
65
66 private String prefix = Layout.PREFIX + "/";
67
68 private ScreenLoader screenLoader;
69
70
71
72
73 public VelocityXslLayout()
74 {
75 super();
76
77 this.screenLoader = (ScreenLoader)TurbineAssemblerBroker.getLoader(Screen.NAME);
78 }
79
80
81
82
83
84
85
86
87 @Deprecated
88 @Override
89 public void doBuild(RunData data)
90 throws Exception
91 {
92
93 Context context = TurbineVelocity.getContext(data);
94
95 data.getResponse().setContentType("text/html");
96
97 String screenName = data.getScreen();
98
99 log.debug("Loading Screen " + screenName);
100
101
102
103 ConcreteElement results =
104 screenLoader.eval(data, screenName);
105
106 String returnValue = (results == null) ? "" : results.toString();
107
108
109 context.put(TurbineConstants.SCREEN_PLACEHOLDER, returnValue);
110
111
112 context.put(TurbineConstants.NAVIGATION_PLACEHOLDER,
113 new TemplateNavigation(data));
114
115
116
117
118 String templateName = data.getTemplateInfo().getLayoutTemplate();
119
120 log.debug("Now trying to render layout " + templateName);
121
122
123 String temp = TurbineVelocity.handleRequest(context,
124 prefix + templateName);
125
126
127
128 XSLTServiceFacade.transform(
129 data.getTemplateInfo().getScreenTemplate(),
130 new StringReader(temp), data.getResponse().getWriter());
131 }
132
133
134
135
136
137
138
139
140 @Override
141 public void doBuild(PipelineData pipelineData)
142 throws Exception
143 {
144 RunData data = getRunData(pipelineData);
145
146 Context context = TurbineVelocity.getContext(pipelineData);
147
148 data.getResponse().setContentType("text/html");
149
150 String screenName = data.getScreen();
151
152 log.debug("Loading Screen " + screenName);
153
154
155
156 ConcreteElement results =
157 screenLoader.eval(pipelineData, screenName);
158
159 String returnValue = (results == null) ? "" : results.toString();
160
161
162 context.put(TurbineConstants.SCREEN_PLACEHOLDER, returnValue);
163
164
165 context.put(TurbineConstants.NAVIGATION_PLACEHOLDER,
166 new TemplateNavigation(data));
167
168
169
170
171 String templateName = data.getTemplateInfo().getLayoutTemplate();
172
173 log.debug("Now trying to render layout " + templateName);
174
175
176 String temp = TurbineVelocity.handleRequest(context,
177 prefix + templateName);
178
179
180
181 XSLTServiceFacade.transform(
182 data.getTemplateInfo().getScreenTemplate(),
183 new StringReader(temp), data.getResponse().getWriter());
184 }
185 }