Allows to diff any two Java objects and retrieve the diff result as a list of strings. The result is a unified diff without any contextual lines.
- Java 1.6 or higher
- dependencies see maven pom
SomeDomainObject base = getPersistedObject();
SomeDomainObject working = getManipulatedObject();
Configuration configuration = new Configuration()
.excludeProperty("someUnwantedPropertyName")
.useSerializer(new SomeSerializer())
.useComparator(new SomeComparator())
.useNaturalOrderingFor(SomeComparable.class)
.useBaseObjectName("BaseObject")
.useWorkingObjectName("WorkingObject");
List<String> differences = new Differ(configuration).diff(base, working);
for (String diff : differences) {
System.out.println(diff);
}
...
--- BaseObject
+++ WorkingObject
@@ -1,1 +1,4 @@
-SomeDomainObject.someIntegerProperty='21'
+SomeDomainObject.someIntegerProperty='42'
+SomeDomainObject.someIterableProperty[0]='foo'
+SomeDomainObject.someIterableProperty[1]='bar'
+SomeDomainObject.someMapProperty['someMapKey']='someMapValue'
...
For more details have a look at the wiki.