package org.signalml.plugin.loader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.signalml.plugin.export.Plugin; /** * Plugin descriptor in Svarog. * * @author Stanislaw Findeisen (Eisenbits) */ public class PluginHead { /** List of plugins this one depends on. */ private ArrayList<PluginHead> dependencies = new ArrayList<PluginHead>(); private PluginDescription description; private PluginLoaderLo loader; /** Plugin object. */ private Plugin pluginFacade; protected PluginHead(PluginDescription desc) { this(desc, null, null); } protected PluginHead(PluginDescription desc, PluginLoaderLo ld, Plugin pluginObj) { if (desc == null) throw new IllegalArgumentException("desc is null!"); this.description = desc; this.loader = ld; this.pluginFacade = pluginObj; } protected void addDependency(PluginHead h) { dependencies.add(h); } protected List<PluginHead> getDependencies() { return Collections.unmodifiableList(dependencies); } protected PluginDescription getDescription() { return description; } protected boolean hasLoader() { return (null != loader); } protected PluginLoaderLo getLoader() { return loader; } protected void setLoader(PluginLoaderLo cl) { this.loader = cl; } public Plugin getPluginObj() { return pluginFacade; } protected void setPluginObj(Plugin p) { this.pluginFacade = p; } public boolean containsClass(String className) { if (loader == null) return false; return loader.hasLoaded(className); } public String toString() { return description.getName(); } }