package org.arquillian.cube.spi.requirement;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Requires annotation is used to express {@link Requirement}.
* Can be used directly on a type or method, but also can be used to annotate other annotations.
* When used to annotate an other annotation, the target annotation defines the requirement context (which is passed to
* the {@link Requirement}.
* In all other cases, there is no context.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE, ElementType.METHOD})
public @interface Requires {
Class<? extends Requirement>[] value() default {};
}