org.jpox.metadata.annotations
Class AbstractAnnotationReader

java.lang.Object
  extended by org.jpox.metadata.annotations.AbstractAnnotationReader
All Implemented Interfaces:
AnnotationReader
Direct Known Subclasses:
JDOAnnotationReader, JPAAnnotationReader

public abstract class AbstractAnnotationReader
extends java.lang.Object
implements AnnotationReader

Abstract implementation of a metadata annotations reader for JDK 1.5. A metadata annotation reader takes in a class and converts its annotations into JPOX metadata. Any implementation has to implement the method "processClassAnnotations" which creates the ClassMetaData record for the class, and the method "processFieldAnnotations" which updates the ClassMetaData with its field definition.

Each annotation reader supports a set of annotations. So it could support "JPA" annotations, or "JDO" annotations, or "JPOX" annotations or whatever.

Version:
$Revision: 1.14 $

Field Summary
protected static org.jpox.util.Localiser LOCALISER
          Localiser for messages
 
Constructor Summary
AbstractAnnotationReader(org.jpox.metadata.MetaDataManager mgr)
          Constructor.
 
Method Summary
protected  AnnotationObject[] getAnnotationObjectsForAnnotations(java.lang.String clsName, java.lang.annotation.Annotation[] annotations)
          Convenience method to convert an array of Annotation objects into an array of AnnotationObjects.
protected  AnnotationObject[] getClassAnnotationsForClass(java.lang.Class cls)
          Method returning the annotations for the class.
protected  java.util.Collection<org.jpox.metadata.annotations.AnnotatedField> getFieldAnnotationsForClass(java.lang.Class cls)
          Method returning a Map containing an array of the annotations for each field of the passed class, keyed by the field name.
protected  java.util.Collection<org.jpox.metadata.annotations.AnnotatedField> getGettersAnnotationsForClass(java.lang.Class cls)
          Method returning a Map containing an array of the annotations for each method of the passed class, keyed by the method name.
 org.jpox.metadata.ClassMetaData getMetaDataForClass(java.lang.Class cls, org.jpox.metadata.PackageMetaData pmd)
          Accessor for the ClassMetaData for the specified class from its annotations.
protected  java.util.Collection<java.lang.annotation.Annotation[]> getMethodAnnotationsForClass(java.lang.Class cls)
          Method returning a Map containing an array of the annotations for each method of the passed class, keyed by the method name.
 java.lang.String[] getSupportedAnnotationPackages()
          Method to set the valid annotation packages to be supported when reading.
protected  boolean isSupportedAnnotation(java.lang.String annotationClassName)
          Convenience method to check whether an annotation class name is supported by this reader.
protected abstract  org.jpox.metadata.ClassMetaData processClassAnnotations(org.jpox.metadata.PackageMetaData pmd, java.lang.Class cls, AnnotationObject[] annotations)
          Method to process the "class" level annotations and create the outline ClassMetaData object.
protected abstract  org.jpox.metadata.FieldMetaData processFieldAnnotations(org.jpox.metadata.ClassMetaData cmd, java.lang.reflect.Field field, AnnotationObject[] annotations)
          Method to take the passed in outline ClassMetaData and process the annotations for fields adding any necessary FieldMetaData to the ClassMetaData.
protected abstract  void processMethodAnnotations(org.jpox.metadata.ClassMetaData cmd, java.lang.reflect.Method method)
          Method to take the passed in outline ClassMetaData and process the annotations for method adding any necessary MetaData to the ClassMetaData.
protected  void setSupportedAnnotationPackages(java.lang.String[] packages)
          Method to set the valid annotation packages to be supported when reading.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOCALISER

protected static org.jpox.util.Localiser LOCALISER
Localiser for messages

Constructor Detail

AbstractAnnotationReader

public AbstractAnnotationReader(org.jpox.metadata.MetaDataManager mgr)
Constructor.

Parameters:
mgr - MetaData manager
Method Detail

getSupportedAnnotationPackages

public java.lang.String[] getSupportedAnnotationPackages()
Method to set the valid annotation packages to be supported when reading.

