KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > ojb > broker > util > ConstructorHelper


1 package org.apache.ojb.broker.util;
2
3 /* Copyright 2003-2005 The Apache Software Foundation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * 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 import java.lang.reflect.Constructor JavaDoc;
19
20 import org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException;
21
22 /**
23  * This class helps us to construct new instances.
24  * We don't want to rely on public default constructors and
25  * have to try hard to also use private or protected constructors.
26  *
27  * @author Thomas Mahler
28  * @author Lance Eason
29  *
30  * @version $Id: ConstructorHelper.java,v 1.7.2.1 2005/12/21 22:27:47 tomdz Exp $
31  */

32 public class ConstructorHelper
33 {
34     /**
35      * represents a zero sized parameter array
36      */

37     private static final Object JavaDoc[] NO_ARGS = {};
38
39     /**
40      * no public constructor, please use the static method only.
41      */

42     private ConstructorHelper()
43     {
44     }
45
46     /**
47      * create a new instance of class clazz.
48      * first use the public default constructor.
49      * If this fails also try to use protected an private constructors.
50      * @param clazz the class to instantiate
51      * @return the fresh instance of class clazz
52      * @throws InstantiationException
53      */

54     public static Object JavaDoc instantiate(Class JavaDoc clazz) throws InstantiationException JavaDoc
55     {
56         Object JavaDoc result = null;
57         try
58         {
59             result = ClassHelper.newInstance(clazz);
60         }
61         catch(IllegalAccessException JavaDoc e)
62         {
63             try
64             {
65                 result = ClassHelper.newInstance(clazz, true);
66             }
67             catch(Exception JavaDoc e1)
68             {
69                 throw new ClassNotPersistenceCapableException("Can't instantiate class '"
70                         + (clazz != null ? clazz.getName() : "null")
71                         + "', message was: " + e1.getMessage() + ")", e1);
72             }
73         }
74         return result;
75     }
76
77     /**
78      * create a new instance of the class represented by the no-argument constructor provided
79      * @param constructor the zero argument constructor for the class
80      * @return a new instance of the class
81      * @throws InstantiationException
82      * @throws ClassNotPersistenceCapableException if the constructor is null or there is an
83      * exception while trying to create a new instance
84      */

85     public static Object JavaDoc instantiate(Constructor JavaDoc constructor) throws InstantiationException JavaDoc
86     {
87         if(constructor == null)
88         {
89             throw new ClassNotPersistenceCapableException(
90                     "A zero argument constructor was not provided!");
91         }
92
93         Object JavaDoc result = null;
94         try
95         {
96             result = constructor.newInstance(NO_ARGS);
97         }
98         catch(InstantiationException JavaDoc e)
99         {
100             throw e;
101         }
102         catch(Exception JavaDoc e)
103         {
104             throw new ClassNotPersistenceCapableException("Can't instantiate class '"
105                     + (constructor != null ? constructor.getDeclaringClass().getName() : "null")
106                     + "' with given constructor: " + e.getMessage(), e);
107         }
108         return result;
109     }
110 }
111
Popular Tags