Skip to content

Instantly share code, notes, and snippets.

@ideiudicibus
Created May 10, 2011 14:17
Show Gist options
  • Save ideiudicibus/964554 to your computer and use it in GitHub Desktop.
Save ideiudicibus/964554 to your computer and use it in GitHub Desktop.
Merge two java beans useful when discovering differences
class Beanutils{
//merge two bean by discovering differences
private <M> void merge(M target, M destination) throws Exception {
BeanInfo beanInfo = Introspector.getBeanInfo(target.getClass());
// Iterate over all the attributes
for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) {
// Only copy writable attributes
if (descriptor.getWriteMethod() != null) {
Object originalValue = descriptor.getReadMethod()
.invoke(target);
// Only copy values values where the destination values is null
if (originalValue == null) {
Object defaultValue = descriptor.getReadMethod().invoke(
destination);
descriptor.getWriteMethod().invoke(target, defaultValue);
}
}
}
}
}
@zhangpengshou
Copy link

thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment