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

software.amazon.awssdk.services.kinesisanalytics.DefaultKinesisAnalyticsClient 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.kinesisanalytics;

import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.awscore.internal.AwsProtocolMetadata;
import software.amazon.awssdk.awscore.internal.AwsServiceProtocol;
import software.amazon.awssdk.awscore.retry.AwsRetryStrategy;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkPlugin;
import software.amazon.awssdk.core.SdkRequest;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.client.handler.SyncClientHandler;
import software.amazon.awssdk.core.exception.SdkClientException;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.core.retry.RetryMode;
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.retries.api.RetryStrategy;
import software.amazon.awssdk.services.kinesisanalytics.internal.KinesisAnalyticsServiceClientConfigurationBuilder;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationCloudWatchLoggingOptionRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationCloudWatchLoggingOptionResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationInputProcessingConfigurationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationInputProcessingConfigurationResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationInputRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationInputResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationOutputRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationOutputResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationReferenceDataSourceRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.AddApplicationReferenceDataSourceResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.CodeValidationException;
import software.amazon.awssdk.services.kinesisanalytics.model.ConcurrentModificationException;
import software.amazon.awssdk.services.kinesisanalytics.model.CreateApplicationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.CreateApplicationResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationCloudWatchLoggingOptionRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationCloudWatchLoggingOptionResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationInputProcessingConfigurationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationInputProcessingConfigurationResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationOutputRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationOutputResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationReferenceDataSourceRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationReferenceDataSourceResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.DeleteApplicationResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.DescribeApplicationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.DescribeApplicationResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.DiscoverInputSchemaRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.DiscoverInputSchemaResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.InvalidApplicationConfigurationException;
import software.amazon.awssdk.services.kinesisanalytics.model.InvalidArgumentException;
import software.amazon.awssdk.services.kinesisanalytics.model.KinesisAnalyticsException;
import software.amazon.awssdk.services.kinesisanalytics.model.LimitExceededException;
import software.amazon.awssdk.services.kinesisanalytics.model.ListApplicationsRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.ListApplicationsResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.ResourceInUseException;
import software.amazon.awssdk.services.kinesisanalytics.model.ResourceNotFoundException;
import software.amazon.awssdk.services.kinesisanalytics.model.ResourceProvisionedThroughputExceededException;
import software.amazon.awssdk.services.kinesisanalytics.model.ServiceUnavailableException;
import software.amazon.awssdk.services.kinesisanalytics.model.StartApplicationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.StartApplicationResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.StopApplicationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.StopApplicationResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.TagResourceRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.TagResourceResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.TooManyTagsException;
import software.amazon.awssdk.services.kinesisanalytics.model.UnableToDetectSchemaException;
import software.amazon.awssdk.services.kinesisanalytics.model.UnsupportedOperationException;
import software.amazon.awssdk.services.kinesisanalytics.model.UntagResourceRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.UntagResourceResponse;
import software.amazon.awssdk.services.kinesisanalytics.model.UpdateApplicationRequest;
import software.amazon.awssdk.services.kinesisanalytics.model.UpdateApplicationResponse;
import software.amazon.awssdk.services.kinesisanalytics.transform.AddApplicationCloudWatchLoggingOptionRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.AddApplicationInputProcessingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.AddApplicationInputRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.AddApplicationOutputRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.AddApplicationReferenceDataSourceRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.CreateApplicationRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.DeleteApplicationCloudWatchLoggingOptionRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.DeleteApplicationInputProcessingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.DeleteApplicationOutputRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.DeleteApplicationReferenceDataSourceRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.DeleteApplicationRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.DescribeApplicationRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.DiscoverInputSchemaRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.ListApplicationsRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.StartApplicationRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.StopApplicationRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.kinesisanalytics.transform.UpdateApplicationRequestMarshaller;
import software.amazon.awssdk.utils.Logger;

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

    private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder()
            .serviceProtocol(AwsServiceProtocol.AWS_JSON).build();

    private final SyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    protected DefaultKinesisAnalyticsClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsSyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration.toBuilder().option(SdkClientOption.SDK_CLIENT, this).build();
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    /**
     * 
     * 

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Adds a CloudWatch log stream to monitor application configuration errors. For more information about using * CloudWatch log streams with Amazon Kinesis Analytics applications, see Working with Amazon * CloudWatch Logs. *

* * @param addApplicationCloudWatchLoggingOptionRequest * @return Result of the AddApplicationCloudWatchLoggingOption operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.AddApplicationCloudWatchLoggingOption * @see AWS API Documentation */ @Override public AddApplicationCloudWatchLoggingOptionResponse addApplicationCloudWatchLoggingOption( AddApplicationCloudWatchLoggingOptionRequest addApplicationCloudWatchLoggingOptionRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, AddApplicationCloudWatchLoggingOptionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(addApplicationCloudWatchLoggingOptionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, addApplicationCloudWatchLoggingOptionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AddApplicationCloudWatchLoggingOption"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("AddApplicationCloudWatchLoggingOption").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration) .withInput(addApplicationCloudWatchLoggingOptionRequest).withMetricCollector(apiCallMetricCollector) .withMarshaller(new AddApplicationCloudWatchLoggingOptionRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Adds a streaming source to your Amazon Kinesis application. For conceptual information, see Configuring Application * Input. *

*

* You can add a streaming source either when you create an application or you can use this operation to add a * streaming source after you create an application. For more information, see CreateApplication. *

*

* Any configuration update, including adding a streaming source using this operation, results in a new version of * the application. You can use the DescribeApplication operation to find the current application version. *

*

* This operation requires permissions to perform the kinesisanalytics:AddApplicationInput action. *

* * @param addApplicationInputRequest * @return Result of the AddApplicationInput operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws CodeValidationException * User-provided application code (query) is invalid. This can be a simple syntax error. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.AddApplicationInput * @see AWS API Documentation */ @Override public AddApplicationInputResponse addApplicationInput(AddApplicationInputRequest addApplicationInputRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, CodeValidationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, AddApplicationInputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(addApplicationInputRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, addApplicationInputRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AddApplicationInput"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("AddApplicationInput").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(addApplicationInputRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new AddApplicationInputRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Adds an * InputProcessingConfiguration to an application. An input processor preprocesses records on the input stream * before the application's SQL code executes. Currently, the only input processor available is AWS Lambda. *

* * @param addApplicationInputProcessingConfigurationRequest * @return Result of the AddApplicationInputProcessingConfiguration operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.AddApplicationInputProcessingConfiguration * @see AWS API Documentation */ @Override public AddApplicationInputProcessingConfigurationResponse addApplicationInputProcessingConfiguration( AddApplicationInputProcessingConfigurationRequest addApplicationInputProcessingConfigurationRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, AddApplicationInputProcessingConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( addApplicationInputProcessingConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, addApplicationInputProcessingConfigurationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AddApplicationInputProcessingConfiguration"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("AddApplicationInputProcessingConfiguration") .withProtocolMetadata(protocolMetadata).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withInput(addApplicationInputProcessingConfigurationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new AddApplicationInputProcessingConfigurationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Adds an external destination to your Amazon Kinesis Analytics application. *

*

* If you want Amazon Kinesis Analytics to deliver data from an in-application stream within your application to an * external destination (such as an Amazon Kinesis stream, an Amazon Kinesis Firehose delivery stream, or an AWS * Lambda function), you add the relevant configuration to your application using this operation. You can configure * one or more outputs for your application. Each output configuration maps an in-application stream and an external * destination. *

*

* You can use one of the output configurations to deliver data from your in-application error stream to an external * destination so that you can analyze the errors. For more information, see Understanding Application * Output (Destination). *

*

* Any configuration update, including adding a streaming source using this operation, results in a new version of * the application. You can use the DescribeApplication operation to find the current application version. *

*

* For the limits on the number of application inputs and outputs you can configure, see Limits. *

*

* This operation requires permissions to perform the kinesisanalytics:AddApplicationOutput action. *

* * @param addApplicationOutputRequest * @return Result of the AddApplicationOutput operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.AddApplicationOutput * @see AWS API Documentation */ @Override public AddApplicationOutputResponse addApplicationOutput(AddApplicationOutputRequest addApplicationOutputRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, AddApplicationOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(addApplicationOutputRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, addApplicationOutputRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AddApplicationOutput"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("AddApplicationOutput").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(addApplicationOutputRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new AddApplicationOutputRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Adds a reference data source to an existing application. *

*

* Amazon Kinesis Analytics reads reference data (that is, an Amazon S3 object) and creates an in-application table * within your application. In the request, you provide the source (S3 bucket name and object key name), name of the * in-application table to create, and the necessary mapping information that describes how data in Amazon S3 object * maps to columns in the resulting in-application table. *

*

* For conceptual information, see Configuring Application * Input. For the limits on data sources you can add to your application, see Limits. *

*

* This operation requires permissions to perform the kinesisanalytics:AddApplicationOutput action. *

* * @param addApplicationReferenceDataSourceRequest * @return Result of the AddApplicationReferenceDataSource operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.AddApplicationReferenceDataSource * @see AWS API Documentation */ @Override public AddApplicationReferenceDataSourceResponse addApplicationReferenceDataSource( AddApplicationReferenceDataSourceRequest addApplicationReferenceDataSourceRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, AddApplicationReferenceDataSourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(addApplicationReferenceDataSourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, addApplicationReferenceDataSourceRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AddApplicationReferenceDataSource"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("AddApplicationReferenceDataSource").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(addApplicationReferenceDataSourceRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new AddApplicationReferenceDataSourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Creates an Amazon Kinesis Analytics application. You can configure each application with one streaming source as * input, application code to process the input, and up to three destinations where you want Amazon Kinesis * Analytics to write the output data from your application. For an overview, see How it Works. *

*

* In the input configuration, you map the streaming source to an in-application stream, which you can think of as a * constantly updating table. In the mapping, you must provide a schema for the in-application stream and map each * data column in the in-application stream to a data element in the streaming source. *

*

* Your application code is one or more SQL statements that read input data, transform it, and generate output. Your * application code can create one or more SQL artifacts like SQL streams or pumps. *

*

* In the output configuration, you can configure the application to write data from in-application streams created * in your applications to up to three destinations. *

*

* To read data from your source stream or write data to destination streams, Amazon Kinesis Analytics needs your * permissions. You grant these permissions by creating IAM roles. This operation requires permissions to perform * the kinesisanalytics:CreateApplication action. *

*

* For introductory exercises to create an Amazon Kinesis Analytics application, see Getting Started. *

* * @param createApplicationRequest * TBD * @return Result of the CreateApplication operation returned by the service. * @throws CodeValidationException * User-provided application code (query) is invalid. This can be a simple syntax error. * @throws ResourceInUseException * Application is not available for this operation. * @throws LimitExceededException * Exceeded the number of applications allowed. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws TooManyTagsException * Application created with too many tags, or too many tags added to an application. Note that the maximum * number of application tags includes system tags. The maximum number of user-defined application tags is * 50. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.CreateApplication * @see AWS API Documentation */ @Override public CreateApplicationResponse createApplication(CreateApplicationRequest createApplicationRequest) throws CodeValidationException, ResourceInUseException, LimitExceededException, InvalidArgumentException, TooManyTagsException, ConcurrentModificationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateApplicationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createApplicationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createApplicationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateApplication"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("CreateApplication").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(createApplicationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new CreateApplicationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Deletes the specified application. Amazon Kinesis Analytics halts application execution and deletes the * application, including any application artifacts (such as in-application streams, reference table, and * application code). *

*

* This operation requires permissions to perform the kinesisanalytics:DeleteApplication action. *

* * @param deleteApplicationRequest * @return Result of the DeleteApplication operation returned by the service. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.DeleteApplication * @see AWS API Documentation */ @Override public DeleteApplicationResponse deleteApplication(DeleteApplicationRequest deleteApplicationRequest) throws ConcurrentModificationException, ResourceNotFoundException, ResourceInUseException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteApplicationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteApplicationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteApplicationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteApplication"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DeleteApplication").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(deleteApplicationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeleteApplicationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Deletes a CloudWatch log stream from an application. For more information about using CloudWatch log streams with * Amazon Kinesis Analytics applications, see Working with Amazon * CloudWatch Logs. *

* * @param deleteApplicationCloudWatchLoggingOptionRequest * @return Result of the DeleteApplicationCloudWatchLoggingOption operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.DeleteApplicationCloudWatchLoggingOption * @see AWS API Documentation */ @Override public DeleteApplicationCloudWatchLoggingOptionResponse deleteApplicationCloudWatchLoggingOption( DeleteApplicationCloudWatchLoggingOptionRequest deleteApplicationCloudWatchLoggingOptionRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DeleteApplicationCloudWatchLoggingOptionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( deleteApplicationCloudWatchLoggingOptionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteApplicationCloudWatchLoggingOptionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteApplicationCloudWatchLoggingOption"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteApplicationCloudWatchLoggingOption").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration) .withInput(deleteApplicationCloudWatchLoggingOptionRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeleteApplicationCloudWatchLoggingOptionRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Deletes an InputProcessingConfiguration from an input. *

* * @param deleteApplicationInputProcessingConfigurationRequest * @return Result of the DeleteApplicationInputProcessingConfiguration operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.DeleteApplicationInputProcessingConfiguration * @see AWS API Documentation */ @Override public DeleteApplicationInputProcessingConfigurationResponse deleteApplicationInputProcessingConfiguration( DeleteApplicationInputProcessingConfigurationRequest deleteApplicationInputProcessingConfigurationRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DeleteApplicationInputProcessingConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( deleteApplicationInputProcessingConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteApplicationInputProcessingConfigurationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteApplicationInputProcessingConfiguration"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteApplicationInputProcessingConfiguration") .withProtocolMetadata(protocolMetadata).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withInput(deleteApplicationInputProcessingConfigurationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeleteApplicationInputProcessingConfigurationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Deletes output destination configuration from your application configuration. Amazon Kinesis Analytics will no * longer write data from the corresponding in-application stream to the external output destination. *

*

* This operation requires permissions to perform the kinesisanalytics:DeleteApplicationOutput action. *

* * @param deleteApplicationOutputRequest * @return Result of the DeleteApplicationOutput operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.DeleteApplicationOutput * @see AWS API Documentation */ @Override public DeleteApplicationOutputResponse deleteApplicationOutput(DeleteApplicationOutputRequest deleteApplicationOutputRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteApplicationOutputResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteApplicationOutputRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteApplicationOutputRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteApplicationOutput"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteApplicationOutput").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(deleteApplicationOutputRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeleteApplicationOutputRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Deletes a reference data source configuration from the specified application configuration. *

*

* If the application is running, Amazon Kinesis Analytics immediately removes the in-application table that you * created using the AddApplicationReferenceDataSource operation. *

*

* This operation requires permissions to perform the * kinesisanalytics.DeleteApplicationReferenceDataSource action. *

* * @param deleteApplicationReferenceDataSourceRequest * @return Result of the DeleteApplicationReferenceDataSource operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.DeleteApplicationReferenceDataSource * @see AWS API Documentation */ @Override public DeleteApplicationReferenceDataSourceResponse deleteApplicationReferenceDataSource( DeleteApplicationReferenceDataSourceRequest deleteApplicationReferenceDataSourceRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DeleteApplicationReferenceDataSourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteApplicationReferenceDataSourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteApplicationReferenceDataSourceRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteApplicationReferenceDataSource"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteApplicationReferenceDataSource").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(deleteApplicationReferenceDataSourceRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeleteApplicationReferenceDataSourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Returns information about a specific Amazon Kinesis Analytics application. *

*

* If you want to retrieve a list of all applications in your account, use the ListApplications * operation. *

*

* This operation requires permissions to perform the kinesisanalytics:DescribeApplication action. You * can use DescribeApplication to get the current application versionId, which you need to call other * operations such as Update. *

* * @param describeApplicationRequest * @return Result of the DescribeApplication operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.DescribeApplication * @see AWS API Documentation */ @Override public DescribeApplicationResponse describeApplication(DescribeApplicationRequest describeApplicationRequest) throws ResourceNotFoundException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeApplicationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeApplicationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeApplicationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeApplication"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DescribeApplication").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(describeApplicationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DescribeApplicationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Infers a schema by evaluating sample records on the specified streaming source (Amazon Kinesis stream or Amazon * Kinesis Firehose delivery stream) or S3 object. In the response, the operation returns the inferred schema and * also the sample records that the operation used to infer the schema. *

*

* You can use the inferred schema when configuring a streaming source for your application. For conceptual * information, see Configuring Application * Input. Note that when you create an application using the Amazon Kinesis Analytics console, the console uses * this operation to infer a schema and show it in the console user interface. *

*

* This operation requires permissions to perform the kinesisanalytics:DiscoverInputSchema action. *

* * @param discoverInputSchemaRequest * @return Result of the DiscoverInputSchema operation returned by the service. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws UnableToDetectSchemaException * Data format is not valid. Amazon Kinesis Analytics is not able to detect schema for the given streaming * source. * @throws ResourceProvisionedThroughputExceededException * Discovery failed to get a record from the streaming source because of the Amazon Kinesis Streams * ProvisionedThroughputExceededException. For more information, see GetRecords in the * Amazon Kinesis Streams API Reference. * @throws ServiceUnavailableException * The service is unavailable. Back off and retry the operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.DiscoverInputSchema * @see AWS API Documentation */ @Override public DiscoverInputSchemaResponse discoverInputSchema(DiscoverInputSchemaRequest discoverInputSchemaRequest) throws InvalidArgumentException, UnableToDetectSchemaException, ResourceProvisionedThroughputExceededException, ServiceUnavailableException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DiscoverInputSchemaResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(discoverInputSchemaRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, discoverInputSchemaRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DiscoverInputSchema"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DiscoverInputSchema").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(discoverInputSchemaRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DiscoverInputSchemaRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Returns a list of Amazon Kinesis Analytics applications in your account. For each application, the response * includes the application name, Amazon Resource Name (ARN), and status. If the response returns the * HasMoreApplications value as true, you can send another request by adding the * ExclusiveStartApplicationName in the request body, and set the value of this to the last application * name from the previous response. *

*

* If you want detailed information about a specific application, use DescribeApplication. *

*

* This operation requires permissions to perform the kinesisanalytics:ListApplications action. *

* * @param listApplicationsRequest * @return Result of the ListApplications operation returned by the service. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.ListApplications * @see AWS API Documentation */ @Override public ListApplicationsResponse listApplications(ListApplicationsRequest listApplicationsRequest) throws AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListApplicationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listApplicationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listApplicationsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListApplications"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("ListApplications").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(listApplicationsRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListApplicationsRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Retrieves the list of key-value tags assigned to the application. For more information, see Using Tagging. *

* * @param listTagsForResourceRequest * @return Result of the ListTagsForResource operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.ListTagsForResource * @see AWS API Documentation */ @Override public ListTagsForResourceResponse listTagsForResource(ListTagsForResourceRequest listTagsForResourceRequest) throws ResourceNotFoundException, InvalidArgumentException, ConcurrentModificationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listTagsForResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsForResource"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("ListTagsForResource").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(listTagsForResourceRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListTagsForResourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Starts the specified Amazon Kinesis Analytics application. After creating an application, you must exclusively * call this operation to start your application. *

*

* After the application starts, it begins consuming the input data, processes it, and writes the output to the * configured destination. *

*

* The application status must be READY for you to start an application. You can get the application * status in the console or using the DescribeApplication operation. *

*

* After you start the application, you can stop the application from processing the input by calling the StopApplication * operation. *

*

* This operation requires permissions to perform the kinesisanalytics:StartApplication action. *

* * @param startApplicationRequest * @return Result of the StartApplication operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws InvalidApplicationConfigurationException * User-provided application configuration is not valid. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.StartApplication * @see AWS API Documentation */ @Override public StartApplicationResponse startApplication(StartApplicationRequest startApplicationRequest) throws ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, InvalidApplicationConfigurationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, StartApplicationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(startApplicationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, startApplicationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartApplication"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("StartApplication").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(startApplicationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new StartApplicationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Stops the application from processing input data. You can stop an application only if it is in the running state. * You can use the DescribeApplication * operation to find the application state. After the application is stopped, Amazon Kinesis Analytics stops * reading data from the input, the application stops processing data, and there is no output written to the * destination. *

*

* This operation requires permissions to perform the kinesisanalytics:StopApplication action. *

* * @param stopApplicationRequest * @return Result of the StopApplication operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.StopApplication * @see AWS API Documentation */ @Override public StopApplicationResponse stopApplication(StopApplicationRequest stopApplicationRequest) throws ResourceNotFoundException, ResourceInUseException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, StopApplicationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(stopApplicationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, stopApplicationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StopApplication"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("StopApplication").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(stopApplicationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new StopApplicationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Adds one or more key-value tags to a Kinesis Analytics application. Note that the maximum number of application * tags includes system tags. The maximum number of user-defined application tags is 50. For more information, see * Using Tagging. *

* * @param tagResourceRequest * @return Result of the TagResource operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws TooManyTagsException * Application created with too many tags, or too many tags added to an application. Note that the maximum * number of application tags includes system tags. The maximum number of user-defined application tags is * 50. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.TagResource * @see AWS * API Documentation */ @Override public TagResourceResponse tagResource(TagResourceRequest tagResourceRequest) throws ResourceNotFoundException, ResourceInUseException, TooManyTagsException, InvalidArgumentException, ConcurrentModificationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(tagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagResource"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("TagResource").withProtocolMetadata(protocolMetadata).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withInput(tagResourceRequest).withMetricCollector(apiCallMetricCollector) .withMarshaller(new TagResourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Removes one or more tags from a Kinesis Analytics application. For more information, see Using Tagging. *

* * @param untagResourceRequest * @return Result of the UntagResource operation returned by the service. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws TooManyTagsException * Application created with too many tags, or too many tags added to an application. Note that the maximum * number of application tags includes system tags. The maximum number of user-defined application tags is * 50. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.UntagResource * @see AWS API Documentation */ @Override public UntagResourceResponse untagResource(UntagResourceRequest untagResourceRequest) throws ResourceNotFoundException, ResourceInUseException, TooManyTagsException, InvalidArgumentException, ConcurrentModificationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(untagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagResource"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("UntagResource").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(untagResourceRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** * *

* This documentation is for version 1 of the Amazon Kinesis Data Analytics API, which only supports SQL * applications. Version 2 of the API supports SQL and Java applications. For more information about version 2, see * Amazon Kinesis Data Analytics API V2 Documentation. *

*
*

* Updates an existing Amazon Kinesis Analytics application. Using this API, you can update application code, input * configuration, and output configuration. *

*

* Note that Amazon Kinesis Analytics updates the CurrentApplicationVersionId each time you update your * application. *

*

* This operation requires permission for the kinesisanalytics:UpdateApplication action. *

* * @param updateApplicationRequest * @return Result of the UpdateApplication operation returned by the service. * @throws CodeValidationException * User-provided application code (query) is invalid. This can be a simple syntax error. * @throws ResourceNotFoundException * Specified application can't be found. * @throws ResourceInUseException * Application is not available for this operation. * @throws InvalidArgumentException * Specified input parameter value is invalid. * @throws ConcurrentModificationException * Exception thrown as a result of concurrent modification to an application. For example, two individuals * attempting to edit the same application at the same time. * @throws UnsupportedOperationException * The request was rejected because a specified parameter is not supported or a specified resource is not * valid for this operation. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws KinesisAnalyticsException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample KinesisAnalyticsClient.UpdateApplication * @see AWS API Documentation */ @Override public UpdateApplicationResponse updateApplication(UpdateApplicationRequest updateApplicationRequest) throws CodeValidationException, ResourceNotFoundException, ResourceInUseException, InvalidArgumentException, ConcurrentModificationException, UnsupportedOperationException, AwsServiceException, SdkClientException, KinesisAnalyticsException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UpdateApplicationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateApplicationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateApplicationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Kinesis Analytics"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateApplication"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("UpdateApplication").withProtocolMetadata(protocolMetadata) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withInput(updateApplicationRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new UpdateApplicationRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } @Override public final String serviceName() { return SERVICE_NAME; } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); } if (publishers == null || publishers.isEmpty()) { publishers = clientConfiguration.option(SdkClientOption.METRIC_PUBLISHERS); } if (publishers == null) { publishers = Collections.emptyList(); } return publishers; } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } private void updateRetryStrategyClientConfiguration(SdkClientConfiguration.Builder configuration) { ClientOverrideConfiguration.Builder builder = configuration.asOverrideConfigurationBuilder(); RetryMode retryMode = builder.retryMode(); if (retryMode != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, AwsRetryStrategy.forRetryMode(retryMode)); } else { Consumer> configurator = builder.retryStrategyConfigurator(); if (configurator != null) { RetryStrategy.Builder defaultBuilder = AwsRetryStrategy.defaultRetryStrategy().toBuilder(); configurator.accept(defaultBuilder); configuration.option(SdkClientOption.RETRY_STRATEGY, defaultBuilder.build()); } else { RetryStrategy retryStrategy = builder.retryStrategy(); if (retryStrategy != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, retryStrategy); } } } configuration.option(SdkClientOption.CONFIGURED_RETRY_MODE, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_STRATEGY, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_CONFIGURATOR, null); } private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, SdkClientConfiguration clientConfiguration) { List plugins = request.overrideConfiguration().map(c -> c.plugins()).orElse(Collections.emptyList()); SdkClientConfiguration.Builder configuration = clientConfiguration.toBuilder(); if (plugins.isEmpty()) { return configuration.build(); } KinesisAnalyticsServiceClientConfigurationBuilder serviceConfigBuilder = new KinesisAnalyticsServiceClientConfigurationBuilder( configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } updateRetryStrategyClientConfiguration(configuration); return configuration.build(); } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(KinesisAnalyticsException::builder) .protocol(AwsJsonProtocol.AWS_JSON) .protocolVersion("1.1") .registerModeledException( ExceptionMetadata.builder().errorCode("ConcurrentModificationException") .exceptionBuilderSupplier(ConcurrentModificationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("UnableToDetectSchemaException") .exceptionBuilderSupplier(UnableToDetectSchemaException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceInUseException") .exceptionBuilderSupplier(ResourceInUseException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceProvisionedThroughputExceededException") .exceptionBuilderSupplier(ResourceProvisionedThroughputExceededException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("LimitExceededException") .exceptionBuilderSupplier(LimitExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidApplicationConfigurationException") .exceptionBuilderSupplier(InvalidApplicationConfigurationException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TooManyTagsException") .exceptionBuilderSupplier(TooManyTagsException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("CodeValidationException") .exceptionBuilderSupplier(CodeValidationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidArgumentException") .exceptionBuilderSupplier(InvalidArgumentException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotFoundException") .exceptionBuilderSupplier(ResourceNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("UnsupportedOperationException") .exceptionBuilderSupplier(UnsupportedOperationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ServiceUnavailableException") .exceptionBuilderSupplier(ServiceUnavailableException::builder).httpStatusCode(500).build()); } @Override public final KinesisAnalyticsServiceClientConfiguration serviceClientConfiguration() { return new KinesisAnalyticsServiceClientConfigurationBuilder(this.clientConfiguration.toBuilder()).build(); } @Override public void close() { clientHandler.close(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy