home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / lang / StringCoding.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.6 KB  |  171 lines

  1. package java.lang;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.lang.ref.SoftReference;
  5. import java.nio.charset.Charset;
  6. import java.nio.charset.IllegalCharsetNameException;
  7. import java.nio.charset.UnsupportedCharsetException;
  8. import java.util.Arrays;
  9. import sun.misc.MessageUtils;
  10.  
  11. class StringCoding {
  12.    private static ThreadLocal decoder = new ThreadLocal();
  13.    private static ThreadLocal encoder = new ThreadLocal();
  14.    private static boolean warnUnsupportedCharset = true;
  15.  
  16.    private StringCoding() {
  17.    }
  18.  
  19.    private static Object deref(ThreadLocal var0) {
  20.       SoftReference var1 = (SoftReference)var0.get();
  21.       return var1 == null ? null : var1.get();
  22.    }
  23.  
  24.    private static void set(ThreadLocal var0, Object var1) {
  25.       var0.set(new SoftReference(var1));
  26.    }
  27.  
  28.    private static byte[] safeTrim(byte[] var0, int var1, Charset var2) {
  29.       return var1 != var0.length || System.getSecurityManager() != null && var2.getClass().getClassLoader0() != null ? Arrays.copyOf(var0, var1) : var0;
  30.    }
  31.  
  32.    private static char[] safeTrim(char[] var0, int var1, Charset var2) {
  33.       return var1 != var0.length || System.getSecurityManager() != null && var2.getClass().getClassLoader0() != null ? Arrays.copyOf(var0, var1) : var0;
  34.    }
  35.  
  36.    private static int scale(int var0, float var1) {
  37.       return (int)((double)var0 * (double)var1);
  38.    }
  39.  
  40.    private static Charset lookupCharset(String var0) {
  41.       if (Charset.isSupported(var0)) {
  42.          try {
  43.             return Charset.forName(var0);
  44.          } catch (UnsupportedCharsetException var2) {
  45.             throw new Error(var2);
  46.          }
  47.       } else {
  48.          return null;
  49.       }
  50.    }
  51.  
  52.    private static void warnUnsupportedCharset(String var0) {
  53.       if (warnUnsupportedCharset) {
  54.          MessageUtils.err("WARNING: Default charset " + var0 + " not supported, using ISO-8859-1 instead");
  55.          warnUnsupportedCharset = false;
  56.       }
  57.  
  58.    }
  59.  
  60.    static char[] decode(String var0, byte[] var1, int var2, int var3) throws UnsupportedEncodingException {
  61.       StringDecoder var4 = (StringDecoder)deref(decoder);
  62.       String var5 = var0 == null ? "ISO-8859-1" : var0;
  63.       if (var4 == null || !var5.equals(var4.requestedCharsetName()) && !var5.equals(var4.charsetName())) {
  64.          var4 = null;
  65.  
  66.          try {
  67.             Charset var6 = lookupCharset(var5);
  68.             if (var6 != null) {
  69.                var4 = new StringDecoder(var6, var5, (1)null);
  70.             }
  71.          } catch (IllegalCharsetNameException var7) {
  72.          }
  73.  
  74.          if (var4 == null) {
  75.             throw new UnsupportedEncodingException(var5);
  76.          }
  77.  
  78.          set(decoder, var4);
  79.       }
  80.  
  81.       return var4.decode(var1, var2, var3);
  82.    }
  83.  
  84.    static char[] decode(Charset var0, byte[] var1, int var2, int var3) {
  85.       StringDecoder var4 = new StringDecoder(var0, var0.name(), (1)null);
  86.       byte[] var5 = Arrays.copyOf(var1, var1.length);
  87.       return var4.decode(var5, var2, var3);
  88.    }
  89.  
  90.    static char[] decode(byte[] var0, int var1, int var2) {
  91.       String var3 = Charset.defaultCharset().name();
  92.  
  93.       try {
  94.          return decode(var3, var0, var1, var2);
  95.       } catch (UnsupportedEncodingException var6) {
  96.          warnUnsupportedCharset(var3);
  97.  
  98.          try {
  99.             return decode("ISO-8859-1", var0, var1, var2);
  100.          } catch (UnsupportedEncodingException var5) {
  101.             MessageUtils.err("ISO-8859-1 charset not available: " + var5.toString());
  102.             System.exit(1);
  103.             return null;
  104.          }
  105.       }
  106.    }
  107.  
  108.    static byte[] encode(String var0, char[] var1, int var2, int var3) throws UnsupportedEncodingException {
  109.       StringEncoder var4 = (StringEncoder)deref(encoder);
  110.       String var5 = var0 == null ? "ISO-8859-1" : var0;
  111.       if (var4 == null || !var5.equals(var4.requestedCharsetName()) && !var5.equals(var4.charsetName())) {
  112.          var4 = null;
  113.  
  114.          try {
  115.             Charset var6 = lookupCharset(var5);
  116.             if (var6 != null) {
  117.                var4 = new StringEncoder(var6, var5, (1)null);
  118.             }
  119.          } catch (IllegalCharsetNameException var7) {
  120.          }
  121.  
  122.          if (var4 == null) {
  123.             throw new UnsupportedEncodingException(var5);
  124.          }
  125.  
  126.          set(encoder, var4);
  127.       }
  128.  
  129.       return var4.encode(var1, var2, var3);
  130.    }
  131.  
  132.    static byte[] encode(Charset var0, char[] var1, int var2, int var3) {
  133.       StringEncoder var4 = new StringEncoder(var0, var0.name(), (1)null);
  134.       char[] var5 = Arrays.copyOf(var1, var1.length);
  135.       return var4.encode(var5, var2, var3);
  136.    }
  137.  
  138.    static byte[] encode(char[] var0, int var1, int var2) {
  139.       String var3 = Charset.defaultCharset().name();
  140.  
  141.       try {
  142.          return encode(var3, var0, var1, var2);
  143.       } catch (UnsupportedEncodingException var6) {
  144.          warnUnsupportedCharset(var3);
  145.  
  146.          try {
  147.             return encode("ISO-8859-1", var0, var1, var2);
  148.          } catch (UnsupportedEncodingException var5) {
  149.             MessageUtils.err("ISO-8859-1 charset not available: " + var5.toString());
  150.             System.exit(1);
  151.             return null;
  152.          }
  153.       }
  154.    }
  155.  
  156.    // $FF: synthetic method
  157.    static int access$000(int var0, float var1) {
  158.       return scale(var0, var1);
  159.    }
  160.  
  161.    // $FF: synthetic method
  162.    static char[] access$100(char[] var0, int var1, Charset var2) {
  163.       return safeTrim(var0, var1, var2);
  164.    }
  165.  
  166.    // $FF: synthetic method
  167.    static byte[] access$300(byte[] var0, int var1, Charset var2) {
  168.       return safeTrim(var0, var1, var2);
  169.    }
  170. }
  171.