Class StepContext
java.lang.Object
org.jenkinsci.plugins.workflow.steps.StepContext
- All Implemented Interfaces:
com.google.common.util.concurrent.FutureCallback<Object>
,Serializable
public abstract class StepContext
extends Object
implements com.google.common.util.concurrent.FutureCallback<Object>, Serializable
An implicit context available to every
Step
.
In a flow, would be created by a FlowExecution
.
It is serializable so a step which may survive a Jenkins restart is free to save it.
StepContext
is only valid until the result is set via FutureCallback
.
Beyond that point, callers are not allowed to call any of the methods.
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract boolean
StepContext
s get persisted, so they may not have the identity equality, but equals method would allow two instances to be compared.abstract <T> T
Tries to find a contextually available object.boolean
hasBody()
Checks if this step was called with a body.abstract int
hashCode()
Needs to be overridden as theequals(Object)
method is overridden.abstract boolean
isReady()
Whetherget(java.lang.Class<T>)
is ready to return values.abstract BodyInvoker
Prepares for an asynchronous invocation of the body block that's given as an argument to this step invocation (in a host language dependent manner.)abstract void
abstract com.google.common.util.concurrent.ListenableFuture<Void>
Requests that any state held by theStepExecution
be saved to disk.abstract void
Sets the overall result of the flow.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.google.common.util.concurrent.FutureCallback
onFailure
-
Constructor Details
-
StepContext
public StepContext()
-
-
Method Details
-
get
Tries to find a contextually available object. Some types known to be in use:Launcher
- a way to fork processes
EnvVars
- read access to environment variables associated with a run, typically used for launchers
FilePath
- a “workspace” to use for example as from
Launcher.ProcStarter.pwd(hudson.FilePath)
Computer
- an agent we are running on
Executor
- an executor slot on an agent we are running on
TaskListener
- a place to send output (see
LogAction
for a flow) Run
- a running build
FlowExecution
- a running flow
FlowNode
- a running node in a flow
- Parameters:
key
- the kind of thing we want- Returns:
- that service, if available (which it should be if
StepDescriptor.getRequiredContext()
includes it), else null - Throws:
IOException
- IfStepContext
gets serialized, Jenkins restarts, deserialized later, andStep
tries to get additional context objects, it can be that the correspondingFlowExecution
could be non-existent (for example, the run that was driving the flow could have failed to load.) This exception is thrown in such situations just likeFlowExecutionOwner.get
throws IOException.InterruptedException
- See Also:
-
onSuccess
- Specified by:
onSuccess
in interfacecom.google.common.util.concurrent.FutureCallback<Object>
-
isReady
public abstract boolean isReady()Whetherget(java.lang.Class<T>)
is ready to return values. May be called to break deadlocks during reloading.- Returns:
- true normally, false if we are still reloading the context, for example during unpickling
-
saveState
Requests that any state held by theStepExecution
be saved to disk. Useful when a long-running step has changed some instance fields (or the content of a final field) and needs these changes to be recorded. An implementation might in fact save more state than just the associated step execution, but it must save at least that much.- Returns:
- a future letting you know if and when the state was in fact saved
-
setResult
Sets the overall result of the flow. LikeRun.setResult(hudson.model.Result)
, can only make the result worse than it already is. Since some flows may have try-catch semantics, if a step fails to complete normally it is better to useFutureCallback.onFailure(Throwable)
instead. (For example withFlowInterruptedException
.)- Parameters:
r
-Result.UNSTABLE
, typically
-
newBodyInvoker
Prepares for an asynchronous invocation of the body block that's given as an argument to this step invocation (in a host language dependent manner.)When the block is completed normally or abnormally, you can have have the callback invoked. The invocation will not get scheduled until you start it.
StepDescriptor.takesImplicitBlockArgument()
must be true.- Throws:
IllegalStateException
- ifhasBody()
is false
-
hasBody
public boolean hasBody()Checks if this step was called with a body.- Returns:
- true if
StepDescriptor.takesImplicitBlockArgument()
is true, and such a body was in fact passed in; false otherwise
-
equals
StepContext
s get persisted, so they may not have the identity equality, but equals method would allow two instances to be compared.- Overrides:
equals
in classObject
- Returns:
- true if
StepContext
s are for the same context for the same execution.
-
hashCode
public abstract int hashCode()Needs to be overridden as theequals(Object)
method is overridden.
-