Class CompilationParticipant
- java.lang.Object
-
- org.eclipse.jdt.core.compiler.CompilationParticipant
-
public abstract class CompilationParticipant extends Object
A compilation participant is notified of events occurring during the compilation process. The compilation process not only involves generating .class files (i.e. building), it also involves cleaning the output directory, reconciling a working copy, etc. So the notified events are the result of a build action, a clean action, a reconcile operation (for a working copy), etc.Code that participates in the build should in general be implemented with a separate Builder, rather than a CompilationParticipant. It is only necessary to use a CompilationParticipant if the build step needs to interact with the Java build, for instance by creating additional Java source files that must themselves in turn be compiled.
Clients wishing to participate in the compilation process must subclass this class, and implement
isActive(IJavaProject)
,aboutToBuild(IJavaProject)
,reconcile(ReconcileContext)
, etc.This class is intended to be subclassed by clients.
- Since:
- 3.2
-
-
Field Summary
Fields Modifier and Type Field Description static int
NEEDS_FULL_BUILD
static int
READY_FOR_BUILD
-
Constructor Summary
Constructors Constructor Description CompilationParticipant()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
aboutToBuild(IJavaProject project)
Notifies this participant that a build is about to start and provides it the opportunity to create missing source folders for generated source files.void
buildFinished(IJavaProject project)
Notifies this participant that a build has finished for the project.void
buildStarting(BuildContext[] files, boolean isBatch)
Notifies this participant that a compile operation is about to start and provides it the opportunity to generate source files based on the source files about to be compiled.void
cleanStarting(IJavaProject project)
Notifies this participant that a clean is about to start and provides it the opportunity to delete generated source files.boolean
isActive(IJavaProject project)
Returns whether this participant is active for a given project.boolean
isAnnotationProcessor()
Returns whether this participant is interested in Annotations.void
processAnnotations(BuildContext[] files)
Notifies this participant that a compile operation has found source files using Annotations.void
reconcile(ReconcileContext context)
Notifies this participant that a reconcile operation is happening.
-
-
-
Field Detail
-
READY_FOR_BUILD
public static final int READY_FOR_BUILD
- See Also:
- Constant Field Values
-
NEEDS_FULL_BUILD
public static final int NEEDS_FULL_BUILD
- See Also:
- Constant Field Values
-
-
Method Detail
-
aboutToBuild
public int aboutToBuild(IJavaProject project)
Notifies this participant that a build is about to start and provides it the opportunity to create missing source folders for generated source files. Additional source folders should be marked as optional so the project can be built when the folders do not exist. Only sent to participants interested in the project.Default is to return
READY_FOR_BUILD
.- Parameters:
project
- the project about to build- Returns:
- READY_FOR_BUILD or NEEDS_FULL_BUILD
- See Also:
buildFinished(IJavaProject project)
-
buildFinished
public void buildFinished(IJavaProject project)
Notifies this participant that a build has finished for the project. This will be sent, even if buildStarting() was not sent when no source files needed to be compiled or the build failed. Only sent to participants interested in the project.- Parameters:
project
- the project about to build- Since:
- 3.4
-
buildStarting
public void buildStarting(BuildContext[] files, boolean isBatch)
Notifies this participant that a compile operation is about to start and provides it the opportunity to generate source files based on the source files about to be compiled. When isBatchBuild is true, then files contains all source files in the project. Only sent to participants interested in the current build project.- Parameters:
files
- is an array of BuildContextisBatch
- identifies when the build is a batch build
-
cleanStarting
public void cleanStarting(IJavaProject project)
Notifies this participant that a clean is about to start and provides it the opportunity to delete generated source files. Only sent to participants interested in the project.- Parameters:
project
- the project about to be cleaned
-
isActive
public boolean isActive(IJavaProject project)
Returns whether this participant is active for a given project.Default is to return
false
.For efficiency, participants that are not interested in the given project should return
false
for that project.Note: In
special cases
, the project may be closed and not exist. Participants typically return false when the underlying project is closed. I.e. when the following check returns false:javaProject.getProject().isOpen();
- Parameters:
project
- the project to participate in- Returns:
- whether this participant is active for a given project
-
isAnnotationProcessor
public boolean isAnnotationProcessor()
Returns whether this participant is interested in Annotations.Returning
true
enables the callbackprocessAnnotations(BuildContext[])
, where this participant can influence build results.Default is to return
false
.- Returns:
- whether this participant is interested in Annotations
-
processAnnotations
public void processAnnotations(BuildContext[] files)
Notifies this participant that a compile operation has found source files using Annotations. Only sent to participants interested in the current build project that answer true toisAnnotationProcessor()
. Each BuildContext was informed whether its source file currently hasAnnotations().- Parameters:
files
- is an array of BuildContext
-
reconcile
public void reconcile(ReconcileContext context)
Notifies this participant that a reconcile operation is happening. The participant can act on this reconcile operation by using the given context. Other participant can then see the result of this participation on this context.Note that a participant should not modify the buffer of the working copy that is being reconciled.
Default is to do nothing.
- Parameters:
context
- the reconcile context to act on
-
-