From 4a21fb27fc7e413076507c7e42602ee48f8e7adb Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Thu, 15 Jun 2017 16:14:12 -0400 Subject: [PATCH] Fix root path test and add more test cases --- .../http/server/reactive/DefaultPathSegmentContainer.java | 6 +++--- .../server/reactive/DefaultPathSegmentContainerTests.java | 4 ++++ .../http/server/reactive/DefaultRequestPathTests.java | 3 +++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultPathSegmentContainer.java b/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultPathSegmentContainer.java index f717bba05a3..b8c5c8400c6 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultPathSegmentContainer.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultPathSegmentContainer.java @@ -190,13 +190,13 @@ class DefaultPathSegmentContainer implements PathSegmentContainer { } static PathSegmentContainer subPath(PathSegmentContainer container, int fromIndex, int toIndex) { - if (fromIndex == toIndex) { - return EMPTY_PATH; - } List segments = container.pathSegments(); if (fromIndex == 0 && toIndex == segments.size()) { return container; } + if (fromIndex == toIndex) { + return EMPTY_PATH; + } Assert.isTrue(fromIndex < toIndex, "fromIndex: " + fromIndex + " should be < toIndex " + toIndex); Assert.isTrue(fromIndex >= 0 && fromIndex < segments.size(), "Invalid fromIndex: " + fromIndex); diff --git a/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultPathSegmentContainerTests.java b/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultPathSegmentContainerTests.java index 9c56be155e6..836319e3b8a 100644 --- a/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultPathSegmentContainerTests.java +++ b/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultPathSegmentContainerTests.java @@ -130,6 +130,10 @@ public class DefaultPathSegmentContainerTests { assertEquals("/b/c", PathSegmentContainer.subPath(path, 1).value()); assertEquals("/c", PathSegmentContainer.subPath(path, 2).value()); + // root path + path = PathSegmentContainer.parse("/", UTF_8); + assertEquals("/", PathSegmentContainer.subPath(path, 0).value()); + // trailing slash path = PathSegmentContainer.parse("/a/b/", UTF_8); assertEquals("/b/", PathSegmentContainer.subPath(path, 1).value()); diff --git a/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultRequestPathTests.java b/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultRequestPathTests.java index 1e9219bc19c..20d126bd240 100644 --- a/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultRequestPathTests.java +++ b/spring-web/src/test/java/org/springframework/http/server/reactive/DefaultRequestPathTests.java @@ -39,6 +39,9 @@ public class DefaultRequestPathTests { // context path only testRequestPath("/a/b", "/a/b", "", false, true, false); + // root path + testRequestPath("/", "", "/", false, true, false); + // empty path testRequestPath("", "", "", true, false, false); testRequestPath("", "/", "", true, false, false);