BeanDiff - encapsulate, apply, and merge bean differences
URL: https://issues.apache.org/jira/browse/BEANUTILS-304 Project: Commons BeanUtils
Issue Type: New Feature
Components: Bean / Property Utils, Bean-Collections, ConvertUtils & Converters, DynaBean
Affects Versions: LATER THAN 1.8.0
Reporter: Mark Lewis
Fix For: LATER THAN 1.8.0
It would be great to have a way to compare two beans and capture the diff somehow. This is just my initial brainstorm on the idea:
- The BeanDiff class encapsulates differences between two beans -of the same type-, the source bean and the target bean.
- A BeanDiff instance represents what property assignments would be necessary to turn the target bean into the source bean.
- A BeanDiff can be applied to a target bean, performing the necessary property assignments to make its property values exactly match the source bean.
- Two BeanDiff instances can be merged into a single BeanDiff instance, allowing multiple source beans to be merged into one target bean.
- If a conflict would occur during a merge (from a property being assigned two different values), a BeanDiffConflictException is thrown.
- The BeanDiffConflictException contains an array of BeanDiffConflict objects.
- Each BeanDiffConflict instance represents a single property and the two conflicting values that were to be assigned.
- All these actions would work on DynaBeans as well.
- +Converters would be able to account for type differences in source and target bean properties.+
An example of how this could be used is when dealing with ORM and optimistic locking. Knowing exactly which properties have been modified would allow concurrent modification of a bean (record) without fear of reasserting the original values and destroying someone else's changes.
This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.