blob: d8fe0f851c93920509ad51ebef0320f253a849c1 [file] [log] [blame]
/*
* Copyright 2014 gitblit.com.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.manager;
import java.io.IOException;
import java.util.List;
import ro.fortsoft.pf4j.PluginState;
import ro.fortsoft.pf4j.PluginWrapper;
import ro.fortsoft.pf4j.Version;
import com.gitblit.models.PluginRegistry.InstallState;
import com.gitblit.models.PluginRegistry.PluginRegistration;
import com.gitblit.models.PluginRegistry.PluginRelease;
public interface IPluginManager extends IManager {
/**
* Returns the system version.
*
* @return the system version
* @since 1.5.0
*/
Version getSystemVersion();
/**
* Starts all plugins.
* @since 1.5.0
*/
void startPlugins();
/**
* Stops all plugins.
* @since 1.5.0
*/
void stopPlugins();
/**
* Starts the specified plugin.
*
* @param pluginId
* @return the state of the plugin
* @since 1.5.0
*/
PluginState startPlugin(String pluginId);
/**
* Stops the specified plugin.
*
* @param pluginId
* @return the state of the plugin
* @since 1.5.0
*/
PluginState stopPlugin(String pluginId);
/**
* Returns the list of extensions the plugin provides.
*
* @param type
* @return a list of extensions the plugin provides
* @since 1.5.0
*/
List<Class<?>> getExtensionClasses(String pluginId);
/**
* Returns the list of extension instances for a given extension point.
*
* @param type
* @return a list of extension instances
* @since 1.5.0
*/
<T> List<T> getExtensions(Class<T> type);
/**
* Returns the list of all resolved plugins.
*
* @return a list of resolved plugins
* @since 1.5.0
*/
List<PluginWrapper> getPlugins();
/**
* Retrieves the {@link PluginWrapper} for the specified plugin id.
*
* @param pluginId
* @return the plugin wrapper
* @since 1.5.0
*/
PluginWrapper getPlugin(String pluginId);
/**
* Retrieves the {@link PluginWrapper} that loaded the given class 'clazz'.
*
* @param clazz extension point class to retrieve extension for
* @return PluginWrapper that loaded the given class
* @since 1.5.0
*/
PluginWrapper whichPlugin(Class<?> clazz);
/**
* Disable the plugin represented by pluginId.
*
* @param pluginId
* @return true if successful
* @since 1.5.0
*/
boolean disablePlugin(String pluginId);
/**
* Enable the plugin represented by pluginId.
*
* @param pluginId
* @return true if successful
* @since 1.5.0
*/
boolean enablePlugin(String pluginId);
/**
* Delete the plugin represented by pluginId.
*
* @param pluginId
* @return true if successful
* @since 1.5.0
*/
boolean uninstallPlugin(String pluginId);
/**
* Refresh the plugin registry.
*
* @param verifyChecksum
* @since 1.5.0
*/
boolean refreshRegistry(boolean verifyChecksum);
/**
* Install the plugin from the specified url.
*
* @param url
* @param verifyChecksum
* @since 1.5.0
*/
boolean installPlugin(String url, boolean verifyChecksum) throws IOException;
/**
* Upgrade the install plugin from the specified url.
*
* @param pluginId
* @param url
* @param verifyChecksum
* @return true if the upgrade has been successful
* @throws IOException
* @since 1.5.0
*/
boolean upgradePlugin(String pluginId, String url, boolean verifyChecksum) throws IOException;
/**
* The list of all registered plugins.
*
* @return a list of registered plugins
* @since 1.5.0
*/
List<PluginRegistration> getRegisteredPlugins();
/**
* Return a list of registered plugins that match the install state.
*
* @param state
* @return the list of plugins that match the install state
* @since 1.5.0
*/
List<PluginRegistration> getRegisteredPlugins(InstallState state);
/**
* Lookup a plugin registration from the plugin registries.
*
* @param idOrName
* @return a plugin registration or null
* @since 1.5.0
*/
PluginRegistration lookupPlugin(String idOrName);
/**
* Lookup a plugin release.
*
* @param idOrName
* @param version (use null for the current version)
* @return the identified plugin version or null
* @since 1.5.0
*/
PluginRelease lookupRelease(String idOrName, String version);
}