# 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

Modifier and Type
Method
Description
`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 Details

### 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