< prev index next >

src/java.httpclient/share/classes/java/net/http/HttpHeadersImpl.java

Print this page

        

@@ -23,57 +23,37 @@
  */
 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 {
-
+class HttpHeadersImpl implements HttpHeaders {
+    // key is lowercase
     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) {
+        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,22 +86,25 @@
         }
         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 >