diff options
author | Brian Carlstrom <bdc@google.com> | 2015-04-20 22:00:28 -0700 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2015-04-21 19:48:53 -0700 |
commit | 31ae6d22605a0967d722f935bc3a8b868ada4917 (patch) | |
tree | c52f58d7a6733df669c47be53f9fb7a5327f7d1f /luni | |
parent | d128a4cbeceef48b508ec076c536fb81f8a8b88f (diff) | |
download | libcore-31ae6d22605a0967d722f935bc3a8b868ada4917.zip libcore-31ae6d22605a0967d722f935bc3a8b868ada4917.tar.gz libcore-31ae6d22605a0967d722f935bc3a8b868ada4917.tar.bz2 |
Fix Class.forName(..., ..., null) to pass 068-classloader's testClassForName
This caused fallout elsewhere requiring
- Package fix to pass 005-annotations
- ObjectInputStream fix to pass 093-serialization
Change-Id: I6bc470e20fa177e8a3debe55c90a84eef7ef518e
Diffstat (limited to 'luni')
-rw-r--r-- | luni/src/main/java/java/io/ObjectInputStream.java | 5 | ||||
-rw-r--r-- | luni/src/main/java/java/lang/Package.java | 25 |
2 files changed, 17 insertions, 13 deletions
diff --git a/luni/src/main/java/java/io/ObjectInputStream.java b/luni/src/main/java/java/io/ObjectInputStream.java index 3a89b52..c588251 100644 --- a/luni/src/main/java/java/io/ObjectInputStream.java +++ b/luni/src/main/java/java/io/ObjectInputStream.java @@ -1977,7 +1977,7 @@ public class ObjectInputStream extends InputStream implements ObjectInput, Objec // original/outside caller if (++nestedLevels == 1) { // Remember the caller's class loader - callerClassLoader = VMStack.getClosestUserClassLoader(bootstrapLoader, systemLoader); + callerClassLoader = VMStack.getClosestUserClassLoader(); } result = readNonPrimitiveContent(unshared); @@ -2014,9 +2014,6 @@ public class ObjectInputStream extends InputStream implements ObjectInput, Objec return result; } - private static final ClassLoader bootstrapLoader = Object.class.getClassLoader(); - private static final ClassLoader systemLoader = ClassLoader.getSystemClassLoader(); - /** * Method to be overridden by subclasses to read the next object from the * source stream. diff --git a/luni/src/main/java/java/lang/Package.java b/luni/src/main/java/java/lang/Package.java index 7e30883..cff01b9 100644 --- a/luni/src/main/java/java/lang/Package.java +++ b/luni/src/main/java/java/lang/Package.java @@ -96,7 +96,14 @@ public class Package implements AnnotatedElement { */ public Annotation[] getAnnotations() { try { - Class<?> c = Class.forName(getName() + ".package-info"); + ClassLoader classLoader = VMStack.getCallingClassLoader(); + if (classLoader == null) { + classLoader = ClassLoader.getSystemClassLoader(); + } + Class<?> c = Class.forName(getName() + ".package-info", + // TODO: It is unclear if we need to initialize here. + true, + classLoader); return c.getAnnotations(); } catch (Exception ex) { return NO_ANNOTATIONS; @@ -175,11 +182,11 @@ public class Package implements AnnotatedElement { * @see ClassLoader#getPackage(java.lang.String) */ public static Package getPackage(String packageName) { - ClassLoader classloader = VMStack.getCallingClassLoader(); - if (classloader == null) { - classloader = ClassLoader.getSystemClassLoader(); + ClassLoader classLoader = VMStack.getCallingClassLoader(); + if (classLoader == null) { + classLoader = ClassLoader.getSystemClassLoader(); } - return classloader.getPackage(packageName); + return classLoader.getPackage(packageName); } /** @@ -189,11 +196,11 @@ public class Package implements AnnotatedElement { * @see ClassLoader#getPackages */ public static Package[] getPackages() { - ClassLoader classloader = VMStack.getCallingClassLoader(); - if (classloader == null) { - classloader = ClassLoader.getSystemClassLoader(); + ClassLoader classLoader = VMStack.getCallingClassLoader(); + if (classLoader == null) { + classLoader = ClassLoader.getSystemClassLoader(); } - return classloader.getPackages(); + return classLoader.getPackages(); } /** |