From a4c6d37356fe4ba2dbbaf0dd72d0bb8c55c6baf5 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 7 Feb 2001 22:46:28 +0000 Subject: [PATCH] re PR libgcj/1906 (difference between gcj and jdk for MessageFormat) 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 | 9 ++++++ libjava/java/text/MessageFormat.java | 42 +++++++++++----------------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 28d6093abdc..2378178eca2 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2001-02-07 Tom Tromey + + 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 * java/util/Arrays.java: Removed "cmp" methods. diff --git a/libjava/java/text/MessageFormat.java b/libjava/java/text/MessageFormat.java index 7109fcf7d04..2cd6386a00c 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); } -- 2.30.2