Fix Map.put contract for HeadersAdapter impl.
This commit fixes the `Map.put` contract for both Reactor Netty and Tomcat specific `HeadersAdapter` implementations. Issue: SPR-17415
This commit is contained in:
parent
862dd23975
commit
85262a7932
|
@ -124,7 +124,7 @@ class NettyHeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Override
|
||||
public List<String> put(String key, @Nullable List<String> value) {
|
||||
List<String> previousValues = this.headers.getAll(key);
|
||||
this.headers.add(key, value);
|
||||
this.headers.set(key, value);
|
||||
return previousValues;
|
||||
}
|
||||
|
||||
|
|
|
@ -138,6 +138,7 @@ class TomcatHeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Nullable
|
||||
public List<String> put(String key, List<String> value) {
|
||||
List<String> previousValues = get(key);
|
||||
this.headers.removeHeader(key);
|
||||
value.forEach(v -> this.headers.addValue(key).setString(v));
|
||||
return previousValues;
|
||||
}
|
||||
|
|
|
@ -16,12 +16,14 @@
|
|||
|
||||
package org.springframework.http.server.reactive;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
||||
import io.netty.handler.codec.http.DefaultHttpHeaders;
|
||||
import io.undertow.util.HeaderMap;
|
||||
import org.apache.tomcat.util.http.MimeHeaders;
|
||||
import org.eclipse.jetty.http.HttpFields;
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
@ -57,6 +59,11 @@ public class HeadersAdaptersTests {
|
|||
};
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
this.headers.clear();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWithUnknownHeaderShouldReturnNull() {
|
||||
assertNull(this.headers.get("Unknown"));
|
||||
|
@ -96,4 +103,12 @@ public class HeadersAdaptersTests {
|
|||
assertEquals("first", this.headers.get("TestHeader").get(0));
|
||||
}
|
||||
|
||||
}
|
||||
@Test
|
||||
public void putShouldOverrideExisting() {
|
||||
this.headers.add("TestHeader", "first");
|
||||
this.headers.put("TestHeader", Arrays.asList("override"));
|
||||
assertEquals("override", this.headers.getFirst("TestHeader"));
|
||||
assertEquals(1, this.headers.get("TestHeader").size());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue