DateFormat.java, [...]: New versions from classpath.
authorMichael Koch <konqueror@gmx.de>
Sat, 21 Jun 2003 12:42:26 +0000 (12:42 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Sat, 21 Jun 2003 12:42:26 +0000 (12:42 +0000)
2003-06-21  Michael Koch  <konqueror@gmx.de>

* java/text/DateFormat.java,
java/text/SimpleDateFormat.java,
java/util/Locale.java:
New versions from classpath.

From-SVN: r68300

libjava/ChangeLog
libjava/java/text/DateFormat.java
libjava/java/text/SimpleDateFormat.java
libjava/java/util/Locale.java

index 34a9282883ad1a54405bb26e11baed47e1dc72c6..2c847901c3013f268e7038c23452043d1f139099 100644 (file)
@@ -1,3 +1,10 @@
+2003-06-21  Michael Koch  <konqueror@gmx.de>
+
+       * java/text/DateFormat.java,
+       java/text/SimpleDateFormat.java,
+       java/util/Locale.java:
+       New versions from classpath.
+
 2003-06-21  Michael Koch  <konqueror@gmx.de>
 
        * javax/swing/SpinnerModel.java:
index c298ef23342f03d4b121ddae3c2657db06b01d53..df2b270e4f34d05456a66eb2d65aa56bba6931eb 100644 (file)
@@ -101,7 +101,7 @@ public abstract class DateFormat extends Format implements Cloneable
    * <ul>
    * <li>Is not <code>null</code>.
    * <li>Is an instance of <code>DateFormat</code>.
-   * <li>Has the same calendar and numberFormat field values as this object.
+   * <li>Has the same numberFormat field value as this object.
    * </ul>
    *
    * @param obj The object to test for equality against.
@@ -111,10 +111,12 @@ public abstract class DateFormat extends Format implements Cloneable
    */
   public boolean equals (Object obj)
   {
-    if (! (obj instanceof DateFormat))
+    if (!(obj instanceof DateFormat))
       return false;
+
     DateFormat d = (DateFormat) obj;
-    return calendar.equals(d.calendar) && numberFormat.equals(d.numberFormat);
+
+    return numberFormat.equals(d.numberFormat);
   }
 
   /**
@@ -467,10 +469,10 @@ public abstract class DateFormat extends Format implements Cloneable
    */
   public int hashCode ()
   {
-    int hash = calendar.hashCode();
     if (numberFormat != null)
-      hash ^= numberFormat.hashCode();
-    return hash;
+      return numberFormat.hashCode();
+    else
+      return 0;
   }
 
   /**
index 7b282f3c62f4533618e3d3d85671f7366eb6e567..67523e1628d660825130144a24479c32d5a43949 100644 (file)
@@ -384,10 +384,10 @@ public class SimpleDateFormat extends DateFormat
 
     SimpleDateFormat sdf = (SimpleDateFormat)o;
 
-    if (!toPattern().equals(sdf.toPattern()))
+    if (defaultCentury != sdf.defaultCentury)
       return false;
 
-    if (!get2DigitYearStart().equals(sdf.get2DigitYearStart()))
+    if (!toPattern().equals(sdf.toPattern()))
       return false;
 
     if (!getDateFormatSymbols().equals(sdf.getDateFormatSymbols()))
@@ -396,6 +396,17 @@ public class SimpleDateFormat extends DateFormat
     return true;
   }
 
+  /**
+   * This method returns a hash value for this object.
+   *
+   * @return A hash value for this object.
+   */
+  public int hashCode()
+  {
+    return super.hashCode() ^ toPattern().hashCode() ^ defaultCentury ^
+      getDateFormatSymbols().hashCode();
+  }
+
 
   /**
    * Formats the date input according to the format string in use,
index 60fdd0ad93b8db36e0eecbfa0cf386d385e1f0eb..431824f0c35935c53b45c526bdaf25c106fbdcea 100644 (file)
@@ -231,9 +231,9 @@ public final class Locale implements Serializable, Cloneable
     // default locale.
     if (defaultLocale != null)
       {
-        language = convertLanguage(language);
-        country = country.toUpperCase();
-        variant = variant.toUpperCase();
+        language = convertLanguage(language).intern();
+        country = country.toUpperCase().intern();
+        variant = variant.toUpperCase().intern();
       }
     this.language = language;
     this.country = country;
@@ -436,7 +436,7 @@ public final class Locale implements Serializable, Cloneable
    */
   public String getISO3Language()
   {
-    if ("".equals(language))
+    if (language == "")
       return "";
     int index
       = ("aa,ab,af,am,ar,as,ay,az,ba,be,bg,bh,bi,bn,bo,br,ca,co,cs,cy,da,"
@@ -472,7 +472,7 @@ public final class Locale implements Serializable, Cloneable
    */
   public String getISO3Country()
   {
-    if ("".equals(country))
+    if (country == "")
       return "";
     int index
       = ("AD,AE,AF,AG,AI,AL,AM,AN,AO,AQ,AR,AS,AT,AU,AW,AZ,BA,BB,BD,BE,BF,"
@@ -729,9 +729,13 @@ public final class Locale implements Serializable, Cloneable
       return false;
     Locale l = (Locale) obj;
 
-    return (language.equals(l.language)
-            && country.equals(l.country)
-            && variant.equals(l.variant));
+    // ??? We might also want to add:
+    //        hashCode() == l.hashCode()
+    // But this is a synchronized method.  Is the overhead worth it?
+    // Measure this to make a decision.
+    return (language == l.language
+            && country == l.country
+            && variant == l.variant);
   }
 
   /**