# Interface IInstallableUnitPatch

All Superinterfaces:
  `Comparable<IInstallableUnit>, IInstallableUnit, IVersionedId`

public interface IInstallableUnitPatch extends IInstallableUnit
An installable unit patch is an installable unit that alters the required capabilities of another installable unit.

Instances of this class are handle objects and do not necessarily reflect entities that exist in any particular profile or repository. These handle objects can be created using `MetadataFactory`.

Since:
  2.0
See Also:
  - `MetadataFactory.createInstallableUnitPatch(org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitPatchDescription)`
Restriction:
  This interface is not intended to be implemented by clients.
Restriction:
  This interface is not intended to be extended by clients.

## Field Summary

### Fields inherited from interface IInstallableUnit

`NAMESPACE_IU_ID, PROP_BUNDLE_LOCALIZATION, PROP_CONTACT, PROP_DESCRIPTION, PROP_DESCRIPTION_URL, PROP_DOC_URL, PROP_ICON, PROP_NAME, PROP_PARTIAL_IU, PROP_PROVIDER`

## Method Summary

Modifier and Type
Method
Description
`IRequirement[][]`
`getApplicabilityScope()`
The applicability scope of a patch describes the installable units that this patch should be applied to.
`IRequirement`
`getLifeCycle()`
Returns the required capability that defines the lifecycle of this patch.
`List<IRequirementChange>`
`getRequirementsChange()`
Returns the requirement changes imposed by the patch.

### Methods inherited from interface Comparable

`compareTo`

### Methods inherited from interface IInstallableUnit

`equals, getArtifacts, getCopyright, getCopyright, getFilter, getFragments, getLicenses, getLicenses, getMetaRequirements, getProperties, getProperty, getProperty, getProvidedCapabilities, getRequirements, getTouchpointData, getTouchpointType, getUpdateDescriptor, isResolved, isSingleton, satisfies, unresolved`

### Methods inherited from interface IVersionedId

`getId, getVersion`

## Method Details

### getApplicabilityScope

IRequirement[][] getApplicabilityScope()
The applicability scope of a patch describes the installable units that this patch should be applied to. Specifically, this patch will be applied to all installable units that satisfy all of the required capabilities in one or more of the given required capability arrays.

The returned two-dimensional array can be considered as a boolean expression, where items in the inner array are connected by AND operators, and each of the arrays are separated by OR operators. For example a scope of [[r1, r2, r3], [r4, r5]] will match any unit whose provided capabilities satisfy the expression ((r1 ^ r2 ^ r3) | (r4 ^ r5)).

Restriction:
  This method is not intended to be referenced by clients.

### getRequirementsChange

List<IRequirementChange> getRequirementsChange()
Returns the requirement changes imposed by the patch.

Returns:
  The patch requirement changes.

### getLifeCycle

IRequirement getLifeCycle()
Returns the required capability that defines the lifecycle of this patch. The patch will be installed into a profile if and only if the lifecycle capability is satisfied by some IU in the profile. If a future provisioning operation causes the requirement to no longer be satisfied, the patch will be uninstalled.