|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectorg.eclipse.jdt.internal.compiler.AbstractAnnotationProcessorManager
org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager
public abstract class BaseAnnotationProcessorManager
This class is the central dispatch point for Java 6 annotation processing.
This is created and configured by the JDT core; specifics depend on how
compilation is being performed, ie from the command line, via the Tool
interface, or within the IDE. This class manages the discovery of annotation
processors and other information spanning multiple rounds of processing;
context that is valid only within a single round is managed by
RoundDispatcher. There may be multiple instances of this class;
there is in general one of these for every Compiler that has annotation
processing enabled. Within the IDE there will typically be one for every
Java project, because each project potentially has a separate processor path.
TODO: do something useful with _supportedOptions and _supportedAnnotationTypes.
| 字段摘要 | |
|---|---|
protected PrintWriter |
_err
|
protected boolean |
_isFirstRound
|
protected PrintWriter |
_out
|
protected boolean |
_printProcessorInfo
|
protected boolean |
_printRounds
|
protected BaseProcessingEnvImpl |
_processingEnv
|
protected List<ProcessorInfo> |
_processors
The list of processors that have been loaded so far. |
protected int |
_round
|
| 构造方法摘要 | |
|---|---|
BaseAnnotationProcessorManager()
|
|
| 方法摘要 | |
|---|---|
void |
configure(Object batchCompiler,
String[] options)
Configure the receiver using the given batch compiler and the given options. |
void |
configureFromPlatform(Compiler compiler,
Object compilationUnitLocator,
Object javaProject)
Configure the receiver using the given compiler, the given compilationUnitLocator and the given java project. |
ICompilationUnit[] |
getDeletedUnits()
Returns the deleted units. |
List<ProcessorInfo> |
getDiscoveredProcessors()
|
ReferenceBinding[] |
getNewClassFiles()
Return the new binary bindings created in the last round. |
ICompilationUnit[] |
getNewUnits()
Return the new units created in the last round. |
void |
processAnnotations(CompilationUnitDeclaration[] units,
ReferenceBinding[] referenceBindings,
boolean isLastRound)
A single "round" of processing, in the sense implied in javax.lang.annotation.processing.Processor. |
void |
reset()
Reinitialize the receiver |
void |
setErr(PrintWriter err)
Set the print writer for the standard error. |
void |
setOut(PrintWriter out)
Set the print writer for the standard output. |
void |
setProcessors(Object[] processors)
Set the processors for annotation processing. |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 从接口 org.eclipse.jdt.internal.compiler.apt.dispatch.IProcessorProvider 继承的方法 |
|---|
discoverNextProcessor, reportProcessorException |
| 字段详细信息 |
|---|
protected PrintWriter _out
protected PrintWriter _err
protected BaseProcessingEnvImpl _processingEnv
protected boolean _isFirstRound
protected List<ProcessorInfo> _processors
protected boolean _printProcessorInfo
protected boolean _printRounds
protected int _round
| 构造方法详细信息 |
|---|
public BaseAnnotationProcessorManager()
| 方法详细信息 |
|---|
public void configure(Object batchCompiler,
String[] options)
AbstractAnnotationProcessorManager 复制的描述AbstractAnnotationProcessorManager.configureFromPlatform(Compiler, Object, Object).
AbstractAnnotationProcessorManager 中的 configurebatchCompiler - the given batch compiler objectoptions - the given options
public void configureFromPlatform(Compiler compiler,
Object compilationUnitLocator,
Object javaProject)
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 configureFromPlatformcompiler - the given compilercompilationUnitLocator - the given compilation unit locatorjavaProject - the given java projectpublic List<ProcessorInfo> getDiscoveredProcessors()
IProcessorProvider 中的 getDiscoveredProcessorsIProcessorProvider.discoverNextProcessor() is called.public ICompilationUnit[] getDeletedUnits()
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 getDeletedUnitspublic ICompilationUnit[] getNewUnits()
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 getNewUnitspublic ReferenceBinding[] getNewClassFiles()
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 getNewClassFilespublic void reset()
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 resetpublic void setErr(PrintWriter err)
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 setErrerr - the given print writer for errorpublic void setOut(PrintWriter out)
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 setOutout - the given print writer for outputpublic void setProcessors(Object[] processors)
AbstractAnnotationProcessorManager 复制的描述
AbstractAnnotationProcessorManager 中的 setProcessorsprocessors - the given processors
public void processAnnotations(CompilationUnitDeclaration[] units,
ReferenceBinding[] referenceBindings,
boolean isLastRound)
javax.lang.annotation.processing.Processor.
The Java 6 Processor spec contains ambiguities about how processors that support "*" are
handled. Eclipse tries to match Sun's implementation in javac. What that actually does is
analogous to inspecting the set of annotions found in the root units and adding an
"imaginary" annotation if the set is empty. Processors are then called in order of discovery;
for each processor, the intersection between the set of root annotations and the set of
annotations the processor supports is calculated, and if it is non-empty, the processor is
called. If the processor returns true then the intersection (including the
imaginary annotation if one exists) is removed from the set of root annotations and the loop
continues, until the set is empty. Of course, the imaginary annotation is not actually
included in the set of annotations passed in to the processor. A processor's process() method
is not called until its intersection set is non-empty, but thereafter it is called on every
round. Note that even if a processor is not called in the first round, if it is called in
subsequent rounds, it will be called in the order in which the processors were discovered,
rather than being added to the end of the list.
AbstractAnnotationProcessorManager 中的 processAnnotationsunits - the given source typereferenceBindings - the given binary typesisLastRound - flag to notify the last round
|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||