All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.swf.DefaultSwfAsyncClient Maven / Gradle / Ivy

/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.swf;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.core.ApiName;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.AsyncClientHandler;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.core.util.VersionInfo;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.CountPendingActivityTasksRequest;
import software.amazon.awssdk.services.swf.model.CountPendingActivityTasksResponse;
import software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksRequest;
import software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksResponse;
import software.amazon.awssdk.services.swf.model.DefaultUndefinedException;
import software.amazon.awssdk.services.swf.model.DeprecateActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.DeprecateActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.DeprecateDomainRequest;
import software.amazon.awssdk.services.swf.model.DeprecateDomainResponse;
import software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.DescribeActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.DescribeActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.DescribeDomainRequest;
import software.amazon.awssdk.services.swf.model.DescribeDomainResponse;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.DomainAlreadyExistsException;
import software.amazon.awssdk.services.swf.model.DomainDeprecatedException;
import software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest;
import software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse;
import software.amazon.awssdk.services.swf.model.LimitExceededException;
import software.amazon.awssdk.services.swf.model.ListActivityTypesRequest;
import software.amazon.awssdk.services.swf.model.ListActivityTypesResponse;
import software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.ListDomainsRequest;
import software.amazon.awssdk.services.swf.model.ListDomainsResponse;
import software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.swf.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest;
import software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse;
import software.amazon.awssdk.services.swf.model.OperationNotPermittedException;
import software.amazon.awssdk.services.swf.model.PollForActivityTaskRequest;
import software.amazon.awssdk.services.swf.model.PollForActivityTaskResponse;
import software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest;
import software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse;
import software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatRequest;
import software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatResponse;
import software.amazon.awssdk.services.swf.model.RegisterActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.RegisterActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.RegisterDomainRequest;
import software.amazon.awssdk.services.swf.model.RegisterDomainResponse;
import software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledRequest;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledResponse;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedRequest;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedResponse;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedRequest;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedResponse;
import software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedRequest;
import software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedResponse;
import software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.StartWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.StartWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.SwfException;
import software.amazon.awssdk.services.swf.model.SwfRequest;
import software.amazon.awssdk.services.swf.model.TagResourceRequest;
import software.amazon.awssdk.services.swf.model.TagResourceResponse;
import software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.TooManyTagsException;
import software.amazon.awssdk.services.swf.model.TypeAlreadyExistsException;
import software.amazon.awssdk.services.swf.model.TypeDeprecatedException;
import software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.UndeprecateDomainRequest;
import software.amazon.awssdk.services.swf.model.UndeprecateDomainResponse;
import software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.UnknownResourceException;
import software.amazon.awssdk.services.swf.model.UntagResourceRequest;
import software.amazon.awssdk.services.swf.model.UntagResourceResponse;
import software.amazon.awssdk.services.swf.model.WorkflowExecutionAlreadyStartedException;
import software.amazon.awssdk.services.swf.paginators.GetWorkflowExecutionHistoryPublisher;
import software.amazon.awssdk.services.swf.paginators.ListActivityTypesPublisher;
import software.amazon.awssdk.services.swf.paginators.ListClosedWorkflowExecutionsPublisher;
import software.amazon.awssdk.services.swf.paginators.ListDomainsPublisher;
import software.amazon.awssdk.services.swf.paginators.ListOpenWorkflowExecutionsPublisher;
import software.amazon.awssdk.services.swf.paginators.ListWorkflowTypesPublisher;
import software.amazon.awssdk.services.swf.paginators.PollForDecisionTaskPublisher;
import software.amazon.awssdk.services.swf.transform.CountClosedWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.CountOpenWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.CountPendingActivityTasksRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.CountPendingDecisionTasksRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DeprecateActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DeprecateDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DeprecateWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.GetWorkflowExecutionHistoryRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListActivityTypesRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListClosedWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListDomainsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListOpenWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListWorkflowTypesRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.PollForActivityTaskRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.PollForDecisionTaskRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RecordActivityTaskHeartbeatRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RegisterActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RegisterDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RegisterWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RequestCancelWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondActivityTaskCanceledRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondActivityTaskCompletedRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondActivityTaskFailedRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondDecisionTaskCompletedRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.SignalWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.StartWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.TerminateWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UndeprecateActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UndeprecateDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UndeprecateWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;

