From 3eb0e1551a910f53048bbf908bf2187aee271bee Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 8 Aug 2018 08:44:43 +0200 Subject: [PATCH] DATAREST-1274 - JsonPatch paths now properly verify multi-digit indexes. --- .../data/rest/webmvc/json/patch/SpelPath.java | 2 +- .../rest/webmvc/json/patch/SpelPathUnitTests.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/patch/SpelPath.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/patch/SpelPath.java index 462efefdc..0b68c2bc2 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/patch/SpelPath.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/patch/SpelPath.java @@ -474,7 +474,7 @@ class SpelPath { for (String part : parts) { - if (part.matches("\\d") || APPEND_CHARACTERS.contains(part) || part.isEmpty()) { + if (part.matches("\\d+") || APPEND_CHARACTERS.contains(part) || part.isEmpty()) { continue; } diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/patch/SpelPathUnitTests.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/patch/SpelPathUnitTests.java index 3c22a89b4..7f64905dd 100644 --- a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/patch/SpelPathUnitTests.java +++ b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/patch/SpelPathUnitTests.java @@ -15,6 +15,7 @@ */ package org.springframework.data.rest.webmvc.json.patch; +import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.util.ArrayList; @@ -23,6 +24,11 @@ import java.util.List; import org.junit.Test; import org.springframework.data.rest.webmvc.json.patch.SpelPath.TypedSpelPath; +/** + * Unit tests for {@link SpelPath}. + * + * @author Oliver Gierke + */ public class SpelPathUnitTests { @Test @@ -69,4 +75,9 @@ public class SpelPathUnitTests { assertSame(left, right); } + + @Test // DATAREST-1274 + public void supportsMultiDigitCollectionIndex() { + assertThat(SpelPath.of("/11/description").getLeafType(Todo.class), is(typeCompatibleWith(String.class))); + } }