libjava/classpath/ChangeLog.gcj:

2007-05-31  Matthias Klose  <doko@ubuntu.com>

        * javax/management/NotificationBroadcasterSupport.java
        (getNotificationInfo): Add cast.
        * native/jni/qt-peer/Makefile.am (AM_CXXFLAGS): Add libstdc++ include
        directories.
        * native/jni/qt-peer/Makefile.in: Regenerate.

libjava/ChangeLog:

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        * java/io/natFileWin32.cc (setFilePermissions): New (stub only).
        _access: Handle EXEC query, stub only.

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        Merged from classpath:
        * gnu/java/nio/SelectorProviderImpl.java: Whitespace merge.
        * java/lang/System.java(inheritedChannel): New.
        * java/lang/Character.java: Remove stray`;'.
        * java/net/MulticastSocket.java: Merged.
        * java/text/DateFormatSymbols.java(getInstance): New, comment updates.
        * java/text/Collator.java(getInstance): Merged.
        * java/util/Calendar.java: New attributes ALL_STYLES, SHORT, LONG.
        getDisplayName, getDisplayNames: New.
        * java/util/logging/Logger.java: Merged.
        * Regenerate .class and .h files.

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        * java/io/File.java: Merge with classpath-0.95, new method
        setFilePermissions, new attribute EXEC.
        * java/io/natFilePosix.cc (setFilePermissions): New.
        _access: Handle EXEC query.
        * classpath/lib/java/io/File.class, java/io/File.h: Regenerate.

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        Imported GNU Classpath 0.95.

        * classpath/Makefile.in,
        classpath/native/jni/midi-dssi/Makefile.in,
        classpath/native/jni/classpath/Makefile.in,
        classpath/native/jni/Makefile.in,
        classpath/native/jni/gconf-peer/Makefile.in,
        classpath/native/jni/java-io/Makefile.in,
        classpath/native/jni/native-lib/Makefile.in,
        classpath/native/jni/java-util/Makefile.in,
        classpath/native/jni/midi-alsa/Makefile.in,
        classpath/native/jni/java-lang/Makefile.in,
        classpath/native/jni/java-nio/Makefile.in,
        classpath/native/jni/java-net/Makefile.in,
        classpath/native/jni/xmlj/Makefile.in,
        classpath/native/jni/qt-peer/Makefile.in,
        classpath/native/jni/gtk-peer/Makefile.in,
        classpath/native/Makefile.in, classpath/native/jawt/Makefile.in,
        classpath/native/fdlibm/Makefile.in,
        classpath/native/plugin/Makefile.in,
        classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
        classpath/tools/Makefile.in, classpath/doc/Makefile.in,
        classpath/doc/api/Makefile.in, classpath/lib/Makefile.in,
        classpath/external/Makefile.in, classpath/external/jsr166/Makefile.in,
        classpath/external/sax/Makefile.in,
        classpath/external/w3c_dom/Makefile.in,
        classpath/external/relaxngDatatype/Makefile.in,
        classpath/include/Makefile.in,
        classpath/examples/Makefile.in: Regenerate.
        * classpath/config.guess, classpath/config.sub,
        classpath/ltmain.sh : Update.
        * classpath/configure, classpath/depcomp, classpath/missing,
        classpath/aclocal.m4, classpath/install-sh: Regenerate.

        * gnu/classpath/Configuration.java (CLASSPATH_VERSION): Now 0.95.
        * sources.am: Regenerate.
        * Makefile.in: Regenerate.

        * Update the .class files and generated CNI header files, add new
        .class and generated CNI header files.
        * Remove generated files for removed java source files:
        classpath/gnu/java/net/BASE64.java,
        classpath/gnu/java/security/util/Base64.java,
        classpath/gnu/java/awt/peer/gtk/GThreadMutex.java,
        classpath/gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
        classpath/gnu/java/awt/font/autofit/Scaler.java,
        classpath/gnu/classpath/jdwp/util/Value.java,
        classpath/gnu/javax/net/ssl/Base64.java.
        * Remove empty directories.

        * Makefile.am(nat_source_files): Add natVMOperatingSystemMXBeanImpl.cc.
        * java/lang/Class.java(setAccessible): Merge from classpath.
        * java/util/Locale.java: Remove.
        * gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java,
        gnu/java/lang/management/natVMOperatingSystemMXBeanImpl.cc: New.
        * gcj/javaprims.h: Update class declarations.
        * scripts/classes.pl: Update usage.
        * HACKING: Mention to build all peers.

From-SVN: r125302
This commit is contained in:
Matthias Klose 2007-06-03 23:18:43 +00:00
parent af333b9a7f
commit e1bea0c068
2951 changed files with 80982 additions and 68583 deletions

View file

@ -1,190 +0,0 @@
/* BASE.java --
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.java.net;
/**
* Encodes and decodes text according to the BASE64 encoding.
*
* @author Chris Burdess (dog@gnu.org)
*/
public final class BASE64
{
private static final byte[] src = {
0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54,
0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63, 0x64,
0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e,
0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
0x79, 0x7a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x2b, 0x2f
};
private static final byte[] dst;
static
{
dst = new byte[0x100];
for (int i = 0x0; i < 0xff; i++)
{
dst[i] = -1;
}
for (int i = 0; i < src.length; i++)
{
dst[src[i]] = (byte) i;
}
}
private BASE64()
{
}
/**
* Encode the specified byte array using the BASE64 algorithm.
*
* @param bs the source byte array
*/
public static byte[] encode(byte[] bs)
{
int si = 0, ti = 0; // source/target array indices
byte[] bt = new byte[((bs.length + 2) * 4) / 3]; // target byte array
for (; si < bs.length; si += 3)
{
int buflen = bs.length - si;
if (buflen == 1)
{
byte b = bs[si];
int i = 0;
bt[ti++] = src[b >>> 2 & 0x3f];
bt[ti++] = src[(b << 4 & 0x30) + (i >>> 4 & 0xf)];
}
else if (buflen == 2)
{
byte b1 = bs[si], b2 = bs[si + 1];
int i = 0;
bt[ti++] = src[b1 >>> 2 & 0x3f];
bt[ti++] = src[(b1 << 4 & 0x30) + (b2 >>> 4 & 0xf)];
bt[ti++] = src[(b2 << 2 & 0x3c) + (i >>> 6 & 0x3)];
}
else
{
byte b1 = bs[si], b2 = bs[si + 1], b3 = bs[si + 2];
bt[ti++] = src[b1 >>> 2 & 0x3f];
bt[ti++] = src[(b1 << 4 & 0x30) + (b2 >>> 4 & 0xf)];
bt[ti++] = src[(b2 << 2 & 0x3c) + (b3 >>> 6 & 0x3)];
bt[ti++] = src[b3 & 0x3f];
}
}
if (ti < bt.length)
{
byte[] tmp = new byte[ti];
System.arraycopy(bt, 0, tmp, 0, ti);
bt = tmp;
}
/*while (ti < bt.length)
{
bt[ti++] = 0x3d;
}*/
return bt;
}
/**
* Decode the specified byte array using the BASE64 algorithm.
*
* @param bs the source byte array
*/
public static byte[] decode(byte[] bs)
{
int srclen = bs.length;
while (srclen > 0 && bs[srclen - 1] == 0x3d)
{
srclen--; /* strip padding character */
}
byte[] buffer = new byte[srclen];
int buflen = 0;
int si = 0;
int len = srclen - si;
while (len > 0)
{
byte b0 = dst[bs[si++] & 0xff];
byte b2 = dst[bs[si++] & 0xff];
buffer[buflen++] = (byte) (b0 << 2 & 0xfc | b2 >>> 4 & 0x3);
if (len > 2)
{
b0 = b2;
b2 = dst[bs[si++] & 0xff];
buffer[buflen++] = (byte) (b0 << 4 & 0xf0 | b2 >>> 2 & 0xf);
if (len > 3)
{
b0 = b2;
b2 = dst[bs[si++] & 0xff];
buffer[buflen++] = (byte) (b0 << 6 & 0xc0 | b2 & 0x3f);
}
}
len = srclen - si;
}
byte[] bt = new byte[buflen];
System.arraycopy(buffer, 0, bt, 0, buflen);
return bt;
}
public static void main(String[] args)
{
boolean decode = false;
for (int i = 0; i < args.length; i++)
{
if (args[i].equals("-d"))
{
decode = true;
}
else
{
try
{
byte[] in = args[i].getBytes("US-ASCII");
byte[] out = decode ? decode(in) : encode(in);
System.out.println(args[i] + " = " +
new String(out, "US-ASCII"));
}
catch (java.io.UnsupportedEncodingException e)
{
e.printStackTrace(System.err);
}
}
}
}
}

View file

@ -81,8 +81,8 @@ public class DefaultContentHandlerFactory implements ContentHandlerFactory
"image/x-xpixmap"
};
private static HashSet imageTypes
= new HashSet(Arrays.asList(known_image_types));
private static HashSet<String> imageTypes
= new HashSet<String>(Arrays.asList(known_image_types));
public ContentHandler createContentHandler(String mimeType)
{

View file

@ -48,9 +48,9 @@ import java.security.PrivilegedAction;
* @author Chris Burdess (dog@gnu.org)
*/
public class GetLocalHostAction
implements PrivilegedAction
implements PrivilegedAction<InetAddress>
{
public Object run()
public InetAddress run()
{
try
{

View file

@ -49,8 +49,8 @@ import java.util.Vector;
*/
public class HeaderFieldHelper
{
private Vector headerFieldKeys;
private Vector headerFieldValues;
private Vector<String> headerFieldKeys;
private Vector<String> headerFieldValues;
public HeaderFieldHelper()
{
@ -59,8 +59,8 @@ public class HeaderFieldHelper
public HeaderFieldHelper (int size)
{
headerFieldKeys = new Vector (size);
headerFieldValues = new Vector (size);
headerFieldKeys = new Vector<String> (size);
headerFieldValues = new Vector<String> (size);
}
public void addHeaderField (String key, String value)
@ -75,7 +75,7 @@ public class HeaderFieldHelper
try
{
key = (String) headerFieldKeys.elementAt (index);
key = headerFieldKeys.elementAt (index);
}
catch (ArrayIndexOutOfBoundsException e)
{
@ -90,7 +90,7 @@ public class HeaderFieldHelper
try
{
value = (String) headerFieldValues.elementAt (index);
value = headerFieldValues.elementAt (index);
}
catch (ArrayIndexOutOfBoundsException e)
{
@ -105,8 +105,7 @@ public class HeaderFieldHelper
try
{
value = (String) headerFieldValues.elementAt
(headerFieldKeys.indexOf(key));
value = headerFieldValues.elementAt(headerFieldKeys.indexOf(key));
}
catch (ArrayIndexOutOfBoundsException e)
{
@ -115,9 +114,9 @@ public class HeaderFieldHelper
return value;
}
public Map getHeaderFields()
public Map<String, String> getHeaderFields()
{
HashMap headers = new HashMap();
HashMap<String, String> headers = new HashMap<String, String>();
int max = headerFieldKeys.size();
for (int index = 0; index < max; index++)

View file

@ -43,6 +43,7 @@ import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Set;
import java.util.jar.JarFile;
/**
@ -70,7 +71,8 @@ public class IndexListParser
double versionNumber;
// Map each jar to the prefixes defined for the jar.
// This is intentionally kept in insertion order.
LinkedHashMap prefixes = new LinkedHashMap();
LinkedHashMap<URL, Set<String>> prefixes
= new LinkedHashMap<URL, Set<String>>();
/**
* Parses the given jarfile's INDEX.LIST file if it exists.
@ -107,7 +109,7 @@ public class IndexListParser
while ((line = br.readLine()) != null)
{
URL jarURL = new URL(baseURL, line);
HashSet values = new HashSet();
HashSet<String> values = new HashSet<String>();
// Read the names in the section.
while ((line = br.readLine()) != null)
@ -174,7 +176,7 @@ public class IndexListParser
*
* @return an map of all the headers, or null if no INDEX.LIST was found
*/
public LinkedHashMap getHeaders()
public LinkedHashMap<URL, Set<String>> getHeaders()
{
return prefixes;
}

View file

@ -32,7 +32,7 @@ public final class JarURLLoader extends URLLoader
// Base jar: url for all resources loaded from jar.
final URL baseJarURL;
// The "Class-Path" attribute of this Jar's manifest.
ArrayList classPath;
ArrayList<URLLoader> classPath;
// If not null, a mapping from INDEX.LIST for this jar only.
// This is a set of all prefixes and top-level files that
// ought to be available in this jar.
@ -90,20 +90,20 @@ public final class JarURLLoader extends URLLoader
IndexListParser parser = new IndexListParser(jarfile, baseJarURL,
baseURL);
LinkedHashMap indexMap = parser.getHeaders();
LinkedHashMap<URL, Set<String>> indexMap = parser.getHeaders();
if (indexMap != null)
{
// Note that the index also computes
// the resulting Class-Path -- there are jars out there
// where the index lists some required jars which do
// not appear in the Class-Path attribute in the manifest.
this.classPath = new ArrayList();
Iterator it = indexMap.entrySet().iterator();
this.classPath = new ArrayList<URLLoader>();
Iterator<Map.Entry<URL, Set<String>>> it = indexMap.entrySet().iterator();
while (it.hasNext())
{
Map.Entry entry = (Map.Entry) it.next();
URL subURL = (URL) entry.getKey();
Set prefixes = (Set) entry.getValue();
Map.Entry<URL, Set<String>> entry = it.next();
URL subURL = entry.getKey();
Set<String> prefixes = entry.getValue();
if (subURL.equals(baseURL))
this.indexSet = prefixes;
else
@ -127,7 +127,7 @@ public final class JarURLLoader extends URLLoader
= attributes.getValue(Attributes.Name.CLASS_PATH))
!= null))
{
this.classPath = new ArrayList();
this.classPath = new ArrayList<URLLoader>();
StringTokenizer st = new StringTokenizer(classPathString, " ");
while (st.hasMoreElements ())
{
@ -144,7 +144,7 @@ public final class JarURLLoader extends URLLoader
cache, factory,
subURL, subURL);
this.classPath.add(subLoader);
ArrayList extra = subLoader.getClassPath();
ArrayList<URLLoader> extra = subLoader.getClassPath();
if (extra != null)
this.classPath.addAll(extra);
}
@ -208,7 +208,7 @@ public final class JarURLLoader extends URLLoader
}
}
public ArrayList getClassPath()
public ArrayList<URLLoader> getClassPath()
{
return classPath;
}

View file

@ -140,7 +140,7 @@ public abstract class URLLoader
* Return a list of new URLLoader objects representing any
* class path entries added by this container.
*/
public ArrayList getClassPath()
public ArrayList<URLLoader> getClassPath()
{
return null;
}

View file

@ -51,7 +51,8 @@ public class URLStreamHandlerCache
* private protocol handler cache (also a HashMap), so we can avoid
* creating handlers each time the same protocol comes.
*/
private HashMap factoryCache = new HashMap(5);
private HashMap<URLStreamHandlerFactory, HashMap<String, URLStreamHandler>> factoryCache
= new HashMap<URLStreamHandlerFactory, HashMap<String, URLStreamHandler>>(5);
public URLStreamHandlerCache()
{
@ -62,7 +63,7 @@ public class URLStreamHandlerCache
// Since we only support three protocols so far, 5 is enough
// for cache initial size.
if (factory != null && factoryCache.get(factory) == null)
factoryCache.put(factory, new HashMap(5));
factoryCache.put(factory, new HashMap<String, URLStreamHandler>(5));
}
public synchronized URLStreamHandler get(URLStreamHandlerFactory factory,
@ -71,8 +72,8 @@ public class URLStreamHandlerCache
if (factory == null)
return null;
// Check if there're handler for the same protocol in cache.
HashMap cache = (HashMap) factoryCache.get(factory);
URLStreamHandler handler = (URLStreamHandler) cache.get(protocol);
HashMap<String, URLStreamHandler> cache = factoryCache.get(factory);
URLStreamHandler handler = cache.get(protocol);
if (handler == null)
{
// Add it to cache.

View file

@ -44,7 +44,6 @@ import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
public final class LocalServerSocket extends ServerSocket
{

View file

@ -46,7 +46,6 @@ import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.SocketImpl;
import java.nio.channels.IllegalBlockingModeException;
import java.nio.channels.SocketChannel;

View file

@ -1139,7 +1139,7 @@ public class FTPConnection
* @param pathname the directory pathname, or null
* @return a list of filenames(strings)
*/
public List nameList(String pathname)
public List<String> nameList(String pathname)
throws IOException
{
if (dtp == null || transferMode == MODE_STREAM)
@ -1164,7 +1164,7 @@ public class FTPConnection
in = new BufferedInputStream(in);
in = new CRLFInputStream(in); // TODO ensure that TYPE is correct
LineInputStream li = new LineInputStream(in);
List ret = new ArrayList();
ArrayList<String> ret = new ArrayList<String>();
for (String line = li.readLine();
line != null;
line = li.readLine())

View file

@ -50,7 +50,9 @@ import java.net.InetAddress;
import java.net.URL;
import java.net.URLConnection;
import java.security.AccessController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -112,7 +114,7 @@ public class FTPURLConnection
{
username = "anonymous";
GetLocalHostAction a = new GetLocalHostAction();
InetAddress localhost =(InetAddress) AccessController.doPrivileged(a);
InetAddress localhost = AccessController.doPrivileged(a);
password = SystemProperties.getProperty("user.name") + "@" +
((localhost == null) ? "localhost" : localhost.getHostName());
}
@ -232,9 +234,9 @@ public class FTPURLConnection
return null;
}
public Map getRequestProperties()
public Map<String, List<String>> getRequestProperties()
{
Map map = new HashMap();
Map<String, List<String>> map = new HashMap<String, List<String>>();
addRequestPropertyValue(map, "passive");
addRequestPropertyValue(map, "representationType");
addRequestPropertyValue(map, "fileStructure");
@ -242,10 +244,13 @@ public class FTPURLConnection
return map;
}
private void addRequestPropertyValue(Map map, String key)
private void addRequestPropertyValue(Map<String, List<String>> map,
String key)
{
String value = getRequestProperty(key);
map.put(key, value);
ArrayList<String> l = new ArrayList<String>();
l.add(value);
map.put(key, l);
}
public void setRequestProperty(String key, String value)

View file

@ -58,10 +58,6 @@ import java.net.ProtocolException;
public class ChunkedInputStream
extends InputStream
{
private static final byte CR = 0x0d;
private static final byte LF = 0x0a;
Headers headers;
/** The underlying stream. */

View file

@ -129,7 +129,7 @@ public class HTTPConnection
*/
protected int minorVersion;
private final List handshakeCompletedListeners;
private final List<HandshakeCompletedListener> handshakeCompletedListeners;
/**
* The socket this connection communicates on.
@ -154,7 +154,7 @@ public class HTTPConnection
/**
* Nonce values seen by this connection.
*/
private Map nonceCounts;
private Map<String, Integer> nonceCounts;
/**
* The cookie manager for this connection.
@ -244,7 +244,8 @@ public class HTTPConnection
this.connectionTimeout = connectionTimeout;
this.timeout = timeout;
majorVersion = minorVersion = 1;
handshakeCompletedListeners = new ArrayList(2);
handshakeCompletedListeners
= new ArrayList<HandshakeCompletedListener>(2);
}
/**
@ -357,7 +358,8 @@ public class HTTPConnection
/**
* The pool
*/
final LinkedList connectionPool = new LinkedList();
final LinkedList<HTTPConnection> connectionPool
= new LinkedList<HTTPConnection>();
/**
* Maximum size of the pool.
@ -857,7 +859,7 @@ public class HTTPConnection
{
return 0;
}
return((Integer) nonceCounts.get(nonce)).intValue();
return nonceCounts.get(nonce).intValue();
}
/**
@ -868,7 +870,7 @@ public class HTTPConnection
int current = getNonceCount(nonce);
if (nonceCounts == null)
{
nonceCounts = new HashMap();
nonceCounts = new HashMap<String, Integer>();
}
nonceCounts.put(nonce, new Integer(current + 1));
}

View file

@ -50,11 +50,11 @@ 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;
import javax.net.ssl.HandshakeCompletedListener;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSocketFactory;
@ -170,7 +170,8 @@ public class HTTPURLConnection
if (secure)
{
SSLSocketFactory factory = getSSLSocketFactory();
HostnameVerifier verifier = getHostnameVerifier();
// FIXME: use the verifier
// HostnameVerifier verifier = getHostnameVerifier();
if (factory != null)
{
connection.setSSLSocketFactory(factory);
@ -428,12 +429,12 @@ public class HTTPURLConnection
return requestHeaders.getValue(key);
}
public Map getRequestProperties()
public Map<String, List<String>> getRequestProperties()
{
if (connected)
throw new IllegalStateException("Already connected");
Map m = requestHeaders.getAsMap();
Map<String, List<String>> m = requestHeaders.getAsMap();
return Collections.unmodifiableMap(m);
}
@ -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);
}

View file

@ -42,6 +42,7 @@ import gnu.java.net.LineInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.Iterable;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
@ -49,6 +50,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;
/**
@ -60,12 +62,13 @@ import java.util.Map;
* @author Chris Burdess (dog@gnu.org)
* @author David Daney (ddaney@avtrex.com)
*/
class Headers
class Headers implements Iterable<Headers.HeaderElement>
{
/**
* A list of HeaderElements
*/
private final ArrayList headers = new ArrayList();
private final ArrayList<HeaderElement> headers
= new ArrayList<HeaderElement>();
/**
* The HTTP dateformat used to parse date header fields.
@ -102,7 +105,7 @@ class Headers
*
* @return the Iterator.
*/
Iterator iterator()
public Iterator<HeaderElement> iterator()
{
return headers.iterator();
}
@ -118,7 +121,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 +222,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 +243,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 +259,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 +361,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 +400,7 @@ class Headers
if (i >= headers.size() || i < 0)
return null;
return ((HeaderElement)headers.get(i)).name;
return headers.get(i).name;
}
/**
@ -414,8 +417,6 @@ class Headers
if (i >= headers.size() || i < 0)
return null;
return ((HeaderElement)headers.get(i)).value;
return headers.get(i).value;
}
}

View file

@ -1,5 +1,5 @@
/* Request.java --
Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -38,8 +38,8 @@ exception statement from your version. */
package gnu.java.net.protocol.http;
import gnu.java.net.BASE64;
import gnu.java.net.LineInputStream;
import gnu.java.util.Base64;
import java.io.IOException;
import java.io.InputStream;
@ -96,7 +96,7 @@ public class Request
/**
* Map of response header handlers.
*/
protected Map responseHeaderHandlers;
protected Map<String, ResponseHeaderHandler> responseHeaderHandlers;
/**
* The authenticator.
@ -121,7 +121,7 @@ public class Request
this.method = method;
this.path = path;
requestHeaders = new Headers();
responseHeaderHandlers = new HashMap();
responseHeaderHandlers = new HashMap<String, ResponseHeaderHandler>();
}
/**
@ -302,9 +302,8 @@ public class Request
String line = method + ' ' + requestUri + ' ' + version + CRLF;
out.write(line.getBytes(US_ASCII));
// Request headers
for (Iterator i = requestHeaders.iterator(); i.hasNext(); )
for (Headers.HeaderElement elt : requestHeaders)
{
Headers.HeaderElement elt = (Headers.HeaderElement)i.next();
line = elt.name + HEADER_SEP + elt.value + CRLF;
out.write(line.getBytes(US_ASCII));
}
@ -439,9 +438,8 @@ public class Request
void notifyHeaderHandlers(Headers headers)
{
for (Iterator i = headers.iterator(); i.hasNext(); )
for (Headers.HeaderElement entry : headers)
{
Headers.HeaderElement entry = (Headers.HeaderElement) i.next();
// Handle Set-Cookie
if ("Set-Cookie".equalsIgnoreCase(entry.name))
handleSetCookie(entry.value);
@ -461,7 +459,6 @@ public class Request
throws IOException
{
long contentLength = -1;
Headers trailer = null;
// Persistent connections are the default in HTTP/1.1
boolean doClose = "close".equalsIgnoreCase(getHeader("Connection")) ||
@ -532,7 +529,7 @@ public class Request
Credentials creds = authenticator.getCredentials(realm, attempts);
String userPass = creds.getUsername() + ':' + creds.getPassword();
byte[] b_userPass = userPass.getBytes("US-ASCII");
byte[] b_encoded = BASE64.encode(b_userPass);
byte[] b_encoded = Base64.encode(b_userPass).getBytes("US-ASCII");
String authorization =
scheme + " " + new String(b_encoded, "US-ASCII");
setHeader("Authorization", authorization);

View file

@ -1,5 +1,5 @@
/* CookieManager.java --
Copyright (C) 2004 Free Software Foundation, Inc.
Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -42,7 +42,6 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
@ -59,23 +58,23 @@ public class SimpleCookieManager
* The cookie cache.
* This is a dictionary mapping domains to maps of cookies by name.
*/
protected Map cookies;
protected Map<String, Map<String, Cookie>> cookies;
/**
* Constructor.
*/
public SimpleCookieManager()
{
cookies = new HashMap();
cookies = new HashMap<String, Map<String, Cookie>>();
}
public void setCookie(Cookie cookie)
{
String domain = cookie.getDomain();
Map map =(Map) cookies.get(domain);
Map<String, Cookie> map = cookies.get(domain);
if (map == null)
{
map = new HashMap();
map = new HashMap<String, Cookie>();
cookies.put(domain, map);
}
String name = cookie.getName();
@ -84,7 +83,7 @@ public class SimpleCookieManager
public Cookie[] getCookies(String host, boolean secure, String path)
{
List matches = new ArrayList();
ArrayList<Cookie> matches = new ArrayList<Cookie>();
Date now = new Date();
if (Character.isLetter(host.charAt(0)))
{
@ -102,17 +101,16 @@ public class SimpleCookieManager
return ret;
}
private void addCookies(List matches, String domain, boolean secure,
String path, Date now)
private void addCookies(ArrayList<Cookie> matches, String domain,
boolean secure, String path, Date now)
{
Map map = (Map) cookies.get(domain);
Map<String, Cookie> map = cookies.get(domain);
if (map != null)
{
List expired = new ArrayList();
for (Iterator i = map.entrySet().iterator(); i.hasNext(); )
ArrayList<String> expired = new ArrayList<String>();
for (Map.Entry<String, Cookie> entry : map.entrySet())
{
Map.Entry entry = (Map.Entry) i.next();
Cookie cookie = (Cookie) entry.getValue();
Cookie cookie = entry.getValue();
Date expires = cookie.getExpiryDate();
if (expires != null && expires.before(now))
{
@ -129,7 +127,7 @@ public class SimpleCookieManager
}
}
// Good housekeeping
for (Iterator i = expired.iterator(); i.hasNext(); )
for (Iterator<String> i = expired.iterator(); i.hasNext(); )
{
map.remove(i.next());
}

View file

@ -76,7 +76,8 @@ public final class Connection extends JarURLConnection
public static class JarFileCache
{
private static Hashtable cache = new Hashtable();
private static Hashtable<URL, JarFile> cache
= new Hashtable<URL, JarFile>();
private static final int READBUFSIZE = 4*1024;
public static synchronized JarFile get (URL url, boolean useCaches)
@ -85,7 +86,7 @@ public final class Connection extends JarURLConnection
JarFile jf;
if (useCaches)
{
jf = (JarFile) cache.get (url);
jf = cache.get (url);
if (jf != null)
return jf;
}

View file

@ -164,7 +164,7 @@ public class Handler extends URLStreamHandler
if (jar_path.indexOf("/.") < 0)
return url_string;
ArrayList tokens = new ArrayList();
ArrayList<String> tokens = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(jar_path, "/");
while (st.hasMoreTokens())
{
@ -183,7 +183,7 @@ public class Handler extends URLStreamHandler
StringBuffer path = new StringBuffer(url_string.length());
path.append(url_string.substring(0, jar_stop + 1));
Iterator it = tokens.iterator();
Iterator<String> it = tokens.iterator();
while (it.hasNext())
path.append('/').append(it.next());