In the spirit of using the new generic type capability of Classpath, and because I already did it while looking at the bug in Collecions, I offer up this nice patch.

In two of the HTTP support classes I converted a couple of things to use generics.

2006-12-14  David Daney  <[EMAIL PROTECTED]>

   * gnu/java/net/protocol/http/HTTPURLConnection.java: Clean
   imports.
   (getHeaderFields): Change return type to Map<String,List<String>>
   * gnu/java/net/protocol/http/Headers.java: Clean imports.
   (headers) Change type to ArrayList<HeaderElement>.
   (iterator) Change return type to Iterator<HeaderElement>.
   (getValue) Remove casts.
   (put) Same.
   (putAll) Same.
   (remove) Same.
   (getAsMap) Change return type to Map<String,List<String>> and use
   generics internally.
   (getHeaderName) Remove casts.
   (getHeaderValue) Same.

Index: gnu/java/net/protocol/http/HTTPURLConnection.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/net/protocol/http/HTTPURLConnection.java,v
retrieving revision 1.28
diff -u -p -r1.28 HTTPURLConnection.java
--- gnu/java/net/protocol/http/HTTPURLConnection.java	8 Dec 2006 20:45:43 -0000	1.28
+++ gnu/java/net/protocol/http/HTTPURLConnection.java	15 Dec 2006 07:13:21 -0000
@@ -50,6 +50,7 @@ import java.net.URL;
 import java.security.cert.Certificate;
 import java.util.Collections;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 import javax.net.ssl.HandshakeCompletedEvent;
@@ -509,7 +510,7 @@ public class HTTPURLConnection
     return errorSink;
   }
 
-  public Map getHeaderFields()
+  public Map<String,List<String>> getHeaderFields()
   {
     if (!connected)
       {
@@ -522,7 +523,7 @@ public class HTTPURLConnection
             return null;
           }
       }
-    Map m = response.getHeaders().getAsMap();
+    Map<String,List<String>> m = response.getHeaders().getAsMap();
     m.put(null, Collections.singletonList(getStatusLine(response)));
     return Collections.unmodifiableMap(m);
   }
Index: gnu/java/net/protocol/http/Headers.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/net/protocol/http/Headers.java,v
retrieving revision 1.8
diff -u -p -r1.8 Headers.java
--- gnu/java/net/protocol/http/Headers.java	10 Mar 2006 21:27:56 -0000	1.8
+++ gnu/java/net/protocol/http/Headers.java	15 Dec 2006 07:13:21 -0000
@@ -49,6 +49,7 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -65,7 +66,7 @@ class Headers
   /**
    * A list of HeaderElements
    */
-  private final ArrayList headers = new ArrayList();
+  private final ArrayList<HeaderElement> headers = new ArrayList();
   
   /**
    * The HTTP dateformat used to parse date header fields.
@@ -102,7 +103,7 @@ class Headers
    *
    * @return the Iterator.
    */
-  Iterator iterator()
+  Iterator<HeaderElement> iterator()
   {
     return headers.iterator();
   }
@@ -118,7 +119,7 @@ class Headers
   {
     for (int i = headers.size() - 1; i >= 0; i--)
       {
-        HeaderElement e = (HeaderElement)headers.get(i);
+        HeaderElement e = headers.get(i);
         if (e.name.equalsIgnoreCase(header))
           {
             return e.value;
@@ -219,7 +220,7 @@ class Headers
   {    
     for (int i = headers.size() - 1; i >= 0; i--)
       {
-        HeaderElement e = (HeaderElement)headers.get(i);
+        HeaderElement e = headers.get(i);
         if (e.name.equalsIgnoreCase(name))
           {
             e.value = value;
@@ -240,9 +241,9 @@ class Headers
    */
   public void putAll(Headers o)
   {
-    for (Iterator it = o.iterator(); it.hasNext(); )
+    for (Iterator<HeaderElement> it = o.iterator(); it.hasNext(); )
       {
-        HeaderElement e = (HeaderElement)it.next();
+        HeaderElement e = it.next();
         remove(e.name);
         addValue(e.name, e.value);
       }
@@ -256,9 +257,9 @@ class Headers
    */
   public void remove(String name)
   {
-    for (Iterator it = headers.iterator(); it.hasNext(); )
+    for (Iterator<HeaderElement> it = headers.iterator(); it.hasNext(); )
       {
-        HeaderElement e = (HeaderElement)it.next();
+        HeaderElement e = it.next();
         if (e.name.equalsIgnoreCase(name))
           it.remove();
       }
@@ -358,26 +359,26 @@ class Headers
    *
    * @return a Map containing all the headers.
    */
-  public Map getAsMap()
+  public Map<String,List<String>> getAsMap()
   {
-    LinkedHashMap m = new LinkedHashMap();
-    for (Iterator it = headers.iterator(); it.hasNext(); )
+    LinkedHashMap<String,List<String>> m = new LinkedHashMap<String,List<String>>();
+    for (Iterator<HeaderElement> it = headers.iterator(); it.hasNext(); )
       {
-        HeaderElement e = (HeaderElement)it.next();
-        ArrayList l = (ArrayList)m.get(e.name);
+        HeaderElement e = it.next();
+        ArrayList<String> l = (ArrayList<String>)m.get(e.name);
         if (l == null)
           {
-            l = new ArrayList(1);
+            l = new ArrayList<String>(1);
             l.add(e.value);
             m.put(e.name, l);
           }
         else
           l.add(0, e.value);
       }
-    for (Iterator it = m.entrySet().iterator(); it.hasNext(); )
+    for (Iterator<Map.Entry<String,List<String>>> it = m.entrySet().iterator(); it.hasNext(); )
       {
-        Map.Entry me = (Map.Entry)it.next();
-        ArrayList l = (ArrayList)me.getValue();
+        Map.Entry<String,List<String>> me = it.next();
+        List<String> l = me.getValue();
         me.setValue(Collections.unmodifiableList(l));
       }
     return m;
@@ -397,7 +398,7 @@ class Headers
     if (i >= headers.size() || i < 0)
       return null;
     
-    return ((HeaderElement)headers.get(i)).name;
+    return headers.get(i).name;
   }
 
   /**
@@ -414,8 +415,6 @@ class Headers
     if (i >= headers.size() || i < 0)
       return null;
     
-    return ((HeaderElement)headers.get(i)).value;
+    return headers.get(i).value;
   }
-  
 }
-

Reply via email to