
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.
*
*
* -
*
*