|
|
|
@ -28,7 +28,7 @@ import java.util.Map; |
|
|
|
import java.util.Set; |
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
|
|
|
|
import org.apache.hc.core5.http.Header; |
|
|
|
import org.apache.hc.core5.http.Header; |
|
|
|
import org.apache.hc.core5.http.HttpResponse; |
|
|
|
import org.apache.hc.core5.http.HttpMessage; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.http.HttpHeaders; |
|
|
|
import org.springframework.http.HttpHeaders; |
|
|
|
import org.springframework.lang.Nullable; |
|
|
|
import org.springframework.lang.Nullable; |
|
|
|
@ -44,23 +44,23 @@ import org.springframework.util.MultiValueMap; |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
|
|
|
|
|
|
|
|
private final HttpResponse response; |
|
|
|
private final HttpMessage message; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HttpComponentsHeadersAdapter(HttpResponse response) { |
|
|
|
HttpComponentsHeadersAdapter(HttpMessage message) { |
|
|
|
this.response = response; |
|
|
|
this.message = message; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public String getFirst(String key) { |
|
|
|
public String getFirst(String key) { |
|
|
|
Header header = this.response.getFirstHeader(key); |
|
|
|
Header header = this.message.getFirstHeader(key); |
|
|
|
return (header != null ? header.getValue() : null); |
|
|
|
return (header != null ? header.getValue() : null); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void add(String key, @Nullable String value) { |
|
|
|
public void add(String key, @Nullable String value) { |
|
|
|
this.response.addHeader(key, value); |
|
|
|
this.message.addHeader(key, value); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
@ -75,7 +75,7 @@ class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void set(String key, @Nullable String value) { |
|
|
|
public void set(String key, @Nullable String value) { |
|
|
|
this.response.setHeader(key, value); |
|
|
|
this.message.setHeader(key, value); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
@ -86,29 +86,29 @@ class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Map<String, String> toSingleValueMap() { |
|
|
|
public Map<String, String> toSingleValueMap() { |
|
|
|
Map<String, String> map = CollectionUtils.newLinkedHashMap(size()); |
|
|
|
Map<String, String> map = CollectionUtils.newLinkedHashMap(size()); |
|
|
|
this.response.headerIterator().forEachRemaining(h -> map.putIfAbsent(h.getName(), h.getValue())); |
|
|
|
this.message.headerIterator().forEachRemaining(h -> map.putIfAbsent(h.getName(), h.getValue())); |
|
|
|
return map; |
|
|
|
return map; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public int size() { |
|
|
|
public int size() { |
|
|
|
return this.response.getHeaders().length; |
|
|
|
return this.message.getHeaders().length; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public boolean isEmpty() { |
|
|
|
public boolean isEmpty() { |
|
|
|
return (this.response.getHeaders().length == 0); |
|
|
|
return (this.message.getHeaders().length == 0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public boolean containsKey(Object key) { |
|
|
|
public boolean containsKey(Object key) { |
|
|
|
return (key instanceof String headerName && this.response.containsHeader(headerName)); |
|
|
|
return (key instanceof String headerName && this.message.containsHeader(headerName)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public boolean containsValue(Object value) { |
|
|
|
public boolean containsValue(Object value) { |
|
|
|
return (value instanceof String && |
|
|
|
return (value instanceof String && |
|
|
|
Arrays.stream(this.response.getHeaders()).anyMatch(h -> h.getValue().equals(value))); |
|
|
|
Arrays.stream(this.message.getHeaders()).anyMatch(h -> h.getValue().equals(value))); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Nullable |
|
|
|
@Nullable |
|
|
|
@ -116,7 +116,7 @@ class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
public List<String> get(Object key) { |
|
|
|
public List<String> get(Object key) { |
|
|
|
List<String> values = null; |
|
|
|
List<String> values = null; |
|
|
|
if (containsKey(key)) { |
|
|
|
if (containsKey(key)) { |
|
|
|
Header[] headers = this.response.getHeaders((String) key); |
|
|
|
Header[] headers = this.message.getHeaders((String) key); |
|
|
|
values = new ArrayList<>(headers.length); |
|
|
|
values = new ArrayList<>(headers.length); |
|
|
|
for (Header header : headers) { |
|
|
|
for (Header header : headers) { |
|
|
|
values.add(header.getValue()); |
|
|
|
values.add(header.getValue()); |
|
|
|
@ -138,7 +138,7 @@ class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
public List<String> remove(Object key) { |
|
|
|
public List<String> remove(Object key) { |
|
|
|
if (key instanceof String headerName) { |
|
|
|
if (key instanceof String headerName) { |
|
|
|
List<String> oldValues = get(key); |
|
|
|
List<String> oldValues = get(key); |
|
|
|
this.response.removeHeaders(headerName); |
|
|
|
this.message.removeHeaders(headerName); |
|
|
|
return oldValues; |
|
|
|
return oldValues; |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
@ -151,13 +151,13 @@ class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void clear() { |
|
|
|
public void clear() { |
|
|
|
this.response.setHeaders(); |
|
|
|
this.message.setHeaders(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Set<String> keySet() { |
|
|
|
public Set<String> keySet() { |
|
|
|
Set<String> keys = new LinkedHashSet<>(size()); |
|
|
|
Set<String> keys = new LinkedHashSet<>(size()); |
|
|
|
for (Header header : this.response.getHeaders()) { |
|
|
|
for (Header header : this.message.getHeaders()) { |
|
|
|
keys.add(header.getName()); |
|
|
|
keys.add(header.getName()); |
|
|
|
} |
|
|
|
} |
|
|
|
return keys; |
|
|
|
return keys; |
|
|
|
@ -166,7 +166,7 @@ class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Collection<List<String>> values() { |
|
|
|
public Collection<List<String>> values() { |
|
|
|
Collection<List<String>> values = new ArrayList<>(size()); |
|
|
|
Collection<List<String>> values = new ArrayList<>(size()); |
|
|
|
for (Header header : this.response.getHeaders()) { |
|
|
|
for (Header header : this.message.getHeaders()) { |
|
|
|
values.add(get(header.getName())); |
|
|
|
values.add(get(header.getName())); |
|
|
|
} |
|
|
|
} |
|
|
|
return values; |
|
|
|
return values; |
|
|
|
@ -196,7 +196,7 @@ class HttpComponentsHeadersAdapter implements MultiValueMap<String, String> { |
|
|
|
|
|
|
|
|
|
|
|
private class EntryIterator implements Iterator<Entry<String, List<String>>> { |
|
|
|
private class EntryIterator implements Iterator<Entry<String, List<String>>> { |
|
|
|
|
|
|
|
|
|
|
|
private final Iterator<Header> iterator = response.headerIterator(); |
|
|
|
private final Iterator<Header> iterator = message.headerIterator(); |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public boolean hasNext() { |
|
|
|
public boolean hasNext() { |
|
|
|
|