Minor style fixes in ParentLastURLClassLoader

This commit is contained in:
Alexander Udalov
2014-12-17 20:15:46 +03:00
parent 0401b65ae4
commit 865b663015
@@ -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);
} }