public interface

Command

implements Callable<V>
com.atlassian.bitbucket.scm.Command<T>

Class Overview

Wraps an operation which may be run synchronously. Prior to performing the operation, timeouts may be set to control how long the operation is allowed to run without producing output or processing input (the its idle timeout or to provide an absolute limit how long the operation is allowed to run (the execution timeout.

When the operation completes, it will return an object of type T. If T is Void, the operation will return null on completion. Typically this means the operation uses some form of callback, allowing the caller to process the results as they are produced rather than returning them on completion.

Summary

Public Methods
@Nonnull AsyncCommand<T> asynchronous()
Transforms this Command into an AsyncCommand which may be called asynchronously.
@Nullable T call()
Executes a command
void setExecutionTimeout(long timeoutInSecs)
Sets the maximum time, in seconds, the operation is allowed to run.
void setExecutionTimeout(Duration timeout)
Sets the maximum duration the operation is allowed to run.
void setIdleTimeout(long timeoutInSecs)
Sets the maximum time, in seconds, the operation is allowed to run without either producing output or processing input.
void setIdleTimeout(Duration timeout)
Sets the maximum duration the operation is allowed to run without either producing output or processing input.
void setTimeout(Duration timeout)
Sets the idle and execution timeouts to the specified duration.
void setTimeout(long timeoutInSecs)
Sets the idle and execution timeouts, in seconds, for the operation.
[Expand]
Inherited Methods
From interface java.util.concurrent.Callable

Public Methods

@Nonnull public AsyncCommand<T> asynchronous ()

Transforms this Command into an AsyncCommand which may be called asynchronously. Any timeouts applied this command will not be applied to the resulting AsyncCommand.

Once an Command has been transformed for asynchronous use, it may no longer be used synchronously.

Returns
Throws
UnsupportedOperationException if the implementation cannot internally convert the operation for asynchronous execution

@Nullable public T call ()

Executes a command

Returns
  • the result of the operation
Throws
CommandCanceledException if command execution is canceled
ServiceException if an error occurs while performing the operation

public void setExecutionTimeout (long timeoutInSecs)

Sets the maximum time, in seconds, the operation is allowed to run. The operation will be aborted automatically if it hasn't completed in this time even if it is still producing output or processing input.

Parameters
timeoutInSecs the maximum time the operation is allowed to run, in seconds
Throws
UnsupportedOperationException if the implementation does not support configuring an execution timeout

public void setExecutionTimeout (Duration timeout)

Sets the maximum duration the operation is allowed to run. The operation will be aborted automatically if it hasn't completed in this time even if it is still producing output or processing input.

Parameters
timeout the maximum duration the operation is allowed to run
Throws
UnsupportedOperationException if the implementation does not support configuring an execution timeout

public void setIdleTimeout (long timeoutInSecs)

Sets the maximum time, in seconds, the operation is allowed to run without either producing output or processing input. Output may be produced on either the standard output or standard error streams.

Parameters
timeoutInSecs the maximum time the operation is allowed to be idle, in seconds
Throws
UnsupportedOperationException if the implementation does not support configuring an idle timeout

public void setIdleTimeout (Duration timeout)

Sets the maximum duration the operation is allowed to run without either producing output or processing input. Output may be produced on either the standard output or standard error streams.

Parameters
timeout the maximum duration the operation is allowed to be idle
Throws
UnsupportedOperationException if the implementation does not support configuring an idle timeout

public void setTimeout (Duration timeout)

Sets the idle and execution timeouts to the specified duration. This is useful for commands that do their processing up-front and may not produce any output until processing is complete. Setting the idle timeout to the same value as the execution timeout effectively disables the idle timeout.

Parameters
timeout the maximum duration the operation is allowed to run or be idle

public void setTimeout (long timeoutInSecs)

Sets the idle and execution timeouts, in seconds, for the operation. This is useful for commands that do their processing up-front and may not produce any output until processing is complete. Setting the idle timeout to the same value as the execution timeout effectively disables the idle timeout.

Parameters
timeoutInSecs the maximum time the operation is allowed to run or be idle, in seconds