/* This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2012 Servoy BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ package com.servoy.extension; import java.io.File; /** * Classes that implement this interface have access to .exp packages.<br> * They are able to provide dependency & other information from the package.xml file as well as the full contents of the .exp package. * * @author acostescu */ public interface IExtensionProvider extends IMessageProvider { /** * Returns an array of extension & dependency info with one element for each available version that satisfies the given dependency * @param extensionDependency the dependency's declaration (id, minVer, maxVer). * @return information about the available compatible versions of the extension. */ DependencyMetadata[] getDependencyMetadata(ExtensionDependencyDeclaration extensionDependency); /** * Gives the extension package file that corresponds to a version of an extension.<BR> * This method must be able to provide a valid .exp file for every DependencyMetadata object that {@link #getDependencyMetadata(ExtensionDependencyDeclaration)} returned. * * @param extensionId the extension contained in the .exp file. * @param version the version of the extension from the .exp file. * @param progressMonitor a chance to give progress information if needed; can be null. * @return the .exp package file or null if not available. */ File getEXPFile(String extensionId, String version, IProgress progressMonitor); /** * Release any held resources. Do cleanup if necessary. */ void dispose(); }