summaryrefslogtreecommitdiff
path: root/gnu/java/nio/charset/Provider.java
diff options
context:
space:
mode:
authorSven de Marothy <sven@physto.se>2005-04-08 21:46:05 +0000
committerSven de Marothy <sven@physto.se>2005-04-08 21:46:05 +0000
commitd619022a1d1b94506f2774b82daea02dde462e44 (patch)
tree6628305b0ea627dc0a037df9c7e18e91d83ed62f /gnu/java/nio/charset/Provider.java
parent9d37c49002f196b5aeb3a237903b1f0a23d77d1c (diff)
downloadclasspath-d619022a1d1b94506f2774b82daea02dde462e44.tar.gz
2005-04-08 Sven de Marothy <sven@physto.se>
* gnu/java/nio/charset/Provider.java: Add new charsets. * gnu/java/nio/charset/UTF_16.java: Default to using BOM. * gnu/java/nio/charset/UTF_16Decoder.java: Minor fixes. * gnu/java/nio/charset/UTF_16Encoder.java, Use NIO's built-in byte-ordering instead. * gnu/java/nio/charset/UTF_8.java, (Decoder): Correct values of maximum chars per byte. (decodeLoop): Handle 4-byte surrogates. * gnu/java/nio/charset/ByteCharset.java * gnu/java/nio/charset/Cp424.java * gnu/java/nio/charset/Cp437.java * gnu/java/nio/charset/Cp737.java * gnu/java/nio/charset/Cp775.java * gnu/java/nio/charset/Cp850.java * gnu/java/nio/charset/Cp852.java * gnu/java/nio/charset/Cp855.java * gnu/java/nio/charset/Cp857.java * gnu/java/nio/charset/Cp860.java * gnu/java/nio/charset/Cp861.java * gnu/java/nio/charset/Cp862.java * gnu/java/nio/charset/Cp863.java * gnu/java/nio/charset/Cp864.java * gnu/java/nio/charset/Cp865.java * gnu/java/nio/charset/Cp866.java * gnu/java/nio/charset/Cp869.java * gnu/java/nio/charset/Cp874.java * gnu/java/nio/charset/EncodingHelper.java * gnu/java/nio/charset/ISO_8859_13.java * gnu/java/nio/charset/ISO_8859_15.java * gnu/java/nio/charset/ISO_8859_2.java * gnu/java/nio/charset/ISO_8859_3.java * gnu/java/nio/charset/ISO_8859_4.java * gnu/java/nio/charset/ISO_8859_5.java * gnu/java/nio/charset/ISO_8859_6.java * gnu/java/nio/charset/ISO_8859_7.java * gnu/java/nio/charset/ISO_8859_8.java * gnu/java/nio/charset/ISO_8859_9.java * gnu/java/nio/charset/KOI_8.java * gnu/java/nio/charset/MS874.java * gnu/java/nio/charset/MacCentralEurope.java * gnu/java/nio/charset/MacCroatian.java * gnu/java/nio/charset/MacCyrillic.java * gnu/java/nio/charset/MacDingbat.java * gnu/java/nio/charset/MacGreek.java * gnu/java/nio/charset/MacIceland.java * gnu/java/nio/charset/MacRoman.java * gnu/java/nio/charset/MacRomania.java * gnu/java/nio/charset/MacSymbol.java * gnu/java/nio/charset/MacThai.java * gnu/java/nio/charset/MacTurkish.java * gnu/java/nio/charset/Windows1250.java * gnu/java/nio/charset/Windows1251.java * gnu/java/nio/charset/Windows1252.java * gnu/java/nio/charset/Windows1253.java * gnu/java/nio/charset/Windows1254.java * gnu/java/nio/charset/Windows1255.java * gnu/java/nio/charset/Windows1256.java * gnu/java/nio/charset/Windows1257.java * gnu/java/nio/charset/Windows1258.java New files.
Diffstat (limited to 'gnu/java/nio/charset/Provider.java')
-rw-r--r--gnu/java/nio/charset/Provider.java84
1 files changed, 83 insertions, 1 deletions
diff --git a/gnu/java/nio/charset/Provider.java b/gnu/java/nio/charset/Provider.java
index 1a5606813..781c10ec9 100644
--- a/gnu/java/nio/charset/Provider.java
+++ b/gnu/java/nio/charset/Provider.java
@@ -77,8 +77,14 @@ public final class Provider extends CharsetProvider
*/
private final HashMap charsets;
+ /**
+ * We don't load all available charsets at the start
+ */
+ private boolean extendedLoaded;
+
private Provider ()
{
+ extendedLoaded = false;
canonicalNames = new HashMap ();
charsets = new HashMap ();
@@ -99,10 +105,80 @@ public final class Provider extends CharsetProvider
// UTF-16
addCharset (new UTF_16 ());
+
+ // Windows-1250 aka cp-1250 (East European)
+ addCharset (new Windows1250 ());
+
+ // Windows-1251 (Cyrillic)
+ addCharset (new Windows1251 ());
+
+ // Windows-1252 aka cp-1252 (Latin-1)
+ addCharset (new Windows1252 ());
+
+ // Windows-1253 (Greek)
+ addCharset (new Windows1253 ());
+
+ // Windows-1254 (Turkish)
+ addCharset (new Windows1254 ());
+
+ // Windows-1257 (Baltic)
+ addCharset (new Windows1257 ());
+
+ // ISO-8859-2 aka ISO-LATIN-2
+ addCharset (new ISO_8859_2 ());
+
+ // ISO-8859-4 aka ISO-LATIN-4
+ addCharset (new ISO_8859_4 ());
+
+ // ISO-8859-5 (Cyrillic)
+ addCharset (new ISO_8859_5 ());
+
+ // ISO-8859-7 (Greek)
+ addCharset (new ISO_8859_7 ());
+
+ // ISO-8859-9 aka ISO-LATIN-5
+ addCharset (new ISO_8859_9 ());
+
+ // ISO-8859-13 aka ISO-LATIN-7
+ addCharset (new ISO_8859_13 ());
+
+ // ISO-8859-15 aka ISO-LATIN-9
+ addCharset (new ISO_8859_15 ());
+
+ // KOI8 (Cyrillic)
+ addCharset (new KOI_8 ());
+ }
+
+ /**
+ * Load non-mandatory charsets.
+ */
+ private void loadExtended ()
+ {
+ if(extendedLoaded)
+ return;
+
+ addCharset (new ISO_8859_3 ()); // ISO-8859-3 aka ISO-LATIN-3
+ addCharset (new ISO_8859_6 ()); // ISO-8859-6 (Arabic)
+ addCharset (new ISO_8859_8 ()); // ISO-8859-8 (Hebrew)
+
+ // Some more codepages
+ addCharset (new Cp855()); // IBM Cyrillic
+ addCharset (new Cp857()); // IBM Turkish
+ addCharset (new Cp860()); // MSDOS Portugese
+ addCharset (new Cp861()); // MSDOS Icelandic
+ addCharset (new Cp862()); // PC Hebrew
+ addCharset (new Cp863()); // MSDOS Can. French
+ addCharset (new Cp864()); // PC Arabic
+ addCharset (new Cp865()); // MSDOS Nordic
+ addCharset (new Cp866()); // MSDOS Russian
+ addCharset (new Cp869()); // IBM modern Greek
+ addCharset (new Cp874()); // IBM Thai
+ extendedLoaded = true;
}
public Iterator charsets ()
{
+ loadExtended();
return Collections.unmodifiableCollection (charsets.values ())
.iterator ();
}
@@ -119,7 +195,13 @@ public final class Provider extends CharsetProvider
*/
public Charset charsetForName (String charsetName)
{
- return (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase()));
+ Charset cs = (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase()));
+ if(cs == null && !extendedLoaded)
+ {
+ loadExtended();
+ cs = (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase()));
+ }
+ return cs;
}
/**