< prev index next >
src/java.httpclient/share/classes/java/net/http/HttpHeadersImpl.java
Print this page
*** 23,79 ****
*/
package java.net.http;
import java.util.Collections;
import java.util.HashMap;
- import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
/**
* Implementation of HttpHeaders.
*/
! class HttpHeadersImpl implements HttpHeaders1 {
!
private final HashMap<String,List<String>> headers;
- private boolean isUnmodifiable = false;
public HttpHeadersImpl() {
headers = new HashMap<>();
}
- /**
- * Replace all List<String> in headers with unmodifiable Lists. Call
- * this only after all headers are added. The headers HashMap
- * is wrapped with an unmodifiable HashMap in map()
- */
- @Override
- public void makeUnmodifiable() {
- if (isUnmodifiable)
- return;
-
- Set<String> keys = new HashSet<>(headers.keySet());
- for (String key : keys) {
- List<String> values = headers.remove(key);
- if (values != null) {
- headers.put(key, Collections.unmodifiableList(values));
- }
- }
- isUnmodifiable = true;
- }
-
@Override
public Optional<String> firstValue(String name) {
List<String> l = headers.get(name);
return Optional.ofNullable(l == null ? null : l.get(0));
}
@Override
public List<String> allValues(String name) {
return headers.get(name);
}
@Override
public Map<String, List<String>> map() {
--- 23,59 ----
*/
package java.net.http;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
/**
* Implementation of HttpHeaders.
*/
! class HttpHeadersImpl implements HttpHeaders {
! // key is lowercase
private final HashMap<String,List<String>> headers;
public HttpHeadersImpl() {
headers = new HashMap<>();
}
@Override
public Optional<String> firstValue(String name) {
+ name = name.toLowerCase();
List<String> l = headers.get(name);
return Optional.ofNullable(l == null ? null : l.get(0));
}
@Override
public List<String> allValues(String name) {
+ name = name.toLowerCase();
return headers.get(name);
}
@Override
public Map<String, List<String>> map() {
*** 106,127 ****
--- 86,110 ----
}
return l;
}
void addHeader(String name, String value) {
+ name = name.toLowerCase();
List<String> l = getOrCreate(name);
l.add(value);
}
void setHeader(String name, String value) {
+ name = name.toLowerCase();
List<String> l = getOrCreate(name);
l.clear();
l.add(value);
}
@Override
public Optional<Long> firstValueAsLong(String name) {
+ name = name.toLowerCase();
List<String> l = headers.get(name);
if (l == null) {
return Optional.ofNullable(null);
} else {
String v = l.get(0);
< prev index next >