Remove unnecessary iteration over headers
The use of LinkedCaseInsensitiveMap, going back to 3.0, makes it unnecessary to iterate over keys which can cause ConcurrentModificationException. Closes gh-23460
This commit is contained in:
parent
6d8bf3466c
commit
a7bb5ca473
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2018 the original author or authors.
|
* Copyright 2002-2019 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -91,8 +91,11 @@ class HeaderValueHolder {
|
||||||
* @param headers the Map of header names to HeaderValueHolders
|
* @param headers the Map of header names to HeaderValueHolders
|
||||||
* @param name the name of the desired header
|
* @param name the name of the desired header
|
||||||
* @return the corresponding HeaderValueHolder, or {@code null} if none found
|
* @return the corresponding HeaderValueHolder, or {@code null} if none found
|
||||||
|
* @deprecated as of 5.1.10 in favor of using
|
||||||
|
* {@link org.springframework.util.LinkedCaseInsensitiveMap}.
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
|
@Deprecated
|
||||||
public static HeaderValueHolder getByName(Map<String, HeaderValueHolder> headers, String name) {
|
public static HeaderValueHolder getByName(Map<String, HeaderValueHolder> headers, String name) {
|
||||||
Assert.notNull(name, "Header name must not be null");
|
Assert.notNull(name, "Header name must not be null");
|
||||||
for (String headerName : headers.keySet()) {
|
for (String headerName : headers.keySet()) {
|
||||||
|
|
|
@ -1038,7 +1038,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doAddHeaderValue(String name, @Nullable Object value, boolean replace) {
|
private void doAddHeaderValue(String name, @Nullable Object value, boolean replace) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Assert.notNull(value, "Header value must not be null");
|
Assert.notNull(value, "Header value must not be null");
|
||||||
if (header == null || replace) {
|
if (header == null || replace) {
|
||||||
header = new HeaderValueHolder();
|
header = new HeaderValueHolder();
|
||||||
|
@ -1078,7 +1078,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public long getDateHeader(String name) {
|
public long getDateHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Object value = (header != null ? header.getValue() : null);
|
Object value = (header != null ? header.getValue() : null);
|
||||||
if (value instanceof Date) {
|
if (value instanceof Date) {
|
||||||
return ((Date) value).getTime();
|
return ((Date) value).getTime();
|
||||||
|
@ -1115,13 +1115,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getHeader(String name) {
|
public String getHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return (header != null ? header.getStringValue() : null);
|
return (header != null ? header.getStringValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Enumeration<String> getHeaders(String name) {
|
public Enumeration<String> getHeaders(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return Collections.enumeration(header != null ? header.getStringValues() : new LinkedList<>());
|
return Collections.enumeration(header != null ? header.getStringValues() : new LinkedList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1132,7 +1132,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getIntHeader(String name) {
|
public int getIntHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Object value = (header != null ? header.getValue() : null);
|
Object value = (header != null ? header.getValue() : null);
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
return ((Number) value).intValue();
|
return ((Number) value).intValue();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2018 the original author or authors.
|
* Copyright 2002-2019 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -380,7 +380,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean containsHeader(String name) {
|
public boolean containsHeader(String name) {
|
||||||
return (HeaderValueHolder.getByName(this.headers, name) != null);
|
return (this.headers.get(name) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -405,7 +405,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getHeader(String name) {
|
public String getHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return (header != null ? header.getStringValue() : null);
|
return (header != null ? header.getStringValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<String> getHeaders(String name) {
|
public List<String> getHeaders(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
if (header != null) {
|
if (header != null) {
|
||||||
return header.getStringValues();
|
return header.getStringValues();
|
||||||
}
|
}
|
||||||
|
@ -436,7 +436,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public Object getHeaderValue(String name) {
|
public Object getHeaderValue(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return (header != null ? header.getValue() : null);
|
return (header != null ? header.getValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,7 +446,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
* @return the associated header values, or an empty List if none
|
* @return the associated header values, or an empty List if none
|
||||||
*/
|
*/
|
||||||
public List<Object> getHeaderValues(String name) {
|
public List<Object> getHeaderValues(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
if (header != null) {
|
if (header != null) {
|
||||||
return header.getValues();
|
return header.getValues();
|
||||||
}
|
}
|
||||||
|
@ -614,7 +614,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doAddHeaderValue(String name, Object value, boolean replace) {
|
private void doAddHeaderValue(String name, Object value, boolean replace) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Assert.notNull(value, "Header value must not be null");
|
Assert.notNull(value, "Header value must not be null");
|
||||||
if (header == null) {
|
if (header == null) {
|
||||||
header = new HeaderValueHolder();
|
header = new HeaderValueHolder();
|
||||||
|
|
|
@ -1038,7 +1038,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doAddHeaderValue(String name, @Nullable Object value, boolean replace) {
|
private void doAddHeaderValue(String name, @Nullable Object value, boolean replace) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Assert.notNull(value, "Header value must not be null");
|
Assert.notNull(value, "Header value must not be null");
|
||||||
if (header == null || replace) {
|
if (header == null || replace) {
|
||||||
header = new HeaderValueHolder();
|
header = new HeaderValueHolder();
|
||||||
|
@ -1078,7 +1078,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public long getDateHeader(String name) {
|
public long getDateHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Object value = (header != null ? header.getValue() : null);
|
Object value = (header != null ? header.getValue() : null);
|
||||||
if (value instanceof Date) {
|
if (value instanceof Date) {
|
||||||
return ((Date) value).getTime();
|
return ((Date) value).getTime();
|
||||||
|
@ -1115,13 +1115,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getHeader(String name) {
|
public String getHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return (header != null ? header.getStringValue() : null);
|
return (header != null ? header.getStringValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Enumeration<String> getHeaders(String name) {
|
public Enumeration<String> getHeaders(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return Collections.enumeration(header != null ? header.getStringValues() : new LinkedList<>());
|
return Collections.enumeration(header != null ? header.getStringValues() : new LinkedList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1132,7 +1132,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getIntHeader(String name) {
|
public int getIntHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Object value = (header != null ? header.getValue() : null);
|
Object value = (header != null ? header.getValue() : null);
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
return ((Number) value).intValue();
|
return ((Number) value).intValue();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2018 the original author or authors.
|
* Copyright 2002-2019 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -380,7 +380,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean containsHeader(String name) {
|
public boolean containsHeader(String name) {
|
||||||
return (HeaderValueHolder.getByName(this.headers, name) != null);
|
return (this.headers.get(name) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -405,7 +405,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getHeader(String name) {
|
public String getHeader(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return (header != null ? header.getStringValue() : null);
|
return (header != null ? header.getStringValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<String> getHeaders(String name) {
|
public List<String> getHeaders(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
if (header != null) {
|
if (header != null) {
|
||||||
return header.getStringValues();
|
return header.getStringValues();
|
||||||
}
|
}
|
||||||
|
@ -436,7 +436,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public Object getHeaderValue(String name) {
|
public Object getHeaderValue(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
return (header != null ? header.getValue() : null);
|
return (header != null ? header.getValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,7 +446,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
* @return the associated header values, or an empty List if none
|
* @return the associated header values, or an empty List if none
|
||||||
*/
|
*/
|
||||||
public List<Object> getHeaderValues(String name) {
|
public List<Object> getHeaderValues(String name) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
if (header != null) {
|
if (header != null) {
|
||||||
return header.getValues();
|
return header.getValues();
|
||||||
}
|
}
|
||||||
|
@ -614,7 +614,7 @@ public class MockHttpServletResponse implements HttpServletResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doAddHeaderValue(String name, Object value, boolean replace) {
|
private void doAddHeaderValue(String name, Object value, boolean replace) {
|
||||||
HeaderValueHolder header = HeaderValueHolder.getByName(this.headers, name);
|
HeaderValueHolder header = this.headers.get(name);
|
||||||
Assert.notNull(value, "Header value must not be null");
|
Assert.notNull(value, "Header value must not be null");
|
||||||
if (header == null) {
|
if (header == null) {
|
||||||
header = new HeaderValueHolder();
|
header = new HeaderValueHolder();
|
||||||
|
|
Loading…
Reference in New Issue