@Retention(value=CLASS)
@Target(value={ANNOTATION_TYPE,TYPE})
public @interface ProvideCapability
Since this annotation can only be applied once, it is possible to create an annotation that models a specific capability. For example:
interface Webserver { @ProvideCapability(ns = "osgi.extender", name = "aQute.webserver", version = "${@version}") @interface Provide {} @RequireCapability(ns = "osgi.extender", filter = "(&(osgi.extender=aQute.webserver)${frange;${@version}})") @interface Require {} } @Webserver.Provide public class MyWebserver {}
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
Effective time.
|
java.lang.String[] |
mandatory
Mandatory attributes.
|
java.lang.String |
name
The name of the capability.
|
java.lang.String[] |
uses
The uses directive lists package names that are used by this Capability.
|
java.lang.String |
value
Appended at the end of the clause (after a ';').
|
java.lang.String |
version
The version of the capability.
|
public abstract java.lang.String ns
osgi.contract
.public abstract java.lang.String value
public abstract java.lang.String name
value()
to be used to specify the name of
the capability, if needed. For example aQute.sse
.public abstract java.lang.String version
public abstract java.lang.String effective