diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-11-03 03:15:10 +0000 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-11-03 16:30:52 -0400 |
commit | 49dd2ae144ccc23e33d5a109a9036e296a465e08 (patch) | |
tree | b44acd221294ad7604ab62b5be9900aeb050da48 /nailgun_launcher/CbtURLClassLoader.java | |
parent | 4c9ad1100fc8b2436d3924c45f9cda0f697f318b (diff) | |
download | cbt-49dd2ae144ccc23e33d5a109a9036e296a465e08.tar.gz cbt-49dd2ae144ccc23e33d5a109a9036e296a465e08.tar.bz2 cbt-49dd2ae144ccc23e33d5a109a9036e296a465e08.zip |
fix file name casing to match class
Diffstat (limited to 'nailgun_launcher/CbtURLClassLoader.java')
-rw-r--r-- | nailgun_launcher/CbtURLClassLoader.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/nailgun_launcher/CbtURLClassLoader.java b/nailgun_launcher/CbtURLClassLoader.java new file mode 100644 index 0000000..38fc905 --- /dev/null +++ b/nailgun_launcher/CbtURLClassLoader.java @@ -0,0 +1,59 @@ +package cbt; +import java.io.*; +import java.net.*; +import java.util.*; +import static cbt.Stage0Lib.*; +import java.util.concurrent.ConcurrentHashMap; +public class CbtURLClassLoader extends java.net.URLClassLoader{ + public String toString(){ + return ( + super.toString() + + "(\n " + + Arrays.toString(getURLs()) + + ",\n " + + join("\n ",(getParent() == null?"":getParent().toString()).split("\n")) + + "\n)" + ); + } + ClassLoaderCache2<Class> cache = new ClassLoaderCache2<Class>( + new ConcurrentHashMap<String, Object>(), + new ConcurrentHashMap<Object, Class>() + ); + public Class loadClass(String name) throws ClassNotFoundException{ + Class _class = super.loadClass(name); + if(_class == null) throw new ClassNotFoundException(name); + else return _class; + } + public Class loadClass(String name, Boolean resolve) throws ClassNotFoundException{ + //System.out.println("loadClass("+name+") on \n"+this); + if(!cache.contains(name)) + try{ + cache.put(super.loadClass(name, resolve), name); + } catch (ClassNotFoundException e){ + cache.put(Object.class, name); + } + Class _class = cache.get(name); + if(_class == Object.class){ + if( name == "java.lang.Object" ) + return Object.class; + else return null; + } else { + return _class; + } + } + void assertExist(URL[] urls){ + for(URL url: urls){ + if(!new File(url.getPath()).exists()){ + throw new AssertionError("File does not exist when trying to create CbtURLClassLoader: "+url); + } + } + } + public CbtURLClassLoader(URL[] urls, ClassLoader parent){ + super(urls, parent); + assertExist(urls); + } + public CbtURLClassLoader(URL[] urls){ + super(urls, null); + assertExist(urls); + } +}
\ No newline at end of file |