KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tomcat > util > digester > ObjectCreateRule


1 /* $Id: ObjectCreateRule.java 467222 2006-10-24 03:17:11Z markt $
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one or more
4  * contributor license agreements. See the NOTICE file distributed with
5  * this work for additional information regarding copyright ownership.
6  * The ASF licenses this file to You under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19
20 package org.apache.tomcat.util.digester;
21
22
23 import org.xml.sax.Attributes JavaDoc;
24
25
26 /**
27  * Rule implementation that creates a new object and pushes it
28  * onto the object stack. When the element is complete, the
29  * object will be popped
30  */

31
32 public class ObjectCreateRule extends Rule {
33
34
35     // ----------------------------------------------------------- Constructors
36

37
38     /**
39      * Construct an object create rule with the specified class name.
40      *
41      * @param digester The associated Digester
42      * @param className Java class name of the object to be created
43      *
44      * @deprecated The digester instance is now set in the {@link Digester#addRule} method.
45      * Use {@link #ObjectCreateRule(String className)} instead.
46      */

47     public ObjectCreateRule(Digester digester, String JavaDoc className) {
48
49         this(className);
50
51     }
52
53
54     /**
55      * Construct an object create rule with the specified class.
56      *
57      * @param digester The associated Digester
58      * @param clazz Java class name of the object to be created
59      *
60      * @deprecated The digester instance is now set in the {@link Digester#addRule} method.
61      * Use {@link #ObjectCreateRule(Class clazz)} instead.
62      */

63     public ObjectCreateRule(Digester digester, Class JavaDoc clazz) {
64
65         this(clazz);
66
67     }
68
69
70     /**
71      * Construct an object create rule with the specified class name and an
72      * optional attribute name containing an override.
73      *
74      * @param digester The associated Digester
75      * @param className Java class name of the object to be created
76      * @param attributeName Attribute name which, if present, contains an
77      * override of the class name to create
78      *
79      * @deprecated The digester instance is now set in the {@link Digester#addRule} method.
80      * Use {@link #ObjectCreateRule(String className, String attributeName)} instead.
81      */

82     public ObjectCreateRule(Digester digester, String JavaDoc className,
83                             String JavaDoc attributeName) {
84
85         this (className, attributeName);
86
87     }
88
89
90     /**
91      * Construct an object create rule with the specified class and an
92      * optional attribute name containing an override.
93      *
94      * @param digester The associated Digester
95      * @param attributeName Attribute name which, if present, contains an
96      * @param clazz Java class name of the object to be created
97      * override of the class name to create
98      *
99      * @deprecated The digester instance is now set in the {@link Digester#addRule} method.
100      * Use {@link #ObjectCreateRule(String attributeName, Class clazz)} instead.
101      */

102     public ObjectCreateRule(Digester digester,
103                             String JavaDoc attributeName,
104                             Class JavaDoc clazz) {
105
106         this(attributeName, clazz);
107
108     }
109
110     /**
111      * Construct an object create rule with the specified class name.
112      *
113      * @param className Java class name of the object to be created
114      */

115     public ObjectCreateRule(String JavaDoc className) {
116
117         this(className, (String JavaDoc) null);
118
119     }
120
121
122     /**
123      * Construct an object create rule with the specified class.
124      *
125      * @param clazz Java class name of the object to be created
126      */

127     public ObjectCreateRule(Class JavaDoc clazz) {
128
129         this(clazz.getName(), (String JavaDoc) null);
130
131     }
132
133
134     /**
135      * Construct an object create rule with the specified class name and an
136      * optional attribute name containing an override.
137      *
138      * @param className Java class name of the object to be created
139      * @param attributeName Attribute name which, if present, contains an
140      * override of the class name to create
141      */

142     public ObjectCreateRule(String JavaDoc className,
143                             String JavaDoc attributeName) {
144
145         this.className = className;
146         this.attributeName = attributeName;
147
148     }
149
150
151     /**
152      * Construct an object create rule with the specified class and an
153      * optional attribute name containing an override.
154      *
155      * @param attributeName Attribute name which, if present, contains an
156      * @param clazz Java class name of the object to be created
157      * override of the class name to create
158      */

159     public ObjectCreateRule(String JavaDoc attributeName,
160                             Class JavaDoc clazz) {
161
162         this(clazz.getName(), attributeName);
163
164     }
165
166     // ----------------------------------------------------- Instance Variables
167

168
169     /**
170      * The attribute containing an override class name if it is present.
171      */

172     protected String JavaDoc attributeName = null;
173
174
175     /**
176      * The Java class name of the object to be created.
177      */

178     protected String JavaDoc className = null;
179
180
181     // --------------------------------------------------------- Public Methods
182

183
184     /**
185      * Process the beginning of this element.
186      *
187      * @param attributes The attribute list of this element
188      */

189     public void begin(Attributes JavaDoc attributes) throws Exception JavaDoc {
190
191         // Identify the name of the class to instantiate
192
String JavaDoc realClassName = className;
193         if (attributeName != null) {
194             String JavaDoc value = attributes.getValue(attributeName);
195             if (value != null) {
196                 realClassName = value;
197             }
198         }
199         if (digester.log.isDebugEnabled()) {
200             digester.log.debug("[ObjectCreateRule]{" + digester.match +
201                     "}New " + realClassName);
202         }
203
204         // Instantiate the new object and push it on the context stack
205
Class JavaDoc clazz = digester.getClassLoader().loadClass(realClassName);
206         Object JavaDoc instance = clazz.newInstance();
207         digester.push(instance);
208
209     }
210
211
212     /**
213      * Process the end of this element.
214      */

215     public void end() throws Exception JavaDoc {
216
217         Object JavaDoc top = digester.pop();
218         if (digester.log.isDebugEnabled()) {
219             digester.log.debug("[ObjectCreateRule]{" + digester.match +
220                     "} Pop " + top.getClass().getName());
221         }
222
223     }
224
225
226     /**
227      * Render a printable version of this Rule.
228      */

229     public String JavaDoc toString() {
230
231         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("ObjectCreateRule[");
232         sb.append("className=");
233         sb.append(className);
234         sb.append(", attributeName=");
235         sb.append(attributeName);
236         sb.append("]");
237         return (sb.toString());
238
239     }
240
241
242 }
243
Popular Tags