Makefile.in: Rebuilt.

* Makefile.in: Rebuilt.
	* Makefile.am (nat_source_files): Added natVMSecurityManager,
	natResourceBundle.
	* java/util/ResourceBundle.java (Security): Removed.
	(getCallingClassLoader): Now native.
	* java/util/natResourceBundle.cc: New file.
	* java/lang/natVMSecurityManager.cc: New file.
	* java/lang/VMSecurityManager.java (getClassContext): Now native.

From-SVN: r59840
This commit is contained in:
Tom Tromey 2002-12-05 00:49:30 +00:00 committed by Tom Tromey
parent 67f1b90611
commit 76508852a0
8 changed files with 121 additions and 59 deletions

View file

@ -42,8 +42,6 @@ import java.lang.ref.Reference;
import java.lang.ref.SoftReference;
import java.io.InputStream;
import java.io.IOException;
import java.security.AccessController;
import java.security.PrivilegedAction;
import gnu.classpath.Configuration;
/**
@ -105,44 +103,7 @@ public abstract class ResourceBundle
*/
private Locale locale;
/**
* We override SecurityManager in order to access getClassContext().
*/
private static final class Security extends SecurityManager
{
/**
* Avoid accessor method of private constructor.
*/
Security()
{
}
/**
* Return the ClassLoader of the class which called into this
* ResourceBundle, or null if it cannot be determined.
*/
ClassLoader getCallingClassLoader()
{
Class[] stack = getClassContext();
for (int i = 0; i < stack.length; i++)
if (stack[i] != Security.class && stack[i] != ResourceBundle.class)
return stack[i].getClassLoader();
return null;
}
}
/** A security context for grabbing the correct class loader. */
private static final Security security
= (Security) AccessController.doPrivileged(new PrivilegedAction()
{
// This will always work since java.util classes have (all) system
// permissions.
public Object run()
{
return new Security();
}
}
);
private static native ClassLoader getCallingClassLoader();
/**
* The resource bundle cache. This is a two-level hash map: The key
@ -256,7 +217,7 @@ public abstract class ResourceBundle
public static final ResourceBundle getBundle(String baseName)
{
return getBundle(baseName, Locale.getDefault(),
security.getCallingClassLoader());
getCallingClassLoader());
}
/**
@ -274,7 +235,7 @@ public abstract class ResourceBundle
public static final ResourceBundle getBundle(String baseName,
Locale locale)
{
return getBundle(baseName, locale, security.getCallingClassLoader());
return getBundle(baseName, locale, getCallingClassLoader());
}
/**