KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > enhance > ComponentConstructorImpl


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

15 package org.apache.tapestry.enhance;
16
17 import java.lang.reflect.Constructor JavaDoc;
18
19 import org.apache.hivemind.ApplicationRuntimeException;
20 import org.apache.hivemind.Location;
21 import org.apache.hivemind.util.Defense;
22 import org.apache.tapestry.services.ComponentConstructor;
23
24 /**
25  * @author Howard M. Lewis Ship
26  * @since 4.0
27  */

28 public class ComponentConstructorImpl implements ComponentConstructor
29 {
30     private Location _location;
31
32     private Constructor JavaDoc _constructor;
33
34     private Object JavaDoc[] _parameters;
35
36     private String JavaDoc _classFabString;
37
38     /**
39      * News instance of this class.
40      *
41      * @param constructor
42      * the constructor method to invoke
43      * @param parameters
44      * the parameters to pass to the constructor. These are retained, not copied.
45      * @param classFabString
46      * a string representing the generated class information, used for exception
47      * reporting
48      * @param location
49      * the location, used for exception reporting
50      */

51
52     public ComponentConstructorImpl(Constructor JavaDoc constructor, Object JavaDoc[] parameters,
53             String JavaDoc classFabString, Location location)
54     {
55         Defense.notNull(constructor, "constructor");
56         _constructor = constructor;
57         _parameters = parameters;
58         _classFabString = classFabString;
59         _location = location;
60     }
61
62     public Class JavaDoc getComponentClass()
63     {
64         return _constructor.getDeclaringClass();
65     }
66
67     public Object JavaDoc newInstance()
68     {
69         try
70         {
71             Object JavaDoc result = _constructor.newInstance(_parameters);
72
73             // Unlikely to generate an error if we can get through it once, so it's
74
// safe to release the big classFabString
75

76             _classFabString = null;
77
78             return result;
79         }
80         catch (Throwable JavaDoc ex)
81         {
82             throw new ApplicationRuntimeException(EnhanceMessages.instantiationFailure(
83                     _constructor,
84                     _parameters,
85                     _classFabString,
86                     ex), null, _location, ex);
87         }
88     }
89
90 }
Popular Tags