You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gh...@apache.org on 2006/04/05 14:48:28 UTC
svn commit: r391603 - in
/incubator/harmony/enhanced/classlib/trunk/modules/luni/src:
main/java/java/io/ test/java/org/apache/harmony/tests/java/io/
Author: gharley
Date: Wed Apr 5 05:48:24 2006
New Revision: 391603
URL: http://svn.apache.org/viewcvs?rev=391603&view=rev
Log:
HARMONY 156 : Implementation and unit tests. Tests now pass on 5.0 RI and on Harmony.
Added:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/InputStreamReaderTest.java (with props)
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/OutputStreamWriterTest.java (with props)
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/InputStreamReader.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/AllTests.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/InputStreamReader.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/InputStreamReader.java?rev=391603&r1=391602&r2=391603&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/InputStreamReader.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/InputStreamReader.java Wed Apr 5 05:48:24 2006
@@ -13,8 +13,7 @@
* limitations under the License.
*/
-package java.io;
-
+package java.io;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
@@ -22,6 +21,7 @@
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CoderResult;
import java.security.AccessController;
+import java.util.HashMap;
import com.ibm.oti.util.PriviAction;
@@ -156,7 +156,163 @@
* closed.
*/
public String getEncoding() {
- return decoder.charset().name();
+ if (!isOpen()) {
+ return null;
+ }
+ return HistoricalNamesUtil.getHistoricalName(decoder.charset().name());
+ }
+
+ /*
+ * helper for getEncoding()
+ */
+ static class HistoricalNamesUtil {
+ private static HashMap historicalNames = new HashMap();
+ static {
+ historicalNames.put("Big5-HKSCS", "Big5_HKSCS");
+ historicalNames.put("EUC-JP", "EUC_JP");
+ historicalNames.put("EUC-KR", "EUC_KR");
+ historicalNames.put("GB2312", "EUC_CN");
+ historicalNames.put("IBM-Thai", "Cp838");
+ historicalNames.put("IBM00858", "Cp858");
+ historicalNames.put("IBM01140", "Cp1140");
+ historicalNames.put("IBM01141", "Cp1141");
+ historicalNames.put("IBM01142", "Cp1142");
+ historicalNames.put("IBM01143", "Cp1143");
+ historicalNames.put("IBM01144", "Cp1144");
+ historicalNames.put("IBM01145", "Cp1145");
+ historicalNames.put("IBM01146", "Cp1146");
+ historicalNames.put("IBM01147", "Cp1147");
+ historicalNames.put("IBM01148", "Cp1148");
+ historicalNames.put("IBM01149", "Cp1149");
+ historicalNames.put("IBM037", "Cp037");
+ historicalNames.put("IBM1026", "Cp1026");
+ historicalNames.put("IBM1047", "Cp1047");
+ historicalNames.put("IBM273", "Cp273");
+ historicalNames.put("IBM277", "Cp277");
+ historicalNames.put("IBM278", "Cp278");
+ historicalNames.put("IBM280", "Cp280");
+ historicalNames.put("IBM284", "Cp284");
+ historicalNames.put("IBM285", "Cp285");
+ historicalNames.put("IBM297", "Cp297");
+ historicalNames.put("IBM420", "Cp420");
+ historicalNames.put("IBM424", "Cp424");
+ historicalNames.put("IBM437", "Cp437");
+ historicalNames.put("IBM500", "Cp500");
+ historicalNames.put("IBM775", "Cp775");
+ historicalNames.put("IBM850", "Cp850");
+ historicalNames.put("IBM852", "Cp852");
+ historicalNames.put("IBM855", "Cp855");
+ historicalNames.put("IBM857", "Cp857");
+ historicalNames.put("IBM860", "Cp860");
+ historicalNames.put("IBM861", "Cp861");
+ historicalNames.put("IBM862", "Cp862");
+ historicalNames.put("IBM863", "Cp863");
+ historicalNames.put("IBM864", "Cp864");
+ historicalNames.put("IBM865", "Cp865");
+ historicalNames.put("IBM866", "Cp866");
+ historicalNames.put("IBM868", "Cp868");
+ historicalNames.put("IBM869", "Cp869");
+ historicalNames.put("IBM870", "Cp870");
+ historicalNames.put("IBM871", "Cp871");
+ historicalNames.put("IBM918", "Cp918");
+ historicalNames.put("ISO-2022-CN", "ISO2022CN");
+ historicalNames.put("ISO-2022-JP", "ISO2022JP");
+ historicalNames.put("ISO-2022-KR", "ISO2022KR");
+ historicalNames.put("ISO-8859-1", "ISO8859_1");
+ historicalNames.put("ISO-8859-13", "ISO8859_13");
+ historicalNames.put("ISO-8859-15", "ISO8859_15");
+ historicalNames.put("ISO-8859-2", "ISO8859_2");
+ historicalNames.put("ISO-8859-3", "ISO8859_3");
+ historicalNames.put("ISO-8859-4", "ISO8859_4");
+ historicalNames.put("ISO-8859-5", "ISO8859_5");
+ historicalNames.put("ISO-8859-6", "ISO8859_6");
+ historicalNames.put("ISO-8859-7", "ISO8859_7");
+ historicalNames.put("ISO-8859-8", "ISO8859_8");
+ historicalNames.put("ISO-8859-9", "ISO8859_9");
+ historicalNames.put("KOI8-R", "KOI8_R");
+ historicalNames.put("Shift_JIS", "SJIS");
+ historicalNames.put("TIS-620", "TIS620");
+ historicalNames.put("US-ASCII", "ASCII");
+ historicalNames.put("UTF-16BE", "UnicodeBigUnmarked");
+ historicalNames.put("UTF-16LE", "UnicodeLittleUnmarked");
+ historicalNames.put("UTF-8", "UTF8");
+ historicalNames.put("windows-1250", "Cp1250");
+ historicalNames.put("windows-1251", "Cp1251");
+ historicalNames.put("windows-1252", "Cp1252");
+ historicalNames.put("windows-1253", "Cp1253");
+ historicalNames.put("windows-1254", "Cp1254");
+ historicalNames.put("windows-1255", "Cp1255");
+ historicalNames.put("windows-1256", "Cp1256");
+ historicalNames.put("windows-1257", "Cp1257");
+ historicalNames.put("windows-1258", "Cp1258");
+ historicalNames.put("windows-31j", "MS932");
+ historicalNames.put("x-Big5-Solaris", "Big5_Solaris");
+ historicalNames.put("x-euc-jp-linux", "EUC_JP_LINUX");
+ historicalNames.put("x-EUC-TW", "EUC_TW");
+ historicalNames.put("x-eucJP-Open", "EUC_JP_Solaris");
+ historicalNames.put("x-IBM1006", "Cp1006");
+ historicalNames.put("x-IBM1025", "Cp1025");
+ historicalNames.put("x-IBM1046", "Cp1046");
+ historicalNames.put("x-IBM1097", "Cp1097");
+ historicalNames.put("x-IBM1098", "Cp1098");
+ historicalNames.put("x-IBM1112", "Cp1112");
+ historicalNames.put("x-IBM1122", "Cp1122");
+ historicalNames.put("x-IBM1123", "Cp1123");
+ historicalNames.put("x-IBM1124", "Cp1124");
+ historicalNames.put("x-IBM1381", "Cp1381");
+ historicalNames.put("x-IBM1383", "Cp1383");
+ historicalNames.put("x-IBM33722", "Cp33722");
+ historicalNames.put("x-IBM737", "Cp737");
+ historicalNames.put("x-IBM856", "Cp856");
+ historicalNames.put("x-IBM874", "Cp874");
+ historicalNames.put("x-IBM875", "Cp875");
+ historicalNames.put("x-IBM921", "Cp921");
+ historicalNames.put("x-IBM922", "Cp922");
+ historicalNames.put("x-IBM930", "Cp930");
+ historicalNames.put("x-IBM933", "Cp933");
+ historicalNames.put("x-IBM935", "Cp935");
+ historicalNames.put("x-IBM937", "Cp937");
+ historicalNames.put("x-IBM939", "Cp939");
+ historicalNames.put("x-IBM942", "Cp942");
+ historicalNames.put("x-IBM942C", "Cp942C");
+ historicalNames.put("x-IBM943", "Cp943");
+ historicalNames.put("x-IBM943C", "Cp943C");
+ historicalNames.put("x-IBM948", "Cp948");
+ historicalNames.put("x-IBM949", "Cp949");
+ historicalNames.put("x-IBM949C", "Cp949C");
+ historicalNames.put("x-IBM950", "Cp950");
+ historicalNames.put("x-IBM964", "Cp964");
+ historicalNames.put("x-IBM970", "Cp970");
+ historicalNames.put("x-ISCII91", "ISCII91");
+ historicalNames.put("x-ISO-2022-CN-CNS", "ISO2022CN");
+ historicalNames.put("x-ISO-2022-CN-GB", "ISO2022CN");
+ historicalNames.put("x-JISAutoDetect", "JISAutoDetect");
+ historicalNames.put("x-MacArabic", "MacArabic");
+ historicalNames.put("x-MacCentralEurope", "MacCentralEurope");
+ historicalNames.put("x-MacCroatian", "MacCroatian");
+ historicalNames.put("x-MacCyrillic", "MacCyrillic");
+ historicalNames.put("x-MacDingbat", "MacDingbat");
+ historicalNames.put("x-MacGreek", "MacGreek");
+ historicalNames.put("x-MacHebrew", "MacHebrew");
+ historicalNames.put("x-MacIceland", "MacIceland");
+ historicalNames.put("x-MacRoman", "MacRoman");
+ historicalNames.put("x-MacRomania", "MacRomania");
+ historicalNames.put("x-MacSymbol", "MacSymbol");
+ historicalNames.put("x-MacThai", "MacThai");
+ historicalNames.put("x-MacTurkish", "MacTurkish");
+ historicalNames.put("x-MacUkraine", "MacUkraine");
+ historicalNames.put("x-MS950-HKSCS", "MS950_HKSCS");
+ historicalNames.put("x-mswin-936", "MS936");
+ historicalNames.put("x-PCK", "PCK");
+ historicalNames.put("x-windows-874", "MS874");
+ historicalNames.put("x-windows-949", "MS949");
+ historicalNames.put("x-windows-950", "MS950");
+ }
+
+ public static String getHistoricalName(String name) {
+ return (String) (historicalNames.get(name) == null ? name
+ : historicalNames.get(name));
+ }
}
/**
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java?rev=391603&r1=391602&r2=391603&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java Wed Apr 5 05:48:24 2006
@@ -13,8 +13,7 @@
* limitations under the License.
*/
-package java.io;
-
+package java.io;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
@@ -192,7 +191,11 @@
*/
public String getEncoding() {
- return encoder.charset().name();
+ if (encoder == null) {
+ return null;
+ }
+ return InputStreamReader.HistoricalNamesUtil.getHistoricalName(encoder
+ .charset().name());
}
/**
@@ -226,15 +229,15 @@
private void convert(CharBuffer chars) throws IOException {
synchronized (lock) {
checkStatus();
- CoderResult result = encoder.encode(chars, bytes, true);
+ CoderResult result = encoder.encode(chars, bytes, true);
while (true) {
if (result.isError()) {
throw new IOException(result.toString());
} else if (result.isOverflow()) {
- //flush the output buffer
+ // flush the output buffer
flush();
result = encoder.encode(chars, bytes, true);
- continue;
+ continue;
}
break;
}
@@ -291,4 +294,3 @@
convert(chars);
}
}
-
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/AllTests.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/AllTests.java?rev=391603&r1=391602&r2=391603&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/AllTests.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/AllTests.java Wed Apr 5 05:48:24 2006
@@ -32,11 +32,13 @@
suite.addTestSuite(FilePermissionTest.class);
suite.addTestSuite(BufferedInputStreamTest.class);
suite.addTestSuite(FileTest.class);
+ suite.addTestSuite(InputStreamReaderTest.class);
suite.addTestSuite(BufferedReaderTest.class);
suite.addTestSuite(PushBackInputStreamTest.class);
suite.addTestSuite(RandomAccessFileTest.class);
suite.addTestSuite(ReaderTest.class);
suite.addTestSuite(ObjectStreamConstantsTest.class);
+ suite.addTestSuite(OutputStreamWriterTest.class);
//$JUnit-END$
return suite;
}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/InputStreamReaderTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/InputStreamReaderTest.java?rev=391603&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/InputStreamReaderTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/InputStreamReaderTest.java Wed Apr 5 05:48:24 2006
@@ -0,0 +1,54 @@
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.harmony.tests.java.io;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+
+import junit.framework.TestCase;
+
+public class InputStreamReaderTest extends TestCase {
+ public void testGetEncoding_StreamClosed() {
+ InputStreamReader in = null;
+ byte b[] = new byte[5];
+ try {
+ in = new InputStreamReader(new ByteArrayInputStream(b), "UTF-16BE");
+ } catch (UnsupportedEncodingException e) {
+ fail("Should not throw UnsupportedEncodingException");
+ }
+ try {
+ in.close();
+ } catch (IOException e) {
+ fail("Should not throw IOException");
+ }
+ String result = in.getEncoding();
+ assertEquals(null, result);
+ }
+
+ public void testGetEncoding_NotHistorical() {
+ InputStreamReader in = null;
+ try {
+ in = new InputStreamReader(System.in, "UTF-16BE");
+ } catch (UnsupportedEncodingException e) {
+ // ok
+ }
+ String result = in.getEncoding();
+ assertEquals(result, "UnicodeBigUnmarked");
+
+ }
+}
\ No newline at end of file
Propchange: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/InputStreamReaderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/OutputStreamWriterTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/OutputStreamWriterTest.java?rev=391603&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/OutputStreamWriterTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/OutputStreamWriterTest.java Wed Apr 5 05:48:24 2006
@@ -0,0 +1,55 @@
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.harmony.tests.java.io;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+
+import junit.framework.TestCase;
+
+public class OutputStreamWriterTest extends TestCase {
+ public void testGetEncoding_StreamClosed() {
+ OutputStreamWriter out = null;
+ try {
+ out = new OutputStreamWriter(new ByteArrayOutputStream(),
+ "UTF-16BE");
+ } catch (UnsupportedEncodingException e) {
+ fail("Should not throw UnsupportedEncodingException");
+ }
+ try {
+ out.close();
+ } catch (IOException e) {
+ fail("Should not throw IOException");
+ }
+ String result = out.getEncoding();
+ assertEquals(null, result);
+ }
+
+ public void testGetEncoding_NotHistorical() {
+ OutputStreamWriter out = null;
+ try {
+ out = new OutputStreamWriter(new ByteArrayOutputStream(),
+ "UTF-16BE");
+ } catch (UnsupportedEncodingException e) {
+ // ok
+ }
+ String result = out.getEncoding();
+ assertEquals(result, "UnicodeBigUnmarked");
+
+ }
+}
\ No newline at end of file
Propchange: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/tests/java/io/OutputStreamWriterTest.java
------------------------------------------------------------------------------
svn:eol-style = native