01: /*
02: * argun 1.0
03: * Web 2.0 delivery framework
04: * Copyright (C) 2007 Hammurapi Group
05: *
06: * This program is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2 of the License, or (at your option) any later version.
10: *
11: * This program is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: *
20: * URL: http://www.hammurapi.biz
21: * e-Mail: support@hammurapi.biz
22: */
23: package biz.hammurapi.web.eval;
24:
25: import java.io.IOException;
26: import java.io.StringWriter;
27: import java.util.HashMap;
28: import java.util.Map;
29:
30: import org.onemind.jxp.JxpContext;
31: import org.onemind.jxp.JxpPageSource;
32: import org.onemind.jxp.JxpProcessor;
33:
34: import biz.hammurapi.config.MapContext;
35: import biz.hammurapi.web.HammurapiWebException;
36:
37: /**
38: * Interprets JSP-like code with Jxp.
39: * @author Pavel
40: */
41: public class JxpEvaluator implements Evaluator {
42:
43: public EvaluationResult evaluate(String source, String sourceName,
44: Map context, ClassLoader classLoader)
45: throws HammurapiWebException {
46: try {
47: Map map = new HashMap();
48: map.put(sourceName, source);
49: JxpPageSource pageSource = new ContextPageSource(
50: new MapContext(map));
51: JxpContext jxpContext = new JxpContext(pageSource, context);
52: JxpProcessor processor = new JxpProcessor(jxpContext);
53: StringWriter writer = new StringWriter();
54: processor.process(sourceName, writer);
55: writer.close();
56: final String output = writer.toString();
57: return new EvaluationResult() {
58:
59: public String getOutput() {
60: return output;
61: }
62:
63: public Object getResult() {
64: return null;
65: }
66:
67: };
68: } catch (IOException e) {
69: throw new HammurapiWebException(
70: "Should never happen: " + e, e);
71: } catch (Exception e) {
72: throw new HammurapiWebException("Template " + sourceName
73: + " instantiation failed: " + e, e);
74: }
75: }
76:
77: }
|