From: Tom Tromey Date: Mon, 25 Oct 2004 17:09:46 +0000 (+0000) Subject: ResourceBundle.java (tryBundle): Use Class.isAssignableFrom rather than catching... X-Git-Tag: releases/gcc-4.0.0~3758 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4cd26879f7580e057368bf872d2417764814f2ce;p=thirdparty%2Fgcc.git ResourceBundle.java (tryBundle): Use Class.isAssignableFrom rather than catching ClassCastException. * java/util/ResourceBundle.java (tryBundle): Use Class.isAssignableFrom rather than catching ClassCastException. From-SVN: r89542 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index f79c8f89396d..4dee1255019d 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2004-10-25 Tom Tromey + + * java/util/ResourceBundle.java (tryBundle): Use + Class.isAssignableFrom rather than catching ClassCastException. + 2004-10-25 Tom Tromey * gnu/java/text/WordBreakIterator.java (WordBreakIterator): Don't diff --git a/libjava/java/util/ResourceBundle.java b/libjava/java/util/ResourceBundle.java index 3299c6ff8250..a60471dcab5c 100644 --- a/libjava/java/util/ResourceBundle.java +++ b/libjava/java/util/ResourceBundle.java @@ -473,12 +473,18 @@ public abstract class ResourceBundle rbClass = Class.forName(localizedName); else rbClass = classloader.loadClass(localizedName); - bundle = (ResourceBundle) rbClass.newInstance(); + // Note that we do the check up front instead of catching + // ClassCastException. The reason for this is that some crazy + // programs (Eclipse) have classes that do not extend + // ResourceBundle but that have the same name as a property + // bundle; in fact Eclipse relies on ResourceBundle not + // instantiating these classes. + if (ResourceBundle.class.isAssignableFrom(rbClass)) + bundle = (ResourceBundle) rbClass.newInstance(); } catch (IllegalAccessException ex) {} catch (InstantiationException ex) {} catch (ClassNotFoundException ex) {} - catch (ClassCastException ex) {} if (bundle == null) {