KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > beanutils > converters > ClassConverter


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

16
17
18 package org.apache.commons.beanutils.converters;
19
20
21 import org.apache.commons.beanutils.ConversionException;
22 import org.apache.commons.beanutils.Converter;
23
24
25 /**
26  * <p>Standard {@link Converter} implementation that converts an incoming
27  * String into a <code>java.lang.Class</code> object, optionally using a
28  * default value or throwing a {@link ConversionException} if a conversion
29  * error occurs. The class will be loaded from the thread context class
30  * loader (if it exists); otherwise the class loader that loaded this class
31  * will be used.</p>
32  *
33  * @author Tomas Viberg
34  * @version $Revision: 1.6 $ $Date: 2004/02/28 13:18:34 $
35  * @since 1.4
36  */

37
38 public final class ClassConverter implements Converter {
39
40
41     // ----------------------------------------------------------- Constructors
42

43
44     /**
45      * Create a {@link Converter} that will throw a {@link ConversionException}
46      * if a conversion error occurs.
47      */

48     public ClassConverter() {
49
50         this.defaultValue = null;
51         this.useDefault = false;
52
53     }
54
55
56     /**
57      * Create a {@link Converter} that will return the specified default value
58      * if a conversion error occurs.
59      *
60      * @param defaultValue The default value to be returned
61      */

62     public ClassConverter(Object JavaDoc defaultValue) {
63
64         this.defaultValue = defaultValue;
65         this.useDefault = true;
66
67     }
68
69
70     // ----------------------------------------------------- Instance Variables
71

72
73     /**
74      * The default value specified to our Constructor, if any.
75      */

76     private Object JavaDoc defaultValue = null;
77
78
79     /**
80      * Should we return the default value on conversion errors?
81      */

82     private boolean useDefault = true;
83
84
85     // --------------------------------------------------------- Public Methods
86

87
88     /**
89      * Convert the specified input object into an output object of the
90      * specified type.
91      *
92      * @param type Data type to which this value should be converted
93      * @param value The input value to be converted
94      *
95      * @exception ConversionException if conversion cannot be performed
96      * successfully
97      */

98     public Object JavaDoc convert(Class JavaDoc type, Object JavaDoc value) {
99
100         if (value == null) {
101             if (useDefault) {
102                 return (defaultValue);
103             } else {
104                 throw new ConversionException("No value specified");
105             }
106         }
107
108         if (value instanceof Class JavaDoc) {
109             return (value);
110         }
111
112         try {
113             ClassLoader JavaDoc classLoader =
114                 Thread.currentThread().getContextClassLoader();
115             if (classLoader == null) {
116                 classLoader = ClassConverter.class.getClassLoader();
117             }
118             return (classLoader.loadClass(value.toString()));
119         } catch (Exception JavaDoc e) {
120             if (useDefault) {
121                 return (defaultValue);
122             } else {
123                 throw new ConversionException(e);
124             }
125         }
126
127     }
128
129
130 }
131
Popular Tags