Minor style fixes in ParentLastURLClassLoader
This commit is contained in:
+12
-7
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin;
|
package org.jetbrains.kotlin.gradle.plugin;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
@@ -11,11 +12,13 @@ import java.util.List;
|
|||||||
* This takes a fair bit of doing because java really prefers parent-first.
|
* This takes a fair bit of doing because java really prefers parent-first.
|
||||||
* <p/>
|
* <p/>
|
||||||
* For those not familiar with class loading trickery, be wary
|
* For those not familiar with class loading trickery, be wary
|
||||||
|
*
|
||||||
|
* http://stackoverflow.com/questions/5445511/how-do-i-create-a-parent-last-child-first-classloader-in-java-or-how-to-overr
|
||||||
*/
|
*/
|
||||||
public class ParentLastURLClassLoader extends ClassLoader {
|
public class ParentLastURLClassLoader extends ClassLoader {
|
||||||
private ChildURLClassLoader childClassLoader;
|
private final ChildURLClassLoader childClassLoader;
|
||||||
|
|
||||||
public ParentLastURLClassLoader(List<URL> classpath, ClassLoader parent) {
|
public ParentLastURLClassLoader(@NotNull List<URL> classpath, @Nullable ClassLoader parent) {
|
||||||
super(Thread.currentThread().getContextClassLoader());
|
super(Thread.currentThread().getContextClassLoader());
|
||||||
|
|
||||||
URL[] urls = classpath.toArray(new URL[classpath.size()]);
|
URL[] urls = classpath.toArray(new URL[classpath.size()]);
|
||||||
@@ -28,7 +31,8 @@ public class ParentLastURLClassLoader extends ClassLoader {
|
|||||||
try {
|
try {
|
||||||
// first we try to find a class inside the child classloader
|
// first we try to find a class inside the child classloader
|
||||||
return childClassLoader.findClass(name);
|
return childClassLoader.findClass(name);
|
||||||
} catch (ClassNotFoundException e) {
|
}
|
||||||
|
catch (ClassNotFoundException e) {
|
||||||
// didn't find it, try the parent
|
// didn't find it, try the parent
|
||||||
return super.loadClass(name, resolve);
|
return super.loadClass(name, resolve);
|
||||||
}
|
}
|
||||||
@@ -38,7 +42,7 @@ public class ParentLastURLClassLoader extends ClassLoader {
|
|||||||
* This class allows me to call findClass on a classloader
|
* This class allows me to call findClass on a classloader
|
||||||
*/
|
*/
|
||||||
private static class FindClassClassLoader extends ClassLoader {
|
private static class FindClassClassLoader extends ClassLoader {
|
||||||
public FindClassClassLoader(ClassLoader parent) {
|
public FindClassClassLoader(@Nullable ClassLoader parent) {
|
||||||
super(parent);
|
super(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,9 +58,9 @@ public class ParentLastURLClassLoader extends ClassLoader {
|
|||||||
* We need this because findClass is protected in URLClassLoader
|
* We need this because findClass is protected in URLClassLoader
|
||||||
*/
|
*/
|
||||||
public static class ChildURLClassLoader extends URLClassLoader {
|
public static class ChildURLClassLoader extends URLClassLoader {
|
||||||
private FindClassClassLoader realParent;
|
private final FindClassClassLoader realParent;
|
||||||
|
|
||||||
public ChildURLClassLoader(URL[] urls, FindClassClassLoader realParent) {
|
public ChildURLClassLoader(@NotNull URL[] urls, @NotNull FindClassClassLoader realParent) {
|
||||||
super(urls, null);
|
super(urls, null);
|
||||||
|
|
||||||
this.realParent = realParent;
|
this.realParent = realParent;
|
||||||
@@ -73,7 +77,8 @@ public class ParentLastURLClassLoader extends ClassLoader {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
return super.findClass(name);
|
return super.findClass(name);
|
||||||
} catch (ClassNotFoundException e) {
|
}
|
||||||
|
catch (ClassNotFoundException e) {
|
||||||
// if that fails, we ask our real parent classloader to load the class (we give up)
|
// if that fails, we ask our real parent classloader to load the class (we give up)
|
||||||
return realParent.loadClass(name);
|
return realParent.loadClass(name);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user