xapi.annotation.compile.Resource Maven / Gradle / Ivy
Show all versions of xapi-dev Show documentation
package xapi.annotation.compile;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import xapi.annotation.reflect.MirroredAnnotation;
/**
* A compile-time resource; default behavior is to treat {@link #value()} as a
* resource location, and use the current thread classloader to get that resource.
*
* The {@link #type()} method is used to specify what kind of resource is being included;
* allowing a compiler service to know how it should be interpretting the annotation value.
*
* This annotation is only meant to be used as values for other annotations,
* and its implementation is dependent on the compiler class using it.
*
* The use of the {@link #qualifier()} method is strictly implementation dependent;
* it is used when the default {@link ResourceType}s are not enough to fully describe
* how to treat the given dependency.
*
* @author "James X. Nelson ([email protected])"
*
*/
@Documented
@Target({})
@Retention(RetentionPolicy.RUNTIME)
@MirroredAnnotation
public @interface Resource {
public enum ResourceType {
CLASSPATH_RESOURCE, LITERAL_VALUE, ABSOLUTE_FILE, CLASS_NAME, PACKAGE_NAME, ARTIFACT_ID
}
String value();
ResourceType type() default ResourceType.CLASSPATH_RESOURCE;
String qualifier() default "";
/**
* @return false if it's ok that a requested resource is not found;
* default is true.
*/
boolean required() default true;
}