diff --git a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java index 4ccd51978..69dc5b7cc 100644 --- a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java +++ b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java @@ -213,16 +213,25 @@ public class SortHandlerMethodArgumentResolver implements SortArgumentResolver { continue; } - String[] elements = part.split(delimiter); - Direction direction = elements.length == 0 ? null : Direction.fromStringOrNull(elements[elements.length - 1]); + List elements = new ArrayList(); - for (int i = 0; i < elements.length; i++) { + for (String candidate : part.split(delimiter)) { + if (StringUtils.hasText(candidate.replace(".", ""))) { + elements.add(candidate); + } + } - if (i == elements.length - 1 && direction != null) { + int numberOfElements = elements.size(); + Direction direction = numberOfElements == 0 ? null + : Direction.fromStringOrNull(elements.get(numberOfElements - 1)); + + for (int i = 0; i < numberOfElements; i++) { + + if (i == numberOfElements - 1 && direction != null) { continue; } - String property = elements[i]; + String property = elements.get(i); if (!StringUtils.hasText(property)) { continue; diff --git a/src/test/java/org/springframework/data/web/SortHandlerMethodArgumentResolverUnitTests.java b/src/test/java/org/springframework/data/web/SortHandlerMethodArgumentResolverUnitTests.java index 21cafa0e9..cf34dbd84 100644 --- a/src/test/java/org/springframework/data/web/SortHandlerMethodArgumentResolverUnitTests.java +++ b/src/test/java/org/springframework/data/web/SortHandlerMethodArgumentResolverUnitTests.java @@ -19,6 +19,8 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import static org.springframework.data.domain.Sort.Direction.*; +import java.util.Arrays; + import javax.servlet.http.HttpServletRequest; import org.junit.BeforeClass; @@ -183,6 +185,18 @@ public class SortHandlerMethodArgumentResolverUnitTests extends SortDefaultUnitT assertThat(resolveSort(request, getParameterOfMethod("containeredDefault")), is(new Sort("foo", "bar"))); } + @Test // DATACMNS-1551 + public void resolvesDotOnlyInputToDefault() throws Exception { + + for (String source : Arrays.asList(".", ".,ASC")) { + + MockHttpServletRequest request = new MockHttpServletRequest(); + request.addParameter("sort", source); + + assertThat(resolveSort(request, PARAMETER), is(nullValue())); + } + } + private static Sort resolveSort(HttpServletRequest request, MethodParameter parameter) throws Exception { SortHandlerMethodArgumentResolver resolver = new SortHandlerMethodArgumentResolver();