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