45 lines
1.2 KiB
Java
45 lines
1.2 KiB
Java
package org.apache.commons.beanutils.converters;
|
|
|
|
import org.apache.commons.beanutils.ConversionException;
|
|
import org.apache.commons.beanutils.Converter;
|
|
|
|
public final class ClassConverter implements Converter {
|
|
private Object defaultValue;
|
|
|
|
private boolean useDefault;
|
|
|
|
public ClassConverter() {
|
|
this.defaultValue = null;
|
|
this.useDefault = true;
|
|
this.defaultValue = null;
|
|
this.useDefault = false;
|
|
}
|
|
|
|
public ClassConverter(Object defaultValue) {
|
|
this.defaultValue = null;
|
|
this.useDefault = true;
|
|
this.defaultValue = defaultValue;
|
|
this.useDefault = true;
|
|
}
|
|
|
|
public Object convert(Class type, Object value) {
|
|
if (value == null) {
|
|
if (this.useDefault)
|
|
return this.defaultValue;
|
|
throw new ConversionException("No value specified");
|
|
}
|
|
if (value instanceof Class)
|
|
return value;
|
|
try {
|
|
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
|
if (classLoader == null)
|
|
classLoader = ClassConverter.class.getClassLoader();
|
|
return classLoader.loadClass(value.toString());
|
|
} catch (Exception e) {
|
|
if (this.useDefault)
|
|
return this.defaultValue;
|
|
throw new ConversionException(e);
|
|
}
|
|
}
|
|
}
|