summaryrefslogtreecommitdiff
path: root/vm/reference/gnu
diff options
context:
space:
mode:
authorJeroen Frijters <jeroen@sumatra.nl>2006-08-17 07:43:55 +0000
committerJeroen Frijters <jeroen@sumatra.nl>2006-08-17 07:43:55 +0000
commit8aca770e8d35da673d8eb49f99ed69d9e4077aca (patch)
tree3c06eb2998e4ce5973b4ba6643c0028eff458389 /vm/reference/gnu
parent675e898a0056c41ccfc58afb5a2fa8eb6f680745 (diff)
downloadclasspath-8aca770e8d35da673d8eb49f99ed69d9e4077aca.tar.gz
2006-08-17 Jeroen Frijters <jeroen@frijters.net>
* gnu/java/rmi/server/RMIClassLoaderImpl.java (loadClass): Rewritten to use getClassLoader. (loadProxyClass): Implemented. (getClassLoader): Fixed support for null or empty codebase. * gnu/java/rmi/server/RMIObjectInputStream.java (resolveClass): Use user class loader as default class loader. (resolveProxyClass): Delegate to RMIClassLoader.loadProxyClass. * gnu/javax/rmi/CORBA/UtilDelegateImpl.java (loadClass): Simplified and use user class loader instead of context class loader as default. * java/io/ObjectInputStream.java (currentLoader): Use VMStackWalker.firstNonNullClassLoader(). * vm/reference/gnu/classpath/VMStackWalker.java (firstNonNullClassLoader): New method. * vm/reference/java/io/VMObjectInputStream.java (loaderAction, currentClassLoader): Removed.
Diffstat (limited to 'vm/reference/gnu')
-rw-r--r--vm/reference/gnu/classpath/VMStackWalker.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/vm/reference/gnu/classpath/VMStackWalker.java b/vm/reference/gnu/classpath/VMStackWalker.java
index e995c4634..2214e7571 100644
--- a/vm/reference/gnu/classpath/VMStackWalker.java
+++ b/vm/reference/gnu/classpath/VMStackWalker.java
@@ -1,5 +1,5 @@
/* VMStackWalker.java -- Reference implementation of VM hooks for stack access
- Copyright (C) 2005 Free Software Foundation
+ Copyright (C) 2005, 2006 Free Software Foundation
This file is part of GNU Classpath.
@@ -112,5 +112,20 @@ public final class VMStackWalker
* is here to work around access permissions.
*/
public static native ClassLoader getClassLoader(Class cl);
-}
+ /**
+ * Walk up the stack and return the first non-null class loader.
+ * If there aren't any non-null class loaders on the stack, return null.
+ */
+ public static ClassLoader firstNonNullClassLoader()
+ {
+ Class[] stack = getClassContext();
+ for (int i = 0; i < stack.length; i++)
+ {
+ ClassLoader loader = getClassLoader(stack[i]);
+ if (loader != null)
+ return loader;
+ }
+ return null;
+ }
+}