package org.agnitas.emm.extension; import java.io.IOException; import java.io.InputStream; import java.util.Collection; import java.util.ResourceBundle; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.PageContext; import org.agnitas.emm.extension.data.PluginDetail; import org.agnitas.emm.extension.data.PluginStatusReport; import org.agnitas.emm.extension.exceptions.DatabaseScriptException; import org.agnitas.emm.extension.exceptions.ExtensionException; import org.agnitas.emm.extension.exceptions.MissingPluginManifestException; import org.agnitas.emm.extension.exceptions.PluginInstantiationException; import org.agnitas.emm.extension.exceptions.RemovingSystemPluginNotAllowedException; import org.agnitas.emm.extension.exceptions.UnknownPluginException; import org.agnitas.emm.extension.util.I18NResourceBundle; import org.java.plugin.JpfException; import org.java.plugin.PluginLifecycleException; import org.java.plugin.registry.Extension; import org.springframework.context.ApplicationContext; public interface ExtensionSystem { /** * Invoke extension registered on a JSP extension point. * * @param pluginName name of the plugin, where the extension point is defined in. * @param extensionPointName name of the extension point * @param pageContext PageContext from JSP tag */ public abstract void invokeJspExtension(String pluginName, String extensionPointName, PageContext pageContext); /** * Invoke EmmFeatureExtension. * * @param pluginId ID of the plugin * @param context ApplicationContext of Spring for accessing EMM's DAOs and services. * @param request servlet request * @param response servlet response * * @throws PluginInstantiationException on errors creating plugin instance * @throws ExtensionException on errors during executing of the feature plugin * @throws UnknownPluginException when specified plugin is unknown */ // TODO: Uses ApplicationContext in parameter list. PoC only! public abstract void invokeFeatureExtension(String pluginId, ApplicationContext context, HttpServletRequest request, HttpServletResponse response) throws PluginInstantiationException, ExtensionException, UnknownPluginException; /** * Invoke setup of EmmFeatureExtension. * * @param pluginId ID of the plugin * @param context ApplicationContext of Spring for accessing EMM's DAOs and services. * @param request servlet request * @param response servlet response * * @throws PluginInstantiationException on errors creating plugin instance * @throws ExtensionException on errors during executing of the feature plugin * @throws UnknownPluginException when specified plugin is unknown */ // TODO: Uses ApplicationContext in parameter list. PoC only! public abstract void invokeFeatureSetupExtension(String pluginId, ApplicationContext context, HttpServletRequest request, HttpServletResponse response) throws PluginInstantiationException, ExtensionException, UnknownPluginException; public abstract Collection<Extension> getActiveExtensions(String plugin, String extensionPoint); public abstract InputStream getPluginResource(String plugin, String resource); public abstract I18NResourceBundle getPluginI18NResourceBundle(String plugin); public abstract ResourceBundle getPluginResourceBundle(String plugin, String bundleName); public abstract Extension getExtension(String plugin, String extension); public abstract PluginStatusReport getPluginStatusReport(); public abstract PluginDetail getPluginDetails(String pluginID) throws UnknownPluginException; public abstract void activatePluginForStartup(String pluginId) throws PluginLifecycleException; public abstract void deactivatePluginForStartup(String pluginId); public abstract void installPlugin(String pluginFilename) throws MissingPluginManifestException, IOException, PluginLifecycleException, JpfException, DatabaseScriptException; public abstract void uninstallPlugin(String pluginID) throws RemovingSystemPluginNotAllowedException; public abstract boolean isSystemPlugin( String pluginID); }