BeanDescriptor beanDescriptorFrom = new BeanDescriptorBuilder(from.getClass()).getBeanDescriptor();
BeanDescriptor beanDescriptorTo = new BeanDescriptorBuilder(to.getClass()).getBeanDescriptor();
outer: for (PropertyDescriptor propertyDescriptor : beanDescriptorFrom.getProperties()) {
if (beanDescriptorTo.hasProperty(propertyDescriptor.getName())) {
PropertyDescriptor propertyDescriptorTo = beanDescriptorTo.getProperty(propertyDescriptor.getName());
if (ignoredAttributes != null) {
for (String s : ignoredAttributes) {
if (s.equals(propertyDescriptor.getName())) {
continue outer;
}
}
}
if (!propertyDescriptorTo.getType().isAssignableFrom(propertyDescriptor.getType())) {
continue;
}
Object tmp = propertyDescriptor.getValue(from);
propertyDescriptorTo.setValue(to, tmp);
}
}
}