@Retention(value=CLASS)
@Target(value={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 and Description |
|---|---|
java.lang.String |
ns
The capability namespace.
|
| Modifier and Type | Optional Element and 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 |
public abstract java.lang.String ns
osgi.contract.public abstract java.lang.String value
public abstract java.lang.String extra
public abstract java.lang.String effective
public abstract 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.public abstract Resolution resolution