Skip to content

Commit 787f9e1

Browse files
committed
Merge branch '7.0.x'
2 parents ed0919b + b00f691 commit 787f9e1

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.Collections;
3434
import java.util.Enumeration;
3535
import java.util.Iterator;
36+
import java.util.LinkedHashSet;
3637
import java.util.List;
3738
import java.util.Locale;
3839
import java.util.Map;
@@ -443,7 +444,7 @@ public Set<Entry<String, List<String>>> entrySet() {
443444
List<String> value = Arrays.asList(entry.getValue());
444445
return new SimpleImmutableEntry<>(entry.getKey(), value);
445446
})
446-
.collect(Collectors.toSet());
447+
.collect(Collectors.toCollection(LinkedHashSet::new));
447448
}
448449

449450
@Override

spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerRequestTests.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,20 @@ void params() {
167167
assertThat(request.param("foo")).contains("bar");
168168
}
169169

170+
@Test // gh-36966
171+
void paramsEntrySetPreservesOrder() {
172+
MockHttpServletRequest servletRequest = PathPatternsTestUtils.initRequest("GET", "/", true);
173+
servletRequest.setParameter("charlie", "3");
174+
servletRequest.setParameter("alpha", "1");
175+
servletRequest.setParameter("bravo", "2");
176+
177+
DefaultServerRequest request = new DefaultServerRequest(servletRequest, this.messageConverters);
178+
179+
assertThat(request.params().entrySet())
180+
.extracting(Map.Entry::getKey)
181+
.containsExactly("charlie", "alpha", "bravo");
182+
}
183+
170184
@Test
171185
void multipartData() throws Exception {
172186
MockPart formPart = new MockPart("form", "foo".getBytes(UTF_8));

0 commit comments

Comments
 (0)