package com.constellio.app.services.extensions.plugins; import java.io.File; import java.io.IOException; import java.util.List; import com.constellio.app.services.extensions.plugins.pluginInfo.ConstellioPluginInfo; public interface PluginServices { ConstellioPluginInfo extractPluginInfo(File pluginJar) throws InvalidPluginJarException; PluginActivationFailureCause validatePlugin(ConstellioPluginInfo pluginInfo, ConstellioPluginInfo previousPluginInfo); void saveNewPlugin(File pluginsDirectory, File newPluginFile, String pluginCode) throws IOException; void replaceOldPluginVersionsByNewOnes(File pluginsDirectory, File oldVersionsDestinationDirectory) throws PluginsReplacementException; File getPluginJar(File pluginsDirectory, String pluginId); void extractPluginResources(File jar, String pluginId, File pluginsResources); static class PluginsReplacementException extends IOException { final List<String> pluginsWithReplacementExceptionIds; public PluginsReplacementException(List<String> pluginsWithReplacementExceptionIds) { this.pluginsWithReplacementExceptionIds = pluginsWithReplacementExceptionIds; } public List<String> getPluginsWithReplacementExceptionIds() { return pluginsWithReplacementExceptionIds; } } }