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