public abstract class DefaultBuildContext<BuildFailureException extends Exception> extends Object implements BuildContext
BuildContext.Input<T>, BuildContext.InputMetadata<T>, BuildContext.Output<T>, BuildContext.OutputMetadata<T>, BuildContext.Resource<T>, BuildContext.ResourceMetadata<T>, BuildContext.ResourceStatus, BuildContext.Severity| Modifier and Type | Field and Description |
|---|---|
protected org.slf4j.Logger |
log |
protected File |
stateFile |
| Constructor and Description |
|---|
DefaultBuildContext(io.takari.incrementalbuild.workspace.Workspace workspace,
io.takari.incrementalbuild.workspace.MessageSink messageSink,
File stateFile,
Map<String,Serializable> configuration) |
| Modifier and Type | Method and Description |
|---|---|
void |
addCapability(DefaultOutput output,
String qualifier,
String localName) |
void |
addMessage(Object resource,
int line,
int column,
String message,
BuildContext.Severity severity,
Throwable cause) |
void |
associate(DefaultInput<?> input,
DefaultOutput output) |
void |
associateIncludedInput(DefaultInput<?> input,
DefaultInput<File> included) |
protected void |
carryOverOutput(File outputFile) |
protected void |
carryOverOutput(Object inputResource,
File outputFile) |
void |
commit() |
protected void |
deleteStaleOutput(File outputFile) |
Iterable<DefaultOutputMetadata> |
deleteStaleOutputs(boolean eager)
Deletes outputs that were registered during the previous build but not the current build.
|
Iterable<DefaultOutput> |
getAssociatedOutputs(File inputFile) |
Iterable<DefaultInputMetadata<File>> |
getDependentInputs(String qualifier,
String localName)
Returns
Inputs with specified requirement. |
BuildContext.ResourceStatus |
getInputStatus(Object inputResource,
boolean associated) |
Collection<String> |
getOutputCapabilities(File outputFile,
String qualifier) |
BuildContext.ResourceStatus |
getOutputStatus(File outputFile) |
Iterable<DefaultOutputMetadata> |
getProcessedOutputs()
Returns all outputs processed by this
BuildContext during current build or carried over
from previous build. |
Iterable<DefaultInputMetadata<File>> |
getRegisteredInputs()
Returns all inputs registered with this
BuildContext during current and previous
builds. |
<T> Iterable<DefaultInputMetadata<T>> |
getRegisteredInputs(Class<T> clazz) |
<T> Set<DefaultInputMetadata<T>> |
getRemovedInputs(Class<T> clazz) |
<T extends Serializable> |
getResourceAttribute(Object resource,
String key,
boolean previous,
Class<T> clazz) |
boolean |
isEscalated() |
boolean |
isProcessingRequired() |
protected void |
log(Object resource,
int line,
int column,
String message,
BuildContext.Severity severity,
Throwable cause) |
void |
markOutputAsUptodate(File outputFile) |
void |
markOutputsAsUptodate()
Marks all outputs processed during the previous build as up-to-date, in other words, the
outputs and their associated metadata are carried over to the next build as-is.
|
void |
markSkipExecution()
Marks skipped build execution.
|
protected abstract BuildFailureException |
newBuildFailureException(String message) |
DefaultInput<File> |
processIncludedInput(File inputFile) |
<T> DefaultInput<T> |
processInput(DefaultInputMetadata<T> inputMetadata) |
DefaultOutput |
processOutput(File outputFile) |
Iterable<DefaultInput<File>> |
registerAndProcessInputs(File basedir,
Collection<String> includes,
Collection<String> excludes)
Registers inputs identified by
basedir and includes/excludes ant
patterns. |
DefaultInputMetadata<File> |
registerInput(File inputFile)
Registers specified input
File with this build context. |
<T extends Serializable> |
registerInput(ResourceHolder<T> holder) |
Iterable<DefaultInputMetadata<File>> |
registerInputs(File basedir,
Collection<String> includes,
Collection<String> excludes)
Registers inputs identified by
basedir and includes/excludes ant
patterns. |
Iterable<DefaultInputMetadata<File>> |
registerInputs(Iterable<File> inputs) |
<T extends Serializable> |
setResourceAttribute(Object resource,
String key,
T value) |
protected final org.slf4j.Logger log
protected final File stateFile
public DefaultBuildContext(io.takari.incrementalbuild.workspace.Workspace workspace,
io.takari.incrementalbuild.workspace.MessageSink messageSink,
File stateFile,
Map<String,Serializable> configuration)
public boolean isEscalated()
public <T> DefaultInput<T> processInput(DefaultInputMetadata<T> inputMetadata)
public Iterable<DefaultInput<File>> registerAndProcessInputs(File basedir, Collection<String> includes, Collection<String> excludes) throws IOException
BuildContextbasedir and includes/excludes ant
patterns. Processes inputs that are new or modified since previous build.registerAndProcessInputs in interface BuildContextIOExceptionpublic Iterable<DefaultOutputMetadata> deleteStaleOutputs(boolean eager) throws IOException
commit().
Result includes DefaultOutput instances removed from the state even if underlying file did not exist.
If eager == false, preserves outputs associated with existing inputs during the
previous build and outputs that do not have associated inputs. This is useful if generator
needs access to old output files during multi-round build. For example, java incremental
compiler needs to compare old and new version of class files to determine if changes need to be
propagated.
IOException - if an orphaned output file cannot be deleted.protected void deleteStaleOutput(File outputFile) throws IOException
IOExceptionpublic DefaultOutput processOutput(File outputFile)
processOutput in interface BuildContextpublic void markOutputsAsUptodate()
isProcessingRequired() returns false. No context
modification operations (register* or process) are permitted after this call.
This is useful when this build context is used to track both inputs and outputs but not association between the two. Without input/output association information the build context is not able to determine what outputs are stale/orphaned and what outputs are still relevant.
public void markSkipExecution()
public void markOutputAsUptodate(File outputFile)
public DefaultInput<File> processIncludedInput(File inputFile)
public BuildContext.ResourceStatus getInputStatus(Object inputResource, boolean associated)
public BuildContext.ResourceStatus getOutputStatus(File outputFile)
public DefaultInputMetadata<File> registerInput(File inputFile)
BuildContextFile with this build context.registerInput in interface BuildContextBuildContext.InputMetadata representing the input file, never null.public <T extends Serializable> DefaultInputMetadata<T> registerInput(ResourceHolder<T> holder)
public Iterable<DefaultInputMetadata<File>> registerInputs(Iterable<File> inputs)
public Iterable<DefaultInputMetadata<File>> registerInputs(File basedir, Collection<String> includes, Collection<String> excludes) throws IOException
BuildContextbasedir and includes/excludes ant
patterns.
When a file is found under basedir, it will be registered if it does not match
excludes patterns and matches includes patterns. null or empty includes
parameter will match all files. excludes match takes precedence over includes,
if a file matches one of excludes patterns it will not be registered regardless of includes
patterns match.
Implementation is not expected to handle changes basedir, includes or
excludes incrementally.
registerInputs in interface BuildContextbasedir - is the base directory to look for inputs, must not be nullincludes - patterns of the files to register, can be nullexcludes - patterns of the files to ignore, can be nullIOExceptionhttp://ant.apache.org/manual/dirtasks.html#patternspublic Iterable<DefaultInputMetadata<File>> getRegisteredInputs()
BuildContextBuildContext during current and previous
builds.getRegisteredInputs in interface BuildContextpublic <T> Iterable<DefaultInputMetadata<T>> getRegisteredInputs(Class<T> clazz)
public <T> Set<DefaultInputMetadata<T>> getRemovedInputs(Class<T> clazz)
public Iterable<DefaultOutputMetadata> getProcessedOutputs()
BuildContextBuildContext during current build or carried over
from previous build.getProcessedOutputs in interface BuildContextpublic void associate(DefaultInput<?> input, DefaultOutput output)
public Iterable<DefaultOutput> getAssociatedOutputs(File inputFile)
public void associateIncludedInput(DefaultInput<?> input, DefaultInput<File> included)
public void addCapability(DefaultOutput output, String qualifier, String localName)
public Collection<String> getOutputCapabilities(File outputFile, String qualifier)
public Iterable<DefaultInputMetadata<File>> getDependentInputs(String qualifier, String localName)
Inputs with specified requirement. Inputs from the old state are automatically
registered for processing.public <T extends Serializable> Serializable setResourceAttribute(Object resource, String key, T value)
public <T extends Serializable> T getResourceAttribute(Object resource, String key, boolean previous, Class<T> clazz)
public void addMessage(Object resource, int line, int column, String message, BuildContext.Severity severity, Throwable cause)
protected void log(Object resource, int line, int column, String message, BuildContext.Severity severity, Throwable cause)
public void commit()
throws BuildFailureException extends Exception,
IOException
BuildFailureException extends ExceptionIOExceptionprotected void carryOverOutput(File outputFile)
public boolean isProcessingRequired()
protected abstract BuildFailureException newBuildFailureException(String message)
Copyright © 2014. All Rights Reserved.