| /* |
| * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code 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 |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| /* |
| * @test |
| * @bug 4625418 |
| * @summary Tests XML <a href="http://download.java.net/jdk6/docs/technotes/guides/intl/encoding.doc.html">encoding</a> |
| * @author Sergey Malenkov |
| * @run main/timeout=360 Test4625418 |
| */ |
| |
| import java.beans.ExceptionListener; |
| import java.beans.XMLDecoder; |
| import java.beans.XMLEncoder; |
| import java.io.ByteArrayInputStream; |
| import java.io.ByteArrayOutputStream; |
| import java.io.InputStream; |
| import java.nio.charset.IllegalCharsetNameException; |
| import java.nio.charset.UnsupportedCharsetException; |
| |
| public final class Test4625418 implements ExceptionListener { |
| |
| private static final String[] encodings = { |
| "ASCII", |
| "Big5", |
| //"Big5-HKSCS", |
| //"Big5_HKSCS", |
| "Big5_Solaris", |
| //"Cp037", |
| "Cp1006", |
| //"Cp1025", |
| //"Cp1026", |
| "Cp1046", |
| "Cp1047", |
| "Cp1097", |
| "Cp1098", |
| //"Cp1112", |
| //"Cp1122", |
| //"Cp1123", |
| "Cp1124", |
| //"Cp1140", |
| //"Cp1141", |
| //"Cp1142", |
| //"Cp1143", |
| //"Cp1144", |
| //"Cp1145", |
| //"Cp1146", |
| //"Cp1147", |
| //"Cp1148", |
| //"Cp1149", |
| "Cp1250", |
| "Cp1251", |
| "Cp1252", |
| "Cp1253", |
| "Cp1254", |
| "Cp1255", |
| "Cp1256", |
| "Cp1257", |
| "Cp1258", |
| //"Cp1381", |
| //"Cp1383", |
| //"Cp273", |
| //"Cp277", |
| //"Cp278", |
| //"Cp280", |
| //"Cp284", |
| //"Cp285", |
| //"Cp297", |
| //"Cp33722", |
| //"Cp420", |
| //"Cp424", |
| "Cp437", |
| //"Cp500", |
| //"Cp50220", |
| //"Cp50221", |
| "Cp737", |
| "Cp775", |
| //"Cp834", |
| //"Cp838", |
| "Cp850", |
| "Cp852", |
| "Cp855", |
| "Cp856", |
| "Cp857", |
| "Cp858", |
| "Cp860", |
| "Cp861", |
| "Cp862", |
| "Cp863", |
| "Cp864", |
| "Cp865", |
| "Cp866", |
| "Cp868", |
| "Cp869", |
| //"Cp870", |
| //"Cp871", |
| "Cp874", |
| //"Cp875", |
| //"Cp918", |
| "Cp921", |
| "Cp922", |
| //"Cp930", |
| "Cp933", |
| //"Cp935", |
| //"Cp937", |
| //"Cp939", |
| //"Cp942", |
| //"Cp942C", |
| "Cp943", |
| //"Cp943C", |
| "Cp948", |
| "Cp949", |
| //"Cp949C", |
| "Cp950", |
| "Cp964", |
| //"Cp970", |
| //"EUC-JP", |
| "EUC-KR", |
| "EUC_CN", |
| //"EUC_JP", |
| //"EUC_JP_LINUX", |
| //"EUC_JP_Solaris", |
| "EUC_KR", |
| //"EUC_TW", |
| "GB18030", |
| "GB2312", |
| "GBK", |
| //"IBM-Thai", |
| "IBM00858", |
| //"IBM01140", |
| //"IBM01141", |
| //"IBM01142", |
| //"IBM01143", |
| //"IBM01144", |
| //"IBM01145", |
| //"IBM01146", |
| //"IBM01147", |
| //"IBM01148", |
| //"IBM01149", |
| //"IBM037", |
| //"IBM1026", |
| "IBM1047", |
| //"IBM273", |
| //"IBM277", |
| //"IBM278", |
| //"IBM280", |
| //"IBM284", |
| //"IBM285", |
| //"IBM297", |
| //"IBM420", |
| //"IBM424", |
| "IBM437", |
| //"IBM500", |
| "IBM775", |
| "IBM850", |
| "IBM852", |
| "IBM855", |
| "IBM857", |
| "IBM860", |
| "IBM861", |
| "IBM862", |
| "IBM863", |
| "IBM864", |
| "IBM865", |
| "IBM866", |
| "IBM868", |
| "IBM869", |
| //"IBM870", |
| //"IBM871", |
| //"IBM918", |
| //"ISCII91", |
| //"ISO-2022-CN", |
| "ISO-2022-JP", |
| "ISO-2022-KR", |
| "ISO-8859-1", |
| "ISO-8859-13", |
| "ISO-8859-15", |
| "ISO-8859-2", |
| "ISO-8859-3", |
| "ISO-8859-4", |
| "ISO-8859-5", |
| "ISO-8859-6", |
| "ISO-8859-7", |
| "ISO-8859-8", |
| "ISO-8859-9", |
| //"ISO2022CN", |
| "ISO2022JP", |
| "ISO2022KR", |
| //"ISO2022_CN_CNS", |
| //"ISO2022_CN_GB", |
| "ISO8859_1", |
| "ISO8859_13", |
| "ISO8859_15", |
| "ISO8859_2", |
| "ISO8859_3", |
| "ISO8859_4", |
| "ISO8859_5", |
| "ISO8859_6", |
| "ISO8859_7", |
| "ISO8859_8", |
| "ISO8859_9", |
| //"JISAutoDetect", |
| //"JIS_X0201", |
| //"JIS_X0212-1990", |
| "KOI8-R", |
| "KOI8-U", |
| "KOI8_R", |
| "KOI8_U", |
| "MS874", |
| //"MS932", |
| //"MS936", |
| "MS949", |
| "MS950", |
| //"MS950_HKSCS", |
| "MacArabic", |
| "MacCentralEurope", |
| "MacCroatian", |
| "MacCyrillic", |
| //"MacDingbat", |
| "MacGreek", |
| "MacHebrew", |
| "MacIceland", |
| "MacRoman", |
| "MacRomania", |
| //"MacSymbol", |
| "MacThai", |
| "MacTurkish", |
| "MacUkraine", |
| //"PCK", |
| //"SJIS", |
| //"Shift_JIS", |
| "TIS-620", |
| "TIS620", |
| "US-ASCII", |
| "UTF-16", |
| "UTF-16BE", |
| "UTF-16LE", |
| "UTF-32", |
| "UTF-32BE", |
| "UTF-32LE", |
| "UTF-8", |
| "UTF8", |
| "UTF_32", |
| "UTF_32BE", |
| //"UTF_32BE_BOM", |
| "UTF_32LE", |
| //"UTF_32LE_BOM", |
| "UnicodeBig", |
| "UnicodeBigUnmarked", |
| "UnicodeLittle", |
| "UnicodeLittleUnmarked", |
| "windows-1250", |
| "windows-1251", |
| "windows-1252", |
| "windows-1253", |
| "windows-1254", |
| "windows-1255", |
| "windows-1256", |
| "windows-1257", |
| "windows-1258", |
| //"windows-31j", |
| //"x-Big5_Solaris", |
| //"x-EUC-TW", |
| "x-IBM1006", |
| //"x-IBM1025", |
| "x-IBM1046", |
| "x-IBM1097", |
| "x-IBM1098", |
| //"x-IBM1112", |
| //"x-IBM1122", |
| //"x-IBM1123", |
| "x-IBM1124", |
| //"x-IBM1381", |
| //"x-IBM1383", |
| //"x-IBM33722", |
| "x-IBM737", |
| //"x-IBM834", |
| "x-IBM856", |
| "x-IBM874", |
| //"x-IBM875", |
| "x-IBM921", |
| "x-IBM922", |
| //"x-IBM930", |
| "x-IBM933", |
| //"x-IBM935", |
| //"x-IBM937", |
| //"x-IBM939", |
| //"x-IBM942", |
| //"x-IBM942C", |
| "x-IBM943", |
| //"x-IBM943C", |
| "x-IBM948", |
| "x-IBM949", |
| //"x-IBM949C", |
| "x-IBM950", |
| "x-IBM964", |
| //"x-IBM970", |
| //"x-ISCII91", |
| //"x-ISO2022-CN-CNS", |
| //"x-ISO2022-CN-GB", |
| //"x-JIS0208", |
| //"x-JISAutoDetect", |
| "x-Johab", |
| //"x-MS950-HKSCS", |
| "x-MacArabic", |
| "x-MacCentralEurope", |
| "x-MacCroatian", |
| "x-MacCyrillic", |
| //"x-MacDingbat", |
| "x-MacGreek", |
| "x-MacHebrew", |
| "x-MacIceland", |
| "x-MacRoman", |
| "x-MacRomania", |
| //"x-MacSymbol", |
| "x-MacThai", |
| "x-MacTurkish", |
| "x-MacUkraine", |
| //"x-PCK", |
| "x-UTF-16LE-BOM", |
| //"x-UTF-32BE-BOM", |
| //"x-UTF-32LE-BOM", |
| //"x-euc-jp-linux", |
| //"x-eucJP-Open", |
| "x-iso-8859-11", |
| "x-mswin-936", |
| //"x-windows-50220", |
| //"x-windows-50221", |
| "x-windows-874", |
| "x-windows-949", |
| "x-windows-950", |
| //"x-windows-iso2022jp", |
| }; |
| |
| public static void main(final String[] args) { |
| final String string = createString(0x10000); |
| for (String encoding : encodings) { |
| System.out.println("Test encoding: " + encoding); |
| new Test4625418(encoding).test(string); |
| } |
| } |
| |
| private static String createString(int length) { |
| StringBuilder sb = new StringBuilder(length); |
| while (0 < length--) |
| sb.append((char) length); |
| |
| return sb.toString(); |
| } |
| |
| private final String encoding; |
| |
| private Test4625418(final String encoding) { |
| this.encoding = encoding; |
| } |
| |
| private void test(String string) { |
| try { |
| ByteArrayOutputStream output = new ByteArrayOutputStream(); |
| XMLEncoder encoder = new XMLEncoder(output, this.encoding, true, 0); |
| encoder.setExceptionListener(this); |
| encoder.writeObject(string); |
| encoder.close(); |
| |
| InputStream input = new ByteArrayInputStream(output.toByteArray()); |
| XMLDecoder decoder = new XMLDecoder(input); |
| decoder.setExceptionListener(this); |
| Object object = decoder.readObject(); |
| decoder.close(); |
| |
| if (!string.equals(object)) { |
| throw new Error(this.encoding + " - can't read properly"); |
| } |
| } |
| catch (IllegalCharsetNameException exception) { |
| throw new Error(this.encoding + " - illegal charset name", exception); |
| } |
| catch (UnsupportedCharsetException exception) { |
| throw new Error(this.encoding + " - unsupported charset", exception); |
| } |
| catch (UnsupportedOperationException exception) { |
| throw new Error(this.encoding + " - unsupported encoder", exception); |
| } |
| } |
| |
| public void exceptionThrown(Exception exception) { |
| throw new Error(this.encoding + " - internal", exception); |
| } |
| } |