1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.commons.beanutils;
20
21
22
23
24
25 /***
26 * <p>A <strong>DynaClass</strong> is a simulation of the functionality of
27 * <code>java.lang.Class</code> for classes implementing the
28 * <code>DynaBean</code> interface. DynaBean instances that share the same
29 * DynaClass all have the same set of available properties, along with any
30 * associated data types, read-only states, and write-only states.</p>
31 *
32 * @author Craig McClanahan
33 * @author Michael Smith
34 * @author Paulo Gaspar
35 * @version $Revision: 555824 $ $Date: 2007-07-13 01:27:15 +0100 (Fri, 13 Jul 2007) $
36 */
37
38 public interface DynaClass {
39
40
41 /***
42 * Return the name of this DynaClass (analogous to the
43 * <code>getName()</code> method of <code>java.lang.Class</code), which
44 * allows the same <code>DynaClass</code> implementation class to support
45 * different dynamic classes, with different sets of properties.
46 *
47 * @return the name of the DynaClass
48 */
49 public String getName();
50
51
52 /***
53 * Return a property descriptor for the specified property, if it exists;
54 * otherwise, return <code>null</code>.
55 *
56 * @param name Name of the dynamic property for which a descriptor
57 * is requested
58 * @return The descriptor for the specified property
59 *
60 * @exception IllegalArgumentException if no property name is specified
61 */
62 public DynaProperty getDynaProperty(String name);
63
64
65 /***
66 * <p>Return an array of <code>ProperyDescriptors</code> for the properties
67 * currently defined in this DynaClass. If no properties are defined, a
68 * zero-length array will be returned.</p>
69 *
70 * <p><strong>FIXME</strong> - Should we really be implementing
71 * <code>getBeanInfo()</code> instead, which returns property descriptors
72 * and a bunch of other stuff?</p>
73 *
74 * @return the set of properties for this DynaClass
75 */
76 public DynaProperty[] getDynaProperties();
77
78
79 /***
80 * Instantiate and return a new DynaBean instance, associated
81 * with this DynaClass.
82 *
83 * @return A new <code>DynaBean</code> instance
84 *
85 * @exception IllegalAccessException if the Class or the appropriate
86 * constructor is not accessible
87 * @exception InstantiationException if this Class represents an abstract
88 * class, an array class, a primitive type, or void; or if instantiation
89 * fails for some other reason
90 */
91 public DynaBean newInstance()
92 throws IllegalAccessException, InstantiationException;
93
94
95 }