-
-
Notifications
You must be signed in to change notification settings - Fork 382
Description
Hello,
When configuring Javers to use new objects snapshot and Levenshtein distance list comparison, then comparing to null object, I'm getting NullPointerException. It doesn't happen when either a different list comparison method is used or new object snapshot is not used.
Test case to reproduce (version 5.3.4):
class BugTest {
@Test
void shouldNotFail() {
Javers javers = JaversBuilder.javers().withNewObjectsSnapshot(true)
.withListCompareAlgorithm(ListCompareAlgorithm.LEVENSHTEIN_DISTANCE).build();
javers.compare(null, new Obj(Collections.singletonList("test")));
}
static class Obj {
private List<String> strings;
public Obj(List<String> strings) {
this.strings = strings;
}
}
}
The issue seems to be similar to #240, but not exactly the same.
Same error happens when comparing a list to an empty list:
javers.compareCollections(Collections.emptyList(), Collections.singletonList(obj));
Stack trace:
java.lang.NullPointerException
at org.javers.core.diff.appenders.levenshtein.Backtrack.evaluateSteps(Backtrack.java:21)
at org.javers.core.diff.appenders.levenshtein.LevenshteinListChangeAppender.calculateChanges(LevenshteinListChangeAppender.java:44)
at org.javers.core.diff.appenders.levenshtein.LevenshteinListChangeAppender.calculateChanges(LevenshteinListChangeAppender.java:17)
at org.javers.core.diff.appenders.CorePropertyChangeAppender.calculateChanges(CorePropertyChangeAppender.java:45)
at org.javers.core.diff.DiffFactory.appendChanges(DiffFactory.java:153)
at org.javers.core.diff.DiffFactory.appendPropertyChanges(DiffFactory.java:143)
at org.javers.core.diff.DiffFactory.createAndAppendChanges(DiffFactory.java:119)
at org.javers.core.diff.DiffFactory.create(DiffFactory.java:69)
at org.javers.core.diff.DiffFactory.compare(DiffFactory.java:54)
at org.javers.core.JaversCore.compare(JaversCore.java:171)