diff options
-rw-r--r-- | libjava/ChangeLog | 9 | ||||
-rw-r--r-- | libjava/java/text/MessageFormat.java | 42 |
2 files changed, 26 insertions, 25 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 28d6093..2378178 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -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. diff --git a/libjava/java/text/MessageFormat.java b/libjava/java/text/MessageFormat.java index 7109fcf..2cd6386 100644 --- a/libjava/java/text/MessageFormat.java +++ b/libjava/java/text/MessageFormat.java @@ -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); } |