KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > struts > taglib > bean > ExMessageTag


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.ext.struts.taglib.bean;
66
67 import com.jcorporate.expresso.core.controller.ControllerResponse;
68 import com.jcorporate.expresso.ext.struts.taglib.ControllerUtils;
69 import com.jcorporate.expresso.ext.taglib.MessageUtil;
70 import org.apache.struts.taglib.bean.MessageTag;
71 import org.apache.struts.util.ResponseUtils;
72
73 import javax.servlet.jsp.JspException JavaDoc;
74 import javax.servlet.jsp.PageContext JavaDoc;
75
76
77 /**
78  * Expresso-specific extension to the MessageTag from Struts:
79  * this version gets it's message string from the ControllerRequest object,
80  * which knows the current user's locale settings already, and also has
81  * the application schema code, which allows us to use the appropriate message
82  * bundle file for the current application, as Expresso support multiple
83  * message bundles, one per schema
84  *
85  * @author Michael Nash
86  */

87 public class ExMessageTag
88         extends MessageTag {
89     public final static String JavaDoc SCHEMA_KEY = "ExMessageTag.SCHEMA";
90     public String JavaDoc schemaClass = null;
91
92     public void setSchema(String JavaDoc newSchema) {
93         schemaClass = newSchema;
94     }
95
96     public String JavaDoc getSchema() {
97         return schemaClass;
98     }
99     // --------------------------------------------------------- Public Methods
100
/**
101      * Process the start tag.
102      *
103      * @return integer as defined in the standard tag library framework.
104      * @throws JspException if a JSP exception has occurred
105      */

106     public int doStartTag()
107             throws JspException JavaDoc {
108
109         // Construct the optional arguments array we will be using
110
Object JavaDoc[] args = new Object JavaDoc[5];
111         args[0] = arg0;
112         args[1] = arg1;
113         args[2] = arg2;
114         args[3] = arg3;
115         args[4] = arg4;
116
117         String JavaDoc useSchema = null;
118         String JavaDoc message = null;
119
120         /* If we weren't given a schema class */
121         if (schemaClass == null) {
122             useSchema = (String JavaDoc) pageContext.getAttribute(SCHEMA_KEY,
123                     PageContext.PAGE_SCOPE);
124         } else {
125             useSchema = schemaClass;
126             pageContext.setAttribute(SCHEMA_KEY, useSchema,
127                     PageContext.PAGE_SCOPE);
128         }
129         /* If we didn't get a schema from the context */
130         if (useSchema == null) {
131             ControllerResponse myResponse = ControllerUtils.getResponse(pageContext);
132
133             if (myResponse != null) {
134                 pageContext.setAttribute(SCHEMA_KEY, myResponse.getSchema(),
135                         PageContext.PAGE_SCOPE);
136             }
137         }
138
139         message = MessageUtil.getString(pageContext, key, args);
140
141         if (message == null) {
142             message = key;
143         }
144
145         // Print the retrieved message to our output writer
146
ResponseUtils.write(pageContext, message);
147
148         // Continue processing this page
149
return (SKIP_BODY);
150     }
151 }
Popular Tags