package ragefist.extension;
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* Created by Andrey Cherkashin (acherkashin)
* http://acherkashin.me
*
* License
* Copyright (c) 2015 Andrey Cherkashin
* The project released under the MIT license: http://opensource.org/licenses/MIT
*/
/**
* @author acherkashin
*/
public class ExtensionLoader
{
public static Extension load(String name) {
Class<?> extensionClass;
try {
extensionClass = Class.forName("ragefist.extension."+name+".ExtensionHandler");
} catch (ClassNotFoundException ex) {
Logger.getLogger(ExtensionLoader.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
Class<? extends Extension> extensionMainClass;
try {
extensionMainClass = extensionClass.asSubclass(Extension.class);
} catch(ClassCastException ex) {
Logger.getLogger(ExtensionLoader.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
try {
return extensionMainClass.newInstance();
} catch (InstantiationException | IllegalAccessException ex) {
Logger.getLogger(ExtensionLoader.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}