HTTP header adapters print header values
Issue: SPR-17546
This commit is contained in:
@@ -1640,7 +1640,26 @@ public class HttpHeaders implements MultiValueMap<String, String>, Serializable
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return this.headers.toString();
|
return formatHeaders(this.headers);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helps to format HTTP header values, as HTTP header values themselves can
|
||||||
|
* contain comma-separated values, can become confusing with regular
|
||||||
|
* {@link Map} formatting that also uses commas between entries.
|
||||||
|
* @param headers the headers to format
|
||||||
|
* @return the headers to a String
|
||||||
|
* @since 5.1.4
|
||||||
|
*/
|
||||||
|
public static String formatHeaders(MultiValueMap<String, String> headers) {
|
||||||
|
return headers.entrySet().stream()
|
||||||
|
.map(entry -> {
|
||||||
|
List<String> values = entry.getValue();
|
||||||
|
return entry.getKey() + ":" + (values.size() == 1 ?
|
||||||
|
"\"" + values.get(0) + "\"" :
|
||||||
|
values.stream().map(s -> "\"" + s + "\"").collect(Collectors.joining(", ")));
|
||||||
|
})
|
||||||
|
.collect(Collectors.joining(", ", "[", "]"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
|
|||||||
import org.eclipse.jetty.http.HttpField;
|
import org.eclipse.jetty.http.HttpField;
|
||||||
import org.eclipse.jetty.http.HttpFields;
|
import org.eclipse.jetty.http.HttpFields;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
|
|
||||||
@@ -176,6 +177,12 @@ class JettyHeadersAdapter implements MultiValueMap<String, String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return HttpHeaders.formatHeaders(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
||||||
|
|
||||||
private Enumeration<String> names = headers.getFieldNames();
|
private Enumeration<String> names = headers.getFieldNames();
|
||||||
|
|||||||
@@ -176,6 +176,12 @@ class NettyHeadersAdapter implements MultiValueMap<String, String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return org.springframework.http.HttpHeaders.formatHeaders(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
||||||
|
|
||||||
private Iterator<String> names = headers.names().iterator();
|
private Iterator<String> names = headers.names().iterator();
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import java.util.stream.Collectors;
|
|||||||
import org.apache.tomcat.util.buf.MessageBytes;
|
import org.apache.tomcat.util.buf.MessageBytes;
|
||||||
import org.apache.tomcat.util.http.MimeHeaders;
|
import org.apache.tomcat.util.http.MimeHeaders;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
|
|
||||||
@@ -195,6 +196,12 @@ class TomcatHeadersAdapter implements MultiValueMap<String, String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return HttpHeaders.formatHeaders(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
||||||
|
|
||||||
private Enumeration<String> names = headers.names();
|
private Enumeration<String> names = headers.names();
|
||||||
|
|||||||
@@ -177,6 +177,12 @@ class UndertowHeadersAdapter implements MultiValueMap<String, String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return org.springframework.http.HttpHeaders.formatHeaders(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
||||||
|
|
||||||
private Iterator<HttpString> names = headers.getHeaderNames().iterator();
|
private Iterator<HttpString> names = headers.getHeaderNames().iterator();
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<Configuration status="WARN">
|
<Configuration status="WARN">
|
||||||
<Appenders>
|
<Appenders>
|
||||||
<Console name="Console" target="SYSTEM_OUT">
|
<Console name="Console" target="SYSTEM_OUT">
|
||||||
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
|
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{1.} - %msg%n" />
|
||||||
</Console>
|
</Console>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
<Loggers>
|
<Loggers>
|
||||||
|
|||||||
Reference in New Issue
Block a user