KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.opensymphony.webwork.views.freemarker.tags;
2
3 import com.opensymphony.webwork.components.Component;
4 import freemarker.template.TemplateModelException;
5 import freemarker.template.TemplateTransformModel;
6 import freemarker.template.TransformControl;
7
8 import java.io.IOException JavaDoc;
9 import java.io.StringWriter JavaDoc;
10 import java.io.Writer JavaDoc;
11 import java.util.Map JavaDoc;
12
13 /**
14  * User: plightbo
15  * Date: Aug 7, 2005
16  * Time: 3:18:57 PM
17  */

18 public class ParamModel implements TemplateTransformModel {
19     public Writer JavaDoc getWriter(Writer JavaDoc writer, Map JavaDoc map) throws TemplateModelException, IOException JavaDoc {
20         String JavaDoc name = map.get("name").toString();
21         String JavaDoc value = null;
22         if (map.containsKey("value")) {
23             value = map.get("value").toString();
24         }
25
26         if (writer instanceof CallbackWriter) {
27             CallbackWriter cw = (CallbackWriter) writer;
28             Component bean = cw.getBean();
29             return new ParamWriter(bean, name, value);
30         } else {
31             throw new RuntimeException JavaDoc("Param tag not used inside of valid element");
32         }
33     }
34
35     public static class ParamWriter extends Writer JavaDoc implements TransformControl {
36         StringWriter JavaDoc writer = new StringWriter JavaDoc();
37
38         Component bean;
39         String JavaDoc name;
40         String JavaDoc value;
41
42         public ParamWriter(Component bean, String JavaDoc name, String JavaDoc value) {
43             this.bean = bean;
44             this.name = name;
45             this.value = value;
46         }
47
48         public void write(char cbuf[], int off, int len) throws IOException JavaDoc {
49             writer.write(cbuf, off, len);
50         }
51
52         public void flush() throws IOException JavaDoc {
53             writer.flush();
54         }
55
56         public void close() throws IOException JavaDoc {
57             writer.close();
58         }
59
60         public int onStart() throws TemplateModelException, IOException JavaDoc {
61             return EVALUATE_BODY;
62         }
63
64         public int afterBody() throws TemplateModelException, IOException JavaDoc {
65             if (value != null) {
66                 bean.addParameter(name, value);
67             } else {
68                 bean.addParameter(name, writer.toString());
69             }
70
71             return END_EVALUATION;
72         }
73
74         public void onError(Throwable JavaDoc throwable) throws Throwable JavaDoc {
75             throw throwable;
76         }
77     }
78 }
79
Popular Tags