summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAudrius Meskauskas <audriusa@Bioinformatics.org>2006-01-27 16:49:15 +0000
committerAudrius Meskauskas <audriusa@Bioinformatics.org>2006-01-27 16:49:15 +0000
commita9a714b93b8eb507d7c0c2f59a830babbb77e8a0 (patch)
treebd2712ee3bb419b58d977c5410e6a02243e880f7
parentff9f845460c4d5f4820d87beab62c4bd96d6ad19 (diff)
downloadclasspath-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.
-rw-r--r--ChangeLog7
-rw-r--r--vm/reference/java/io/VMObjectInputStream.java39
2 files changed, 32 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 7f2b039f2..74e361941 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
2006-01-27 Roman Kennke <kennke@aicas.com>
* java/awt/Container.java
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()
{