[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath: character
conversion fixes
Kaffe CVS
cvs-commits at kaffe.org
Sat Feb 5 12:59:05 PST 2005
PatchSet 5980
Date: 2005/02/05 20:50:01
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath: character conversion fixes
2005-02-05 Dalibor Topic <robilad at kaffe.org>
Resynced with GNU Classpath.
2005-02-03 Robert Schuster <thebohemian at gmx.net>
* gnu/java/nio/charset/ISO_8859_1.java,
gnu/java/nio/charset/US_ASCII.java,
gnu/java/nio/charset/UTF_16.java,
gnu/java/nio/charset/UTF_16_LE.java,
gnu/java/nio/charset/UTF_16_BE.java,
gnu/java/nio/charset/UTF_8.java: Fixed canonical names
and aliases according to
http://www.iana.org/assignments/character-sets,
http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
and http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL.
* gnu/java/nio/charset/Provider.java: Made charset lookup
case-insensitive which fixes bug #11740.
Members:
ChangeLog:1.3518->1.3519
libraries/javalib/gnu/java/nio/charset/ISO_8859_1.java:1.2->1.3
libraries/javalib/gnu/java/nio/charset/Provider.java:1.1->1.2
libraries/javalib/gnu/java/nio/charset/US_ASCII.java:1.2->1.3
libraries/javalib/gnu/java/nio/charset/UTF_16.java:1.4->1.5
libraries/javalib/gnu/java/nio/charset/UTF_16BE.java:1.4->1.5
libraries/javalib/gnu/java/nio/charset/UTF_16LE.java:1.4->1.5
libraries/javalib/gnu/java/nio/charset/UTF_8.java:1.2->1.3
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3518 kaffe/ChangeLog:1.3519
--- kaffe/ChangeLog:1.3518 Sat Feb 5 20:36:22 2005
+++ kaffe/ChangeLog Sat Feb 5 20:50:01 2005
@@ -1,3 +1,22 @@
+2005-02-05 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
+
+ 2005-02-03 Robert Schuster <thebohemian at gmx.net>
+
+ * gnu/java/nio/charset/ISO_8859_1.java,
+ gnu/java/nio/charset/US_ASCII.java,
+ gnu/java/nio/charset/UTF_16.java,
+ gnu/java/nio/charset/UTF_16_LE.java,
+ gnu/java/nio/charset/UTF_16_BE.java,
+ gnu/java/nio/charset/UTF_8.java: Fixed canonical names
+ and aliases according to
+ "http://www.iana.org/assignments/character-sets",
+ "http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html"
+ and "http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL".
+ * gnu/java/nio/charset/Provider.java: Made charset lookup
+ case-insensitive which fixes bug #11740.
+
2005-02-05 Sven de Marothy <sven at physto.se>
* java/text/SimpleDateFormat.java
Index: kaffe/libraries/javalib/gnu/java/nio/charset/ISO_8859_1.java
diff -u kaffe/libraries/javalib/gnu/java/nio/charset/ISO_8859_1.java:1.2 kaffe/libraries/javalib/gnu/java/nio/charset/ISO_8859_1.java:1.3
--- kaffe/libraries/javalib/gnu/java/nio/charset/ISO_8859_1.java:1.2 Mon Nov 8 10:47:13 2004
+++ kaffe/libraries/javalib/gnu/java/nio/charset/ISO_8859_1.java Sat Feb 5 20:50:05 2005
@@ -1,5 +1,5 @@
/* ISO_8859_1.java --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -53,7 +53,28 @@
{
ISO_8859_1 ()
{
- super ("ISO-8859-1", new String[]{"ISO-LATIN-1"});
+ /* Canonical charset name chosen according to:
+ * http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ */
+ super ("ISO-8859-1", new String[] {
+ /* These names are provided by
+ * http://www.iana.org/assignments/character-sets
+ */
+ "iso-ir-100",
+ "ISO_8859-1",
+ "latin1",
+ "l1",
+ "IBM819",
+ "CP819",
+ "csISOLatin1",
+ "8859_1",
+ /* These names are provided by
+ * http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
+ */
+ "ISO8859_1", "ISO_8859_1", "ibm-819", "ISO_8859-1:1987",
+ "819"
+ });
+
}
public boolean contains (Charset cs)
Index: kaffe/libraries/javalib/gnu/java/nio/charset/Provider.java
diff -u kaffe/libraries/javalib/gnu/java/nio/charset/Provider.java:1.1 kaffe/libraries/javalib/gnu/java/nio/charset/Provider.java:1.2
--- kaffe/libraries/javalib/gnu/java/nio/charset/Provider.java:1.1 Thu Nov 28 13:39:26 2002
+++ kaffe/libraries/javalib/gnu/java/nio/charset/Provider.java Sat Feb 5 20:50:05 2005
@@ -1,5 +1,5 @@
/* Provider.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -48,6 +48,7 @@
* {@link Charset#charsetForName} and * {@link Charset#availableCharsets}.
*
* @author Jesse Rosenstock
+ * @author Robert Schuster (thebohemian at gmx.net)
* @see Charset
*/
public final class Provider extends CharsetProvider
@@ -63,12 +64,14 @@
}
/**
- * Map from charset name to charset canonical name.
+ * Map from charset name to charset canonical name. The strings
+ * are all lower-case to allow case-insensitive retrieval of
+ * Charset instances.
*/
private final HashMap canonicalNames;
/**
- * Map from canonical name to Charset.
+ * Map from lower-case canonical name to Charset.
* TODO: We may want to use soft references. We would then need to keep
* track of the class name to regenerate the object.
*/
@@ -76,8 +79,6 @@
private Provider ()
{
- // FIXME: We might need to make the name comparison case insensitive.
- // Verify this with the Sun JDK.
canonicalNames = new HashMap ();
charsets = new HashMap ();
@@ -106,24 +107,42 @@
.iterator ();
}
+ /**
+ * Returns a Charset instance by converting the given
+ * name to lower-case, looking up the canonical charset
+ * name and finally looking up the Charset with that name.
+ *
+ * <p>The lookup is therefore case-insensitive.</p>
+ *
+ * @returns The Charset having <code>charsetName</code>
+ * as its alias or null if no such Charset exist.
+ */
public Charset charsetForName (String charsetName)
{
- return (Charset) charsets.get (canonicalize (charsetName));
- }
-
- private Object canonicalize (String charsetName)
- {
- Object o = canonicalNames.get (charsetName);
- return o == null ? charsetName : o;
+ return (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase()));
}
+ /**
+ * Puts a Charset under its canonical name into the 'charsets' map.
+ * Then puts a mapping from all its alias names to the canonical name.
+ *
+ * <p>All names are converted to lower-case</p>.
+ *
+ * @param cs
+ */
private void addCharset (Charset cs)
{
- String canonicalName = cs.name ();
+ String canonicalName = cs.name().toLowerCase();
charsets.put (canonicalName, cs);
+
+ /* Adds a mapping between the canonical name
+ * itself making a lookup using that name
+ * no special case.
+ */
+ canonicalNames.put(canonicalName, canonicalName);
for (Iterator i = cs.aliases ().iterator (); i.hasNext (); )
- canonicalNames.put (i.next (), canonicalName);
+ canonicalNames.put (((String) i.next()).toLowerCase(), canonicalName);
}
public static synchronized Provider provider ()
Index: kaffe/libraries/javalib/gnu/java/nio/charset/US_ASCII.java
diff -u kaffe/libraries/javalib/gnu/java/nio/charset/US_ASCII.java:1.2 kaffe/libraries/javalib/gnu/java/nio/charset/US_ASCII.java:1.3
--- kaffe/libraries/javalib/gnu/java/nio/charset/US_ASCII.java:1.2 Mon Nov 8 10:47:13 2004
+++ kaffe/libraries/javalib/gnu/java/nio/charset/US_ASCII.java Sat Feb 5 20:50:05 2005
@@ -1,5 +1,5 @@
/* US_ASCII.java --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -53,7 +53,29 @@
{
US_ASCII ()
{
- super ("US-ASCII", new String[]{"ISO646-US"});
+ /* Canonical charset name chosen according to:
+ * http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ */
+ super ("US-ASCII", new String[] {
+ /* These names are provided by
+ * http://www.iana.org/assignments/character-sets
+ */
+ "iso-ir-6",
+ "ANSI_X3.4-1986",
+ "ISO_646.irv:1991",
+ "ASCII",
+ "ISO646-US",
+ "ASCII",
+ "us",
+ "IBM367",
+ "cp367",
+ "csASCII",
+ /* These names are provided by
+ * http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
+ */
+ "ANSI_X3.4-1968", "iso_646.irv:1983", "ascii7", "646",
+ "windows-20127"
+ });
}
public boolean contains (Charset cs)
Index: kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16.java
diff -u kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16.java:1.4 kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16.java:1.5
--- kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16.java:1.4 Fri Oct 15 10:41:44 2004
+++ kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16.java Sat Feb 5 20:50:05 2005
@@ -1,5 +1,5 @@
/* UTF_16.java --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -51,7 +51,14 @@
{
UTF_16 ()
{
- super ("UTF-16", null);
+ super ("UTF-16", new String[] {
+ // witnessed by the internet
+ "UTF16",
+ /* These names are provided by
+ * http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
+ */
+ "ISO-10646-UCS-2", "unicode", "csUnicode", "ucs-2"
+ });
}
public boolean contains (Charset cs)
Index: kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16BE.java
diff -u kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16BE.java:1.4 kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16BE.java:1.5
--- kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16BE.java:1.4 Fri Oct 15 10:41:44 2004
+++ kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16BE.java Sat Feb 5 20:50:05 2005
@@ -1,5 +1,5 @@
/* UTF_16BE.java --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -51,7 +51,18 @@
{
UTF_16BE ()
{
- super ("UTF-16BE", null);
+ super ("UTF-16BE", new String[] {
+ // witnessed by the internet
+ "UTF16BE",
+ /* These names are provided by
+ * http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
+ */
+ "x-utf-16be", "ibm-1200", "ibm-1201", "ibm-5297",
+ "ibm-13488", "ibm-17584", "windows-1201", "cp1200", "cp1201",
+ "UTF16_BigEndian",
+ // see http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ "UnicodeBigUnmarked"
+ });
}
public boolean contains (Charset cs)
Index: kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16LE.java
diff -u kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16LE.java:1.4 kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16LE.java:1.5
--- kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16LE.java:1.4 Fri Oct 15 10:41:44 2004
+++ kaffe/libraries/javalib/gnu/java/nio/charset/UTF_16LE.java Sat Feb 5 20:50:05 2005
@@ -1,5 +1,5 @@
/* UTF_16LE.java --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -51,7 +51,17 @@
{
UTF_16LE ()
{
- super ("UTF-16LE", null);
+ super ("UTF-16LE", new String[] {
+ // witnessed by the internet
+ "UTF16LE",
+ /* These names are provided by
+ * http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
+ */
+ "x-utf-16le", "ibm-1202", "ibm-13490", "ibm-17586",
+ "UTF16_LittleEndian",
+ // see http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ "UnicodeLittleUnmarked"
+ });
}
public boolean contains (Charset cs)
Index: kaffe/libraries/javalib/gnu/java/nio/charset/UTF_8.java
diff -u kaffe/libraries/javalib/gnu/java/nio/charset/UTF_8.java:1.2 kaffe/libraries/javalib/gnu/java/nio/charset/UTF_8.java:1.3
--- kaffe/libraries/javalib/gnu/java/nio/charset/UTF_8.java:1.2 Mon Nov 8 10:47:13 2004
+++ kaffe/libraries/javalib/gnu/java/nio/charset/UTF_8.java Sat Feb 5 20:50:05 2005
@@ -1,5 +1,5 @@
/* UTF_8.java --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -62,7 +62,15 @@
{
UTF_8 ()
{
- super ("UTF-8", null);
+ super ("UTF-8", new String[] {
+ /* These names are provided by
+ * http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
+ */
+ "ibm-1208", "ibm-1209", "ibm-5304", "ibm-5305",
+ "windows-65001", "cp1208",
+ // see http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ "UTF8"
+ });
}
public boolean contains (Charset cs)
More information about the kaffe
mailing list