home *** CD-ROM | disk | FTP | other *** search
- package java.lang;
-
- import java.io.UnsupportedEncodingException;
- import java.lang.ref.SoftReference;
- import java.nio.charset.Charset;
- import java.nio.charset.IllegalCharsetNameException;
- import java.nio.charset.UnsupportedCharsetException;
- import java.util.Arrays;
- import sun.misc.MessageUtils;
-
- class StringCoding {
- private static ThreadLocal decoder = new ThreadLocal();
- private static ThreadLocal encoder = new ThreadLocal();
- private static boolean warnUnsupportedCharset = true;
-
- private StringCoding() {
- }
-
- private static Object deref(ThreadLocal var0) {
- SoftReference var1 = (SoftReference)var0.get();
- return var1 == null ? null : var1.get();
- }
-
- private static void set(ThreadLocal var0, Object var1) {
- var0.set(new SoftReference(var1));
- }
-
- private static byte[] safeTrim(byte[] var0, int var1, Charset var2) {
- return var1 != var0.length || System.getSecurityManager() != null && var2.getClass().getClassLoader0() != null ? Arrays.copyOf(var0, var1) : var0;
- }
-
- private static char[] safeTrim(char[] var0, int var1, Charset var2) {
- return var1 != var0.length || System.getSecurityManager() != null && var2.getClass().getClassLoader0() != null ? Arrays.copyOf(var0, var1) : var0;
- }
-
- private static int scale(int var0, float var1) {
- return (int)((double)var0 * (double)var1);
- }
-
- private static Charset lookupCharset(String var0) {
- if (Charset.isSupported(var0)) {
- try {
- return Charset.forName(var0);
- } catch (UnsupportedCharsetException var2) {
- throw new Error(var2);
- }
- } else {
- return null;
- }
- }
-
- private static void warnUnsupportedCharset(String var0) {
- if (warnUnsupportedCharset) {
- MessageUtils.err("WARNING: Default charset " + var0 + " not supported, using ISO-8859-1 instead");
- warnUnsupportedCharset = false;
- }
-
- }
-
- static char[] decode(String var0, byte[] var1, int var2, int var3) throws UnsupportedEncodingException {
- StringDecoder var4 = (StringDecoder)deref(decoder);
- String var5 = var0 == null ? "ISO-8859-1" : var0;
- if (var4 == null || !var5.equals(var4.requestedCharsetName()) && !var5.equals(var4.charsetName())) {
- var4 = null;
-
- try {
- Charset var6 = lookupCharset(var5);
- if (var6 != null) {
- var4 = new StringDecoder(var6, var5, (1)null);
- }
- } catch (IllegalCharsetNameException var7) {
- }
-
- if (var4 == null) {
- throw new UnsupportedEncodingException(var5);
- }
-
- set(decoder, var4);
- }
-
- return var4.decode(var1, var2, var3);
- }
-
- static char[] decode(Charset var0, byte[] var1, int var2, int var3) {
- StringDecoder var4 = new StringDecoder(var0, var0.name(), (1)null);
- byte[] var5 = Arrays.copyOf(var1, var1.length);
- return var4.decode(var5, var2, var3);
- }
-
- static char[] decode(byte[] var0, int var1, int var2) {
- String var3 = Charset.defaultCharset().name();
-
- try {
- return decode(var3, var0, var1, var2);
- } catch (UnsupportedEncodingException var6) {
- warnUnsupportedCharset(var3);
-
- try {
- return decode("ISO-8859-1", var0, var1, var2);
- } catch (UnsupportedEncodingException var5) {
- MessageUtils.err("ISO-8859-1 charset not available: " + var5.toString());
- System.exit(1);
- return null;
- }
- }
- }
-
- static byte[] encode(String var0, char[] var1, int var2, int var3) throws UnsupportedEncodingException {
- StringEncoder var4 = (StringEncoder)deref(encoder);
- String var5 = var0 == null ? "ISO-8859-1" : var0;
- if (var4 == null || !var5.equals(var4.requestedCharsetName()) && !var5.equals(var4.charsetName())) {
- var4 = null;
-
- try {
- Charset var6 = lookupCharset(var5);
- if (var6 != null) {
- var4 = new StringEncoder(var6, var5, (1)null);
- }
- } catch (IllegalCharsetNameException var7) {
- }
-
- if (var4 == null) {
- throw new UnsupportedEncodingException(var5);
- }
-
- set(encoder, var4);
- }
-
- return var4.encode(var1, var2, var3);
- }
-
- static byte[] encode(Charset var0, char[] var1, int var2, int var3) {
- StringEncoder var4 = new StringEncoder(var0, var0.name(), (1)null);
- char[] var5 = Arrays.copyOf(var1, var1.length);
- return var4.encode(var5, var2, var3);
- }
-
- static byte[] encode(char[] var0, int var1, int var2) {
- String var3 = Charset.defaultCharset().name();
-
- try {
- return encode(var3, var0, var1, var2);
- } catch (UnsupportedEncodingException var6) {
- warnUnsupportedCharset(var3);
-
- try {
- return encode("ISO-8859-1", var0, var1, var2);
- } catch (UnsupportedEncodingException var5) {
- MessageUtils.err("ISO-8859-1 charset not available: " + var5.toString());
- System.exit(1);
- return null;
- }
- }
- }
-
- // $FF: synthetic method
- static int access$000(int var0, float var1) {
- return scale(var0, var1);
- }
-
- // $FF: synthetic method
- static char[] access$100(char[] var0, int var1, Charset var2) {
- return safeTrim(var0, var1, var2);
- }
-
- // $FF: synthetic method
- static byte[] access$300(byte[] var0, int var1, Charset var2) {
- return safeTrim(var0, var1, var2);
- }
- }
-