summaryrefslogtreecommitdiffstats
path: root/luni
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2015-04-20 22:00:28 -0700
committerBrian Carlstrom <bdc@google.com>2015-04-21 19:48:53 -0700
commit31ae6d22605a0967d722f935bc3a8b868ada4917 (patch)
treec52f58d7a6733df669c47be53f9fb7a5327f7d1f /luni
parentd128a4cbeceef48b508ec076c536fb81f8a8b88f (diff)
downloadlibcore-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.java5
-rw-r--r--luni/src/main/java/java/lang/Package.java25
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();
}
/**