PropertyPermission.java: New version from classpath

2003-04-29  Michael Koch  <konqueror@gmx.de>

	* java/util/PropertyPermission.java:
	New version from classpath
	* java/util/ResourceBundle.java:
	Partly merged from classpath
	(getObject): Reformated.
	(tryBundle): Set foundBundle = null if no bundle found.

From-SVN: r66214
This commit is contained in:
Michael Koch 2003-04-29 11:36:34 +00:00 committed by Michael Koch
parent cac9b0bcb1
commit fbba7d6850
3 changed files with 40 additions and 6 deletions

View file

@ -121,7 +121,7 @@ public final class PropertyPermission extends BasicPermission
super(name);
if (actions == null)
throw new IllegalArgumentException();
setActions(actions.toLowerCase());
setActions(actions);
}
/**
@ -134,14 +134,37 @@ public final class PropertyPermission extends BasicPermission
*/
private void setActions(String str)
{
// Initialising the class java.util.Locale ...
// tries to initialise the Locale.defaultLocale static
// which calls System.getProperty,
// which calls SecurityManager.checkPropertiesAccess,
// which creates a PropertyPermission with action "read,write",
// which calls setActions("read,write").
// If we now were to call toLowerCase on 'str',
// this would call Locale.getDefault() which returns null
// because Locale.defaultLocale hasn't been set yet
// then toLowerCase will fail with a null pointer exception.
//
// The solution is to take a punt on 'str' being lower case, and
// test accordingly. If that fails, we convert 'str' to lower case
// and try the tests again.
if ("read".equals(str))
actions = READ;
else if ("write".equals(str))
actions = WRITE;
else if ("read,write".equals(str) || "write,read".equals(str))
actions = READ | WRITE;
else
throw new IllegalArgumentException("illegal action " + str);
else {
String lstr = str.toLowerCase();
if ("read".equals(lstr))
actions = READ;
else if ("write".equals(lstr))
actions = WRITE;
else if ("read,write".equals(lstr) || "write,read".equals(lstr))
actions = READ | WRITE;
else
throw new IllegalArgumentException("illegal action " + str);
}
}
/**

View file

@ -1,5 +1,5 @@
/* ResourceBundle -- aids in loading resource bundles
Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -182,8 +182,9 @@ public abstract class ResourceBundle
catch (MissingResourceException ex)
{
}
throw new MissingResourceException("Key not found",
getClass().getName(), key);
throw new MissingResourceException("Key not found", getClass().getName(),
key);
}
/**
@ -470,6 +471,7 @@ public abstract class ResourceBundle
catch (Exception ex)
{
// ignore them all
foundBundle = null;
}
if (foundBundle == null)
{