< 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 >