home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- import java.io.BufferedInputStream;
- import java.io.InputStream;
- import java.security.AccessController;
- import sun.misc.SoftCache;
-
- public abstract class ResourceBundle {
- private static final ResourceCacheKey cacheKey = new ResourceCacheKey((1)null);
- private static final int INITIAL_CACHE_SIZE = 25;
- private static final float CACHE_LOAD_FACTOR = 1.0F;
- private static final int MAX_BUNDLES_SEARCHED = 3;
- private static final Hashtable underConstruction = new Hashtable(3, 1.0F);
- private static final Integer DEFAULT_NOT_FOUND = new Integer(-1);
- private static SoftCache cacheList = new SoftCache(25, 1.0F);
- protected ResourceBundle parent = null;
- private Locale locale = null;
- // $FF: synthetic field
- static Class class$java$util$ResourceBundle;
-
- public final String getString(String var1) throws MissingResourceException {
- return (String)this.getObject(var1);
- }
-
- public final String[] getStringArray(String var1) throws MissingResourceException {
- return (String[])this.getObject(var1);
- }
-
- public final Object getObject(String var1) throws MissingResourceException {
- Object var2 = this.handleGetObject(var1);
- if (var2 == null) {
- if (this.parent != null) {
- var2 = this.parent.getObject(var1);
- }
-
- if (var2 == null) {
- throw new MissingResourceException("Can't find resource for bundle " + this.getClass().getName() + ", key " + var1, this.getClass().getName(), var1);
- }
- }
-
- return var2;
- }
-
- public Locale getLocale() {
- return this.locale;
- }
-
- private void setLocale(String var1, String var2) {
- if (var1.length() == var2.length()) {
- this.locale = new Locale("", "");
- } else {
- if (var1.length() >= var2.length()) {
- throw new IllegalArgumentException();
- }
-
- int var3 = var1.length();
- String var4 = var2.substring(var3 + 1);
- var3 = var4.indexOf(95);
- if (var3 == -1) {
- this.locale = new Locale(var4, "", "");
- return;
- }
-
- String var5 = var4.substring(0, var3);
- var4 = var4.substring(var3 + 1);
- var3 = var4.indexOf(95);
- if (var3 == -1) {
- this.locale = new Locale(var5, var4, "");
- return;
- }
-
- String var6 = var4.substring(0, var3);
- var4 = var4.substring(var3 + 1);
- this.locale = new Locale(var5, var6, var4);
- }
-
- }
-
- private static ClassLoader getLoader() {
- Class[] var0 = getClassContext();
- Class var1 = var0[2];
- ClassLoader var2 = var1 == null ? null : var1.getClassLoader();
- if (var2 == null) {
- var2 = ClassLoader.getSystemClassLoader();
- }
-
- return var2;
- }
-
- private static native Class[] getClassContext();
-
- protected void setParent(ResourceBundle var1) {
- this.parent = var1;
- }
-
- public static final ResourceBundle getBundle(String var0) throws MissingResourceException {
- return getBundleImpl(var0, Locale.getDefault(), getLoader());
- }
-
- public static final ResourceBundle getBundle(String var0, Locale var1) {
- return getBundleImpl(var0, var1, getLoader());
- }
-
- public static ResourceBundle getBundle(String var0, Locale var1, ClassLoader var2) throws MissingResourceException {
- if (var2 == null) {
- throw new NullPointerException();
- } else {
- return getBundleImpl(var0, var1, var2);
- }
- }
-
- private static ResourceBundle getBundleImpl(String var0, Locale var1, ClassLoader var2) {
- if (var0 == null) {
- throw new NullPointerException();
- } else {
- Object var3 = var2 != null ? var2 : DEFAULT_NOT_FOUND;
- String var4 = var0;
- String var5 = var1.toString();
- if (var5.length() > 0) {
- var4 = var0 + "_" + var5;
- } else if (var1.getVariant().length() > 0) {
- var4 = var0 + "___" + var1.getVariant();
- }
-
- Object var6 = findBundleInCache(var2, var4);
- if (var6 == var3) {
- throwMissingResourceException(var0, var1);
- } else if (var6 != null) {
- return (ResourceBundle)var6;
- }
-
- Object var7 = var3;
-
- try {
- Object var8 = findBundle(var2, var0, var0, (Object)null, var3);
- if (var8 == null) {
- putBundleInCache(var2, var0, var3);
- var8 = var3;
- }
-
- Vector var9 = calculateBundleNames(var0, var1);
- boolean var10 = var8 != var3 && var9.size() == 0;
- if (!var10) {
- var7 = var8;
-
- for(int var11 = 0; var11 < var9.size(); ++var11) {
- var4 = (String)var9.elementAt(var11);
- var6 = findBundle(var2, var4, var0, var7, var3);
- if (var6 != null) {
- var7 = var6;
- var10 = true;
- }
- }
- }
-
- var7 = var8;
- if (!var10) {
- Vector var21 = calculateBundleNames(var0, Locale.getDefault());
-
- for(int var12 = 0; var12 < var21.size(); ++var12) {
- var4 = (String)var21.elementAt(var12);
- if (var9.contains(var4)) {
- break;
- }
-
- var6 = findBundle(var2, var4, var0, var7, var3);
- if (var6 != null) {
- var7 = var6;
- } else {
- putBundleInCache(var2, var4, var7);
- }
- }
- }
-
- var7 = propagate(var2, var9, var7);
- } catch (Exception var13) {
- cleanUpConstructionList();
- throwMissingResourceException(var0, var1);
- } catch (Error var14) {
- cleanUpConstructionList();
- throw var14;
- }
-
- if (var7 == var3) {
- throwMissingResourceException(var0, var1);
- }
-
- return (ResourceBundle)var7;
- }
- }
-
- private static Object propagate(ClassLoader var0, Vector var1, Object var2) {
- for(int var3 = 0; var3 < var1.size(); ++var3) {
- String var4 = (String)var1.elementAt(var3);
- Object var5 = findBundleInCache(var0, var4);
- if (var5 == null) {
- putBundleInCache(var0, var4, var2);
- } else {
- var2 = var5;
- }
- }
-
- return var2;
- }
-
- private static void throwMissingResourceException(String var0, Locale var1) throws MissingResourceException {
- throw new MissingResourceException("Can't find bundle for base name " + var0 + ", locale " + var1, var0 + "_" + var1, "");
- }
-
- private static void cleanUpConstructionList() {
- SoftCache var0 = cacheList;
- synchronized(var0) {
- Collection var1 = underConstruction.values();
- Thread var2 = Thread.currentThread();
-
- while(var1.remove(var2)) {
- }
-
- }
- }
-
- private static Object findBundle(ClassLoader var0, String var1, String var2, Object var3, Object var4) {
- SoftCache var6 = cacheList;
- synchronized(var6) {
- cacheKey.setKeyValues(var0, var1);
- Object var5 = cacheList.get(cacheKey);
- if (var5 != null) {
- cacheKey.clear();
- return var5;
- }
-
- Thread var7 = (Thread)underConstruction.get(cacheKey);
- boolean var8 = var7 != null && var7 != Thread.currentThread();
- if (var8) {
- while(var8) {
- cacheKey.clear();
-
- try {
- cacheList.wait();
- } catch (InterruptedException var13) {
- }
-
- cacheKey.setKeyValues(var0, var1);
- var8 = underConstruction.containsKey(cacheKey);
- }
-
- var5 = cacheList.get(cacheKey);
- if (var5 != null) {
- cacheKey.clear();
- return var5;
- }
- }
-
- Object var9 = cacheKey.clone();
- underConstruction.put(var9, Thread.currentThread());
- cacheKey.clear();
- }
-
- Object var16 = loadBundle(var0, var1);
- if (var16 != null) {
- SoftCache var18 = cacheList;
- boolean var17;
- synchronized(var18) {
- cacheKey.setKeyValues(var0, var1);
- var17 = underConstruction.get(cacheKey) == Thread.currentThread();
- cacheKey.clear();
- }
-
- if (var17) {
- ResourceBundle var11 = (ResourceBundle)var16;
- if (var3 != var4) {
- var11.setParent((ResourceBundle)var3);
- } else {
- var11.setParent((ResourceBundle)null);
- }
-
- var11.setLocale(var2, var1);
- putBundleInCache(var0, var1, var16);
- }
- }
-
- return var16;
- }
-
- private static Vector calculateBundleNames(String var0, Locale var1) {
- Vector var2 = new Vector(3);
- String var3 = var1.getLanguage();
- int var4 = var3.length();
- String var5 = var1.getCountry();
- int var6 = var5.length();
- String var7 = var1.getVariant();
- int var8 = var7.length();
- if (var4 + var6 + var8 == 0) {
- return var2;
- } else {
- StringBuffer var9 = new StringBuffer(var0);
- var9.append('_');
- var9.append(var3);
- var2.addElement(var9.toString());
- if (var6 + var8 == 0) {
- return var2;
- } else {
- var9.append('_');
- var9.append(var5);
- var2.addElement(var9.toString());
- if (var8 == 0) {
- return var2;
- } else {
- var9.append('_');
- var9.append(var7);
- var2.addElement(var9.toString());
- return var2;
- }
- }
- }
- }
-
- private static Object findBundleInCache(ClassLoader var0, String var1) {
- SoftCache var2 = cacheList;
- synchronized(var2) {
- cacheKey.setKeyValues(var0, var1);
- Object var3 = cacheList.get(cacheKey);
- cacheKey.clear();
- return var3;
- }
- }
-
- private static void putBundleInCache(ClassLoader var0, String var1, Object var2) {
- SoftCache var3 = cacheList;
- synchronized(var3) {
- cacheKey.setKeyValues(var0, var1);
- cacheList.put(cacheKey.clone(), var2);
- underConstruction.remove(cacheKey);
- cacheKey.clear();
- cacheList.notifyAll();
- }
- }
-
- private static Object loadBundle(ClassLoader var0, String var1) {
- try {
- Class var2;
- if (var0 != null) {
- var2 = var0.loadClass(var1);
- } else {
- var2 = Class.forName(var1);
- }
-
- if ((class$java$util$ResourceBundle == null ? (class$java$util$ResourceBundle = class$("java.util.ResourceBundle")) : class$java$util$ResourceBundle).isAssignableFrom(var2)) {
- Object var22 = var2.newInstance();
- Object var23 = findBundleInCache(var0, var1);
- if (var23 != null) {
- return var23;
- }
-
- return var22;
- }
- } catch (Exception var16) {
- } catch (LinkageError var17) {
- }
-
- String var20 = var1.replace('.', '/') + ".properties";
- InputStream var3 = (InputStream)AccessController.doPrivileged(new 1(var0, var20));
- if (var3 != null) {
- var3 = new BufferedInputStream(var3);
-
- PropertyResourceBundle var4;
- try {
- var4 = new PropertyResourceBundle(var3);
- } catch (Exception var18) {
- return null;
- } finally {
- try {
- var3.close();
- } catch (Exception var15) {
- }
-
- }
-
- return var4;
- } else {
- return null;
- }
- }
-
- protected abstract Object handleGetObject(String var1) throws MissingResourceException;
-
- public abstract Enumeration getKeys();
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
- }
-