KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > javax > servlet > jsp > tagext > TagData


1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */

17
18 package javax.servlet.jsp.tagext;
19
20 import java.util.Hashtable JavaDoc;
21
22 /**
23  * The (translation-time only) attribute/value information for a tag instance.
24  *
25  * <p>
26  * TagData is only used as an argument to the isValid, validate, and
27  * getVariableInfo methods of TagExtraInfo, which are invoked at
28  * translation time.
29  */

30
31 public class TagData implements Cloneable JavaDoc {
32
33     /**
34      * Distinguished value for an attribute to indicate its value
35      * is a request-time expression (which is not yet available because
36      * TagData instances are used at translation-time).
37      */

38
39     public static final Object JavaDoc REQUEST_TIME_VALUE = new Object JavaDoc();
40
41
42     /**
43      * Constructor for TagData.
44      *
45      * <p>
46      * A typical constructor may be
47      * <pre>
48      * static final Object[][] att = {{"connection", "conn0"}, {"id", "query0"}};
49      * static final TagData td = new TagData(att);
50      * </pre>
51      *
52      * All values must be Strings except for those holding the
53      * distinguished object REQUEST_TIME_VALUE.
54
55      * @param atts the static attribute and values. May be null.
56      */

57     public TagData(Object JavaDoc[] atts[]) {
58     if (atts == null) {
59         attributes = new Hashtable JavaDoc<String JavaDoc, Object JavaDoc>();
60     } else {
61         attributes = new Hashtable JavaDoc<String JavaDoc, Object JavaDoc>(atts.length);
62     }
63
64     if (atts != null) {
65         for (int i = 0; i < atts.length; i++) {
66         attributes.put((String JavaDoc) atts[i][0], atts[i][1]);
67         }
68     }
69     }
70
71     /**
72      * Constructor for a TagData.
73      *
74      * If you already have the attributes in a hashtable, use this
75      * constructor.
76      *
77      * @param attrs A hashtable to get the values from.
78      */

79     public TagData(Hashtable JavaDoc<String JavaDoc, Object JavaDoc> attrs) {
80         this.attributes = attrs;
81     }
82
83     /**
84      * The value of the tag's id attribute.
85      *
86      * @return the value of the tag's id attribute, or null if no such
87      * attribute was specified.
88      */

89
90     public String JavaDoc getId() {
91     return getAttributeString(TagAttributeInfo.ID);
92     }
93
94     /**
95      * The value of the attribute.
96      * If a static value is specified for an attribute that accepts a
97      * request-time attribute expression then that static value is returned,
98      * even if the value is provided in the body of a <jsp:attribute> action.
99      * The distinguished object REQUEST_TIME_VALUE is only returned if
100      * the value is specified as a request-time attribute expression
101      * or via the &lt;jsp:attribute&gt; action with a body that contains
102      * dynamic content (scriptlets, scripting expressions, EL expressions,
103      * standard actions, or custom actions). Returns null if the attribute
104      * is not set.
105      *
106      * @param attName the name of the attribute
107      * @return the attribute's value
108      */

109
110     public Object JavaDoc getAttribute(String JavaDoc attName) {
111     return attributes.get(attName);
112     }
113
114     /**
115      * Set the value of an attribute.
116      *
117      * @param attName the name of the attribute
118      * @param value the value.
119      */

120     public void setAttribute(String JavaDoc attName,
121                  Object JavaDoc value) {
122     attributes.put(attName, value);
123     }
124
125     /**
126      * Get the value for a given attribute.
127      *
128      * @param attName the name of the attribute
129      * @return the attribute value string
130      * @throws ClassCastException if attribute value is not a String
131      */

132
133     public String JavaDoc getAttributeString(String JavaDoc attName) {
134     Object JavaDoc o = attributes.get(attName);
135     if (o == null) {
136         return null;
137     } else {
138         return (String JavaDoc) o;
139     }
140     }
141
142     /**
143      * Enumerates the attributes.
144      *
145      *@return An enumeration of the attributes in a TagData
146      */

147     public java.util.Enumeration JavaDoc<String JavaDoc> getAttributes() {
148         return attributes.keys();
149     };
150
151     // private data
152

153     private Hashtable JavaDoc<String JavaDoc, Object JavaDoc> attributes; // the tagname/value map
154
}
155
Popular Tags