re PR libgcj/1906 (difference between gcj and jdk for MessageFormat)
authorTom Tromey <tromey@redhat.com>
Wed, 7 Feb 2001 22:46:28 +0000 (22:46 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Wed, 7 Feb 2001 22:46:28 +0000 (22:46 +0000)
Fix for PR libgcj/1906:
* java/text/MessageFormat.java (setLocale): Use named class
literals.
(forName): Removed.
(format(Object,StringBuffer,FieldPosition)): Special case if
argument is an Object[].

From-SVN: r39529

libjava/ChangeLog
libjava/java/text/MessageFormat.java

index 28d6093abdc90662d0617fa9ca19e047f9281055..2378178eca26b5187cb7c5b1106998e2bfc0c5de 100644 (file)
@@ -1,3 +1,12 @@
+2001-02-07  Tom Tromey  <tromey@redhat.com>
+
+       Fix for PR libgcj/1906:
+       * java/text/MessageFormat.java (setLocale): Use named class
+       literals.
+       (forName): Removed.
+       (format(Object,StringBuffer,FieldPosition)): Special case if
+       argument is an Object[].
+
 2001-02-07  Bryce McKinlay  <bryce@albatross.co.nz>
 
        * java/util/Arrays.java: Removed "cmp" methods.
index 7109fcf7d049685fa9b530ae0f36f082e062cd87..2cd6386a00cd5bf10b775d2a549ea544ef811d6a 100644 (file)
@@ -1,6 +1,6 @@
 // MessageFormat.java - Localized message formatting.
 
-/* Copyright (C) 1999  Free Software Foundation
+/* Copyright (C) 1999, 2001  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -45,19 +45,6 @@ final class MessageFormatElement
   // Text to follow this element.
   String trailer;
 
-  // FIXME: shouldn't need this.
-  Class forName (String name)
-    {
-      try
-       {
-         return Class.forName (name);
-       }
-      catch (ClassNotFoundException x)
-       {
-       }
-      return null;
-    }
-
   // Recompute the locale-based formatter.
   void setLocale (Locale loc)
     {
@@ -65,9 +52,7 @@ final class MessageFormatElement
        ;
       else if (type.equals("number"))
        {
-         // FIXME: named class literal.
-         // formatClass = Number.class;
-         formatClass = forName ("java.lang.Number");
+         formatClass = java.lang.Number.class;
 
          if (style == null)
            format = NumberFormat.getInstance(loc);
@@ -98,9 +83,7 @@ final class MessageFormatElement
        }
       else if (type.equals("time") || type.equals("date"))
        {
-         // FIXME: named class literal.
-         // formatClass = Date.class;
-         formatClass = forName ("java.util.Date");
+         formatClass = java.util.Date.class;
 
          int val = DateFormat.DEFAULT;
          if (style == null)
@@ -127,9 +110,7 @@ final class MessageFormatElement
        }
       else if (type.equals("choice"))
        {
-         // FIXME: named class literal.
-         // formatClass = Number.class;
-         formatClass = forName ("java.lang.Number");
+         formatClass = java.lang.Number.class;
 
          if (style == null)
            throw new
@@ -370,8 +351,19 @@ public class MessageFormat extends Format
   public final StringBuffer format (Object singleArg, StringBuffer appendBuf,
                                    FieldPosition ignore)
     {
-      Object[] args = new Object[1];
-      args[0] = singleArg;
+      Object[] args;
+
+      if (singleArg instanceof Object[])
+       {
+         // This isn't specified in any manual, but it follows the
+         // JDK implementation.
+         args = (Object[]) singleArg;
+       }
+      else
+       {
+         args = new Object[1];
+         args[0] = singleArg;
+       }
       return format (args, appendBuf, ignore);
     }