A few zone entries miss out the standard timezone data because
their standard name is not the mapping of metazone to standard name
for the particular locale.  This does a final check to ensure
none of these values are empty, and copies across from the mapped
zone if this is the case.

As this can be quite inefficient, I'll look into producing an additional
property file that does the mappings in reverse.

ChangeLog:

2008-07-07  Andrew John Hughes  <[EMAIL PROTECTED]>

        * java/text/DateFormatSymbols.java:
        (getZoneStrings(ResourceBundle,Locale)):
        Handle missing standard zone names.

-- 
Andrew :)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8
Index: java/text/DateFormatSymbols.java
===================================================================
RCS file: /sources/classpath/classpath/java/text/DateFormatSymbols.java,v
retrieving revision 1.26
diff -u -u -r1.26 DateFormatSymbols.java
--- java/text/DateFormatSymbols.java    7 Jul 2008 21:47:11 -0000       1.26
+++ java/text/DateFormatSymbols.java    7 Jul 2008 22:05:40 -0000
@@ -174,7 +174,32 @@
                                             
LocaleHelper.getFallbackLocale(res.getLocale()),
                                             
ClassLoader.getSystemClassLoader());
          }
-       allZones.addAll(systemZones.values());
+       /* Final sanity check for missing values */
+       for (String[] zstrings : systemZones.values())
+         {
+           if (zstrings[1].equals("") && zstrings[2].equals(""))
+             {
+               for (Map.Entry<Object,Object> entry : properties.entrySet())
+                 {
+                   String val = (String) entry.getValue();
+                   if (val.equals(zstrings[0]))
+                     {
+                       String key = (String) entry.getKey();
+                       String metazone = key.substring(0, key.indexOf("."));
+                       String type = properties.getProperty(metazone + "." + 
locale.getCountry());
+                       if (type == null)
+                         type = properties.getProperty(metazone + ".DEFAULT");
+                       if (type != null)
+                         {
+                           String[] ostrings = systemZones.get(type);
+                           zstrings[1] = ostrings[1];
+                           zstrings[2] = ostrings[2];
+                         }
+                     }
+                 }
+             }
+         }
+       allZones.addAll(systemZones.values());  
       }
     catch (MissingResourceException e)
       {

Reply via email to