Class SyncChainedPollingStrategy<T,U>

java.lang.Object
com.azure.core.util.polling.SyncChainedPollingStrategy<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:
SyncPollingStrategy<T,U>

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

    • SyncChainedPollingStrategy

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

    • canPoll

      public boolean canPoll(Response<?> initialResponse)
      Description copied from interface: SyncPollingStrategy
      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 SyncPollingStrategy<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 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 SyncPollingStrategy<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:
      the final result
      Throws:
      NullPointerException - if canPoll(Response) is not called prior to this, or if it returns false.
    • onInitialResponse

      public 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 SyncPollingStrategy<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 U.
      Returns:
      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 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 SyncPollingStrategy<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 U.
      Returns:
      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 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 throw an IllegalStateException 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 SyncPollingStrategy<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:
      the cancellation response content
      Throws:
      NullPointerException - if canPoll(Response) is not called prior to this, or if it returns false.