PatchSet 4928 
Date: 2004/07/11 13:33:16
Author: hkraemer
Branch: HEAD
Tag: (none) 
Log:
small fix for Thread and ResourceBundle

Members: 
        ChangeLog:1.2493->1.2494 
        libraries/javalib/java/lang/Package.java:1.5->1.6 
        libraries/javalib/java/lang/Thread.java:1.45->1.46 
        libraries/javalib/java/util/ResourceBundle.java:1.19->1.20 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2493 kaffe/ChangeLog:1.2494
--- kaffe/ChangeLog:1.2493      Sun Jul 11 08:54:16 2004
+++ kaffe/ChangeLog     Sun Jul 11 13:33:16 2004
@@ -1,3 +1,16 @@
+2004-07-11  Helmer Kraemer  <[EMAIL PROTECTED]>
+
+       * libraries/javalib/java/lang/Package.java (getPackage, getPackages):
+       directly call kaffe.lang.ThreadStack
+       (getCallingClassLoader): removed
+
+       * libraries/javalib/java/lang/Thread.java (setContextClassLoader):
+       call system's SecurityManager instead of AccessController in order to
+       check permission
+
+       * libraries/javalib/java/util/ResourceBundle.java (getBundle):
+       use kaffe.lang.ThreadStack to get caller's classloader
+
 2004-07-10  Guilhem Lavaux <[EMAIL PROTECTED]>
        
        * configure.ac: Check whether we are using GLIBC 2.1 or 2.2.
Index: kaffe/libraries/javalib/java/lang/Package.java
diff -u kaffe/libraries/javalib/java/lang/Package.java:1.5 
kaffe/libraries/javalib/java/lang/Package.java:1.6
--- kaffe/libraries/javalib/java/lang/Package.java:1.5  Sat Jun 28 18:06:41 2003
+++ kaffe/libraries/javalib/java/lang/Package.java      Sun Jul 11 13:33:25 2004
@@ -53,16 +53,6 @@
                this.sealBase = sealBase;
        }
 
-       private static ClassLoader getCallingClassLoader() {
-               /* We go two steps down the stack,
-                * since getCallingClassLoader() is supposed to be called
-                * by methods from Package, so we need to skip over them.
-                * Otherwise, we would just be getting the same ClassLoader
-                * that loaded Package all the time.
-                */
-               return ThreadStack.getCallersClassLoader(true);
-       }
-
        public String getImplementationTitle() {
                return implTitle;
        }
@@ -80,11 +70,11 @@
        }
 
        public static Package getPackage(String pname) {
-               return getCallingClassLoader().getPackage(pname);
+               return ThreadStack.getCallersClassLoader(true).getPackage(pname);
        }
 
        public static Package [] getPackages() {
-               return getCallingClassLoader().getPackages();
+               return ThreadStack.getCallersClassLoader(true).getPackages();
        }
 
        public String getSpecificationTitle() {
Index: kaffe/libraries/javalib/java/lang/Thread.java
diff -u kaffe/libraries/javalib/java/lang/Thread.java:1.45 
kaffe/libraries/javalib/java/lang/Thread.java:1.46
--- kaffe/libraries/javalib/java/lang/Thread.java:1.45  Mon Mar 22 11:24:47 2004
+++ kaffe/libraries/javalib/java/lang/Thread.java       Sun Jul 11 13:33:25 2004
@@ -10,7 +10,6 @@
 
 package java.lang;
 
-import java.security.AccessController;
 import java.util.HashMap;
 import java.util.Iterator;
 
@@ -479,7 +478,9 @@
 }
 
 public void setContextClassLoader(ClassLoader cl) {
-       AccessController.checkPermission(sccl);
+       SecurityManager sm = System.getSecurityManager ();
+       if (sm != null)
+               sm.checkPermission (sccl);
        context = cl;
 }
 
Index: kaffe/libraries/javalib/java/util/ResourceBundle.java
diff -u kaffe/libraries/javalib/java/util/ResourceBundle.java:1.19 
kaffe/libraries/javalib/java/util/ResourceBundle.java:1.20
--- kaffe/libraries/javalib/java/util/ResourceBundle.java:1.19  Tue Jun 15 18:42:53 
2004
+++ kaffe/libraries/javalib/java/util/ResourceBundle.java       Sun Jul 11 13:33:26 
2004
@@ -105,48 +105,6 @@
   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();
-        }
-      }
-    );
-
-  /**
    * The resource bundle cache. This is a two-level hash map: The key
    * is the class loader, the value is a new HashMap. The key of this
    * second hash map is the localized name, the value is a soft
@@ -265,7 +223,7 @@
   public static final ResourceBundle getBundle(String baseName)
   {
     return getBundle(baseName, Locale.getDefault(),
-                     security.getCallingClassLoader());
+                     kaffe.lang.ThreadStack.getCallersClassLoader(true));
   }
 
   /**
@@ -283,7 +241,7 @@
   public static final ResourceBundle getBundle(String baseName,
                                                Locale locale)
   {
-    return getBundle(baseName, locale, security.getCallingClassLoader());
+    return getBundle(baseName, locale, 
kaffe.lang.ThreadStack.getCallersClassLoader(true));
   }
 
   /**

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to