KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opensymphony > webwork > views > freemarker > tags > TagModel


1 package com.opensymphony.webwork.views.freemarker.tags;
2
3 import com.opensymphony.webwork.components.Component;
4 import com.opensymphony.xwork.util.OgnlValueStack;
5 import freemarker.template.TemplateModelException;
6 import freemarker.template.TemplateTransformModel;
7
8 import javax.servlet.http.HttpServletRequest JavaDoc;
9 import javax.servlet.http.HttpServletResponse JavaDoc;
10 import java.io.IOException JavaDoc;
11 import java.io.Writer JavaDoc;
12 import java.util.HashMap JavaDoc;
13 import java.util.Iterator JavaDoc;
14 import java.util.Map JavaDoc;
15
16 /**
17  * User: plightbo
18  * Date: Jul 18, 2005
19  * Time: 8:00:43 PM
20  */

21 public abstract class TagModel implements TemplateTransformModel {
22     protected OgnlValueStack stack;
23     protected HttpServletRequest JavaDoc req;
24     protected HttpServletResponse JavaDoc res;
25
26     public TagModel(OgnlValueStack stack, HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res) {
27         this.stack = stack;
28         this.req = req;
29         this.res = res;
30     }
31
32     public Writer JavaDoc getWriter(Writer JavaDoc writer, Map JavaDoc params) throws TemplateModelException, IOException JavaDoc {
33         Component bean = getBean();
34         params = convertParams(params);
35         bean.copyParams(params);
36         //bean.addAllParameters(params);
37
bean.start(writer);
38         return new CallbackWriter(bean, writer);
39     }
40
41     protected abstract Component getBean();
42
43     private Map JavaDoc convertParams(Map JavaDoc params) {
44         HashMap JavaDoc map = new HashMap JavaDoc(params.size());
45         for (Iterator JavaDoc iterator = params.entrySet().iterator(); iterator.hasNext();) {
46             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) iterator.next();
47             map.put(entry.getKey(), entry.getValue().toString());
48         }
49         return map;
50     }
51
52 }
53
Popular Tags