From a86429a62aee956be3097622f4b65a5bcaf2cba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=B0un=20Nielsen?= Date: Wed, 29 Mar 2023 00:17:26 +0100 Subject: [PATCH] Fix asymmetry of equals when element has trailing dashes See gh-34804 --- .../properties/source/ConfigurationPropertyName.java | 2 +- .../properties/source/ConfigurationPropertyNameTests.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/ConfigurationPropertyName.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/ConfigurationPropertyName.java index e7b9eae2e8..a1a3d6b7b1 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/ConfigurationPropertyName.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/ConfigurationPropertyName.java @@ -406,7 +406,7 @@ public final class ConfigurationPropertyName implements Comparable= l2) { - return false; + return remainderIsNotAlphanumeric(e1, i, i1); } char ch1 = e1.charAt(i, i1); char ch2 = e2.charAt(i, i2); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/ConfigurationPropertyNameTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/ConfigurationPropertyNameTests.java index e0afc334b4..2cf37b77a7 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/ConfigurationPropertyNameTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/ConfigurationPropertyNameTests.java @@ -702,6 +702,14 @@ class ConfigurationPropertyNameTests { assertThat(name2).isEqualTo(name1); } + @Test + void equalsSymmetricWhenNameMatchesDueToRemovalOfTrailingDashes() { + ConfigurationPropertyName n1 = ConfigurationPropertyName.of("foobar"); + ConfigurationPropertyName n2 = ConfigurationPropertyName.of("foobar--"); + assertThat(n1).isEqualTo(n2); + assertThat(n2).isEqualTo(n1); + } + @Test void isValidWhenValidShouldReturnTrue() { assertThat(ConfigurationPropertyName.isValid("")).isTrue();