org.schmant.task.lang
Class ClosureTask

java.lang.Object
  extended by org.schmant.support.AbstractArgumentChecker
      extended by org.schmant.task.stub.AbstractTask<T>
          extended by org.schmant.task.stub.AbstractActionTask<T>
              extended by org.schmant.task.stub.AbstractProcessTask<ClosureTask>
                  extended by org.schmant.task.lang.ClosureTask
All Implemented Interfaces:
TaskDependency, ActionTaskConfigurable<ClosureTask>, ActionTaskSpec<ClosureTask>, LoggingConfigurable<ClosureTask>, OverwriteConfigurable<ClosureTask>, SourceConfigurable<ClosureTask>, SourceConfigured, TargetConfigurable<ClosureTask>, TargetConfigured, GeneratorTaskConfigurable<ClosureTask>, GeneratorTaskSpec<ClosureTask>, ProcessTaskConfigurable<ClosureTask>, ProcessTaskSpec<ClosureTask>, Task, TaskRunnable, TaskSpecification<ClosureTask>

public final class ClosureTask
extends AbstractProcessTask<ClosureTask>

This task is used by other tasks that run closures.

Since:
1.1
Author:
Karl Gustafsson

Field Summary
 
Fields inherited from interface org.schmant.task.confable.OverwriteConfigurable
DEFAULT_OVERWRITE_STRATEGY
 
Constructor Summary
ClosureTask(Object closure)
          This constructor is used by TaskExecutor for creating a closure task when adding a closure directly to the task executor.
 
Method Summary
 void copyProperties(ClosureTask spec)
          Override the implementation from AbstractTask to copy the source properties.
protected  String getDefaultLogHeader()
          Get the default log header to log (to level INFO) before the task is run if the task user has not set a custom header.
protected  boolean isSourcesMandatory()
          Must the sources property be set? This method returns true.
protected  boolean isTargetMandatory()
          Is a target mandatory? This method always returns true.
protected  void runInternal(Report r)
          Subclasses implement this.
protected  Collection<String> validate(Report r)
          Override the method inherited from AbstractTask to give a validation error if no source is set (and AbstractActionTask.isSourcesMandatory() is true).
 
Methods inherited from class org.schmant.task.stub.AbstractProcessTask
getOverwriteStrategy, getTarget, setOverwrite, setOverwriteStrategy, setTarget, toString
 
Methods inherited from class org.schmant.task.stub.AbstractActionTask
addSource, addSources, clearSources, getRelativeToBase, getSource, getSources, isMoreThanOneSourceAllowed, setRelativeToBase, setSource, setSources
 
Methods inherited from class org.schmant.task.stub.AbstractTask
cancel, createTask, getDefaultLogFooter, getDependencyForTasksScheduledByThisTask, getDependencyObservable, getFailureCause, getLogFooter, getLogHeader, getSatisfiedStateLock, getThis, isCancelled, isDone, isInterrupted, isRunning, isSatisfied, isSuccessful, run, setLogFooter, setLogHeader, setReportLevel, setTraceLogging
 
Methods inherited from class org.schmant.support.AbstractArgumentChecker
check, check, check, check
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.schmant.task.confable.SourceConfigurable
addSource, addSources, clearSources, setRelativeToBase, setSource, setSources
 
Methods inherited from interface org.schmant.task.confable.SourceConfigured
getSource, getSources
 
Methods inherited from interface org.schmant.task.TaskSpecification
createTask
 
Methods inherited from interface org.schmant.task.confable.LoggingConfigurable
setLogFooter, setLogHeader, setReportLevel, setTraceLogging
 

Constructor Detail

ClosureTask

public ClosureTask(Object closure)
This constructor is used by TaskExecutor for creating a closure task when adding a closure directly to the task executor.

Parameters:
closure - The closure to run.
Method Detail

getDefaultLogHeader

protected String getDefaultLogHeader()
Description copied from class: AbstractTask
Get the default log header to log (to level INFO) before the task is run if the task user has not set a custom header. Subclasses may override this to return better headers.

This is called after validating the task.

Return null to disable logging.

Overrides:
getDefaultLogHeader in class AbstractTask<ClosureTask>
Returns:
"Running " + toString()

isTargetMandatory

protected boolean isTargetMandatory()
Description copied from class: AbstractProcessTask
Is a target mandatory? This method always returns true. Subclasses may override this to return false if a target is not mandatory for them.

Overrides:
isTargetMandatory in class AbstractProcessTask<ClosureTask>
Returns:
true, always

isSourcesMandatory

protected boolean isSourcesMandatory()
Description copied from class: AbstractActionTask
Must the sources property be set? This method returns true. Subclasses may override this method to return false if the sources property is not mandatory.

Overrides:
isSourcesMandatory in class AbstractActionTask<ClosureTask>
Returns:
true, always.

validate

protected Collection<String> validate(Report r)
Description copied from class: AbstractActionTask
Override the method inherited from AbstractTask to give a validation error if no source is set (and AbstractActionTask.isSourcesMandatory() is true).

Subclasses may override this to add their own validations.

Overrides:
validate in class AbstractProcessTask<ClosureTask>
Parameters:
r - A report to log warning and debug messages to. Validation errors should not be logged, though. They are logged later.
Returns:
A collection of error messages.

runInternal

protected void runInternal(Report r)
                    throws Exception
Description copied from class: AbstractTask
Subclasses implement this. The task is AbstractTask.validate(Report):d before this method is called, see AbstractTask.run().

Specified by:
runInternal in class AbstractTask<ClosureTask>
Parameters:
r - The current thread's Report.
Throws:
Exception - On errors.

copyProperties

public void copyProperties(ClosureTask spec)
Description copied from class: AbstractActionTask
Override the implementation from AbstractTask to copy the source properties. Subclasses must override this to copy their own properties.

Specified by:
copyProperties in interface TaskSpecification<ClosureTask>
Overrides:
copyProperties in class AbstractProcessTask<ClosureTask>
Parameters:
spec - The specification to copy properties to.