com.sun.xml.bind.v2.model.annotation

Interface AnnotationReader<T,C,F,M>

public interface AnnotationReader<T,C,F,M>

Reads annotations for the given property.

This is the lowest abstraction that encapsulates the difference between reading inline annotations and external binding files.

Because the former operates on a Field and Method while the latter operates on a "property", the methods defined on this interface takes both, and the callee gets to choose which to use.

Most of the get method takes Locatable, which points to the place/context in which the annotation is read. The returned annotation also implements Locatable (so that it can point to the place where the annotation is placed), and its getUpstream will return the given Locatable.

Errors found during reading annotations are reported through the error handler. A valid ErrorHandler must be registered before the AnnotationReader is used.

Method Summary
Annotation[]getAllFieldAnnotations(F field, Locatable srcPos)
Gets all the annotations on a field.
Annotation[]getAllMethodAnnotations(M method, Locatable srcPos)
Gets all the annotations on a method.
<A extends Annotation> AgetClassAnnotation(Class<A> annotation, C clazz, Locatable srcpos)
Reads an annotation on a class.
T[]getClassArrayValue(Annotation a, String name)
Similar to AnnotationReader method but obtains an array parameter.
TgetClassValue(Annotation a, String name)
Reads a value of an annotation that returns a Class object.
<A extends Annotation> AgetFieldAnnotation(Class<A> annotation, F field, Locatable srcpos)
Reads an annotation on a property that consists of a field.
<A extends Annotation> AgetMethodAnnotation(Class<A> annotation, M getter, M setter, Locatable srcpos)
Reads an annotation on a property that consists of a getter and a setter.
<A extends Annotation> AgetMethodAnnotation(Class<A> annotation, M method, Locatable srcpos)
<A extends Annotation> AgetMethodParameterAnnotation(Class<A> annotation, M method, int paramIndex, Locatable srcPos)
Reads an annotation on a parameter of the method.
<A extends Annotation> AgetPackageAnnotation(Class<A> annotation, C clazz, Locatable srcpos)
Reads an annotation on the package that the given class belongs to.
booleanhasClassAnnotation(C clazz, Class<? extends Annotation> annotationType)
Checks if a class has the annotation.
booleanhasFieldAnnotation(Class<? extends Annotation> annotationType, F field)
Checks if the given field has an annotation.
booleanhasMethodAnnotation(Class<? extends Annotation> annotation, String propertyName, M getter, M setter, Locatable srcPos)
Checks if the given method has an annotation.
booleanhasMethodAnnotation(Class<? extends Annotation> annotation, M method)
voidsetErrorHandler(ErrorHandler errorHandler)
Sets the error handler that receives errors found during reading annotations.

Method Detail

getAllFieldAnnotations

public Annotation[] getAllFieldAnnotations(F field, Locatable srcPos)
Gets all the annotations on a field.

getAllMethodAnnotations

public Annotation[] getAllMethodAnnotations(M method, Locatable srcPos)
Gets all the annotations on a method.

Parameters: srcPos the location from which this annotation is read.

getClassAnnotation

public <A extends Annotation> A getClassAnnotation(Class<A> annotation, C clazz, Locatable srcpos)
Reads an annotation on a class.

getClassArrayValue

public T[] getClassArrayValue(Annotation a, String name)
Similar to AnnotationReader method but obtains an array parameter.

getClassValue

public T getClassValue(Annotation a, String name)
Reads a value of an annotation that returns a Class object.

Depending on the underlying reflection library, you can't always obtain the Class object directly (see the APT MirrorTypeException for example), so use this method to avoid that.

Parameters: name The name of the annotation parameter to be read.

getFieldAnnotation

public <A extends Annotation> A getFieldAnnotation(Class<A> annotation, F field, Locatable srcpos)
Reads an annotation on a property that consists of a field.

getMethodAnnotation

public <A extends Annotation> A getMethodAnnotation(Class<A> annotation, M getter, M setter, Locatable srcpos)
Reads an annotation on a property that consists of a getter and a setter.

getMethodAnnotation

public <A extends Annotation> A getMethodAnnotation(Class<A> annotation, M method, Locatable srcpos)

getMethodParameterAnnotation

public <A extends Annotation> A getMethodParameterAnnotation(Class<A> annotation, M method, int paramIndex, Locatable srcPos)
Reads an annotation on a parameter of the method.

Returns: null if the annotation was not found.

getPackageAnnotation

public <A extends Annotation> A getPackageAnnotation(Class<A> annotation, C clazz, Locatable srcpos)
Reads an annotation on the package that the given class belongs to.

hasClassAnnotation

public boolean hasClassAnnotation(C clazz, Class<? extends Annotation> annotationType)
Checks if a class has the annotation.

hasFieldAnnotation

public boolean hasFieldAnnotation(Class<? extends Annotation> annotationType, F field)
Checks if the given field has an annotation.

hasMethodAnnotation

public boolean hasMethodAnnotation(Class<? extends Annotation> annotation, String propertyName, M getter, M setter, Locatable srcPos)
Checks if the given method has an annotation.

hasMethodAnnotation

public boolean hasMethodAnnotation(Class<? extends Annotation> annotation, M method)

setErrorHandler

public void setErrorHandler(ErrorHandler errorHandler)
Sets the error handler that receives errors found during reading annotations.

Parameters: errorHandler must not be null.