@Retention(CLASS)
@Target({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 | Description |
|---|---|---|
java.lang.String |
ns |
The capability namespace.
|
| Modifier and Type | Optional Element | 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.
|
java.lang.String value
java.lang.String name
value() to be used to specify the name of
the capability, if needed. For example aQute.sse.java.lang.String version
java.lang.String effective