Package org.eclipse.osgi.service.resolver

## Interface VersionConstraint

All Superinterfaces:
  `Cloneable`

All Known Subinterfaces:
  `BundleSpecification`, `GenericSpecification`, `HostSpecification`, `ImportPackageSpecification`, `NativeCodeSpecification`

    public interface VersionConstraint
    extends Cloneable

VersionConstraints represent the relationship between two bundles (in the case of bundle requires) or a bundle and a package (in the case of import/export).

This interface is not intended to be implemented by clients. The `StateObjectFactory` should be used to construct instances.

Since:
  3.1
Restriction:
  This interface is not intended to be implemented by clients.

### Method Summary

All Methods Instance Methods Abstract Methods
`BundleDescription` `getBundle()` Returns the bundle that declares this constraint.
`String` `getName()` Returns this constraint's name.
`BundleRequirement` `getRequirement()` Returns the requirement represented by this constraint.
`BaseDescription` `getSupplier()` Returns the supplier that satisfies this constraint, if it is resolved.
`Object` `getUserObject()` Returns the user object associated to this constraint, or `null` if none exists.
`VersionRange` `getVersionRange()` Returns the version range for this constraint.
`boolean` `isResolved()` Returns whether this constraint is resolved.
`boolean` `isSatisfiedBy​(BaseDescription supplier)` Returns whether this constraint could be satisfied by the given supplier.
`void` `setUserObject​(Object userObject)` Associates a user-provided object to this constraint, or removes an existing association, if `null` is provided.

### Method Detail

#### getName

    String getName()

Returns this constraint's name.

Returns:
  this constraint's name

#### getVersionRange

    VersionRange getVersionRange()

Returns the version range for this constraint.

Returns:
  the version range for this constraint, or `null`

#### getBundle

    BundleDescription getBundle()

Returns the bundle that declares this constraint.

Returns:
  a bundle description

#### isResolved

    boolean isResolved()

Returns whether this constraint is resolved. A resolved constraint is guaranteed to have its supplier defined.

Returns:
  `true` if this bundle is resolved, `false` otherwise

#### isSatisfiedBy

    boolean isSatisfiedBy​(BaseDescription supplier)

Returns whether this constraint could be satisfied by the given supplier. This will depend on the suppliers different attributes including its name, versions and other arbitrary attributes

Parameters:
  `supplier` - a supplier to be tested against this constraint (may be `null`)
Returns:
  `true` if this constraint could be resolved using the supplier, `false` otherwise

#### getSupplier

    BaseDescription getSupplier()

Returns the supplier that satisfies this constraint, if it is resolved.

Returns:
  a supplier, or `null`
See Also:
  `isResolved()`

#### getRequirement

    BundleRequirement getRequirement()

Returns the requirement represented by this constraint. Some constraint types may not be able to represent a requirement. In such cases `null` is returned.

Returns:
  the requirement represented by this constraint
Since:
  3.7

#### getUserObject

    Object getUserObject()

Returns the user object associated to this constraint, or `null` if none exists.

Returns:
  the user object associated to this constraint, or `null`
Since:
  3.8

#### setUserObject

    void setUserObject​(Object userObject)

Associates a user-provided object to this constraint, or removes an existing association, if `null` is provided. The provided object is not interpreted in any ways by this constrain.

Parameters:
  `userObject` - an arbitrary object provided by the user, or `null`
Since:
  3.8