importjava.beans.BeanInfo;importjava.beans.IntrospectionException;importjava.beans.Introspector;importjava.beans.PropertyDescriptor;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.HashMap;importjava.util.Map;/*** JavaBean and map converter.
*
**/
public final classBeanMapUtils {/*** Converts a map to a JavaBean.
*
*@paramtype type to convert
*@parammap map to convert
*@returnJavaBean converted
*@throwsIntrospectionException failed to get class fields
*@throwsIllegalAccessException failed to instant JavaBean
*@throwsInstantiationException failed to instant JavaBean
*@throwsInvocationTargetException failed to call setters*/
public static final Object toBean(Class> type, Mapmap)throwsIntrospectionException, IllegalAccessException, InstantiationException, InvocationTargetException {
BeanInfo beanInfo=Introspector.getBeanInfo(type);
Object obj=type.newInstance();
PropertyDescriptor[] propertyDescriptors=beanInfo.getPropertyDescriptors();for (int i = 0; i< propertyDescriptors.length; i++) {
PropertyDescriptor descriptor=propertyDescriptors[i];
String propertyName=descriptor.getName();if(map.containsKey(propertyName)) {
Object value=map.get(propertyName);
Object[] args= new Object[1];
args[0] =value;
descriptor.getWriteMethod().invoke(obj, args);
}
}returnobj;
}/*** Converts a JavaBean to a map
*
*@parambean JavaBean to convert
*@returnmap converted
*@throwsIntrospectionException failed to get class fields
*@throwsIllegalAccessException failed to instant JavaBean
*@throwsInvocationTargetException failed to call setters*/
public static final MaptoMap(Object bean)throwsIntrospectionException, IllegalAccessException, InvocationTargetException {
Map returnMap = new HashMap();
BeanInfo beanInfo=Introspector.getBeanInfo(bean.getClass());
PropertyDescriptor[] propertyDescriptors=beanInfo.getPropertyDescriptors();for (int i = 0; i< propertyDescriptors.length; i++) {
PropertyDescriptor descriptor=propertyDescriptors[i];
String propertyName=descriptor.getName();if (!propertyName.equals("class")) {
Method readMethod=descriptor.getReadMethod();
Object result= readMethod.invoke(bean, new Object[0]);if (result != null) {
returnMap.put(propertyName, result);
}else{
returnMap.put(propertyName,"");
}
}
}returnreturnMap;
}
}