home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / java / util / ResourceBundle.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  5.0 KB  |  159 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.       ResourceBundle var4 = findBundle(var0, var3, var2, false);
  56.       if (var4 == null) {
  57.          var3.setLength(0);
  58.          var3.append("_").append(Locale.getDefault().toString());
  59.          var4 = findBundle(var0, var3, var2, true);
  60.          if (var4 == null) {
  61.             throw new MissingResourceException("can't find resource for " + var0 + "_" + var1, var0 + "_" + var1, "");
  62.          }
  63.       }
  64.  
  65.       for(ResourceBundle var5 = var4; var5 != null && var5.parent == null; var5 = var5.parent) {
  66.          int var6 = var3.toString().lastIndexOf(95);
  67.          if (var6 != -1) {
  68.             var3.setLength(var6);
  69.             debug("Searching for parent " + var0 + var3);
  70.             var5.setParent(findBundle(var0, var3, var2, true));
  71.          }
  72.       }
  73.  
  74.       return var4;
  75.    }
  76.  
  77.    protected void setParent(ResourceBundle var1) {
  78.       this.parent = var1;
  79.    }
  80.  
  81.    private static ResourceBundle findBundle(String var0, StringBuffer var1, ClassLoader var2, boolean var3) {
  82.       String var4 = var1.toString();
  83.       String var5 = var0.replace('.', '/');
  84.       Object var6 = null;
  85.       Vector var8 = new Vector();
  86.  
  87.       while(true) {
  88.          String var7 = var0 + var4;
  89.          String var11 = "[" + Integer.toString(var2.hashCode()) + "]" + var7;
  90.          var6 = cacheList.get(var11);
  91.          if (var6 == NOTFOUND) {
  92.             debug("Found " + var7 + " in cache as NOTFOUND");
  93.             var1.setLength(0);
  94.             break;
  95.          }
  96.  
  97.          if (var6 != null) {
  98.             debug("Found " + var7 + " in cache");
  99.             var1.setLength(0);
  100.             break;
  101.          }
  102.  
  103.          var8.addElement(var11);
  104.          debug("Searching for " + var7);
  105.  
  106.          try {
  107.             var6 = var2.loadClass(var7).newInstance();
  108.             break;
  109.          } catch (Exception var13) {
  110.             var7 = var5 + var4 + ".properties";
  111.             debug("Searching for " + var7);
  112.             InputStream var10 = var2.getResourceAsStream(var7);
  113.             if (var10 != null) {
  114.                BufferedInputStream var16 = new BufferedInputStream(var10);
  115.  
  116.                try {
  117.                   var6 = new PropertyResourceBundle(var16);
  118.                   break;
  119.                } catch (Exception var12) {
  120.                }
  121.             }
  122.  
  123.             int var9 = var4.lastIndexOf(95);
  124.             if (var9 == 0 && !var3 || var9 == -1) {
  125.                break;
  126.             }
  127.  
  128.             var4 = var4.substring(0, var9);
  129.             var1.setLength(var9);
  130.          }
  131.       }
  132.  
  133.       if (var6 != null) {
  134.          for(int var17 = 0; var17 < var8.size(); ++var17) {
  135.             cacheList.put(var8.elementAt(var17), var6);
  136.             debug("Adding " + var8.elementAt(var17) + " to cache" + (var6 == NOTFOUND ? " as NOTFOUND." : "."));
  137.          }
  138.       } else if (var3) {
  139.          for(int var18 = 0; var18 < var8.size(); ++var18) {
  140.             cacheList.put(var8.elementAt(var18), NOTFOUND);
  141.             debug("Adding " + var8.elementAt(var18) + " to cache as NOTFOUND.");
  142.          }
  143.       }
  144.  
  145.       return var6 != NOTFOUND && var6 != null ? (ResourceBundle)var6 : null;
  146.    }
  147.  
  148.    protected abstract Object handleGetObject(String var1) throws MissingResourceException;
  149.  
  150.    public abstract Enumeration getKeys();
  151.  
  152.    private static void debug(String var0) {
  153.       if (debugFlag) {
  154.          System.out.println("ResourceBundle: " + var0);
  155.       }
  156.  
  157.    }
  158. }
  159.