in taverna-plugin-impl/src/main/java/org/apache/taverna/plugin/impl/PluginManagerImpl.java [163:197]
public Plugin installPlugin(Path pluginFile) throws PluginException {
File file = pluginFile.toFile();
// check if already installed
synchronized (installedPlugins) {
for (Plugin plugin : installedPlugins.values()) {
if (plugin.getFile().equals(file)) {
return plugin;
}
}
// check plugin file
if (file.exists()) {
new PluginException(String.format("Plugin file %1$s does not exist", file));
}
if (file.isFile()) {
new PluginException(String.format("Plugin file %1$s is not a file", file));
}
if (!file.canRead()) {
new PluginException(String.format("Plugin file %1$s is not readable", file));
}
// install plugin from plugin file
logger.info(String.format("Installing plugin from '%s'", file));
JarFile jarFile;
try {
jarFile = new JarFile(file);
} catch (IOException e) {
throw new PluginException(String.format("Error reading plugin file %1$s",
file), e);
}
Plugin plugin = installPlugin(jarFile);
installedPlugins.put(plugin.getId(), plugin);
availablePlugins.remove(plugin.getId());
postEvent(PluginManager.PLUGIN_INSTALLED);
return plugin;
}
}