@Retention(CLASS)
@Target({ANNOTATION_TYPE,TYPE})
public @interface RequireCapability
The Bundle’s Require-Capability header
Typically used as a meta-annotation, i.e. an annotation placed on another
annotation, which we will call the user-defined annotation. When the
user-defined annotation is found on a class within the bundle, an entry in
the Require-Capability header is added. The filter expression of
the requirement may be parameterised with values from the user-defined
annotation. For example, given the following declarations:
@RequireCapability( ns = "com.acme.engine", effective = "active", filter = "(com.acme.engine=${type})")
public @interface Engine { String type(); }
@Engine(type = "wankel") public class Vehicle { ... }
... the following header will be generated in MANIFEST.MF:
Require-Capability:\ com.acme.engine; \ effective:=active; \ filter:="(com.acme.engine=wankel)",\ ...
About| Modifier and Type | Required Element | Description |
|---|---|---|
java.lang.String |
ns |
The capability namespace.
|
| Modifier and Type | Optional Element | Description |
|---|---|---|
java.lang.String |
effective |
Specifies the time a Requirement is considered, either 'resolve'
(default) or another name.
|
java.lang.String |
extra |
|
java.lang.String |
filter |
A filter expression that is asserted on the Capabilities belonging to the
given namespace.
|
Resolution |
resolution |
A mandatory Requirement forbids the bundle to resolve when the
Requirement is not satisfied; an optional Requirement allows a bundle to
resolve even if the Requirement is not satisfied.
|
java.lang.String |
value |
java.lang.String effective
java.lang.String filter
(&(a=1)(b=2))
matches only a Capability that specifies both attributes at the required
value, not two capabilties that each specify one of the attributes
correctly. A filter is optional, if no filter directive is specified the
Requirement always matches.Resolution resolution