Class SynchronousStepExecution<T>
- java.lang.Object
-
- org.jenkinsci.plugins.workflow.steps.StepExecution
-
- org.jenkinsci.plugins.workflow.steps.SynchronousStepExecution<T>
-
- Type Parameters:
T
- the type of the return value (may beVoid
)
- All Implemented Interfaces:
Serializable
public abstract class SynchronousStepExecution<T> extends StepExecution
StepExecution
that always executes synchronously. This API should be used for short-lived tasks that return almost instantly. To call legacy Jenkins APIs which are potentially long-running and interruptible yet offer no asynchronous mode (for example because they block on a remoting call) useSynchronousNonBlockingStepExecution
. Also note that long-lived tasks which do not need to run within a Java method call should use the more generalStepExecution
.- Author:
- Kohsuke Kawaguchi
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
SynchronousStepExecution(StepContext context)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract T
run()
Meat of the execution.boolean
start()
Start execution of something and report the end result back to the given callback.void
stop(Throwable cause)
If the computation is going synchronously, try to cancel that.-
Methods inherited from class org.jenkinsci.plugins.workflow.steps.StepExecution
applyAll, applyAll, blocksRestart, getContext, getStatus, getStatusBounded, onResume
-
-
-
-
Constructor Detail
-
SynchronousStepExecution
protected SynchronousStepExecution(@NonNull StepContext context)
-
-
Method Detail
-
run
protected abstract T run() throws Exception
Meat of the execution. When this method returns, a step execution is over.- Throws:
Exception
-
start
public final boolean start() throws Exception
Description copied from class:StepExecution
Start execution of something and report the end result back to the given callback.Arguments are passed when instantiating steps.
This method will run in the CPS VM thread and as such should not perform I/O or block. Use
SynchronousNonBlockingStepExecution
orGeneralNonBlockingStepExecution
as needed.- Specified by:
start
in classStepExecution
- Returns:
- true if the execution of this step has synchronously completed before this method returns.
It is the callee's responsibility to set the return value via
StepContext.onSuccess(Object)
orFutureCallback.onFailure(Throwable)
. false if the asynchronous execution has started and thatStepContext
will be notified when the result comes in. (Note that the nature of asynchrony is such that it is possible for theStepContext
to be already notified before this method returns.) - Throws:
Exception
- if any exception is thrown,Step
is assumed to have completed abnormally synchronously (as ifFutureCallback.onFailure(java.lang.Throwable)
is called and the method returned true.)
-
stop
public void stop(Throwable cause) throws Exception
If the computation is going synchronously, try to cancel that.- Overrides:
stop
in classStepExecution
- Parameters:
cause
- Contextual information that lets the step know what resulted in stopping an executing step, passed in the hope that this will assist diagnostics.- Throws:
Exception
-
-