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