package org.herac.tuxguitar.util;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class TGClassLoader{
private static TGClassLoader instance;
private URLClassLoaderImpl classLoader;
private TGClassLoader(){
this.classLoader = new URLClassLoaderImpl();
}
public static TGClassLoader instance(){
if(instance == null){
instance = new TGClassLoader();
}
return instance;
}
public ClassLoader getClassLoader(){
return this.classLoader;
}
public Object newInstance(String loadClassName){
Object object = null;
try {
object = getClassLoader().loadClass(loadClassName).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return object;
}
public void addPath(String path){
try {
this.classLoader.addURL(new File(path).toURI().toURL());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public void addPaths(File folder){
if(folder != null && folder.exists() && folder.isDirectory()){
String[] files = folder.list();
for(int i = 0;i < files.length;i++){
try {
this.addPath( (folder.getAbsolutePath() + File.separator + files[i]) );
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
}
}
private class URLClassLoaderImpl extends URLClassLoader{
public URLClassLoaderImpl(){
super(new URL[]{},TGClassLoader.class.getClassLoader());
}
public void addURL(URL url){
super.addURL(url);
}
}
}