1 /******************************************************************************* 2 * Copyright (c) 2008, 2010 EclipseSource and others. 3 * 4 * This 5 * program and the accompanying materials are made available under the terms of 6 * the Eclipse Public License 2.0 which accompanies this distribution, and is 7 * available at 8 * https://www.eclipse.org/legal/epl-2.0/ 9 * 10 * SPDX-License-Identifier: EPL-2.0 11 * 12 * Contributors: 13 * EclipseSource - initial API and implementation 14 ******************************************************************************/ 15 package org.eclipse.equinox.internal.p2.metadata; 16 17 import org.eclipse.equinox.p2.metadata.*; 18 19 /** 20 * A required capability represents some external constraint on an {@link IInstallableUnit}. 21 * Each capability represents something an {@link IInstallableUnit} needs that 22 * it expects to be provided by another {@link IInstallableUnit}. Capabilities are 23 * entirely generic, and are intended to be capable of representing anything that 24 * an {@link IInstallableUnit} may need either at install time, or at runtime. 25 * <p> 26 * Capabilities are segmented into namespaces. Anyone can introduce new 27 * capability namespaces. Some well-known namespaces are introduced directly 28 * by the provisioning framework. 29 * 30 * @see IInstallableUnit#NAMESPACE_IU_ID 31 * 32 * @noimplement This interface is not intended to be implemented by clients. 33 * @noextend This interface is not intended to be extended by clients. 34 */ 35 public interface IRequiredCapability extends IRequirement { 36 37 // public String getFilter(); 38 getName()39 public String getName(); 40 getNamespace()41 public String getNamespace(); 42 43 /** 44 * Returns the range of versions that satisfy this required capability. Returns 45 * an empty version range ({@link VersionRange#emptyRange} if any version 46 * will satisfy the capability. 47 * @return the range of versions that satisfy this required capability. 48 */ getRange()49 public VersionRange getRange(); 50 }