home *** CD-ROM | disk | FTP | other *** search
Wrap
package sun.io; import java.io.UnsupportedEncodingException; public abstract class ByteToCharConverter { protected boolean subMode = true; protected char[] subChars = new char[]{'�'}; protected int charOff; protected int byteOff; protected int badInputLength; private static String pkgString; public static ByteToCharConverter getDefault() { SecurityManager.enablePrivilege("UniversalPropertyRead"); String var0 = System.getProperty("file.encoding", "8859_1"); SecurityManager.revertPrivilege(); try { return getConverter(var0); } catch (UnsupportedEncodingException var1) { return new ByteToCharDefault(); } } public static ByteToCharConverter getConverter(String var0) throws UnsupportedEncodingException { String var1 = CharacterEncoding.aliasName(var0); if (var1 == null) { var1 = var0; } Class var2; try { var2 = Class.forName(pkgString + ".ByteToChar" + var1); } catch (ClassNotFoundException var6) { throw new UnsupportedEncodingException(); } ByteToCharConverter var3 = null; try { var3 = (ByteToCharConverter)var2.newInstance(); return var3; } catch (InstantiationException var4) { throw new UnsupportedEncodingException(); } catch (IllegalAccessException var5) { throw new UnsupportedEncodingException(); } } public abstract String getCharacterEncoding(); public abstract int convert(byte[] var1, int var2, int var3, char[] var4, int var5, int var6) throws MalformedInputException, UnknownCharacterException, ConversionBufferFullException; public char[] convertAll(byte[] var1) throws MalformedInputException { this.reset(); boolean var2 = this.subMode; this.subMode = true; char[] var3 = new char[this.getMaxCharsPerByte() * var1.length]; char[] var4; try { int var7 = this.convert(var1, 0, var1.length, var3, 0, var3.length); var7 += this.flush(var3, this.nextByteIndex(), var3.length); char[] var8 = new char[var7]; System.arraycopy(var3, 0, var8, 0, var7); var4 = var8; } catch (ConversionBufferFullException var12) { throw new InternalError("this.getMaxCharsBerByte returned bad value"); } catch (UnknownCharacterException var13) { throw new InternalError(); } finally { this.subMode = var2; } return var4; } public abstract int flush(char[] var1, int var2, int var3) throws MalformedInputException, ConversionBufferFullException; public abstract void reset(); public int getMaxCharsPerByte() { return 1; } public int getBadInputLength() { return this.badInputLength; } public int nextCharIndex() { return this.charOff; } public int nextByteIndex() { return this.byteOff; } public void setSubstitutionMode(boolean var1) { this.subMode = var1; } public void setSubstitutionChars(char[] var1) throws IllegalArgumentException { if (var1.length > this.getMaxCharsPerByte()) { throw new IllegalArgumentException(); } else { this.subChars = new char[var1.length]; System.arraycopy(var1, 0, this.subChars, 0, var1.length); } } public String toString() { return "ByteToCharConverter: " + this.getCharacterEncoding(); } static { SecurityManager.enablePrivilege("UniversalPropertyRead"); pkgString = System.getProperty("file.encoding.pkg"); SecurityManager.revertPrivilege(); } }