rsitze 2002/09/20 13:12:25 Modified: java/src/org/apache/axis/i18n ProjectResourceBundle.java Log: - fixed handleGetObject, correctly returns null if key not found - fixed getKeys(), returns keys + parent keys Revision Changes Path 1.3 +53 -7 xml-axis/java/src/org/apache/axis/i18n/ProjectResourceBundle.java Index: ProjectResourceBundle.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/i18n/ProjectResourceBundle.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ProjectResourceBundle.java 20 Sep 2002 16:35:36 -0000 1.2 +++ ProjectResourceBundle.java 20 Sep 2002 20:12:25 -0000 1.3 @@ -56,7 +56,9 @@ package org.apache.axis.i18n; import java.util.Enumeration; +import java.util.HashSet; import java.util.Hashtable; +import java.util.Iterator; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; @@ -105,11 +107,44 @@ protected Object handleGetObject(String key) throws MissingResourceException { - return resourceBundle.getObject(key); + if (log.isDebugEnabled()) { + log.debug(this.toString() + "::handleGetObject(" + key + ")"); + } +// return resourceBundle.handleGetObject(key); + Object obj; + try { + obj = resourceBundle.getObject(key); + } catch (MissingResourceException e) { + /* catch missing resource, ignore, & return null + * if this method doesn't return null, then parents + * are not searched + */ + obj = null; + } + return obj; } public Enumeration getKeys() { - return resourceBundle.getKeys(); + Enumeration myKeys = resourceBundle.getKeys(); + if (parent == null) { + return myKeys; + } else { + final HashSet set = new HashSet(); + while (myKeys.hasMoreElements()) { + set.add(myKeys.nextElement()); + } + + Enumeration pKeys = parent.getKeys(); + while (pKeys.hasMoreElements()) { + set.add(pKeys.nextElement()); + } + + return new Enumeration() { + private Iterator it = set.iterator(); + public boolean hasMoreElements() { return it.hasNext(); } + public Object nextElement() { return it.next(); } + }; + } } @@ -265,10 +300,10 @@ throws MissingResourceException { if (log.isDebugEnabled()) { - log.debug("ProjectResourceBundle::getBundle(" + projectName + "," - + packageName + "," - + resourceName + "," - + String.valueOf(locale) + ",...)"); + log.debug("getBundle(" + projectName + "," + + packageName + "," + + resourceName + "," + + String.valueOf(locale) + ",...)"); } Context context = new Context(); @@ -318,6 +353,9 @@ if (rb != null) { prb = new ProjectResourceBundle(name, rb); prb.setParent(parent); + if (log.isDebugEnabled()) { + log.debug("Created " + prb + ", linked to parent " + String.valueOf(parent)); + } } else { if (parent != null) { if (parent instanceof ProjectResourceBundle) { @@ -325,6 +363,9 @@ } else { prb = new ProjectResourceBundle(name, parent); } + if (log.isDebugEnabled()) { + log.debug("Root package not found, cross link to " + parent); + } } } @@ -362,6 +403,10 @@ { bundleCache.clear(); } + + public String toString() { + return resourceName; + } private static class Context { @@ -408,7 +453,8 @@ _locale, _loader); } catch (MissingResourceException e) { - log.debug("loadBundle: Ignoring MissingResourceException", e); + // Deliberately surpressing print stack.. just the string for info. + log.debug("loadBundle: Ignoring MissingResourceException: " + e.getMessage()); } return null; }