KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > services > taglib > ELTagSupport


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

66
67 import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
68
69 import javax.servlet.jsp.JspException JavaDoc;
70 import javax.servlet.jsp.PageContext JavaDoc;
71 import javax.servlet.jsp.tagext.Tag JavaDoc;
72
73 /**
74  * ELTag support provides a wrapper around the actual JSTL-el parsers. Once
75  * the JSP APIs advance, we will basically be able to call the JSP system
76  * directly rather than rely on the Apache JSTL parser. The goal here
77  * will be to switch relatively painlessly.
78  * <p>Typical usage:
79  * <blockquote>
80  * String myVal = (String)ELTagSupport.getInstance().evaluate(&quot;test&quot;,<br/>
81  * &nbsp;&nbsp; &quot;${controllerResponse.namedInputs[\"Test\"].defaultValue}&quot;,<br/>
82  * &nbsp;&nbsp; java.lang.String.class,<br/>
83  * &nbsp;&nbsp; this,<br/>
84  * &nbsp;&nbsp; pageContext);<br/>
85  * </blockquote>
86  * </p>
87  *
88  * @author Michael Rimov
89  * @since Expresso 5.3
90  */

91 public class ELTagSupport {
92     /**
93      * The one and only ELTag support instance
94      */

95     private static ELTagSupport theInstance = null;
96
97     /**
98      * Protected constructor
99      */

100     protected ELTagSupport() {
101     }
102
103     /**
104      * Use this method to evaluate a JSTL expression to an object
105      *
106      * @param attributeName the attribute name
107      * @param expression the expression to evaluate
108      * @param expectedType the expected type, ex: java.lang.String.class
109      * @param tag the calling tag
110      * @param pageContext the tag's page context
111      * @return Object of type 'expextedType'
112      * @throws JspException upon parsing or evaluation error
113      */

114     public Object JavaDoc evaluate(String JavaDoc attributeName,
115                            String JavaDoc expression,
116                            Class JavaDoc expectedType,
117                            Tag JavaDoc tag,
118                            PageContext JavaDoc pageContext) throws JspException JavaDoc {
119
120         return ExpressionEvaluatorManager.evaluate(attributeName,
121                 expression, expectedType, tag, pageContext);
122     }
123
124     /**
125      * Call to get an instance of ELTagSupport object
126      *
127      * @return a constructed instance of ELTagSUpport
128      */

129     public synchronized static ELTagSupport getInstance() {
130         if (theInstance == null) {
131             theInstance = new ELTagSupport();
132         }
133
134         return theInstance;
135     }
136 }
Popular Tags