diff options
author | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2006-01-27 16:49:15 +0000 |
---|---|---|
committer | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2006-01-27 16:49:15 +0000 |
commit | a9a714b93b8eb507d7c0c2f59a830babbb77e8a0 (patch) | |
tree | bd2712ee3bb419b58d977c5410e6a02243e880f7 /vm | |
parent | ff9f845460c4d5f4820d87beab62c4bd96d6ad19 (diff) | |
download | classpath-a9a714b93b8eb507d7c0c2f59a830babbb77e8a0.tar.gz |
2006-01-27 Audrius Meskauskas <AudriusA@Bioinformatics.org>
PR 25520
* vm/reference/java/io/VMObjectInputStream.java (loaderAction.run):
If no user class loaders found on the stack, return the thread
context class loader. (currentClassLoader): Explained.
Diffstat (limited to 'vm')
-rw-r--r-- | vm/reference/java/io/VMObjectInputStream.java | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/vm/reference/java/io/VMObjectInputStream.java b/vm/reference/java/io/VMObjectInputStream.java index 93a42b1ca..5fb56fcd4 100644 --- a/vm/reference/java/io/VMObjectInputStream.java +++ b/vm/reference/java/io/VMObjectInputStream.java @@ -55,25 +55,36 @@ final class VMObjectInputStream } } - // PrivilegedAction needed for Class.getClassLoader() + /** + * PrivilegedAction needed for Class.getClassLoader() + */ private static PrivilegedAction loaderAction = new PrivilegedAction() + { + /** + * Returns the first user defined class loader on the call stack, or the + * context class loader of the current thread, when no non-null class loader + * was found. + */ + public Object run() { - public Object run() - { - Class[] ctx = VMStackWalker.getClassContext(); - for (int i = 0; i < ctx.length; i++) - { - ClassLoader cl = ctx[i].getClassLoader(); - if (cl != null) - return cl; - } - return null; - } + Class[] ctx = VMStackWalker.getClassContext(); + + for (int i = 0; i < ctx.length; i++) + { + ClassLoader cl = ctx[i].getClassLoader(); + if (cl != null) + return cl; + } + return Thread.currentThread().getContextClassLoader(); + } }; /** - * Returns the first user defined class loader on the call stack, or - * null when no non-null class loader was found. + * Returns the first user defined class loader on the call stack, or the + * context class loader of the current thread, when no non-null class loader + * was found. + * + * @return the class loader */ static ClassLoader currentClassLoader() { |