Package org.scannotation
Class AnnotationDB
java.lang.Object
org.scannotation.AnnotationDB
- All Implemented Interfaces:
Serializable
The class allows you to scan an arbitrary set of "archives" for .class files. These class files
are parsed to see what annotations they use. Two indexes are created. The javax, java, sun, com.sun, and javassist
packages will not be scanned by default.
One is a map of annotations and what classes
use those annotations. This could be used, for example, by an EJB deployer to find all the EJBs contained
in the archive
Another is a mpa of classes and what annotations those classes use.
- Version:
- $Revision: 1 $
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addIgnoredPackages
(String... ignored) void
Sometimes you want to see if a particular class implements an interface with certain annotations After you have loaded all your classpaths with the scanArchive() method, call this method to cross reference a class's implemented interfaces.void
This method will cross reference annotations in the annotation index with any meta-annotations that they have and create additional entries as needed.returns a map keyed by the fully qualified string name of a annotation class.returns a map keyed by the list of classes scanned.String[]
String[]
private boolean
ignoreScan
(String intf) void
outputAnnotationIndex
(PrintWriter writer) Prints out annotationIndexprotected void
void
scanArchives
(URL... urls) Scan a url that represents an "archive" this is a classpath directory or jar filevoid
scanClass
(InputStream bits) Parse a .class file for annotationsprotected void
scanClass
(javassist.bytecode.ClassFile cf) protected void
scanFields
(javassist.bytecode.ClassFile cf) protected void
scanMethods
(javassist.bytecode.ClassFile cf) Scanns both the method and its parameters for annotations.void
setIgnoreBadURLs
(boolean ignoreBadURLs) Whether or not you want AnnotationDB to ignore bad URLs passed to scanArchives.void
setIgnoredPackages
(String[] ignoredPackages) Override/overwrite any ignored packagesvoid
setScanClassAnnotations
(boolean scanClassAnnotations) Whether or not you want AnnotationDB to scan for class level annotationsvoid
setScanFieldAnnotations
(boolean scanFieldAnnotations) Whether or not you want AnnotationDB to scan for parameter level annotationsvoid
setScanMethodAnnotations
(boolean scanMethodAnnotations) Wheter or not you want AnnotationDB to scan for method level annotationsvoid
setScanPackages
(String[] scanPackages) Set explicit packages to scan.void
setScanParameterAnnotations
(boolean scanParameterAnnotations) Whether or not you want AnnotationDB to scan for parameter level annotations
-
Field Details
-
annotationIndex
-
implementsIndex
-
classIndex
-
scanClassAnnotations
protected transient boolean scanClassAnnotations -
scanMethodAnnotations
protected transient boolean scanMethodAnnotations -
scanParameterAnnotations
protected transient boolean scanParameterAnnotations -
scanFieldAnnotations
protected transient boolean scanFieldAnnotations -
ignoredPackages
-
scanPackages
-
ignoreBadURLs
protected transient boolean ignoreBadURLs
-
-
Constructor Details
-
AnnotationDB
public AnnotationDB()
-
-
Method Details
-
getScanPackages
-
setScanPackages
Set explicit packages to scan. Set to null to enable ignore list.- Parameters:
scanPackages
- packages to scan or null
-
getIgnoredPackages
-
setIgnoredPackages
Override/overwrite any ignored packages- Parameters:
ignoredPackages
- cannot be null
-
addIgnoredPackages
-
crossReferenceMetaAnnotations
This method will cross reference annotations in the annotation index with any meta-annotations that they have and create additional entries as needed. For example: -
crossReferenceImplementedInterfaces
Sometimes you want to see if a particular class implements an interface with certain annotations After you have loaded all your classpaths with the scanArchive() method, call this method to cross reference a class's implemented interfaces. The cross references will be added to the annotationIndex and classIndex indexes- Throws:
AnnotationDB.CrossReferenceException
- an Exception thrown if referenced interfaces haven't been scanned
-
ignoreScan
-
getAnnotationIndex
returns a map keyed by the fully qualified string name of a annotation class. The Set returne is a list of classes that use that annotation somehow. -
getClassIndex
returns a map keyed by the list of classes scanned. The value set returned is a list of annotations used by that class. -
setScanClassAnnotations
public void setScanClassAnnotations(boolean scanClassAnnotations) Whether or not you want AnnotationDB to scan for class level annotations- Parameters:
scanClassAnnotations
-
-
setScanMethodAnnotations
public void setScanMethodAnnotations(boolean scanMethodAnnotations) Wheter or not you want AnnotationDB to scan for method level annotations- Parameters:
scanMethodAnnotations
-
-
setScanParameterAnnotations
public void setScanParameterAnnotations(boolean scanParameterAnnotations) Whether or not you want AnnotationDB to scan for parameter level annotations- Parameters:
scanParameterAnnotations
-
-
setScanFieldAnnotations
public void setScanFieldAnnotations(boolean scanFieldAnnotations) Whether or not you want AnnotationDB to scan for parameter level annotations- Parameters:
scanFieldAnnotations
-
-
setIgnoreBadURLs
public void setIgnoreBadURLs(boolean ignoreBadURLs) Whether or not you want AnnotationDB to ignore bad URLs passed to scanArchives. Default is to throw an IOException.- Parameters:
ignoreBadURLs
-
-
scanArchives
Scan a url that represents an "archive" this is a classpath directory or jar file- Parameters:
urls
- variable list of URLs to scan as archives- Throws:
IOException
-
scanClass
Parse a .class file for annotations- Parameters:
bits
- input stream pointing to .class file bits- Throws:
IOException
-
scanClass
protected void scanClass(javassist.bytecode.ClassFile cf) -
scanMethods
protected void scanMethods(javassist.bytecode.ClassFile cf) Scanns both the method and its parameters for annotations.- Parameters:
cf
-
-
scanFields
protected void scanFields(javassist.bytecode.ClassFile cf) -
populate
-
outputAnnotationIndex
Prints out annotationIndex- Parameters:
writer
-
-