private static void setProperty (PropertyDescriptor pd, Object value, Object source)
throws IllegalAccessException, InvocationTargetException, MouldException {
if(pd!=null && pd.getWriteMethod()!=null) {
Method m = pd.getWriteMethod();
if(!m.isAccessible()) m.setAccessible(true);
Class tClass = m.getParameterTypes()[0];
if(value==null || tClass.isAssignableFrom(value.getClass())) {
m.invoke(source, new Object[] {value});
log.debug("Set property '" + pd.getName() + "=" + value + "' on object '" + source.getClass().getName() + "'");
} else if(DataTypeMapper.instance().isMappable(value.getClass(),tClass)) {
// See if there is a datatype mapper for these classes
value = DataTypeMapper.instance().map(value, tClass);
m.invoke(source, new Object[] {value});
log.debug("Translate+Set property '" + pd.getName() + "=" + value + "' on object '" + source.getClass().getName() + "'");
} else {
// Data type mismatch
throw new MouldException(MouldException.DATATYPE_MISMATCH, source.getClass().getName() + "." + m.getName(), tClass.getName(), value.getClass().getName());
}
} else {
MouldException me = new MouldException(MouldException.NO_SETTER, null,
pd==null?"???":pd.getName(), source.getClass().getName());
log.error(me.getLocalizedMessage());
throw me;
}
}
BeanMoulder.java 文件源码
java
阅读 19
收藏 0
点赞 0
评论 0
项目:jaffa-framework
作者:
评论列表
文章目录