KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jresearch > gossip > tags > ProcessMessageTag


1 /*
2  * $$Id$$
3  *
4  * ***** BEGIN LICENSE BLOCK *****
5  * The contents of this file are subject to the Mozilla Public License
6  * Version 1.1 (the "License"); you may not use this file except in
7  * compliance with the License. You may obtain a copy of the License
8  * at http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS"
11  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
12  * the License for the specific language governing rights and
13  * limitations under the License.
14  *
15  * The Original Code is JGossip forum code.
16  *
17  * The Initial Developer of the Original Code is the JResearch, Org.
18  * Portions created by the Initial Developer are Copyright (C) 2004
19  * the Initial Developer. All Rights Reserved.
20  *
21  * Contributor(s):
22  * Dmitry Belov <bel@jresearch.org>
23  *
24  * ***** END LICENSE BLOCK ***** */

25 /*
26  * Created on Oct 10, 2003
27  *
28  */

29 package org.jresearch.gossip.tags;
30
31 import java.io.IOException JavaDoc;
32
33 import javax.servlet.jsp.JspException JavaDoc;
34 import javax.servlet.jsp.JspWriter JavaDoc;
35 import javax.servlet.jsp.tagext.BodyTagSupport JavaDoc;
36
37 import org.apache.log.Logger;
38 import org.apache.struts.Globals;
39 import org.apache.struts.util.MessageResources;
40 import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
41 import org.jresearch.gossip.IConst;
42 import org.jresearch.gossip.configuration.Configurator;
43 import org.jresearch.gossip.exception.ConfiguratorException;
44 import org.jresearch.gossip.exception.SystemException;
45 import org.jresearch.gossip.log.avalon.JGossipLog;
46 import org.jresearch.gossip.util.HtmlCodec;
47 import org.jresearch.gossip.util.MessageProcessor;
48
49 /**
50  * DOCUMENT ME!
51  *
52  * @author Bel
53  */

54 public class ProcessMessageTag extends BodyTagSupport JavaDoc {
55
56     /**
57      * Logger instance.
58      */

59     private Logger log;
60
61     /** DOCUMENT ME! */
62     private int cutToLength;
63
64     private String JavaDoc value;
65
66     private boolean skipSmiles;
67
68     /**
69      * Default c'tor.
70      */

71     public ProcessMessageTag() {
72         super();
73         try {
74             log = JGossipLog.getInstance().getAppLogger();
75         } catch (SystemException e) { /* Ignore Exception! */
76         }
77     }
78
79     private void eval() throws JspException JavaDoc {
80         if (value != null) {
81             value = (String JavaDoc) ExpressionEvaluatorManager.evaluate("value",
82                     value, String JavaDoc.class, this, pageContext);
83         }
84     }
85
86     /**
87      * DOCUMENT ME!
88      *
89      * @return DOCUMENT ME!
90      *
91      * @throws JspException
92      * DOCUMENT ME!
93      */

94     public int doStartTag() throws JspException JavaDoc {
95         try {
96             if (value != null) {
97                 eval();
98                 value = HtmlCodec.encode(value);
99
100                 JspWriter JavaDoc out = pageContext.getOut();
101                 out.print(process(value, skipSmiles));
102             }
103         } catch (IOException JavaDoc ex) {
104             if (log.isErrorEnabled()) {
105                 log.error("ProcessMessageTag::", ex);
106             }
107             throw new JspException JavaDoc("error in ProcessMessageTag tag:"
108                     + ex.getMessage());
109         } catch (ConfiguratorException e) {
110             if (log.isErrorEnabled()) {
111                 log.error("ProcessMessageTag::", e);
112             }
113             throw new JspException JavaDoc("error in ProcessMessageTag tag:"
114                     + e.getMessage());
115         }
116
117         return (EVAL_BODY_BUFFERED);
118     }
119
120     /**
121      * DOCUMENT ME!
122      *
123      * @return DOCUMENT ME!
124      *
125      * @throws JspException
126      * DOCUMENT ME!
127      */

128     public int doAfterBody() throws JspException JavaDoc {
129         try {
130             String JavaDoc result = HtmlCodec.encode(bodyContent.getString());
131             result = process(result, skipSmiles);
132             bodyContent.clearBody();
133             bodyContent.print(result);
134             bodyContent.writeOut(getPreviousOut());
135         } catch (IOException JavaDoc ex) {
136             if (log.isErrorEnabled()) {
137                 log.error("ProcessMessageTag::", ex);
138             }
139             throw new JspException JavaDoc("error in ProcessMessageTag tag:"
140                     + ex.getMessage());
141         } catch (ConfiguratorException e) {
142             if (log.isErrorEnabled()) {
143                 log.error("ProcessMessageTag::", e);
144             }
145             throw new JspException JavaDoc("error in ProcessMessageTag tag:"
146                     + e.getMessage());
147         }
148
149         return SKIP_BODY;
150     }
151
152     private String JavaDoc process(String JavaDoc result, boolean skipSmiles)
153             throws ConfiguratorException {
154         MessageProcessor mp = MessageProcessor.getInstance();
155         Configurator conf = Configurator.getInstance();
156         result = mp
157                 .prepareMessage(
158                         result,
159                         this.cutToLength,
160                         (MessageResources) pageContext
161                                 .getServletContext()
162                                 .getAttribute(
163                                         Globals.MESSAGES_KEY
164                                                 + conf
165                                                         .get(IConst.CONFIG.MODULE_PREFIX)));
166
167         if ((cutToLength == 0) && !skipSmiles) {
168             result = mp.processEmoticons(result, (MessageResources) pageContext
169                     .getServletContext().getAttribute(
170                             Globals.MESSAGES_KEY
171                                     + conf.get(IConst.CONFIG.MODULE_PREFIX)));
172         } else if (skipSmiles) {
173             result = mp.cleanup(result);
174         }
175
176         return result;
177     }
178
179     /**
180      * DOCUMENT ME!
181      *
182      * @return
183      */

184     public int getCutToLength() {
185         return cutToLength;
186     }
187
188     /**
189      * DOCUMENT ME!
190      *
191      * @param i
192      */

193     public void setCutToLength(int i) {
194         cutToLength = i;
195     }
196
197     /**
198      * DOCUMENT ME!
199      *
200      * @return
201      */

202     public String JavaDoc getValue() {
203         return value;
204     }
205
206     /**
207      * DOCUMENT ME!
208      *
209      * @param string
210      */

211     public void setValue(String JavaDoc string) {
212         value = string;
213     }
214
215     /**
216      * DOCUMENT ME!
217      *
218      * @return
219      */

220     public boolean isSkipSmiles() {
221         return skipSmiles;
222     }
223
224     /**
225      * DOCUMENT ME!
226      *
227      * @param b
228      */

229     public void setSkipSmiles(boolean b) {
230         skipSmiles = b;
231     }
232 }
233
Popular Tags