@Documented @Retention(value=CLASS) @Target(value={TYPE,PACKAGE}) @Repeatable(value=Requirements.class) public @interface Requirement
For example:
@Requirement(namespace=ExtenderNamespace.EXTENDER_NAMESPACE, name="osgi.component", version="1.3.0")
This annotation is not retained at runtime. It is for use by tools to generate bundle manifests or otherwise process the a package.
This annotation can be used to annotate an annotation.
Modifier and Type | Required Element and Description |
---|---|
String |
namespace
The namespace of this requirement.
|
Modifier and Type | Optional Element and Description |
---|---|
String[] |
attribute
A list of attribute or directive names and values.
|
String |
cardinality
The cardinality of this requirement.
|
String |
effective
The effective time of this requirement.
|
String |
filter
The filter expression of this requirement, if any.
|
String |
name
The name of this requirement within the namespace.
|
String |
resolution
The resolution policy of this requirement.
|
String |
version
The floor version of the version range for this requirement.
|
public abstract String namespace
public abstract String name
If specified, adds an expression, using the &
operator with any
specified filter()
, to the requirement's filter directive to
test that an attribute with the name of the namespace is equal to the
value of the specified name.
public abstract String version
If specified, adds a version range expression, using the &
operator with any specified filter()
, to the requirement's
filter directive. The ceiling version of the version range is the next
major version from the floor version. For example, if the specified
version is 1.3
, then the version range expression is
(&(version>=1.3)(!(version>=2.0)))
.
The specified version must be a valid OSGi version string.
public abstract String filter
public abstract String effective
Specifies the time the requirement is available. The OSGi framework resolver only considers requirement without an effective directive or effective:=resolve. Requirements with other values for the effective directive can be considered by an external agent.
If not specified, the effective
directive is omitted from the
requirement clause.
public abstract String[] attribute
Each string should be specified in the form:
"name=value"
for attributes."name:type=value"
for typed attributes."name:=value"
for directives.public abstract String cardinality
Indicates if this requirement can be wired a single time or multiple times.
If not specified, the cardinality
directive is omitted from the
requirement clause.
public abstract String resolution
A mandatory requirement forbids the bundle to resolve when this requirement is not satisfied; an optional requirement allows a bundle to resolve even if this requirement is not satisfied.
If not specified, the resolution
directive is omitted from the
requirement clause.
Copyright © Contributors to the Eclipse Foundation Licensed under the Eclipse Foundation Specification License – v1.0