Specified by:
getSupportedAnnotationPackages in interface AnnotationReader
Parameters:
packages - The supported packages.
Returns:
The annotations packages that will be processed.

setSupportedAnnotationPackages

protected void setSupportedAnnotationPackages(java.lang.String[] packages)
Method to set the valid annotation packages to be supported when reading.

Parameters:
packages - The supported packages.

isSupportedAnnotation

protected boolean isSupportedAnnotation(java.lang.String annotationClassName)
Convenience method to check whether an annotation class name is supported by this reader.

Parameters:
annotationClassName - Name of the annotation class
Returns:
Whether it is supported.

getMetaDataForClass

public org.jpox.metadata.ClassMetaData getMetaDataForClass(java.lang.Class cls,
                                                           org.jpox.metadata.PackageMetaData pmd)
Accessor for the ClassMetaData for the specified class from its annotations. The returned ClassMetaData will be unpopulated and uninitialised.

Specified by:
getMetaDataForClass in interface AnnotationReader
Parameters:
cls - The class
pmd - MetaData for the owning package
Returns:
The ClassMetaData

processClassAnnotations

protected abstract org.jpox.metadata.ClassMetaData processClassAnnotations(org.jpox.metadata.PackageMetaData pmd,
                                                                           java.lang.Class cls,
                                                                           AnnotationObject[] annotations)
Method to process the "class" level annotations and create the outline ClassMetaData object.

Parameters:
pmd - Parent PackageMetaData
cls - The class
annotations - Annotations for the class
Returns:
The ClassMetaData (or null if no annotations)

processFieldAnnotations

protected abstract org.jpox.metadata.FieldMetaData processFieldAnnotations(org.jpox.metadata.ClassMetaData cmd,
                                                                           java.lang.reflect.Field field,
                                                                           AnnotationObject[] annotations)
Method to take the passed in outline ClassMetaData and process the annotations for fields adding any necessary FieldMetaData to the ClassMetaData.

Parameters:
cmd - The ClassMetaData (to be updated)
field - The field being processed
annotations - The annotations for this field
Returns:
The FieldMetaData that was added (if any)

processMethodAnnotations

protected abstract void processMethodAnnotations(org.jpox.metadata.ClassMetaData cmd,
                                                 java.lang.reflect.Method method)
Method to take the passed in outline ClassMetaData and process the annotations for method adding any necessary MetaData to the ClassMetaData.

Parameters:
cmd - The ClassMetaData (to be updated)
method - The method

getClassAnnotationsForClass

protected AnnotationObject[] getClassAnnotationsForClass(java.lang.Class cls)
Method returning the annotations for the class.

Parameters:
cls - The class
Returns:
Class annotations

getGettersAnnotationsForClass

protected java.util.Collection<org.jpox.metadata.annotations.AnnotatedField> getGettersAnnotationsForClass(java.lang.Class cls)
Method returning a Map containing an array of the annotations for each method of the passed class, keyed by the method name.

Parameters:
cls - The class
Returns:
Collection of the annotated methods

getMethodAnnotationsForClass

protected java.util.Collection<java.lang.annotation.Annotation[]> getMethodAnnotationsForClass(java.lang.Class cls)
Method returning a Map containing an array of the annotations for each method of the passed class, keyed by the method name.

Parameters:
cls - The class
Returns:
Collection of the annotated methods

getFieldAnnotationsForClass

protected java.util.Collection<org.jpox.metadata.annotations.AnnotatedField> getFieldAnnotationsForClass(java.lang.Class cls)
Method returning a Map containing an array of the annotations for each field of the passed class, keyed by the field name.

Parameters:
cls - The class
Returns:
Collection of the annotated fields

getAnnotationObjectsForAnnotations

protected AnnotationObject[] getAnnotationObjectsForAnnotations(java.lang.String clsName,
                                                                java.lang.annotation.Annotation[] annotations)
Convenience method to convert an array of Annotation objects into an array of AnnotationObjects.

Parameters:
clsName - Name of the class
annotations - The annotations
Returns:
The annotation objects


Copyright © 2003-2008 Java Persistent Objects (JPOX). All Rights Reserved.