Package com.sun.mirror.apt

## Interface AnnotationProcessorFactory

All Known Subinterfaces:
  `EclipseAnnotationProcessorFactory`

    public interface AnnotationProcessorFactory

A factory for creating annotation processors. Each factory is responsible for creating processors for one or more annotation types. The factory is said to support these types.

Each implementation of an `AnnotationProcessorFactory` must provide a public no-argument constructor to be used by tools to instantiate the factory.

Since:
  1.5

### Method Summary

All Methods Instance Methods Abstract Methods
`AnnotationProcessor` `getProcessorFor​(Set<AnnotationTypeDeclaration> atds, AnnotationProcessorEnvironment env)` Returns an annotation processor for a set of annotation types.
`Collection<String>` `supportedAnnotationTypes()` Returns the names of the annotation types supported by this factory.
`Collection<String>` `supportedOptions()` Returns the options recognized by this factory or by any of the processors it may create.

### Method Detail

#### supportedOptions

    Collection<String> supportedOptions()

Returns the options recognized by this factory or by any of the processors it may create. Only processor-specific options are included, each of which begins with `"-A"`. For example, if this factory recognizes options such as `-Adebug -Aloglevel=3`, it will return the strings `"-Adebug"` and `"-Aloglevel"`.

A tool might use this information to determine if any options provided by a user are unrecognized by any processor, in which case it may wish to report an error.

Returns:
  the options recognized by this factory or by any of the processors it may create, or an empty collection if none

#### supportedAnnotationTypes

    Collection<String> supportedAnnotationTypes()

Returns the names of the annotation types supported by this factory. An element of the result may be the canonical (fully qualified) name of a supported annotation type. Alternately it may be of the form `"name.*"` representing the set of all annotation types with canonical names beginning with `"name."` Finally, `"*"` by itself represents the set of all annotation types.

Returns:
  the names of the annotation types supported by this factory

#### getProcessorFor

    AnnotationProcessor getProcessorFor​(Set<AnnotationTypeDeclaration> atds,
                                        AnnotationProcessorEnvironment env)

Returns an annotation processor for a set of annotation types. The set will be empty if the factory supports "`*`" and the specified type declarations have no annotations. Note that the set of annotation types may be empty for other reasons, such as giving the factory an opportunity to register a listener. An `AnnotationProcessorFactory` must gracefully handle an empty set of annotations; an appropriate response to an empty set will often be returning `AnnotationProcessors.NO_OP`.

Parameters:
  `atds` - type declarations of the annotation types to be processed
  `env` - environment to use during processing
Returns:
  an annotation processor for the given annotation types, or `null` if the types are not supported or the processor cannot be created