1 /**
2 * Licensed under the Artistic License; you may not use this file
3 * except in compliance with the License.
4 * You may obtain a copy of the License at
5 *
6 * http://displaytag.sourceforge.net/license.html
7 *
8 * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
9 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11 */
12 package org.displaytag.tags;
13
14 import java.beans.IntrospectionException;
15 import java.beans.PropertyDescriptor;
16 import java.beans.SimpleBeanInfo;
17 import java.util.ArrayList;
18 import java.util.List;
19
20 import org.apache.commons.lang.UnhandledException;
21
22
23 /**
24 * Beaninfo class for tableTag. Needed to make the "class" tag attribute working and to handle the swith between
25 * setName() and setNameString() setters for the name attribute.
26 * @author Fabrizio Giustina
27 * @version $Revision: 1081 $ ($Author: fgiust $)
28 */
29 public class TableTagBeanInfo extends SimpleBeanInfo
30 {
31
32 /**
33 * @see java.beans.BeanInfo#getPropertyDescriptors()
34 */
35 public PropertyDescriptor[] getPropertyDescriptors()
36 {
37 List proplist = new ArrayList();
38
39 try
40 {
41 proplist.add(new PropertyDescriptor("cellpadding", //$NON-NLS-1$
42 TableTag.class, null, "setCellpadding")); //$NON-NLS-1$
43 proplist.add(new PropertyDescriptor("cellspacing", //$NON-NLS-1$
44 TableTag.class, null, "setCellspacing")); //$NON-NLS-1$
45 proplist.add(new PropertyDescriptor("class", //$NON-NLS-1$
46 TableTag.class, null, "setClass")); //$NON-NLS-1$
47 proplist.add(new PropertyDescriptor("decorator", //$NON-NLS-1$
48 TableTag.class, null, "setDecorator")); //$NON-NLS-1$
49 proplist.add(new PropertyDescriptor("defaultorder", //$NON-NLS-1$
50 TableTag.class, null, "setDefaultorder")); //$NON-NLS-1$
51 proplist.add(new PropertyDescriptor("defaultsort", //$NON-NLS-1$
52 TableTag.class, null, "setDefaultsort")); //$NON-NLS-1$
53 proplist.add(new PropertyDescriptor("export", //$NON-NLS-1$
54 TableTag.class, null, "setExport")); //$NON-NLS-1$
55 proplist.add(new PropertyDescriptor("frame", //$NON-NLS-1$
56 TableTag.class, null, "setFrame")); //$NON-NLS-1$
57 proplist.add(new PropertyDescriptor("length", //$NON-NLS-1$
58 TableTag.class, null, "setLength")); //$NON-NLS-1$
59 proplist.add(new PropertyDescriptor("offset", //$NON-NLS-1$
60 TableTag.class, null, "setOffset")); //$NON-NLS-1$
61 proplist.add(new PropertyDescriptor("pagesize", //$NON-NLS-1$
62 TableTag.class, null, "setPagesize")); //$NON-NLS-1$
63 proplist.add(new PropertyDescriptor("partialList", //$NON-NLS-1$
64 TableTag.class, null, "setPartialList")); //$NON-NLS-1$
65 proplist.add(new PropertyDescriptor("requestURI", //$NON-NLS-1$
66 TableTag.class, null, "setRequestURI")); //$NON-NLS-1$
67 proplist.add(new PropertyDescriptor("requestURIcontext", //$NON-NLS-1$
68 TableTag.class, null, "setRequestURIcontext")); //$NON-NLS-1$
69 proplist.add(new PropertyDescriptor("rules", //$NON-NLS-1$
70 TableTag.class, null, "setRules")); //$NON-NLS-1$
71 proplist.add(new PropertyDescriptor("sort", //$NON-NLS-1$
72 TableTag.class, null, "setSort")); //$NON-NLS-1$
73 proplist.add(new PropertyDescriptor("style", //$NON-NLS-1$
74 TableTag.class, null, "setStyle")); //$NON-NLS-1$
75 proplist.add(new PropertyDescriptor("summary", //$NON-NLS-1$
76 TableTag.class, null, "setSummary")); //$NON-NLS-1$
77 proplist.add(new PropertyDescriptor("excludedParams", //$NON-NLS-1$
78 TableTag.class, null, "setExcludedParams")); //$NON-NLS-1$
79 proplist.add(new PropertyDescriptor("id", //$NON-NLS-1$
80 TableTag.class, null, "setUid")); //$NON-NLS-1$
81 proplist.add(new PropertyDescriptor("uid", //$NON-NLS-1$
82 TableTag.class, null, "setUid")); //$NON-NLS-1$
83 proplist.add(new PropertyDescriptor("htmlId", //$NON-NLS-1$
84 TableTag.class, null, "setHtmlId")); //$NON-NLS-1$
85 proplist.add(new PropertyDescriptor("varTotals", //$NON-NLS-1$
86 TableTag.class, null, "setVarTotals")); //$NON-NLS-1$
87
88 // deprecated attributes
89 proplist.add(new PropertyDescriptor("list", //$NON-NLS-1$
90 TableTag.class, null, "setList")); //$NON-NLS-1$
91
92 // make ATG Dynamo happy:
93 proplist.add(new PropertyDescriptor("className", //$NON-NLS-1$
94 TableTag.class, null, "setClass")); //$NON-NLS-1$
95
96 try
97 {
98 Class.forName("javax.servlet.jsp.tagext.IterationTag"); //$NON-NLS-1$
99 // jsp >= 1.2
100 proplist.add(new PropertyDescriptor("name", //$NON-NLS-1$
101 TableTag.class, null, "setName")); //$NON-NLS-1$
102 proplist.add(new PropertyDescriptor("size", //$NON-NLS-1$
103 TableTag.class, null, "setSize")); //$NON-NLS-1$
104 }
105 catch (ClassNotFoundException e)
106 {
107 // jsp 1.1, can't use a setter with an Object parameter
108 proplist.add(new PropertyDescriptor("name", //$NON-NLS-1$
109 TableTag.class, null, "setNameString")); //$NON-NLS-1$
110 proplist.add(new PropertyDescriptor("size", //$NON-NLS-1$
111 TableTag.class, null, "setSizeObjectName")); //$NON-NLS-1$
112 }
113
114 }
115 catch (IntrospectionException ex)
116 {
117 throw new UnhandledException("You got an introspection exception - maybe defining a property that is not"
118 + " defined in the TableTag?: "
119 + ex.getMessage(), ex);
120 }
121
122 PropertyDescriptor[] result = new PropertyDescriptor[proplist.size()];
123 return ((PropertyDescriptor[]) proplist.toArray(result));
124 }
125 }