/**
 * Internal implementation of {@link SwfAsyncClient}.
 *
 * @see SwfAsyncClient#builder()
 */
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultSwfAsyncClient implements SwfAsyncClient {
    private static final Logger log = LoggerFactory.getLogger(DefaultSwfAsyncClient.class);

    private final AsyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    protected DefaultSwfAsyncClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration;
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    @Override
    public final String serviceName() {
        return SERVICE_NAME;
    }

    /**
     * 

* Returns the number of closed workflow executions within the given domain that meet the specified filtering * criteria. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * tagFilter.tag: String constraint. The key is swf:tagFilter.tag. *

      *
    • *
    • *

      * typeFilter.name: String constraint. The key is swf:typeFilter.name. *

      *
    • *
    • *

      * typeFilter.version: String constraint. The key is swf:typeFilter.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param countClosedWorkflowExecutionsRequest * @return A Java Future containing the result of the CountClosedWorkflowExecutions operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.CountClosedWorkflowExecutions */ @Override public CompletableFuture countClosedWorkflowExecutions( CountClosedWorkflowExecutionsRequest countClosedWorkflowExecutionsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, countClosedWorkflowExecutionsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountClosedWorkflowExecutions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountClosedWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CountClosedWorkflowExecutions") .withMarshaller(new CountClosedWorkflowExecutionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(countClosedWorkflowExecutionsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = countClosedWorkflowExecutionsRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the number of open workflow executions within the given domain that meet the specified filtering * criteria. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * tagFilter.tag: String constraint. The key is swf:tagFilter.tag. *

      *
    • *
    • *

      * typeFilter.name: String constraint. The key is swf:typeFilter.name. *

      *
    • *
    • *

      * typeFilter.version: String constraint. The key is swf:typeFilter.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param countOpenWorkflowExecutionsRequest * @return A Java Future containing the result of the CountOpenWorkflowExecutions operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.CountOpenWorkflowExecutions */ @Override public CompletableFuture countOpenWorkflowExecutions( CountOpenWorkflowExecutionsRequest countOpenWorkflowExecutionsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, countOpenWorkflowExecutionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountOpenWorkflowExecutions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountOpenWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CountOpenWorkflowExecutions") .withMarshaller(new CountOpenWorkflowExecutionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(countOpenWorkflowExecutionsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = countOpenWorkflowExecutionsRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the estimated number of activity tasks in the specified task list. The count returned is an approximation * and isn't guaranteed to be exact. If you specify a task list that no activity task was ever scheduled in then * 0 is returned. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the taskList.name parameter by using a Condition element with the * swf:taskList.name key to allow the action to access only certain task lists. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param countPendingActivityTasksRequest * @return A Java Future containing the result of the CountPendingActivityTasks operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.CountPendingActivityTasks */ @Override public CompletableFuture countPendingActivityTasks( CountPendingActivityTasksRequest countPendingActivityTasksRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, countPendingActivityTasksRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountPendingActivityTasks"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountPendingActivityTasksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CountPendingActivityTasks") .withMarshaller(new CountPendingActivityTasksRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(countPendingActivityTasksRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = countPendingActivityTasksRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the estimated number of decision tasks in the specified task list. The count returned is an approximation * and isn't guaranteed to be exact. If you specify a task list that no decision task was ever scheduled in then * 0 is returned. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the taskList.name parameter by using a Condition element with the * swf:taskList.name key to allow the action to access only certain task lists. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param countPendingDecisionTasksRequest * @return A Java Future containing the result of the CountPendingDecisionTasks operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.CountPendingDecisionTasks */ @Override public CompletableFuture countPendingDecisionTasks( CountPendingDecisionTasksRequest countPendingDecisionTasksRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, countPendingDecisionTasksRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountPendingDecisionTasks"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountPendingDecisionTasksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CountPendingDecisionTasks") .withMarshaller(new CountPendingDecisionTasksRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(countPendingDecisionTasksRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = countPendingDecisionTasksRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deprecates the specified activity type. After an activity type has been deprecated, you cannot create new * tasks of that activity type. Tasks of this type that were scheduled before the type was deprecated continue to * run. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * activityType.name: String constraint. The key is swf:activityType.name. *

      *
    • *
    • *

      * activityType.version: String constraint. The key is swf:activityType.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param deprecateActivityTypeRequest * @return A Java Future containing the result of the DeprecateActivityType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • TypeDeprecatedException Returned when the specified activity or workflow type was already deprecated. *
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.DeprecateActivityType */ @Override public CompletableFuture deprecateActivityType( DeprecateActivityTypeRequest deprecateActivityTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deprecateActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeprecateActivityType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeprecateActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeprecateActivityType") .withMarshaller(new DeprecateActivityTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deprecateActivityTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deprecateActivityTypeRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deprecates the specified domain. After a domain has been deprecated it cannot be used to create new workflow * executions or register new types. However, you can still use visibility actions on this domain. Deprecating a * domain also deprecates all activity and workflow types registered in the domain. Executions that were started * before the domain was deprecated continues to run. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param deprecateDomainRequest * @return A Java Future containing the result of the DeprecateDomain operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • DomainDeprecatedException Returned when the specified domain has been deprecated.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.DeprecateDomain */ @Override public CompletableFuture deprecateDomain(DeprecateDomainRequest deprecateDomainRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deprecateDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeprecateDomain"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeprecateDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeprecateDomain") .withMarshaller(new DeprecateDomainRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deprecateDomainRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deprecateDomainRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deprecates the specified workflow type. After a workflow type has been deprecated, you cannot create new * executions of that type. Executions that were started before the type was deprecated continues to run. A * deprecated workflow type may still be used when calling visibility actions. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * workflowType.name: String constraint. The key is swf:workflowType.name. *

      *
    • *
    • *

      * workflowType.version: String constraint. The key is swf:workflowType.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param deprecateWorkflowTypeRequest * @return A Java Future containing the result of the DeprecateWorkflowType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • TypeDeprecatedException Returned when the specified activity or workflow type was already deprecated. *
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.DeprecateWorkflowType */ @Override public CompletableFuture deprecateWorkflowType( DeprecateWorkflowTypeRequest deprecateWorkflowTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deprecateWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeprecateWorkflowType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeprecateWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeprecateWorkflowType") .withMarshaller(new DeprecateWorkflowTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deprecateWorkflowTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deprecateWorkflowTypeRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns information about the specified activity type. This includes configuration settings provided when the * type was registered and other general information about the type. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * activityType.name: String constraint. The key is swf:activityType.name. *

      *
    • *
    • *

      * activityType.version: String constraint. The key is swf:activityType.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param describeActivityTypeRequest * @return A Java Future containing the result of the DescribeActivityType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.DescribeActivityType */ @Override public CompletableFuture describeActivityType( DescribeActivityTypeRequest describeActivityTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeActivityType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeActivityType") .withMarshaller(new DescribeActivityTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeActivityTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeActivityTypeRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns information about the specified domain, including description and status. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param describeDomainRequest * @return A Java Future containing the result of the DescribeDomain operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.DescribeDomain */ @Override public CompletableFuture describeDomain(DescribeDomainRequest describeDomainRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeDomain"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeDomain") .withMarshaller(new DescribeDomainRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeDomainRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeDomainRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns information about the specified workflow execution including its type and some statistics. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param describeWorkflowExecutionRequest * @return A Java Future containing the result of the DescribeWorkflowExecution operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.DescribeWorkflowExecution */ @Override public CompletableFuture describeWorkflowExecution( DescribeWorkflowExecutionRequest describeWorkflowExecutionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeWorkflowExecution"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeWorkflowExecution") .withMarshaller(new DescribeWorkflowExecutionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeWorkflowExecutionRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeWorkflowExecutionRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns information about the specified workflow type. This includes configuration settings specified when * the type was registered and other information such as creation date, current status, etc. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * workflowType.name: String constraint. The key is swf:workflowType.name. *

      *
    • *
    • *

      * workflowType.version: String constraint. The key is swf:workflowType.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param describeWorkflowTypeRequest * @return A Java Future containing the result of the DescribeWorkflowType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.DescribeWorkflowType */ @Override public CompletableFuture describeWorkflowType( DescribeWorkflowTypeRequest describeWorkflowTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeWorkflowType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeWorkflowType") .withMarshaller(new DescribeWorkflowTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeWorkflowTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeWorkflowTypeRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the history of the specified workflow execution. The results may be split into multiple pages. To * retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param getWorkflowExecutionHistoryRequest * @return A Java Future containing the result of the GetWorkflowExecutionHistory operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.GetWorkflowExecutionHistory */ @Override public CompletableFuture getWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getWorkflowExecutionHistoryRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getWorkflowExecutionHistoryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWorkflowExecutionHistory"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetWorkflowExecutionHistoryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetWorkflowExecutionHistory") .withMarshaller(new GetWorkflowExecutionHistoryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getWorkflowExecutionHistoryRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = getWorkflowExecutionHistoryRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the history of the specified workflow execution. The results may be split into multiple pages. To * retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

*
*

* This is a variant of * {@link #getWorkflowExecutionHistory(software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.GetWorkflowExecutionHistoryPublisher publisher = client.getWorkflowExecutionHistoryPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.GetWorkflowExecutionHistoryPublisher publisher = client.getWorkflowExecutionHistoryPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of maximumPageSize won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #getWorkflowExecutionHistory(software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest)} * operation. *

* * @param getWorkflowExecutionHistoryRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.GetWorkflowExecutionHistory */ public GetWorkflowExecutionHistoryPublisher getWorkflowExecutionHistoryPaginator( GetWorkflowExecutionHistoryRequest getWorkflowExecutionHistoryRequest) { return new GetWorkflowExecutionHistoryPublisher(this, applyPaginatorUserAgent(getWorkflowExecutionHistoryRequest)); } /** *

* Returns information about all activities registered in the specified domain that match the specified name and * registration status. The result includes information like creation date, current status of the activity, etc. The * results may be split into multiple pages. To retrieve subsequent pages, make the call again using the * nextPageToken returned by the initial call. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listActivityTypesRequest * @return A Java Future containing the result of the ListActivityTypes operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListActivityTypes */ @Override public CompletableFuture listActivityTypes(ListActivityTypesRequest listActivityTypesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listActivityTypesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListActivityTypes"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListActivityTypesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListActivityTypes") .withMarshaller(new ListActivityTypesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listActivityTypesRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = listActivityTypesRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns information about all activities registered in the specified domain that match the specified name and * registration status. The result includes information like creation date, current status of the activity, etc. The * results may be split into multiple pages. To retrieve subsequent pages, make the call again using the * nextPageToken returned by the initial call. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

*
*

* This is a variant of * {@link #listActivityTypes(software.amazon.awssdk.services.swf.model.ListActivityTypesRequest)} operation. The * return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListActivityTypesPublisher publisher = client.listActivityTypesPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListActivityTypesPublisher publisher = client.listActivityTypesPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.swf.model.ListActivityTypesResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of maximumPageSize won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #listActivityTypes(software.amazon.awssdk.services.swf.model.ListActivityTypesRequest)} operation. *

* * @param listActivityTypesRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListActivityTypes */ public ListActivityTypesPublisher listActivityTypesPaginator(ListActivityTypesRequest listActivityTypesRequest) { return new ListActivityTypesPublisher(this, applyPaginatorUserAgent(listActivityTypesRequest)); } /** *

* Returns a list of closed workflow executions in the specified domain that meet the filtering criteria. The * results may be split into multiple pages. To retrieve subsequent pages, make the call again using the * nextPageToken returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * tagFilter.tag: String constraint. The key is swf:tagFilter.tag. *

      *
    • *
    • *

      * typeFilter.name: String constraint. The key is swf:typeFilter.name. *

      *
    • *
    • *

      * typeFilter.version: String constraint. The key is swf:typeFilter.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listClosedWorkflowExecutionsRequest * @return A Java Future containing the result of the ListClosedWorkflowExecutions operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListClosedWorkflowExecutions */ @Override public CompletableFuture listClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listClosedWorkflowExecutionsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listClosedWorkflowExecutionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListClosedWorkflowExecutions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListClosedWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListClosedWorkflowExecutions") .withMarshaller(new ListClosedWorkflowExecutionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listClosedWorkflowExecutionsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = listClosedWorkflowExecutionsRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns a list of closed workflow executions in the specified domain that meet the filtering criteria. The * results may be split into multiple pages. To retrieve subsequent pages, make the call again using the * nextPageToken returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * tagFilter.tag: String constraint. The key is swf:tagFilter.tag. *

      *
    • *
    • *

      * typeFilter.name: String constraint. The key is swf:typeFilter.name. *

      *
    • *
    • *

      * typeFilter.version: String constraint. The key is swf:typeFilter.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

*
*

* This is a variant of * {@link #listClosedWorkflowExecutions(software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListClosedWorkflowExecutionsPublisher publisher = client.listClosedWorkflowExecutionsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListClosedWorkflowExecutionsPublisher publisher = client.listClosedWorkflowExecutionsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of maximumPageSize won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #listClosedWorkflowExecutions(software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest)} * operation. *

* * @param listClosedWorkflowExecutionsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListClosedWorkflowExecutions */ public ListClosedWorkflowExecutionsPublisher listClosedWorkflowExecutionsPaginator( ListClosedWorkflowExecutionsRequest listClosedWorkflowExecutionsRequest) { return new ListClosedWorkflowExecutionsPublisher(this, applyPaginatorUserAgent(listClosedWorkflowExecutionsRequest)); } /** *

* Returns the list of domains registered in the account. The results may be split into multiple pages. To retrieve * subsequent pages, make the call again using the nextPageToken returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. The * element must be set to arn:aws:swf::AccountID:domain/*, where AccountID is the account ID, * with no dashes. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listDomainsRequest * @return A Java Future containing the result of the ListDomains operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListDomains */ @Override public CompletableFuture listDomains(ListDomainsRequest listDomainsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listDomainsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListDomains"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListDomainsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListDomains").withMarshaller(new ListDomainsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listDomainsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = listDomainsRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the list of domains registered in the account. The results may be split into multiple pages. To retrieve * subsequent pages, make the call again using the nextPageToken returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. The * element must be set to arn:aws:swf::AccountID:domain/*, where AccountID is the account ID, * with no dashes. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

*
*

* This is a variant of {@link #listDomains(software.amazon.awssdk.services.swf.model.ListDomainsRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListDomainsPublisher publisher = client.listDomainsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListDomainsPublisher publisher = client.listDomainsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.swf.model.ListDomainsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of maximumPageSize won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #listDomains(software.amazon.awssdk.services.swf.model.ListDomainsRequest)} operation. *

* * @param listDomainsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListDomains */ public ListDomainsPublisher listDomainsPaginator(ListDomainsRequest listDomainsRequest) { return new ListDomainsPublisher(this, applyPaginatorUserAgent(listDomainsRequest)); } /** *

* Returns a list of open workflow executions in the specified domain that meet the filtering criteria. The results * may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken * returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * tagFilter.tag: String constraint. The key is swf:tagFilter.tag. *

      *
    • *
    • *

      * typeFilter.name: String constraint. The key is swf:typeFilter.name. *

      *
    • *
    • *

      * typeFilter.version: String constraint. The key is swf:typeFilter.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listOpenWorkflowExecutionsRequest * @return A Java Future containing the result of the ListOpenWorkflowExecutions operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListOpenWorkflowExecutions */ @Override public CompletableFuture listOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listOpenWorkflowExecutionsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listOpenWorkflowExecutionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListOpenWorkflowExecutions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListOpenWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListOpenWorkflowExecutions") .withMarshaller(new ListOpenWorkflowExecutionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listOpenWorkflowExecutionsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = listOpenWorkflowExecutionsRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns a list of open workflow executions in the specified domain that meet the filtering criteria. The results * may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken * returned by the initial call. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * tagFilter.tag: String constraint. The key is swf:tagFilter.tag. *

      *
    • *
    • *

      * typeFilter.name: String constraint. The key is swf:typeFilter.name. *

      *
    • *
    • *

      * typeFilter.version: String constraint. The key is swf:typeFilter.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

*
*

* This is a variant of * {@link #listOpenWorkflowExecutions(software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListOpenWorkflowExecutionsPublisher publisher = client.listOpenWorkflowExecutionsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListOpenWorkflowExecutionsPublisher publisher = client.listOpenWorkflowExecutionsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of maximumPageSize won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #listOpenWorkflowExecutions(software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest)} * operation. *

* * @param listOpenWorkflowExecutionsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListOpenWorkflowExecutions */ public ListOpenWorkflowExecutionsPublisher listOpenWorkflowExecutionsPaginator( ListOpenWorkflowExecutionsRequest listOpenWorkflowExecutionsRequest) { return new ListOpenWorkflowExecutionsPublisher(this, applyPaginatorUserAgent(listOpenWorkflowExecutionsRequest)); } /** *

* List tags for a given domain. *

* * @param listTagsForResourceRequest * @return A Java Future containing the result of the ListTagsForResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListTagsForResource */ @Override public CompletableFuture listTagsForResource( ListTagsForResourceRequest listTagsForResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsForResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListTagsForResource") .withMarshaller(new ListTagsForResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listTagsForResourceRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = listTagsForResourceRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns information about workflow types in the specified domain. The results may be split into multiple pages * that can be retrieved by making the call repeatedly. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listWorkflowTypesRequest * @return A Java Future containing the result of the ListWorkflowTypes operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListWorkflowTypes */ @Override public CompletableFuture listWorkflowTypes(ListWorkflowTypesRequest listWorkflowTypesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listWorkflowTypesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListWorkflowTypes"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListWorkflowTypesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListWorkflowTypes") .withMarshaller(new ListWorkflowTypesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listWorkflowTypesRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = listWorkflowTypesRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns information about workflow types in the specified domain. The results may be split into multiple pages * that can be retrieved by making the call repeatedly. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

*
*

* This is a variant of * {@link #listWorkflowTypes(software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest)} operation. The * return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListWorkflowTypesPublisher publisher = client.listWorkflowTypesPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.ListWorkflowTypesPublisher publisher = client.listWorkflowTypesPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of maximumPageSize won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #listWorkflowTypes(software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest)} operation. *

* * @param listWorkflowTypesRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.ListWorkflowTypes */ public ListWorkflowTypesPublisher listWorkflowTypesPaginator(ListWorkflowTypesRequest listWorkflowTypesRequest) { return new ListWorkflowTypesPublisher(this, applyPaginatorUserAgent(listWorkflowTypesRequest)); } /** *

* Used by workers to get an ActivityTask from the specified activity taskList. This initiates a * long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available. The * maximum time the service holds on to the request before responding is 60 seconds. If no task is available within * 60 seconds, the poll returns an empty result. An empty result, in this context, means that an ActivityTask is * returned, but that the value of taskToken is an empty string. If a task is returned, the worker should use its * type to identify and process it correctly. *

* *

* Workers should set their client side socket timeout to at least 70 seconds (10 seconds higher than the maximum * time service may hold the poll request). *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the taskList.name parameter by using a Condition element with the * swf:taskList.name key to allow the action to access only certain task lists. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param pollForActivityTaskRequest * @return A Java Future containing the result of the PollForActivityTask operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.PollForActivityTask */ @Override public CompletableFuture pollForActivityTask( PollForActivityTaskRequest pollForActivityTaskRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, pollForActivityTaskRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PollForActivityTask"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PollForActivityTaskResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PollForActivityTask") .withMarshaller(new PollForActivityTaskRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(pollForActivityTaskRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = pollForActivityTaskRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Used by deciders to get a DecisionTask from the specified decision taskList. A decision task * may be returned for any open workflow execution that is using the specified task list. The task includes a * paginated view of the history of the workflow execution. The decider should use the workflow type and the history * to determine how to properly handle the task. *

*

* This action initiates a long poll, where the service holds the HTTP connection open and responds as soon a task * becomes available. If no decision task is available in the specified task list before the timeout of 60 seconds * expires, an empty result is returned. An empty result, in this context, means that a DecisionTask is returned, * but that the value of taskToken is an empty string. *

* *

* Deciders should set their client side socket timeout to at least 70 seconds (10 seconds higher than the timeout). *

*
*

* Because the number of workflow history events for a single workflow execution might be very large, the result * returned might be split up across a number of pages. To retrieve subsequent pages, make additional calls to * PollForDecisionTask using the nextPageToken returned by the initial call. Note that you * do not call GetWorkflowExecutionHistory with this nextPageToken. Instead, call * PollForDecisionTask again. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the taskList.name parameter by using a Condition element with the * swf:taskList.name key to allow the action to access only certain task lists. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param pollForDecisionTaskRequest * @return A Java Future containing the result of the PollForDecisionTask operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.PollForDecisionTask */ @Override public CompletableFuture pollForDecisionTask( PollForDecisionTaskRequest pollForDecisionTaskRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, pollForDecisionTaskRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PollForDecisionTask"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PollForDecisionTaskResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PollForDecisionTask") .withMarshaller(new PollForDecisionTaskRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(pollForDecisionTaskRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = pollForDecisionTaskRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Used by deciders to get a DecisionTask from the specified decision taskList. A decision task * may be returned for any open workflow execution that is using the specified task list. The task includes a * paginated view of the history of the workflow execution. The decider should use the workflow type and the history * to determine how to properly handle the task. *

*

* This action initiates a long poll, where the service holds the HTTP connection open and responds as soon a task * becomes available. If no decision task is available in the specified task list before the timeout of 60 seconds * expires, an empty result is returned. An empty result, in this context, means that a DecisionTask is returned, * but that the value of taskToken is an empty string. *

* *

* Deciders should set their client side socket timeout to at least 70 seconds (10 seconds higher than the timeout). *

*
*

* Because the number of workflow history events for a single workflow execution might be very large, the result * returned might be split up across a number of pages. To retrieve subsequent pages, make additional calls to * PollForDecisionTask using the nextPageToken returned by the initial call. Note that you * do not call GetWorkflowExecutionHistory with this nextPageToken. Instead, call * PollForDecisionTask again. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the taskList.name parameter by using a Condition element with the * swf:taskList.name key to allow the action to access only certain task lists. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

*
*

* This is a variant of * {@link #pollForDecisionTask(software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest)} operation. The * return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.PollForDecisionTaskPublisher publisher = client.pollForDecisionTaskPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.swf.paginators.PollForDecisionTaskPublisher publisher = client.pollForDecisionTaskPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of maximumPageSize won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #pollForDecisionTask(software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest)} operation. *

* * @param pollForDecisionTaskRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.PollForDecisionTask */ public PollForDecisionTaskPublisher pollForDecisionTaskPaginator(PollForDecisionTaskRequest pollForDecisionTaskRequest) { return new PollForDecisionTaskPublisher(this, applyPaginatorUserAgent(pollForDecisionTaskRequest)); } /** *

* Used by activity workers to report to the service that the ActivityTask represented by the specified * taskToken is still making progress. The worker can also specify details of the progress, for example * percent complete, using the details parameter. This action can also be used by the worker as a * mechanism to check if cancellation is being requested for the activity task. If a cancellation is being attempted * for the specified task, then the boolean cancelRequested flag returned by the service is set to * true. *

*

* This action resets the taskHeartbeatTimeout clock. The taskHeartbeatTimeout is * specified in RegisterActivityType. *

*

* This action doesn't in itself create an event in the workflow execution history. However, if the task times out, * the workflow execution history contains a ActivityTaskTimedOut event that contains the information * from the last heartbeat generated by the activity worker. *

* *

* The taskStartToCloseTimeout of an activity type is the maximum duration of an activity task, * regardless of the number of RecordActivityTaskHeartbeat requests received. The * taskStartToCloseTimeout is also specified in RegisterActivityType. *

*
*

* This operation is only useful for long-lived activities to report liveliness of the task and to determine if a * cancellation is being attempted. *

*
*

* If the cancelRequested flag returns true, a cancellation is being attempted. If the * worker can cancel the activity, it should respond with RespondActivityTaskCanceled. Otherwise, it should * ignore the cancellation request. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param recordActivityTaskHeartbeatRequest * @return A Java Future containing the result of the RecordActivityTaskHeartbeat operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RecordActivityTaskHeartbeat */ @Override public CompletableFuture recordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest recordActivityTaskHeartbeatRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, recordActivityTaskHeartbeatRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RecordActivityTaskHeartbeat"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RecordActivityTaskHeartbeatResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RecordActivityTaskHeartbeat") .withMarshaller(new RecordActivityTaskHeartbeatRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(recordActivityTaskHeartbeatRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = recordActivityTaskHeartbeatRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Registers a new activity type along with its configuration settings in the specified domain. *

* *

* A TypeAlreadyExists fault is returned if the type already exists in the domain. You cannot change * any configuration settings of the type after its registration, and it must be registered as a new version. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * defaultTaskList.name: String constraint. The key is swf:defaultTaskList.name. *

      *
    • *
    • *

      * name: String constraint. The key is swf:name. *

      *
    • *
    • *

      * version: String constraint. The key is swf:version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param registerActivityTypeRequest * @return A Java Future containing the result of the RegisterActivityType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • TypeAlreadyExistsException Returned if the type already exists in the specified domain. You may get * this fault if you are registering a type that is either already registered or deprecated, or if you * undeprecate a type that is currently registered.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RegisterActivityType */ @Override public CompletableFuture registerActivityType( RegisterActivityTypeRequest registerActivityTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, registerActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RegisterActivityType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RegisterActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RegisterActivityType") .withMarshaller(new RegisterActivityTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(registerActivityTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = registerActivityTypeRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Registers a new domain. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * You cannot use an IAM policy to control domain access for this action. The name of the domain being registered is * available as the resource of this action. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param registerDomainRequest * @return A Java Future containing the result of the RegisterDomain operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • DomainAlreadyExistsException Returned if the domain already exists. You may get this fault if you are * registering a domain that is either already registered or deprecated, or if you undeprecate a domain that * is currently registered.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • TooManyTagsException You've exceeded the number of tags allowed for a domain.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RegisterDomain */ @Override public CompletableFuture registerDomain(RegisterDomainRequest registerDomainRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, registerDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RegisterDomain"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RegisterDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RegisterDomain") .withMarshaller(new RegisterDomainRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(registerDomainRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = registerDomainRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Registers a new workflow type and its configuration settings in the specified domain. *

*

* The retention period for the workflow history is set by the RegisterDomain action. *

* *

* If the type already exists, then a TypeAlreadyExists fault is returned. You cannot change the * configuration settings of a workflow type once it is registered and it must be registered as a new version. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * defaultTaskList.name: String constraint. The key is swf:defaultTaskList.name. *

      *
    • *
    • *

      * name: String constraint. The key is swf:name. *

      *
    • *
    • *

      * version: String constraint. The key is swf:version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param registerWorkflowTypeRequest * @return A Java Future containing the result of the RegisterWorkflowType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • TypeAlreadyExistsException Returned if the type already exists in the specified domain. You may get * this fault if you are registering a type that is either already registered or deprecated, or if you * undeprecate a type that is currently registered.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RegisterWorkflowType */ @Override public CompletableFuture registerWorkflowType( RegisterWorkflowTypeRequest registerWorkflowTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, registerWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RegisterWorkflowType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RegisterWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RegisterWorkflowType") .withMarshaller(new RegisterWorkflowTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(registerWorkflowTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = registerWorkflowTypeRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Records a WorkflowExecutionCancelRequested event in the currently running workflow execution * identified by the given domain, workflowId, and runId. This logically requests the cancellation of the workflow * execution as a whole. It is up to the decider to take appropriate actions when it receives an execution history * with this event. *

* *

* If the runId isn't specified, the WorkflowExecutionCancelRequested event is recorded in the history * of the current open workflow execution with the specified workflowId in the domain. *

*
*

* Because this action allows the workflow to properly clean up and gracefully close, it should be used instead of * TerminateWorkflowExecution when possible. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param requestCancelWorkflowExecutionRequest * @return A Java Future containing the result of the RequestCancelWorkflowExecution operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RequestCancelWorkflowExecution */ @Override public CompletableFuture requestCancelWorkflowExecution( RequestCancelWorkflowExecutionRequest requestCancelWorkflowExecutionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, requestCancelWorkflowExecutionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RequestCancelWorkflowExecution"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RequestCancelWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RequestCancelWorkflowExecution") .withMarshaller(new RequestCancelWorkflowExecutionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(requestCancelWorkflowExecutionRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = requestCancelWorkflowExecutionRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Used by workers to tell the service that the ActivityTask identified by the taskToken was * successfully canceled. Additional details can be provided using the details argument. *

*

* These details (if provided) appear in the ActivityTaskCanceled event added to the * workflow history. *

* *

* Only use this operation if the canceled flag of a RecordActivityTaskHeartbeat request returns * true and if the activity can be safely undone or abandoned. *

*
*

* A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as * open while a worker is processing it. A task is closed after it has been specified in a call to * RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task * has timed * out. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param respondActivityTaskCanceledRequest * @return A Java Future containing the result of the RespondActivityTaskCanceled operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RespondActivityTaskCanceled */ @Override public CompletableFuture respondActivityTaskCanceled( RespondActivityTaskCanceledRequest respondActivityTaskCanceledRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, respondActivityTaskCanceledRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondActivityTaskCanceled"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondActivityTaskCanceledResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondActivityTaskCanceled") .withMarshaller(new RespondActivityTaskCanceledRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(respondActivityTaskCanceledRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = respondActivityTaskCanceledRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Used by workers to tell the service that the ActivityTask identified by the taskToken * completed successfully with a result (if provided). The result appears in the * ActivityTaskCompleted event in the workflow history. *

* *

* If the requested task doesn't complete successfully, use RespondActivityTaskFailed instead. If the worker * finds that the task is canceled through the canceled flag returned by * RecordActivityTaskHeartbeat, it should cancel the task, clean up and then call * RespondActivityTaskCanceled. *

*
*

* A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as * open while a worker is processing it. A task is closed after it has been specified in a call to * RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task * has timed * out. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param respondActivityTaskCompletedRequest * @return A Java Future containing the result of the RespondActivityTaskCompleted operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RespondActivityTaskCompleted */ @Override public CompletableFuture respondActivityTaskCompleted( RespondActivityTaskCompletedRequest respondActivityTaskCompletedRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, respondActivityTaskCompletedRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondActivityTaskCompleted"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondActivityTaskCompletedResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondActivityTaskCompleted") .withMarshaller(new RespondActivityTaskCompletedRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(respondActivityTaskCompletedRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = respondActivityTaskCompletedRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Used by workers to tell the service that the ActivityTask identified by the taskToken has * failed with reason (if specified). The reason and details appear in the * ActivityTaskFailed event added to the workflow history. *

*

* A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as * open while a worker is processing it. A task is closed after it has been specified in a call to * RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task * has timed * out. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param respondActivityTaskFailedRequest * @return A Java Future containing the result of the RespondActivityTaskFailed operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RespondActivityTaskFailed */ @Override public CompletableFuture respondActivityTaskFailed( RespondActivityTaskFailedRequest respondActivityTaskFailedRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, respondActivityTaskFailedRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondActivityTaskFailed"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondActivityTaskFailedResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondActivityTaskFailed") .withMarshaller(new RespondActivityTaskFailedRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(respondActivityTaskFailedRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = respondActivityTaskFailedRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Used by deciders to tell the service that the DecisionTask identified by the taskToken has * successfully completed. The decisions argument specifies the list of decisions made while processing * the task. *

*

* A DecisionTaskCompleted event is added to the workflow history. The executionContext * specified is attached to the event in the workflow execution history. *

*

* Access Control *

*

* If an IAM policy grants permission to use RespondDecisionTaskCompleted, it can express permissions * for the list of decisions in the decisions parameter. Each of the decisions has one or more * parameters, much like a regular API call. To allow for policies to be as readable as possible, you can express * permissions on decisions as if they were actual API calls, including applying conditions to some parameters. For * more information, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param respondDecisionTaskCompletedRequest * Input data for a TaskCompleted response to a decision task. * @return A Java Future containing the result of the RespondDecisionTaskCompleted operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.RespondDecisionTaskCompleted */ @Override public CompletableFuture respondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest respondDecisionTaskCompletedRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, respondDecisionTaskCompletedRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondDecisionTaskCompleted"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondDecisionTaskCompletedResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondDecisionTaskCompleted") .withMarshaller(new RespondDecisionTaskCompletedRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(respondDecisionTaskCompletedRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = respondDecisionTaskCompletedRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Records a WorkflowExecutionSignaled event in the workflow execution history and creates a decision * task for the workflow execution identified by the given domain, workflowId and runId. The event is recorded with * the specified user defined signalName and input (if provided). *

* *

* If a runId isn't specified, then the WorkflowExecutionSignaled event is recorded in the history of * the current open workflow with the matching workflowId in the domain. *

*
*

* If the specified workflow execution isn't open, this method fails with UnknownResource. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param signalWorkflowExecutionRequest * @return A Java Future containing the result of the SignalWorkflowExecution operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.SignalWorkflowExecution */ @Override public CompletableFuture signalWorkflowExecution( SignalWorkflowExecutionRequest signalWorkflowExecutionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, signalWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SignalWorkflowExecution"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, SignalWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("SignalWorkflowExecution") .withMarshaller(new SignalWorkflowExecutionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(signalWorkflowExecutionRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = signalWorkflowExecutionRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Starts an execution of the workflow type in the specified domain using the provided workflowId and * input data. *

*

* This action returns the newly started workflow execution. *

*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * tagList.member.0: The key is swf:tagList.member.0. *

      *
    • *
    • *

      * tagList.member.1: The key is swf:tagList.member.1. *

      *
    • *
    • *

      * tagList.member.2: The key is swf:tagList.member.2. *

      *
    • *
    • *

      * tagList.member.3: The key is swf:tagList.member.3. *

      *
    • *
    • *

      * tagList.member.4: The key is swf:tagList.member.4. *

      *
    • *
    • *

      * taskList: String constraint. The key is swf:taskList.name. *

      *
    • *
    • *

      * workflowType.name: String constraint. The key is swf:workflowType.name. *

      *
    • *
    • *

      * workflowType.version: String constraint. The key is swf:workflowType.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param startWorkflowExecutionRequest * @return A Java Future containing the result of the StartWorkflowExecution operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • TypeDeprecatedException Returned when the specified activity or workflow type was already deprecated. *
  • *
  • WorkflowExecutionAlreadyStartedException Returned by StartWorkflowExecution when an open * execution with the same workflowId is already running in the specified domain.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • DefaultUndefinedException The StartWorkflowExecution API action was called without the * required parameters set.

    *

    * Some workflow execution parameters, such as the decision taskList, must be set to start the * execution. However, these parameters might have been set as defaults when the workflow type was * registered. In this case, you can omit these parameters from the StartWorkflowExecution call * and Amazon SWF uses the values defined in the workflow type. *

    * *

    * If these parameters aren't set and no default parameters were defined in the workflow type, this error is * displayed. *

    *
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.StartWorkflowExecution */ @Override public CompletableFuture startWorkflowExecution( StartWorkflowExecutionRequest startWorkflowExecutionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartWorkflowExecution"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartWorkflowExecution") .withMarshaller(new StartWorkflowExecutionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startWorkflowExecutionRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = startWorkflowExecutionRequest.overrideConfiguration().orElse( null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Add a tag to a Amazon SWF domain. *

* *

* Amazon SWF supports a maximum of 50 tags per resource. *

*
* * @param tagResourceRequest * @return A Java Future containing the result of the TagResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • TooManyTagsException You've exceeded the number of tags allowed for a domain.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.TagResource */ @Override public CompletableFuture tagResource(TagResourceRequest tagResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TagResource").withMarshaller(new TagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(tagResourceRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = tagResourceRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Records a WorkflowExecutionTerminated event and forces closure of the workflow execution identified * by the given domain, runId, and workflowId. The child policy, registered with the workflow type or specified when * starting this execution, is applied to any open child workflow executions of this workflow execution. *

* *

* If the identified workflow execution was in progress, it is terminated immediately. *

*
*

* If a runId isn't specified, then the WorkflowExecutionTerminated event is recorded in the history of * the current open workflow with the matching workflowId in the domain. *

*
*

* You should consider using RequestCancelWorkflowExecution action instead because it allows the workflow to * gracefully close while TerminateWorkflowExecution doesn't. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param terminateWorkflowExecutionRequest * @return A Java Future containing the result of the TerminateWorkflowExecution operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.TerminateWorkflowExecution */ @Override public CompletableFuture terminateWorkflowExecution( TerminateWorkflowExecutionRequest terminateWorkflowExecutionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, terminateWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TerminateWorkflowExecution"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, TerminateWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TerminateWorkflowExecution") .withMarshaller(new TerminateWorkflowExecutionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(terminateWorkflowExecutionRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = terminateWorkflowExecutionRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Undeprecates a previously deprecated activity type. After an activity type has been undeprecated, you can * create new tasks of that activity type. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * activityType.name: String constraint. The key is swf:activityType.name. *

      *
    • *
    • *

      * activityType.version: String constraint. The key is swf:activityType.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param undeprecateActivityTypeRequest * @return A Java Future containing the result of the UndeprecateActivityType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • TypeAlreadyExistsException Returned if the type already exists in the specified domain. You may get * this fault if you are registering a type that is either already registered or deprecated, or if you * undeprecate a type that is currently registered.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.UndeprecateActivityType */ @Override public CompletableFuture undeprecateActivityType( UndeprecateActivityTypeRequest undeprecateActivityTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, undeprecateActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UndeprecateActivityType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UndeprecateActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UndeprecateActivityType") .withMarshaller(new UndeprecateActivityTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(undeprecateActivityTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = undeprecateActivityTypeRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Undeprecates a previously deprecated domain. After a domain has been undeprecated it can be used to create new * workflow executions or register new types. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * You cannot use an IAM policy to constrain this action's parameters. *

    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param undeprecateDomainRequest * @return A Java Future containing the result of the UndeprecateDomain operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • DomainAlreadyExistsException Returned if the domain already exists. You may get this fault if you are * registering a domain that is either already registered or deprecated, or if you undeprecate a domain that * is currently registered.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.UndeprecateDomain */ @Override public CompletableFuture undeprecateDomain(UndeprecateDomainRequest undeprecateDomainRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, undeprecateDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UndeprecateDomain"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UndeprecateDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UndeprecateDomain") .withMarshaller(new UndeprecateDomainRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(undeprecateDomainRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = undeprecateDomainRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Undeprecates a previously deprecated workflow type. After a workflow type has been undeprecated, you can * create new executions of that type. *

* *

* This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates * and changes. *

*
*

* Access Control *

*

* You can use IAM policies to control this action's access to Amazon SWF resources as follows: *

*
    *
  • *

    * Use a Resource element with the domain name to limit the action to only specified domains. *

    *
  • *
  • *

    * Use an Action element to allow or deny permission to call this action. *

    *
  • *
  • *

    * Constrain the following parameters by using a Condition element with the appropriate keys. *

    *
      *
    • *

      * workflowType.name: String constraint. The key is swf:workflowType.name. *

      *
    • *
    • *

      * workflowType.version: String constraint. The key is swf:workflowType.version. *

      *
    • *
    *
  • *
*

* If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the * specified constraints, the action fails. The associated event attribute's cause parameter is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param undeprecateWorkflowTypeRequest * @return A Java Future containing the result of the UndeprecateWorkflowType operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • TypeAlreadyExistsException Returned if the type already exists in the specified domain. You may get * this fault if you are registering a type that is either already registered or deprecated, or if you * undeprecate a type that is currently registered.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.UndeprecateWorkflowType */ @Override public CompletableFuture undeprecateWorkflowType( UndeprecateWorkflowTypeRequest undeprecateWorkflowTypeRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, undeprecateWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UndeprecateWorkflowType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UndeprecateWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UndeprecateWorkflowType") .withMarshaller(new UndeprecateWorkflowTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(undeprecateWorkflowTypeRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = undeprecateWorkflowTypeRequest.overrideConfiguration() .orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Remove a tag from a Amazon SWF domain. *

* * @param untagResourceRequest * @return A Java Future containing the result of the UntagResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • UnknownResourceException Returned when the named resource cannot be found with in the scope of this * operation (region or domain). This could happen if the named resource was never created or is no longer * available for this operation.
  • *
  • LimitExceededException Returned by any operation if a system imposed limitation has been reached. To * address this fault you should either clean up unused resources or increase the limit by contacting AWS.
  • *
  • OperationNotPermittedException Returned when the caller doesn't have sufficient permissions to invoke * the action.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • SwfException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample SwfAsyncClient.UntagResource */ @Override public CompletableFuture untagResource(UntagResourceRequest untagResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UntagResource") .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(untagResourceRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = untagResourceRequest.overrideConfiguration().orElse(null); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } @Override public void close() { clientHandler.close(); } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(SwfException::builder) .protocol(AwsJsonProtocol.AWS_JSON) .protocolVersion("1.0") .registerModeledException( ExceptionMetadata.builder().errorCode("TypeAlreadyExistsFault") .exceptionBuilderSupplier(TypeAlreadyExistsException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TypeDeprecatedFault") .exceptionBuilderSupplier(TypeDeprecatedException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("LimitExceededFault") .exceptionBuilderSupplier(LimitExceededException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DomainDeprecatedFault") .exceptionBuilderSupplier(DomainDeprecatedException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DefaultUndefinedFault") .exceptionBuilderSupplier(DefaultUndefinedException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DomainAlreadyExistsFault") .exceptionBuilderSupplier(DomainAlreadyExistsException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("OperationNotPermittedFault") .exceptionBuilderSupplier(OperationNotPermittedException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WorkflowExecutionAlreadyStartedFault") .exceptionBuilderSupplier(WorkflowExecutionAlreadyStartedException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TooManyTagsFault") .exceptionBuilderSupplier(TooManyTagsException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("UnknownResourceFault") .exceptionBuilderSupplier(UnknownResourceException::builder).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); } if (publishers == null || publishers.isEmpty()) { publishers = clientConfiguration.option(SdkClientOption.METRIC_PUBLISHERS); } if (publishers == null) { publishers = Collections.emptyList(); } return publishers; } private T applyPaginatorUserAgent(T request) { Consumer userAgentApplier = b -> b.addApiName(ApiName.builder() .version(VersionInfo.SDK_VERSION).name("PAGINATED").build()); AwsRequestOverrideConfiguration overrideConfiguration = request.overrideConfiguration() .map(c -> c.toBuilder().applyMutation(userAgentApplier).build()) .orElse((AwsRequestOverrideConfiguration.builder().applyMutation(userAgentApplier).build())); return (T) request.toBuilder().overrideConfiguration(overrideConfiguration).build(); } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy