From e84a34a507d406eaf99e043f897b3ad54a16b764 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Fri, 11 Feb 2022 09:08:00 +0100 Subject: [PATCH] Fixes NPE in PersistentPropertyPathExtension.equals. Closes #1164 --- ...sistentPropertyPathExtensionUnitTests.java | 20 +++++++++++++++++++ .../PersistentPropertyPathExtension.java | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java index 562d36690..be07ab8a6 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/PersistentPropertyPathExtensionUnitTests.java @@ -200,6 +200,26 @@ public class PersistentPropertyPathExtensionUnitTests { }); } + @Test // GH--1164 + void equalsWorks() { + + PersistentPropertyPathExtension root1 = extPath(entity); + PersistentPropertyPathExtension root2 = extPath(entity); + PersistentPropertyPathExtension path1 = extPath("withId"); + PersistentPropertyPathExtension path2 = extPath("withId"); + + assertSoftly(softly -> { + + softly.assertThat(root1).describedAs("root is equal to self").isEqualTo(root1); + softly.assertThat(root2).describedAs("root is equal to identical root").isEqualTo(root1); + softly.assertThat(path1).describedAs("path is equal to self").isEqualTo(path1); + softly.assertThat(path2).describedAs("path is equal to identical path").isEqualTo(path1); + softly.assertThat(path1).describedAs("path is not equal to other path").isNotEqualTo(extPath("entityId")); + softly.assertThat(root1).describedAs("root is not equal to path").isNotEqualTo(path1); + softly.assertThat(path1).describedAs("path is not equal to root").isNotEqualTo(root1); + }); + } + private PersistentPropertyPathExtension extPath(RelationalPersistentEntity entity) { return new PersistentPropertyPathExtension(context, entity); } diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java index e06ebcdbe..2c5b19f0a 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java @@ -442,7 +442,7 @@ public class PersistentPropertyPathExtension { if (o == null || getClass() != o.getClass()) return false; PersistentPropertyPathExtension that = (PersistentPropertyPathExtension) o; return entity.equals(that.entity) && - path.equals(that.path); + Objects.equals(path, that.path); } @Override