}
}
public void addPlugin(String name, T plugin) {
if (name == null || name.trim().length() == 0) {
throw new PluginException("Null, empty or whitespace argument: name");
}
if (plugin == null) {
throw new IllegalArgumentException("Null argument: plugin");
}
if (!type.isAssignableFrom(plugin.getClass())) {
throw new PluginException("Plugin does not implement its plugin type. Plugin \"" + name + "\" of type " + type.getName());
}
PluginEntry<T> newEntry = new PluginEntry<T>(name, plugin);
for (PluginEntry entry : plugins) {
if (entry.equals(newEntry)) {
throw new PluginException("This plugin instance is already registered. Plugin \"" + name + "\" of type " + type.getName());
}
if (entry.name.equals(newEntry.name)) {
throw new PluginException("There is already another plugin registered with this name: \"" + name + "\".");
}
}
plugins.add(newEntry);