home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / util / ResourceBundle.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  4.6 KB  |  156 lines

  1. package java.util;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.InputStream;
  5.  
  6. public abstract class ResourceBundle {
  7.    private static SystemClassLoader systemClassLoader = new SystemClassLoader();
  8.    private static boolean debugFlag;
  9.    protected ResourceBundle parent;
  10.    private static final Integer NOTFOUND = new Integer(-1);
  11.    private static Hashtable cacheList = new Hashtable();
  12.  
  13.    public final String getString(String var1) throws MissingResourceException {
  14.       return (String)this.getObject(var1);
  15.    }
  16.  
  17.    public final String[] getStringArray(String var1) throws MissingResourceException {
  18.       return (String[])this.getObject(var1);
  19.    }
  20.  
  21.    public final Object getObject(String var1) throws MissingResourceException {
  22.       Object var2 = this.handleGetObject(var1);
  23.       if (var2 == null) {
  24.          if (this.parent != null) {
  25.             var2 = this.parent.getObject(var1);
  26.          }
  27.  
  28.          if (var2 == null) {
  29.             throw new MissingResourceException("Can't find resource", this.getClass().getName(), var1);
  30.          }
  31.       }
  32.  
  33.       return var2;
  34.    }
  35.  
  36.    public static final ResourceBundle getBundle(String var0) throws MissingResourceException {
  37.       return getBundle(var0, Locale.getDefault(), getLoader());
  38.    }
  39.  
  40.    public static final ResourceBundle getBundle(String var0, Locale var1) {
  41.       return getBundle(var0, var1, getLoader());
  42.    }
  43.  
  44.    private static ClassLoader getLoader() {
  45.       Class[] var0 = getClassContext();
  46.       Class var1 = var0[2];
  47.       ClassLoader var2 = var1 == null ? null : var1.getClassLoader();
  48.       return (ClassLoader)(var2 == null ? systemClassLoader : var2);
  49.    }
  50.  
  51.    private static native Class[] getClassContext();
  52.  
  53.    private static synchronized ResourceBundle getBundle(String var0, Locale var1, ClassLoader var2) throws MissingResourceException {
  54.       StringBuffer var3 = (new StringBuffer("_")).append(var1.toString());
  55.       if (var1.toString().equals("")) {
  56.          var3.setLength(0);
  57.       }
  58.  
  59.       ResourceBundle var4 = findBundle(var0, var3, var2, false);
  60.       if (var4 == null) {
  61.          var3.setLength(0);
  62.          var3.append("_").append(Locale.getDefault().toString());
  63.          var4 = findBundle(var0, var3, var2, true);
  64.          if (var4 == null) {
  65.             throw new MissingResourceException("can't find resource for " + var0 + "_" + var1, var0 + "_" + var1, "");
  66.          }
  67.       }
  68.  
  69.       for(ResourceBundle var5 = var4; var5 != null && var5.parent == null; var5 = var5.parent) {
  70.          int var6 = var3.toString().lastIndexOf(95);
  71.          if (var6 != -1) {
  72.             var3.setLength(var6);
  73.             var5.setParent(findBundle(var0, var3, var2, true));
  74.          }
  75.       }
  76.  
  77.       return var4;
  78.    }
  79.  
  80.    protected void setParent(ResourceBundle var1) {
  81.       this.parent = var1;
  82.    }
  83.  
  84.    private static ResourceBundle findBundle(String var0, StringBuffer var1, ClassLoader var2, boolean var3) {
  85.       String var4 = var1.toString();
  86.       String var5 = var0.replace('.', '/');
  87.       Object var6 = null;
  88.       Vector var8 = new Vector();
  89.  
  90.       while(true) {
  91.          String var7 = var0 + var4;
  92.          String var11 = "[" + Integer.toString(var2.hashCode()) + "]" + var7;
  93.          var6 = cacheList.get(var11);
  94.          if (var6 == NOTFOUND) {
  95.             var1.setLength(0);
  96.             break;
  97.          }
  98.  
  99.          if (var6 != null) {
  100.             var1.setLength(0);
  101.             break;
  102.          }
  103.  
  104.          var8.addElement(var11);
  105.  
  106.          try {
  107.             var6 = var2.loadClass(var7).newInstance();
  108.             break;
  109.          } catch (Exception var13) {
  110.             var7 = var5 + var4 + ".properties";
  111.             InputStream var10 = var2.getResourceAsStream(var7);
  112.             if (var10 != null) {
  113.                BufferedInputStream var16 = new BufferedInputStream(var10);
  114.  
  115.                try {
  116.                   var6 = new PropertyResourceBundle(var16);
  117.                   break;
  118.                } catch (Exception var12) {
  119.                }
  120.             }
  121.  
  122.             int var9 = var4.lastIndexOf(95);
  123.             if (var9 == 0 && !var3 || var9 == -1) {
  124.                break;
  125.             }
  126.  
  127.             var4 = var4.substring(0, var9);
  128.             var1.setLength(var9);
  129.          }
  130.       }
  131.  
  132.       if (var6 != null) {
  133.          for(int var17 = 0; var17 < var8.size(); ++var17) {
  134.             cacheList.put(var8.elementAt(var17), var6);
  135.          }
  136.       } else if (var3) {
  137.          for(int var18 = 0; var18 < var8.size(); ++var18) {
  138.             cacheList.put(var8.elementAt(var18), NOTFOUND);
  139.          }
  140.       }
  141.  
  142.       return var6 != NOTFOUND && var6 != null ? (ResourceBundle)var6 : null;
  143.    }
  144.  
  145.    protected abstract Object handleGetObject(String var1) throws MissingResourceException;
  146.  
  147.    public abstract Enumeration getKeys();
  148.  
  149.    private static void debug(String var0) {
  150.       if (debugFlag) {
  151.          System.out.println("ResourceBundle: " + var0);
  152.       }
  153.  
  154.    }
  155. }
  156.