Package org.osgi.annotation.bundle

# Annotation Type Directive

@Documented @Retention(CLASS) @Target(METHOD) public @interface Directive
Mark an annotation element as a directive.

This is used when applying `Capability` or `Requirement` as a meta annotation to an annotation declaration. The value of the annotation element annotated with `Directive` is used as the value of a directive in the generated capability or requirement clause. For example:

     @Capability(namespace = "my.namespace")
     public @interface MyCapability {
       @Directive("resource")
       String value() default "";
     }

     @MyCapability("foo")
     public MyClass {}

The use of the `MyCapability` annotation, which is meta annotated with the `Capability` and `Directive` annotations, will result in a capability in the namespace `my.namespace` with the directive `resource:=foo`.

If the element annotated with `Directive` is unspecified when applied, then the directive must not be generated in the generated capability or requirement clause. For example:

     @MyCapability
     public MyClass {}

will not have the `resource` directive in the generated capability.

This annotation is not retained at runtime. It is for use by tools to generate bundle manifests.

## Optional Element Summary

Optional Elements
Modifier and Type
Optional Element
Description
`String`
`value`
The name of the directive.

## Element Details

### value

String value
The name of the directive.

If not specified, the name of the annotated element is used as the name of the directive.

Default:
  `""`