org.codehaus.jam
Interface JAnnotation

All Superinterfaces:
JElement
All Known Subinterfaces:
MAnnotation

public interface JAnnotation
extends JElement

Represents a metadata that is associated with a particular JElement. Note that JAnnoations are JElements, which means that they themselves can have annotations, and can be treated as nodes in a JAM hierarchy.

Annotations can be simple or complex. Values of simple annotations can be retrieved via the various get...Value() methods. Complex attributes can be navigated via the getAnnotations() method which exposes nested attributes (which may in turn be either simple or complex.

Author:
Patrick Calahan <email: codehaus-at-bea-dot-com>

Field Summary
static java.lang.String SINGLE_VALUE_NAME
           
 
Method Summary
 java.lang.Object getAnnotationInstance()
          If this JAnnotation corresponds to metadata that is stored in a JSR175 annotation (i.e.
 java.lang.Object getProxy()
          If a typed annotation proxy has been registered for the annotation represented by this JAnnotation, returns this object.
 java.lang.String getSimpleName()
          Returns a simple name of this abstraction.
 JAnnotationValue getValue(java.lang.String named)
          Returns a structure which provides untyped, "by-name" access to the value of the named annotation member.
 JAnnotationValue[] getValues()
          Returns an array of this annotation's member values.
 
Methods inherited from interface org.codehaus.jam.JElement
accept, getArtifact, getParent, getQualifiedName, getSourcePosition, toString
 

Field Detail

SINGLE_VALUE_NAME

static final java.lang.String SINGLE_VALUE_NAME
See Also:
Constant Field Values
Method Detail

getSimpleName

java.lang.String getSimpleName()
Description copied from interface: JElement

Returns a simple name of this abstraction. The exact format of the name depends on the particular abstraction (see javadoc). Please refer to the JAM package documentation for more details on naming conventions.

Specified by:
getSimpleName in interface JElement

getProxy

java.lang.Object getProxy()

If a typed annotation proxy has been registered for the annotation represented by this JAnnotation, returns this object. Note that it's usually easier to access proxies by simply calling JAnnotatedElement.getAnnotationProxy(proxyClass).

The value returned is guaranteed to be either a user-defined subclass of TypedAnnotationProxyBase or null.


getValues

JAnnotationValue[] getValues()

Returns an array of this annotation's member values.


getValue

JAnnotationValue getValue(java.lang.String named)

Returns a structure which provides untyped, "by-name" access to the value of the named annotation member.


getAnnotationInstance

java.lang.Object getAnnotationInstance()

If this JAnnotation corresponds to metadata that is stored in a JSR175 annotation (i.e. an instance of java.lang.annotation.Annotation), returns that annotation object. Returns null if the annotation does not exist or is otherwise unavailable.

Note that this is done only on a best-effort basis - the annotation object not be availble under pre-1.5 JREs and will generally only be available if the underlying annotation was view from a class file. Note that the retention policy of the annotation type usually must also be RUNTIME. Unless you are sure of all of these things, you are better off using an AnnotationProxy or the untyped value accessors (e.g. getValues()).

If this method does return something other than null, it is guaranteed to be an instance of java.lang.annotation.Annotation. It is typed here as Object simply to preserve API compatibility with Java 1.4.

.