1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration.beanutils;
18
19 /***
20 * <p>
21 * Definition of an interface for bean factories.
22 * </p>
23 * <p>
24 * Beans defined in configuration files are not directly created, but by so
25 * called <em>bean factories</em>. This additional level of indirection
26 * provides for high flexibility in the creation process. For instance one
27 * implementation of this interface could be very simple and create a new
28 * instance of the specified class for each invocation. A different
29 * implementation could cache already created beans and ensure that always the
30 * same bean of the given class will be returned - this would be an easy mean
31 * for creating singleton objects.
32 * </p>
33 * <p>
34 * The interface itself is quite simple. There is a single method for creating a
35 * bean of a given class. All necessary parameters are obtained from an also
36 * passed in <code>{@link BeanDeclaration}</code> object. It is also possible
37 * (but optional) for a bean factory to declare the default class of the bean it
38 * creates. Then it is not necessary to specify a bean class in the bean
39 * declaration.
40 * </p>
41 *
42 * @since 1.3
43 * @author Oliver Heger
44 * @version $Id: BeanFactory.java 439648 2006-09-02 20:42:10Z oheger $
45 */
46 public interface BeanFactory
47 {
48 /***
49 * Returns a bean instance for the given class. The bean will be initialized
50 * from the specified bean declaration object. It is up to a concrete
51 * implementation how the bean will be created and initialized.
52 *
53 * @param beanClass the class for the bean
54 * @param data the bean declaration object containing all data about the
55 * bean to be created
56 * @param param an additional parameter that may be passed by calling code;
57 * it is up to a concrete implementation how this parameter is evaluated
58 * @return the new bean instance (should not be <b>null</b>)
59 * @throws Exception if an error occurs (the helper classes for creating
60 * beans will catch this unspecific exception and wrap it in a configuration
61 * exception)
62 */
63 Object createBean(Class beanClass, BeanDeclaration data, Object param)
64 throws Exception;
65
66 /***
67 * Returns the default bean class of this bean factory. If an implementation
68 * here returns a non <b>null</b> value, bean declarations using this
69 * factory do not need to provide the name of the bean class. In such a case
70 * an instance of the default class will be created.
71 *
72 * @return the default class of this factory or <b>null</b> if there is
73 * none
74 */
75 Class getDefaultBeanClass();
76 }