Runtime.java, [...]: Replaced java.lang.Runtime.securityManager by java.lang.Security...
authorMichael Koch <konqueror@gmx.de>
Mon, 25 Apr 2005 20:35:17 +0000 (20:35 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Mon, 25 Apr 2005 20:35:17 +0000 (20:35 +0000)
2005-04-25  Michael Koch  <konqueror@gmx.de>

* java/lang/Runtime.java,
java/lang/SecurityManager.java,
java/lang/System.java,
java/lang/ThreadGroup.java:
Replaced java.lang.Runtime.securityManager by
java.lang.SecurityManager.current (as used in GNU classpath).

From-SVN: r98738

libjava/ChangeLog
libjava/java/lang/Runtime.java
libjava/java/lang/SecurityManager.java
libjava/java/lang/System.java
libjava/java/lang/ThreadGroup.java

index a5ead7c..36a2165 100644 (file)
@@ -1,3 +1,12 @@
+2005-04-25  Michael Koch  <konqueror@gmx.de>
+
+       * java/lang/Runtime.java,
+       java/lang/SecurityManager.java,
+       java/lang/System.java,
+       java/lang/ThreadGroup.java:
+       Replaced java.lang.Runtime.securityManager by
+       java.lang.SecurityManager.current (as used in GNU classpath).
+
 2005-04-25  David Gilbert  <david.gilbert@object-refinery.com>
 
        * java/awt/Transparency.java
index 858b331..7a0c598 100644 (file)
@@ -65,14 +65,6 @@ public class Runtime
    */
   private final String[] libpath;
 
-  /**
-   * The current security manager. This is located here instead of in
-   * System, to avoid security problems, as well as bootstrap issues.
-   * Make sure to access it in a thread-safe manner; it is package visible
-   * to avoid overhead in java.lang.
-   */
-  static SecurityManager securityManager;
-
   static
   {
     init();
@@ -151,7 +143,7 @@ public class Runtime
    */
   public void exit(int status)
   {
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkExit(status);
     boolean first = false;
@@ -279,7 +271,7 @@ public class Runtime
    */
   public void addShutdownHook(Thread hook)
   {
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkPermission(new RuntimePermission("shutdownHooks"));
     if (hook.isAlive() || hook.getThreadGroup() == null)
@@ -313,7 +305,7 @@ public class Runtime
    */
   public boolean removeShutdownHook(Thread hook)
   {
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkPermission(new RuntimePermission("shutdownHooks"));
     synchronized (libpath)
@@ -340,7 +332,7 @@ public class Runtime
    */
   public void halt(int status)
   {
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkExit(status);
     exitInternal(status);
@@ -364,7 +356,7 @@ public class Runtime
    */
   public static void runFinalizersOnExit(boolean finalizeOnExit)
   {
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkExit(0);
     current.finalizeOnExit = finalizeOnExit;
@@ -494,7 +486,7 @@ public class Runtime
   public Process exec(String[] cmd, String[] env, File dir)
     throws IOException
   {
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkExec(cmd[0]);
     return execInternal(cmd, env, dir);
@@ -581,7 +573,7 @@ public class Runtime
    */
   public void load(String filename)
   {
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkLink(filename);
     _load(filename, false);
@@ -611,7 +603,7 @@ public class Runtime
   {
     // This is different from the Classpath implementation, but I
     // believe it is more correct.
-    SecurityManager sm = securityManager; // Be thread-safe!
+    SecurityManager sm = SecurityManager.current; // Be thread-safe!
     if (sm != null)
       sm.checkLink(libname);
     _load(libname, true);
index 350439e..387a8a9 100644 (file)
@@ -126,6 +126,14 @@ import java.util.PropertyPermission;
 public class SecurityManager
 {
   /**
+   * The current security manager. This is located here instead of in
+   * System, to avoid security problems, as well as bootstrap issues.
+   * Make sure to access it in a thread-safe manner; it is package visible
+   * to avoid overhead in java.lang.
+   */
+  static volatile SecurityManager current;
+
+  /**
    * Tells whether or not the SecurityManager is currently performing a
    * security check.
    * @deprecated Use {@link #checkPermission(Permission)} instead.
index b621f26..8632d0b 100644 (file)
@@ -120,7 +120,7 @@ public final class System
    */
   public static void setIn(InputStream in)
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPermission(new RuntimePermission("setIO"));
     setIn0(in);
@@ -137,7 +137,7 @@ public final class System
    */
   public static void setOut(PrintStream out)
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPermission(new RuntimePermission("setIO"));
     
@@ -155,7 +155,7 @@ public final class System
    */
   public static void setErr(PrintStream err)
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPermission(new RuntimePermission("setIO"));
     setErr0(err);
@@ -180,10 +180,10 @@ public final class System
     // Implementation note: the field lives in Runtime because of bootstrap
     // initialization issues. This method is synchronized so that no other
     // thread changes it to null before this thread makes the change.
-    if (Runtime.securityManager != null)
-      Runtime.securityManager.checkPermission
+    if (SecurityManager.current != null)
+      SecurityManager.current.checkPermission
         (new RuntimePermission("setSecurityManager"));
-    Runtime.securityManager = sm;
+    SecurityManager.current = sm;
   }
 
   /**
@@ -196,7 +196,7 @@ public final class System
   {
     // Implementation note: the field lives in Runtime because of bootstrap
     // initialization issues.
-    return Runtime.securityManager;
+    return SecurityManager.current;
   }
 
   /**
@@ -309,7 +309,7 @@ public final class System
    */
   public static Properties getProperties()
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPropertiesAccess();
     return SystemProperties.getProperties();
@@ -326,7 +326,7 @@ public final class System
    */
   public static void setProperties(Properties properties)
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPropertiesAccess();
     SystemProperties.setProperties(properties);
@@ -344,7 +344,7 @@ public final class System
    */
   public static String getProperty(String key)
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPropertyAccess(key);
     else if (key.length() == 0)
@@ -365,7 +365,7 @@ public final class System
    */
   public static String getProperty(String key, String def)
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPropertyAccess(key);
     return SystemProperties.getProperty(key, def);
@@ -385,7 +385,7 @@ public final class System
    */
   public static String setProperty(String key, String value)
   {
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPermission(new PropertyPermission(key, "write"));
     return SystemProperties.setProperty(key, value);
@@ -407,7 +407,7 @@ public final class System
   {
     if (name == null)
       throw new NullPointerException();
-    SecurityManager sm = Runtime.securityManager; // Be thread-safe.
+    SecurityManager sm = SecurityManager.current; // Be thread-safe.
     if (sm != null)
       sm.checkPermission(new RuntimePermission("getenv." + name));
     return getenv0(name);
index 0464767..30a6e14 100644 (file)
@@ -263,7 +263,7 @@ public class ThreadGroup
   public final void checkAccess()
   {
     // Bypass System.getSecurityManager, for bootstrap efficiency.
-    SecurityManager sm = Runtime.securityManager;
+    SecurityManager sm = SecurityManager.current;
     if (sm != null)
       sm.checkAccess(this);
   }