home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / io / Converters.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.0 KB  |  154 lines

  1. package sun.io;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.lang.ref.SoftReference;
  5. import java.security.AccessController;
  6. import sun.security.action.GetPropertyAction;
  7.  
  8. class Converters {
  9.    private static Object lock;
  10.    private static String converterPackageName;
  11.    private static String defaultEncoding;
  12.    public static final int BYTE_TO_CHAR = 0;
  13.    public static final int CHAR_TO_BYTE = 1;
  14.    private static final String[] converterPrefix;
  15.    private static SoftReference[] classCache;
  16.    // $FF: synthetic field
  17.    static Class class$sun$io$Converters;
  18.  
  19.    private Converters() {
  20.    }
  21.  
  22.    private static String getConverterPackageName() {
  23.       String var0 = converterPackageName;
  24.       if (var0 != null) {
  25.          return var0;
  26.       } else {
  27.          GetPropertyAction var1 = new GetPropertyAction("file.encoding.pkg");
  28.          var0 = (String)AccessController.doPrivileged(var1);
  29.          if (var0 != null) {
  30.             converterPackageName = var0;
  31.          } else {
  32.             var0 = "sun.io";
  33.          }
  34.  
  35.          return var0;
  36.       }
  37.    }
  38.  
  39.    private static Class getConverterClass(int var0, String var1) throws UnsupportedEncodingException {
  40.       String var2 = null;
  41.       if (!var1.equals("ISO8859_1")) {
  42.          if (var1.equals("8859_1")) {
  43.             var2 = "ISO8859_1";
  44.          } else {
  45.             var2 = CharacterEncoding.aliasName(var1);
  46.          }
  47.       }
  48.  
  49.       if (var2 == null) {
  50.          var2 = var1;
  51.       }
  52.  
  53.       try {
  54.          return Class.forName(getConverterPackageName() + "." + converterPrefix[var0] + var2);
  55.       } catch (ClassNotFoundException var4) {
  56.          throw new UnsupportedEncodingException(var2);
  57.       }
  58.    }
  59.  
  60.    private static Object newConverter(String var0, Class var1) throws UnsupportedEncodingException {
  61.       try {
  62.          return var1.newInstance();
  63.       } catch (InstantiationException var4) {
  64.          throw new UnsupportedEncodingException(var0);
  65.       } catch (IllegalAccessException var5) {
  66.          throw new UnsupportedEncodingException(var0);
  67.       }
  68.    }
  69.  
  70.    static Object newConverter(int var0, String var1) throws UnsupportedEncodingException {
  71.       Object var3 = lock;
  72.       Class var2;
  73.       synchronized(var3) {
  74.          var2 = getConverterClass(var0, var1);
  75.       }
  76.  
  77.       return newConverter(var1, var2);
  78.    }
  79.  
  80.    private static Class getDefaultConverterClass(int var0) {
  81.       boolean var1 = false;
  82.       SoftReference var2 = classCache[var0];
  83.       if (var2 != null) {
  84.          Class var3 = (Class)var2.get();
  85.          if (var3 != null) {
  86.             return var3;
  87.          }
  88.  
  89.          classCache[var0] = null;
  90.       }
  91.  
  92.       String var9 = defaultEncoding;
  93.       if (defaultEncoding != null) {
  94.          var1 = true;
  95.       } else {
  96.          GetPropertyAction var4 = new GetPropertyAction("file.encoding");
  97.          var9 = (String)AccessController.doPrivileged(var4);
  98.          if (var9 != null) {
  99.             defaultEncoding = var9;
  100.             var1 = true;
  101.          } else {
  102.             var9 = "ISO8859_1";
  103.          }
  104.       }
  105.  
  106.       Class var10;
  107.       try {
  108.          var10 = getConverterClass(var0, var9);
  109.          if (var1) {
  110.             classCache[var0] = new SoftReference(var10);
  111.          }
  112.       } catch (UnsupportedEncodingException var8) {
  113.          try {
  114.             var10 = getConverterClass(var0, "ISO8859_1");
  115.          } catch (UnsupportedEncodingException var7) {
  116.             throw new InternalError("Cannot find default " + converterPrefix[var0] + " converter class");
  117.          }
  118.       }
  119.  
  120.       return var10;
  121.    }
  122.  
  123.    static Object newDefaultConverter(int var0) {
  124.       Object var2 = lock;
  125.       Class var1;
  126.       synchronized(var2) {
  127.          var1 = getDefaultConverterClass(var0);
  128.       }
  129.  
  130.       try {
  131.          return newConverter("", var1);
  132.       } catch (UnsupportedEncodingException var4) {
  133.          throw new InternalError("Cannot instantiate default converter class " + var1.getName());
  134.       }
  135.    }
  136.  
  137.    // $FF: synthetic method
  138.    static Class class$(String var0) {
  139.       try {
  140.          return Class.forName(var0);
  141.       } catch (ClassNotFoundException var2) {
  142.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  143.       }
  144.    }
  145.  
  146.    static {
  147.       lock = class$sun$io$Converters == null ? (class$sun$io$Converters = class$("sun.io.Converters")) : class$sun$io$Converters;
  148.       converterPackageName = null;
  149.       defaultEncoding = null;
  150.       converterPrefix = new String[]{"ByteToChar", "CharToByte"};
  151.       classCache = new SoftReference[2];
  152.    }
  153. }
  154.