parent
b5adae2086
commit
4d5b0c91a3
|
|
@ -19,12 +19,11 @@ package org.springframework.http.client.reactive;
|
|||
import java.util.AbstractSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Spliterator;
|
||||
import java.util.Spliterators;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import io.netty5.handler.codec.http.headers.HttpHeaders;
|
||||
|
|
@ -38,7 +37,7 @@ import org.springframework.util.MultiValueMap;
|
|||
*
|
||||
* <p>There is a duplicate of this class in the server package!
|
||||
*
|
||||
* This class is based on {@link NettyHeadersAdapter}.
|
||||
* <p>This class is based on {@link NettyHeadersAdapter}.
|
||||
*
|
||||
* @author Violeta Georgieva
|
||||
* @since 6.0
|
||||
|
|
@ -57,7 +56,7 @@ class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Nullable
|
||||
public String getFirst(String key) {
|
||||
CharSequence value = this.headers.get(key);
|
||||
return value != null ? value.toString() : null;
|
||||
return (value != null ? value.toString() : null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -117,17 +116,19 @@ class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
|
||||
@Override
|
||||
public boolean containsValue(Object value) {
|
||||
return (value instanceof String &&
|
||||
StreamSupport.stream(
|
||||
Spliterators.spliteratorUnknownSize(this.headers.iterator(), Spliterator.ORDERED), false)
|
||||
return (value instanceof CharSequence &&
|
||||
StreamSupport.stream(this.headers.spliterator(), false)
|
||||
.anyMatch(entry -> value.equals(entry.getValue())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public List<String> get(Object key) {
|
||||
if (containsKey(key)) {
|
||||
return getAll(this.headers.valuesIterator((CharSequence) key));
|
||||
Iterator<CharSequence> iterator = this.headers.valuesIterator((CharSequence) key);
|
||||
if (iterator.hasNext()) {
|
||||
List<String> result = new ArrayList<>();
|
||||
iterator.forEachRemaining(value -> result.add(value.toString()));
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
@ -135,7 +136,7 @@ class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Nullable
|
||||
@Override
|
||||
public List<String> put(String key, @Nullable List<String> value) {
|
||||
List<String> previousValues = getAll(this.headers.valuesIterator(key));
|
||||
List<String> previousValues = get(key);
|
||||
this.headers.set(key, value);
|
||||
return previousValues;
|
||||
}
|
||||
|
|
@ -144,7 +145,7 @@ class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Override
|
||||
public List<String> remove(Object key) {
|
||||
if (key instanceof String headerName) {
|
||||
List<String> previousValues = getAll(this.headers.valuesIterator(headerName));
|
||||
List<String> previousValues = get(headerName);
|
||||
this.headers.remove(headerName);
|
||||
return previousValues;
|
||||
}
|
||||
|
|
@ -168,8 +169,9 @@ class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
|
||||
@Override
|
||||
public Collection<List<String>> values() {
|
||||
return this.headers.names().stream()
|
||||
.map(key -> getAll(this.headers.valuesIterator(key))).toList();
|
||||
List<List<String>> result = new ArrayList<>(this.headers.size());
|
||||
forEach((key, value) -> result.add(value));
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -194,19 +196,6 @@ class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
private static List<String> getAll(Iterator<CharSequence> valuesIterator) {
|
||||
if (!valuesIterator.hasNext()) {
|
||||
return null;
|
||||
}
|
||||
List<String> result = new ArrayList<>();
|
||||
while (valuesIterator.hasNext()) {
|
||||
result.add(valuesIterator.next().toString());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
||||
|
||||
private final Iterator<CharSequence> names = headers.names().iterator();
|
||||
|
|
@ -238,12 +227,8 @@ class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
|
||||
@Override
|
||||
public List<String> getValue() {
|
||||
List<String> result = new ArrayList<>();
|
||||
Iterator<CharSequence> valuesIterator = headers.valuesIterator(this.key);
|
||||
while (valuesIterator.hasNext()) {
|
||||
result.add(valuesIterator.next().toString());
|
||||
}
|
||||
return result;
|
||||
List<String> values = get(this.key);
|
||||
return (values != null ? values : Collections.emptyList());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -19,12 +19,11 @@ package org.springframework.http.server.reactive;
|
|||
import java.util.AbstractSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Spliterator;
|
||||
import java.util.Spliterators;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import io.netty5.handler.codec.http.headers.HttpHeaders;
|
||||
|
|
@ -55,7 +54,7 @@ final class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Nullable
|
||||
public String getFirst(String key) {
|
||||
CharSequence value = this.headers.get(key);
|
||||
return value != null ? value.toString() : null;
|
||||
return (value != null ? value.toString() : null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -116,16 +115,18 @@ final class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Override
|
||||
public boolean containsValue(Object value) {
|
||||
return (value instanceof String &&
|
||||
StreamSupport.stream(
|
||||
Spliterators.spliteratorUnknownSize(this.headers.iterator(), Spliterator.ORDERED), false)
|
||||
StreamSupport.stream(this.headers.spliterator(), false)
|
||||
.anyMatch(entry -> value.equals(entry.getValue())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public List<String> get(Object key) {
|
||||
if (containsKey(key)) {
|
||||
return getAll(this.headers.valuesIterator((CharSequence) key));
|
||||
Iterator<CharSequence> iterator = this.headers.valuesIterator((CharSequence) key);
|
||||
if (iterator.hasNext()) {
|
||||
List<String> result = new ArrayList<>();
|
||||
iterator.forEachRemaining(value -> result.add(value.toString()));
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
@ -133,7 +134,7 @@ final class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Nullable
|
||||
@Override
|
||||
public List<String> put(String key, @Nullable List<String> value) {
|
||||
List<String> previousValues = getAll(this.headers.valuesIterator(key));
|
||||
List<String> previousValues = get(key);
|
||||
this.headers.set(key, value);
|
||||
return previousValues;
|
||||
}
|
||||
|
|
@ -142,7 +143,7 @@ final class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
@Override
|
||||
public List<String> remove(Object key) {
|
||||
if (key instanceof String headerName) {
|
||||
List<String> previousValues = getAll(this.headers.valuesIterator(headerName));
|
||||
List<String> previousValues = get(headerName);
|
||||
this.headers.remove(headerName);
|
||||
return previousValues;
|
||||
}
|
||||
|
|
@ -166,8 +167,9 @@ final class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
|
||||
@Override
|
||||
public Collection<List<String>> values() {
|
||||
return this.headers.names().stream()
|
||||
.map(key -> getAll(this.headers.valuesIterator(key))).toList();
|
||||
List<List<String>> result = new ArrayList<>(this.headers.size());
|
||||
forEach((key, value) -> result.add(value));
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -192,19 +194,6 @@ final class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
private static List<String> getAll(Iterator<CharSequence> valuesIterator) {
|
||||
if (!valuesIterator.hasNext()) {
|
||||
return null;
|
||||
}
|
||||
List<String> result = new ArrayList<>();
|
||||
while (valuesIterator.hasNext()) {
|
||||
result.add(valuesIterator.next().toString());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private class EntryIterator implements Iterator<Entry<String, List<String>>> {
|
||||
|
||||
private final Iterator<CharSequence> names = headers.names().iterator();
|
||||
|
|
@ -236,12 +225,8 @@ final class Netty5HeadersAdapter implements MultiValueMap<String, String> {
|
|||
|
||||
@Override
|
||||
public List<String> getValue() {
|
||||
List<String> result = new ArrayList<>();
|
||||
Iterator<CharSequence> valuesIterator = headers.valuesIterator(this.key);
|
||||
while (valuesIterator.hasNext()) {
|
||||
result.add(valuesIterator.next().toString());
|
||||
}
|
||||
return result;
|
||||
List<String> values = get(this.key);
|
||||
return (values != null ? values : Collections.emptyList());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -80,9 +80,9 @@ class ReactorNetty2ServerHttpRequest extends AbstractServerHttpRequest {
|
|||
|
||||
private static URI resolveBaseUrl(HttpServerRequest request) throws URISyntaxException {
|
||||
String scheme = getScheme(request);
|
||||
CharSequence headerCS = request.requestHeaders().get(HttpHeaderNames.HOST);
|
||||
if (headerCS != null) {
|
||||
String header = headerCS.toString();
|
||||
CharSequence charSequence = request.requestHeaders().get(HttpHeaderNames.HOST);
|
||||
if (charSequence != null) {
|
||||
String header = charSequence.toString();
|
||||
final int portIndex;
|
||||
if (header.startsWith("[")) {
|
||||
portIndex = header.indexOf(':', header.indexOf(']'));
|
||||
|
|
|
|||
|
|
@ -157,11 +157,8 @@ public class ReactorNetty2WebSocketClient implements WebSocketClient {
|
|||
|
||||
private HttpHeaders toHttpHeaders(WebsocketInbound inbound) {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
io.netty5.handler.codec.http.headers.HttpHeaders nettyHeaders = inbound.headers();
|
||||
nettyHeaders.forEach(entry -> {
|
||||
CharSequence name = entry.getKey();
|
||||
headers.put(name.toString(), getAll(nettyHeaders.valuesIterator(name)));
|
||||
});
|
||||
inbound.headers().iterator().forEachRemaining(entry ->
|
||||
headers.add(entry.getKey().toString(), entry.getValue().toString()));
|
||||
return headers;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue