Class ChainedPollingStrategy<T,U>

java.lang.Object
com.azure.core.util.polling.ChainedPollingStrategy<T,U>
Type Parameters:
T - the type of the response type from a polling call, or BinaryData if raw response body should be kept
U - the type of the final result object to deserialize into, or BinaryData if raw response body should be kept
All Implemented Interfaces:
PollingStrategy<T,U>

public final class ChainedPollingStrategy<T,U> extends Object implements PollingStrategy<T,U>
A polling strategy that chains multiple polling strategies, finds the first strategy that can poll the current long-running operation, and polls with that strategy.
  • Constructor Details

    • ChainedPollingStrategy

      public ChainedPollingStrategy(List<PollingStrategy<T,U>> strategies)
      Creates a chained polling strategy with a list of polling strategies.
      Parameters:
      strategies - the list of polling strategies
      Throws:
      NullPointerException - If strategies is null.
      IllegalArgumentException - If strategies is an empty list.
  • Method Details

    • canPoll

      public Mono<Boolean> canPoll(Response<?> initialResponse)
      Description copied from interface: PollingStrategy
      Checks if this strategy is able to handle polling for this long-running operation based on the information in the initial response.
      Specified by:
      canPoll in interface PollingStrategy<T,U>
      Parameters:
      initialResponse - the response from the initial method call to activate the long-running operation
      Returns:
      true if this polling strategy can handle the initial response, false if not
    • getResult

      public Mono<U> getResult(PollingContext<T> context, TypeReference<U> resultType)
      Parses the response from the final GET call into the result type of the long-running operation.
      Specified by:
      getResult in interface PollingStrategy<T,U>
      Parameters:
      context - the PollingContext for the current polling operation
      resultType - the TypeReference of the final result object to deserialize into, or BinaryData if raw response body should be kept.
      Returns:
      a publisher emitting the final result
      Throws:
      NullPointerException - if canPoll(Response) is not called prior to this, or if it returns false.
    • onInitialResponse

      public Mono<PollResponse<T>> onInitialResponse(Response<?> response, PollingContext<T> pollingContext, TypeReference<T> pollResponseType)
      Parses the initial response into a LongRunningOperationStatus, and stores information useful for polling in the PollingContext. If the result is anything other than LongRunningOperationStatus.IN_PROGRESS, the long-running operation will be terminated and none of the other methods will be invoked.
      Specified by:
      onInitialResponse in interface PollingStrategy<T,U>
      Parameters:
      response - the response from the initial method call to activate the long-running operation
      pollingContext - the PollingContext for the current polling operation
      pollResponseType - the TypeReference of the response type from a polling call, or BinaryData if raw response body should be kept. This should match the generic parameter PollingStrategy.
      Returns:
      a publisher emitting the poll response containing the status and the response content
      Throws:
      NullPointerException - if canPoll(Response) is not called prior to this, or if it returns false.
    • poll

      public Mono<PollResponse<T>> poll(PollingContext<T> context, TypeReference<T> pollResponseType)
      Parses the response from the polling URL into a PollResponse, and stores information useful for further polling and final response in the PollingContext. The result must have the LongRunningOperationStatus specified, and the entire polling response content as a BinaryData.
      Specified by:
      poll in interface PollingStrategy<T,U>
      Parameters:
      context - the PollingContext for the current polling operation
      pollResponseType - the TypeReference of the response type from a polling call, or BinaryData if raw response body should be kept. This should match the generic parameter PollingStrategy.
      Returns:
      a publisher emitting the poll response containing the status and the response content
      Throws:
      NullPointerException - if canPoll(Response) is not called prior to this, or if it returns false.
    • cancel

      public Mono<T> cancel(PollingContext<T> pollingContext, PollResponse<T> initialResponse)
      Cancels the long-running operation if service supports cancellation. If service does not support cancellation then the implementer should return Mono.error with an error message indicating absence of cancellation. Implementing this method is optional - by default, cancellation will not be supported unless overridden.
      Specified by:
      cancel in interface PollingStrategy<T,U>
      Parameters:
      pollingContext - the PollingContext for the current polling operation, or null if the polling has started in a SyncPoller
      initialResponse - the response from the initial operation
      Returns:
      a publisher emitting the cancellation response content
      Throws:
      NullPointerException - if canPoll(Response) is not called prior to this, or if it returns false.