// lets try the super classes of the from type
if (fromType != null) {
Class fromSuperClass = fromType.getSuperclass();
if (fromSuperClass != null && !fromSuperClass.equals(Object.class)) {
TypeConverter converter = getTypeConverter(toType, fromSuperClass);
if (converter == null) {
converter = findTypeConverter(toType, fromSuperClass, value);
}
if (converter != null) {
return converter;
}
}
for (Class type : fromType.getInterfaces()) {
TypeConverter converter = getTypeConverter(toType, type);
if (converter != null) {
return converter;
}
}
// lets test for arrays
if (fromType.isArray() && !fromType.getComponentType().isPrimitive()) {
// TODO can we try walking the inheritance-tree for the element types?
if (!fromType.equals(Object[].class)) {
fromSuperClass = Object[].class;
TypeConverter converter = getTypeConverter(toType, fromSuperClass);
if (converter == null) {
converter = findTypeConverter(toType, fromSuperClass, value);
}
if (converter != null) {
return converter;
}
}
}
// lets test for Object based converters
if (!fromType.equals(Object.class)) {
TypeConverter converter = getTypeConverter(toType, Object.class);
if (converter != null) {
return converter;
}
}
}