Client Test

Client Test

rev. dfb5149b65b7bcc09edd15b8e071ad43b5ac5943

Files changed:

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/tag_resource.rs

@@ -1,1 +13,17 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`TagResource`](crate::operation::tag_resource::builders::TagResourceFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`resource_arn(impl Into<String>)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::resource_arn) / [`set_resource_arn(Option<String>)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::set_resource_arn):<br>required: **true**<br><p>Identifies the Amazon DynamoDB resource to which tags should be added. This value is an Amazon Resource Name (ARN).</p><br>
    7      9   
    ///   - [`tags(Tag)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::tags) / [`set_tags(Option<Vec::<Tag>>)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::set_tags):<br>required: **true**<br><p>The tags to be assigned to the Amazon DynamoDB resource.</p><br>
    8     10   
    /// - On success, responds with [`TagResourceOutput`](crate::operation::tag_resource::TagResourceOutput)
    9     11   
    /// - On failure, responds with [`SdkError<TagResourceError>`](crate::operation::tag_resource::TagResourceError)
          12  +
    /* FluentClientGenerator.kt:234 */
   10     13   
    pub fn tag_resource(&self) -> crate::operation::tag_resource::builders::TagResourceFluentBuilder {
   11     14   
        crate::operation::tag_resource::builders::TagResourceFluentBuilder::new(self.handle.clone())
   12     15   
    }
          16  +
    /* FluentClientGenerator.kt:187 */
   13     17   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/transact_get_items.rs

@@ -1,1 +15,19 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`TransactGetItems`](crate::operation::transact_get_items::builders::TransactGetItemsFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`transact_items(TransactGetItem)`](crate::operation::transact_get_items::builders::TransactGetItemsFluentBuilder::transact_items) / [`set_transact_items(Option<Vec::<TransactGetItem>>)`](crate::operation::transact_get_items::builders::TransactGetItemsFluentBuilder::set_transact_items):<br>required: **true**<br><p>An ordered array of up to 25 <code>TransactGetItem</code> objects, each of which contains a <code>Get</code> structure.</p><br>
    7      9   
    ///   - [`return_consumed_capacity(ReturnConsumedCapacity)`](crate::operation::transact_get_items::builders::TransactGetItemsFluentBuilder::return_consumed_capacity) / [`set_return_consumed_capacity(Option<ReturnConsumedCapacity>)`](crate::operation::transact_get_items::builders::TransactGetItemsFluentBuilder::set_return_consumed_capacity):<br>required: **false**<br><p>A value of <code>TOTAL</code> causes consumed capacity information to be returned, and a value of <code>NONE</code> prevents that information from being returned. No other value is valid.</p><br>
    8     10   
    /// - On success, responds with [`TransactGetItemsOutput`](crate::operation::transact_get_items::TransactGetItemsOutput) with field(s):
    9     11   
    ///   - [`consumed_capacity(Option<Vec::<ConsumedCapacity>>)`](crate::operation::transact_get_items::TransactGetItemsOutput::consumed_capacity): <p>If the <i>ReturnConsumedCapacity</i> value was <code>TOTAL</code>, this is an array of <code>ConsumedCapacity</code> objects, one for each table addressed by <code>TransactGetItem</code> objects in the <i>TransactItems</i> parameter. These <code>ConsumedCapacity</code> objects report the read-capacity units consumed by the <code>TransactGetItems</code> call in that table.</p>
   10     12   
    ///   - [`responses(Option<Vec::<ItemResponse>>)`](crate::operation::transact_get_items::TransactGetItemsOutput::responses): <p>An ordered array of up to 25 <code>ItemResponse</code> objects, each of which corresponds to the <code>TransactGetItem</code> object in the same position in the <i>TransactItems</i> array. Each <code>ItemResponse</code> object contains a Map of the name-value pairs that are the projected attributes of the requested item.</p> <p>If a requested item could not be retrieved, the corresponding <code>ItemResponse</code> object is Null, or if the requested item has no projected attributes, the corresponding <code>ItemResponse</code> object is an empty Map.</p>
   11     13   
    /// - On failure, responds with [`SdkError<TransactGetItemsError>`](crate::operation::transact_get_items::TransactGetItemsError)
          14  +
    /* FluentClientGenerator.kt:234 */
   12     15   
    pub fn transact_get_items(&self) -> crate::operation::transact_get_items::builders::TransactGetItemsFluentBuilder {
   13     16   
        crate::operation::transact_get_items::builders::TransactGetItemsFluentBuilder::new(self.handle.clone())
   14     17   
    }
          18  +
    /* FluentClientGenerator.kt:187 */
   15     19   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/transact_write_items.rs

@@ -1,1 +17,21 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`TransactWriteItems`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`transact_items(TransactWriteItem)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::transact_items) / [`set_transact_items(Option<Vec::<TransactWriteItem>>)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::set_transact_items):<br>required: **true**<br><p>An ordered array of up to 25 <code>TransactWriteItem</code> objects, each of which contains a <code>ConditionCheck</code>, <code>Put</code>, <code>Update</code>, or <code>Delete</code> object. These can operate on items in different tables, but the tables must reside in the same AWS account and Region, and no two of them can operate on the same item.</p><br>
    7      9   
    ///   - [`return_consumed_capacity(ReturnConsumedCapacity)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::return_consumed_capacity) / [`set_return_consumed_capacity(Option<ReturnConsumedCapacity>)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::set_return_consumed_capacity):<br>required: **false**<br><p>Determines the level of detail about provisioned throughput consumption that is returned in the response:</p> <ul>  <li>   <p><code>INDEXES</code> - The response includes the aggregate <code>ConsumedCapacity</code> for the operation, together with <code>ConsumedCapacity</code> for each table and secondary index that was accessed.</p>   <p>Note that some operations, such as <code>GetItem</code> and <code>BatchGetItem</code>, do not access any indexes at all. In these cases, specifying <code>INDEXES</code> will only return <code>ConsumedCapacity</code> information for table(s).</p></li>  <li>   <p><code>TOTAL</code> - The response includes only the aggregate <code>ConsumedCapacity</code> for the operation.</p></li>  <li>   <p><code>NONE</code> - No <code>ConsumedCapacity</code> details are included in the response.</p></li> </ul><br>
    8     10   
    ///   - [`return_item_collection_metrics(ReturnItemCollectionMetrics)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::return_item_collection_metrics) / [`set_return_item_collection_metrics(Option<ReturnItemCollectionMetrics>)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::set_return_item_collection_metrics):<br>required: **false**<br><p>Determines whether item collection metrics are returned. If set to <code>SIZE</code>, the response includes statistics about item collections (if any), that were modified during the operation and are returned in the response. If set to <code>NONE</code> (the default), no statistics are returned.</p><br>
    9     11   
    ///   - [`client_request_token(impl Into<String>)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::client_request_token) / [`set_client_request_token(Option<String>)`](crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::set_client_request_token):<br>required: **false**<br><p>Providing a <code>ClientRequestToken</code> makes the call to <code>TransactWriteItems</code> idempotent, meaning that multiple identical calls have the same effect as one single call.</p> <p>Although multiple identical calls using the same client request token produce the same result on the server (no side effects), the responses to the calls might not be the same. If the <code>ReturnConsumedCapacity&gt;</code> parameter is set, then the initial <code>TransactWriteItems</code> call returns the amount of write capacity units consumed in making the changes. Subsequent <code>TransactWriteItems</code> calls with the same client token return the number of read capacity units consumed in reading the item.</p> <p>A client request token is valid for 10 minutes after the first request that uses it is completed. After 10 minutes, any request with the same client token is treated as a new request. Do not resubmit the same request with the same client token for more than 10 minutes, or the result might not be idempotent.</p> <p>If you submit a request with the same client token but a change in other parameters within the 10-minute idempotency window, DynamoDB returns an <code>IdempotentParameterMismatch</code> exception.</p><br>
   10     12   
    /// - On success, responds with [`TransactWriteItemsOutput`](crate::operation::transact_write_items::TransactWriteItemsOutput) with field(s):
   11     13   
    ///   - [`consumed_capacity(Option<Vec::<ConsumedCapacity>>)`](crate::operation::transact_write_items::TransactWriteItemsOutput::consumed_capacity): <p>The capacity units consumed by the entire <code>TransactWriteItems</code> operation. The values of the list are ordered according to the ordering of the <code>TransactItems</code> request parameter.</p>
   12     14   
    ///   - [`item_collection_metrics(Option<HashMap::<String, Vec::<ItemCollectionMetrics>>>)`](crate::operation::transact_write_items::TransactWriteItemsOutput::item_collection_metrics): <p>A list of tables that were processed by <code>TransactWriteItems</code> and, for each table, information about any item collections that were affected by individual <code>UpdateItem</code>, <code>PutItem</code>, or <code>DeleteItem</code> operations.</p>
   13     15   
    /// - On failure, responds with [`SdkError<TransactWriteItemsError>`](crate::operation::transact_write_items::TransactWriteItemsError)
          16  +
    /* FluentClientGenerator.kt:234 */
   14     17   
    pub fn transact_write_items(&self) -> crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder {
   15     18   
        crate::operation::transact_write_items::builders::TransactWriteItemsFluentBuilder::new(self.handle.clone())
   16     19   
    }
          20  +
    /* FluentClientGenerator.kt:187 */
   17     21   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/untag_resource.rs

@@ -1,1 +13,17 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UntagResource`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`resource_arn(impl Into<String>)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::resource_arn) / [`set_resource_arn(Option<String>)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::set_resource_arn):<br>required: **true**<br><p>The DynamoDB resource that the tags will be removed from. This value is an Amazon Resource Name (ARN).</p><br>
    7      9   
    ///   - [`tag_keys(impl Into<String>)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::tag_keys) / [`set_tag_keys(Option<Vec::<String>>)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::set_tag_keys):<br>required: **true**<br><p>A list of tag keys. Existing tags of the resource whose keys are members of this list will be removed from the DynamoDB resource.</p><br>
    8     10   
    /// - On success, responds with [`UntagResourceOutput`](crate::operation::untag_resource::UntagResourceOutput)
    9     11   
    /// - On failure, responds with [`SdkError<UntagResourceError>`](crate::operation::untag_resource::UntagResourceError)
          12  +
    /* FluentClientGenerator.kt:234 */
   10     13   
    pub fn untag_resource(&self) -> crate::operation::untag_resource::builders::UntagResourceFluentBuilder {
   11     14   
        crate::operation::untag_resource::builders::UntagResourceFluentBuilder::new(self.handle.clone())
   12     15   
    }
          16  +
    /* FluentClientGenerator.kt:187 */
   13     17   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_continuous_backups.rs

@@ -1,1 +14,18 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateContinuousBackups`](crate::operation::update_continuous_backups::builders::UpdateContinuousBackupsFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`table_name(impl Into<String>)`](crate::operation::update_continuous_backups::builders::UpdateContinuousBackupsFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::update_continuous_backups::builders::UpdateContinuousBackupsFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table.</p><br>
    7      9   
    ///   - [`point_in_time_recovery_specification(PointInTimeRecoverySpecification)`](crate::operation::update_continuous_backups::builders::UpdateContinuousBackupsFluentBuilder::point_in_time_recovery_specification) / [`set_point_in_time_recovery_specification(Option<PointInTimeRecoverySpecification>)`](crate::operation::update_continuous_backups::builders::UpdateContinuousBackupsFluentBuilder::set_point_in_time_recovery_specification):<br>required: **true**<br><p>Represents the settings used to enable point in time recovery.</p><br>
    8     10   
    /// - On success, responds with [`UpdateContinuousBackupsOutput`](crate::operation::update_continuous_backups::UpdateContinuousBackupsOutput) with field(s):
    9     11   
    ///   - [`continuous_backups_description(Option<ContinuousBackupsDescription>)`](crate::operation::update_continuous_backups::UpdateContinuousBackupsOutput::continuous_backups_description): <p>Represents the continuous backups and point in time recovery settings on the table.</p>
   10     12   
    /// - On failure, responds with [`SdkError<UpdateContinuousBackupsError>`](crate::operation::update_continuous_backups::UpdateContinuousBackupsError)
          13  +
    /* FluentClientGenerator.kt:234 */
   11     14   
    pub fn update_continuous_backups(&self) -> crate::operation::update_continuous_backups::builders::UpdateContinuousBackupsFluentBuilder {
   12     15   
        crate::operation::update_continuous_backups::builders::UpdateContinuousBackupsFluentBuilder::new(self.handle.clone())
   13     16   
    }
          17  +
    /* FluentClientGenerator.kt:187 */
   14     18   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_contributor_insights.rs

@@ -1,1 +17,21 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateContributorInsights`](crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`table_name(impl Into<String>)`](crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table.</p><br>
    7      9   
    ///   - [`index_name(impl Into<String>)`](crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder::index_name) / [`set_index_name(Option<String>)`](crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder::set_index_name):<br>required: **false**<br><p>The global secondary index name, if applicable.</p><br>
    8     10   
    ///   - [`contributor_insights_action(ContributorInsightsAction)`](crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder::contributor_insights_action) / [`set_contributor_insights_action(Option<ContributorInsightsAction>)`](crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder::set_contributor_insights_action):<br>required: **true**<br><p>Represents the contributor insights action.</p><br>
    9     11   
    /// - On success, responds with [`UpdateContributorInsightsOutput`](crate::operation::update_contributor_insights::UpdateContributorInsightsOutput) with field(s):
   10     12   
    ///   - [`table_name(Option<String>)`](crate::operation::update_contributor_insights::UpdateContributorInsightsOutput::table_name): <p>The name of the table.</p>
   11     13   
    ///   - [`index_name(Option<String>)`](crate::operation::update_contributor_insights::UpdateContributorInsightsOutput::index_name): <p>The name of the global secondary index, if applicable.</p>
   12     14   
    ///   - [`contributor_insights_status(Option<ContributorInsightsStatus>)`](crate::operation::update_contributor_insights::UpdateContributorInsightsOutput::contributor_insights_status): <p>The status of contributor insights</p>
   13     15   
    /// - On failure, responds with [`SdkError<UpdateContributorInsightsError>`](crate::operation::update_contributor_insights::UpdateContributorInsightsError)
          16  +
    /* FluentClientGenerator.kt:234 */
   14     17   
    pub fn update_contributor_insights(&self) -> crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder {
   15     18   
        crate::operation::update_contributor_insights::builders::UpdateContributorInsightsFluentBuilder::new(self.handle.clone())
   16     19   
    }
          20  +
    /* FluentClientGenerator.kt:187 */
   17     21   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_global_table.rs

@@ -1,1 +14,18 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateGlobalTable`](crate::operation::update_global_table::builders::UpdateGlobalTableFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`global_table_name(impl Into<String>)`](crate::operation::update_global_table::builders::UpdateGlobalTableFluentBuilder::global_table_name) / [`set_global_table_name(Option<String>)`](crate::operation::update_global_table::builders::UpdateGlobalTableFluentBuilder::set_global_table_name):<br>required: **true**<br><p>The global table name.</p><br>
    7      9   
    ///   - [`replica_updates(ReplicaUpdate)`](crate::operation::update_global_table::builders::UpdateGlobalTableFluentBuilder::replica_updates) / [`set_replica_updates(Option<Vec::<ReplicaUpdate>>)`](crate::operation::update_global_table::builders::UpdateGlobalTableFluentBuilder::set_replica_updates):<br>required: **true**<br><p>A list of Regions that should be added or removed from the global table.</p><br>
    8     10   
    /// - On success, responds with [`UpdateGlobalTableOutput`](crate::operation::update_global_table::UpdateGlobalTableOutput) with field(s):
    9     11   
    ///   - [`global_table_description(Option<GlobalTableDescription>)`](crate::operation::update_global_table::UpdateGlobalTableOutput::global_table_description): <p>Contains the details of the global table.</p>
   10     12   
    /// - On failure, responds with [`SdkError<UpdateGlobalTableError>`](crate::operation::update_global_table::UpdateGlobalTableError)
          13  +
    /* FluentClientGenerator.kt:234 */
   11     14   
    pub fn update_global_table(&self) -> crate::operation::update_global_table::builders::UpdateGlobalTableFluentBuilder {
   12     15   
        crate::operation::update_global_table::builders::UpdateGlobalTableFluentBuilder::new(self.handle.clone())
   13     16   
    }
          17  +
    /* FluentClientGenerator.kt:187 */
   14     18   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_global_table_settings.rs

@@ -1,1 +19,23 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateGlobalTableSettings`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`global_table_name(impl Into<String>)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::global_table_name) / [`set_global_table_name(Option<String>)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::set_global_table_name):<br>required: **true**<br><p>The name of the global table</p><br>
    7      9   
    ///   - [`global_table_billing_mode(BillingMode)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::global_table_billing_mode) / [`set_global_table_billing_mode(Option<BillingMode>)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::set_global_table_billing_mode):<br>required: **false**<br><p>The billing mode of the global table. If <code>GlobalTableBillingMode</code> is not specified, the global table defaults to <code>PROVISIONED</code> capacity billing mode.</p> <ul>  <li>   <p><code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned Mode</a>.</p></li>  <li>   <p><code>PAY_PER_REQUEST</code> - We recommend using <code>PAY_PER_REQUEST</code> for unpredictable workloads. <code>PAY_PER_REQUEST</code> sets the billing mode to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand Mode</a>.</p></li> </ul><br>
    8     10   
    ///   - [`global_table_provisioned_write_capacity_units(i64)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::global_table_provisioned_write_capacity_units) / [`set_global_table_provisioned_write_capacity_units(Option<i64>)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::set_global_table_provisioned_write_capacity_units):<br>required: **false**<br><p>The maximum number of writes consumed per second before DynamoDB returns a <code>ThrottlingException.</code></p><br>
    9     11   
    ///   - [`global_table_provisioned_write_capacity_auto_scaling_settings_update(AutoScalingSettingsUpdate)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::global_table_provisioned_write_capacity_auto_scaling_settings_update) / [`set_global_table_provisioned_write_capacity_auto_scaling_settings_update(Option<AutoScalingSettingsUpdate>)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::set_global_table_provisioned_write_capacity_auto_scaling_settings_update):<br>required: **false**<br><p>Auto scaling settings for managing provisioned write capacity for the global table.</p><br>
   10     12   
    ///   - [`global_table_global_secondary_index_settings_update(GlobalTableGlobalSecondaryIndexSettingsUpdate)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::global_table_global_secondary_index_settings_update) / [`set_global_table_global_secondary_index_settings_update(Option<Vec::<GlobalTableGlobalSecondaryIndexSettingsUpdate>>)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::set_global_table_global_secondary_index_settings_update):<br>required: **false**<br><p>Represents the settings of a global secondary index for a global table that will be modified.</p><br>
   11     13   
    ///   - [`replica_settings_update(ReplicaSettingsUpdate)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::replica_settings_update) / [`set_replica_settings_update(Option<Vec::<ReplicaSettingsUpdate>>)`](crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::set_replica_settings_update):<br>required: **false**<br><p>Represents the settings for a global table in a Region that will be modified.</p><br>
   12     14   
    /// - On success, responds with [`UpdateGlobalTableSettingsOutput`](crate::operation::update_global_table_settings::UpdateGlobalTableSettingsOutput) with field(s):
   13     15   
    ///   - [`global_table_name(Option<String>)`](crate::operation::update_global_table_settings::UpdateGlobalTableSettingsOutput::global_table_name): <p>The name of the global table.</p>
   14     16   
    ///   - [`replica_settings(Option<Vec::<ReplicaSettingsDescription>>)`](crate::operation::update_global_table_settings::UpdateGlobalTableSettingsOutput::replica_settings): <p>The Region-specific settings for the global table.</p>
   15     17   
    /// - On failure, responds with [`SdkError<UpdateGlobalTableSettingsError>`](crate::operation::update_global_table_settings::UpdateGlobalTableSettingsError)
          18  +
    /* FluentClientGenerator.kt:234 */
   16     19   
    pub fn update_global_table_settings(&self) -> crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder {
   17     20   
        crate::operation::update_global_table_settings::builders::UpdateGlobalTableSettingsFluentBuilder::new(self.handle.clone())
   18     21   
    }
          22  +
    /* FluentClientGenerator.kt:187 */
   19     23   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_item.rs

@@ -1,1 +26,30 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateItem`](crate::operation::update_item::builders::UpdateItemFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`table_name(impl Into<String>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table containing the item to update.</p><br>
    7      9   
    ///   - [`key(impl Into<String>, AttributeValue)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::key) / [`set_key(Option<HashMap::<String, AttributeValue>>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_key):<br>required: **true**<br><p>The primary key of the item to be updated. Each element consists of an attribute name and a value for that attribute.</p> <p>For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key.</p><br>
    8     10   
    ///   - [`attribute_updates(impl Into<String>, AttributeValueUpdate)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::attribute_updates) / [`set_attribute_updates(Option<HashMap::<String, AttributeValueUpdate>>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_attribute_updates):<br>required: **false**<br><p>This is a legacy parameter. Use <code>UpdateExpression</code> instead. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributeUpdates.html">AttributeUpdates</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
    9     11   
    ///   - [`expected(impl Into<String>, ExpectedAttributeValue)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::expected) / [`set_expected(Option<HashMap::<String, ExpectedAttributeValue>>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_expected):<br>required: **false**<br><p>This is a legacy parameter. Use <code>ConditionExpression</code> instead. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html">Expected</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   10     12   
    ///   - [`conditional_operator(ConditionalOperator)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::conditional_operator) / [`set_conditional_operator(Option<ConditionalOperator>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_conditional_operator):<br>required: **false**<br><p>This is a legacy parameter. Use <code>ConditionExpression</code> instead. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html">ConditionalOperator</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   11     13   
    ///   - [`return_values(ReturnValue)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::return_values) / [`set_return_values(Option<ReturnValue>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_return_values):<br>required: **false**<br><p>Use <code>ReturnValues</code> if you want to get the item attributes as they appear before or after they are updated. For <code>UpdateItem</code>, the valid values are:</p> <ul>  <li>   <p><code>NONE</code> - If <code>ReturnValues</code> is not specified, or if its value is <code>NONE</code>, then nothing is returned. (This setting is the default for <code>ReturnValues</code>.)</p></li>  <li>   <p><code>ALL_OLD</code> - Returns all of the attributes of the item, as they appeared before the UpdateItem operation.</p></li>  <li>   <p><code>UPDATED_OLD</code> - Returns only the updated attributes, as they appeared before the UpdateItem operation.</p></li>  <li>   <p><code>ALL_NEW</code> - Returns all of the attributes of the item, as they appear after the UpdateItem operation.</p></li>  <li>   <p><code>UPDATED_NEW</code> - Returns only the updated attributes, as they appear after the UpdateItem operation.</p></li> </ul> <p>There is no additional cost associated with requesting a return value aside from the small network and processing overhead of receiving a larger response. No read capacity units are consumed.</p> <p>The values returned are strongly consistent.</p><br>
   12     14   
    ///   - [`return_consumed_capacity(ReturnConsumedCapacity)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::return_consumed_capacity) / [`set_return_consumed_capacity(Option<ReturnConsumedCapacity>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_return_consumed_capacity):<br>required: **false**<br><p>Determines the level of detail about provisioned throughput consumption that is returned in the response:</p> <ul>  <li>   <p><code>INDEXES</code> - The response includes the aggregate <code>ConsumedCapacity</code> for the operation, together with <code>ConsumedCapacity</code> for each table and secondary index that was accessed.</p>   <p>Note that some operations, such as <code>GetItem</code> and <code>BatchGetItem</code>, do not access any indexes at all. In these cases, specifying <code>INDEXES</code> will only return <code>ConsumedCapacity</code> information for table(s).</p></li>  <li>   <p><code>TOTAL</code> - The response includes only the aggregate <code>ConsumedCapacity</code> for the operation.</p></li>  <li>   <p><code>NONE</code> - No <code>ConsumedCapacity</code> details are included in the response.</p></li> </ul><br>
   13     15   
    ///   - [`return_item_collection_metrics(ReturnItemCollectionMetrics)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::return_item_collection_metrics) / [`set_return_item_collection_metrics(Option<ReturnItemCollectionMetrics>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_return_item_collection_metrics):<br>required: **false**<br><p>Determines whether item collection metrics are returned. If set to <code>SIZE</code>, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to <code>NONE</code> (the default), no statistics are returned.</p><br>
   14     16   
    ///   - [`update_expression(impl Into<String>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::update_expression) / [`set_update_expression(Option<String>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_update_expression):<br>required: **false**<br><p>An expression that defines one or more attributes to be updated, the action to be performed on them, and new values for them.</p> <p>The following action values are available for <code>UpdateExpression</code>.</p> <ul>  <li>   <p><code>SET</code> - Adds one or more attributes and values to an item. If any of these attributes already exist, they are replaced by the new values. You can also use <code>SET</code> to add or subtract from an attribute that is of type Number. For example: <code>SET myNum = myNum + :val</code></p>   <p><code>SET</code> supports the following functions:</p>   <ul>    <li>     <p><code>if_not_exists (path, operand)</code> - if the item does not contain an attribute at the specified path, then <code>if_not_exists</code> evaluates to operand; otherwise, it evaluates to path. You can use this function to avoid overwriting an attribute that may already be present in the item.</p></li>    <li>     <p><code>list_append (operand, operand)</code> - evaluates to a list with a new element added to it. You can append the new element to the start or the end of the list by reversing the order of the operands.</p></li>   </ul>   <p>These function names are case-sensitive.</p></li>  <li>   <p><code>REMOVE</code> - Removes one or more attributes from an item.</p></li>  <li>   <p><code>ADD</code> - Adds the specified value to the item, if the attribute does not already exist. If the attribute does exist, then the behavior of <code>ADD</code> depends on the data type of the attribute:</p>   <ul>    <li>     <p>If the existing attribute is a number, and if <code>Value</code> is also a number, then <code>Value</code> is mathematically added to the existing attribute. If <code>Value</code> is a negative number, then it is subtracted from the existing attribute.</p><note>      <p>If you use <code>ADD</code> to increment or decrement a number value for an item that doesn't exist before the update, DynamoDB uses <code>0</code> as the initial value.</p>      <p>Similarly, if you use <code>ADD</code> for an existing item to increment or decrement an attribute value that doesn't exist before the update, DynamoDB uses <code>0</code> as the initial value. For example, suppose that the item you want to update doesn't have an attribute named <code>itemcount</code>, but you decide to <code>ADD</code> the number <code>3</code> to this attribute anyway. DynamoDB will create the <code>itemcount</code> attribute, set its initial value to <code>0</code>, and finally add <code>3</code> to it. The result will be a new <code>itemcount</code> attribute in the item, with a value of <code>3</code>.</p>     </note></li>    <li>     <p>If the existing data type is a set and if <code>Value</code> is also a set, then <code>Value</code> is added to the existing set. For example, if the attribute value is the set <code>\[1,2\]</code>, and the <code>ADD</code> action specified <code>\[3\]</code>, then the final attribute value is <code>\[1,2,3\]</code>. An error occurs if an <code>ADD</code> action is specified for a set attribute and the attribute type specified does not match the existing set type.</p>     <p>Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the <code>Value</code> must also be a set of strings.</p></li>   </ul><important>    <p>The <code>ADD</code> action only supports Number and set data types. In addition, <code>ADD</code> can only be used on top-level attributes, not nested attributes.</p>   </important></li>  <li>   <p><code>DELETE</code> - Deletes an element from a set.</p>   <p>If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set <code>\[a,b,c\]</code> and the <code>DELETE</code> action specifies <code>\[a,c\]</code>, then the final attribute value is <code>\[b\]</code>. Specifying an empty set is an error.</p><important>    <p>The <code>DELETE</code> action only supports set data types. In addition, <code>DELETE</code> can only be used on top-level attributes, not nested attributes.</p>   </important></li> </ul> <p>You can have many actions in a single expression, such as the following: <code>SET a=:value1, b=:value2 DELETE :value3, :value4, :value5</code></p> <p>For more information on update expressions, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html">Modifying Items and Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   15     17   
    ///   - [`condition_expression(impl Into<String>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::condition_expression) / [`set_condition_expression(Option<String>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_condition_expression):<br>required: **false**<br><p>A condition that must be satisfied in order for a conditional update to succeed.</p> <p>An expression can contain any of the following:</p> <ul>  <li>   <p>Functions: <code>attribute_exists | attribute_not_exists | attribute_type | contains | begins_with | size</code></p>   <p>These function names are case-sensitive.</p></li>  <li>   <p>Comparison operators: <code>= | &lt;&gt; | &lt; | &gt; | &lt;= | &gt;= | BETWEEN | IN </code></p></li>  <li>   <p>Logical operators: <code>AND | OR | NOT</code></p></li> </ul> <p>For more information about condition expressions, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html">Specifying Conditions</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   16     18   
    ///   - [`expression_attribute_names(impl Into<String>, impl Into<String>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::expression_attribute_names) / [`set_expression_attribute_names(Option<HashMap::<String, String>>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_expression_attribute_names):<br>required: **false**<br><p>One or more substitution tokens for attribute names in an expression. The following are some use cases for using <code>ExpressionAttributeNames</code>:</p> <ul>  <li>   <p>To access an attribute whose name conflicts with a DynamoDB reserved word.</p></li>  <li>   <p>To create a placeholder for repeating occurrences of an attribute name in an expression.</p></li>  <li>   <p>To prevent special characters in an attribute name from being misinterpreted in an expression.</p></li> </ul> <p>Use the <b>#</b> character in an expression to dereference an attribute name. For example, consider the following attribute name:</p> <ul>  <li>   <p><code>Percentile</code></p></li> </ul> <p>The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved Words</a> in the <i>Amazon DynamoDB Developer Guide</i>.) To work around this, you could specify the following for <code>ExpressionAttributeNames</code>:</p> <ul>  <li>   <p><code>{"#P":"Percentile"}</code></p></li> </ul> <p>You could then use this substitution in an expression, as in this example:</p> <ul>  <li>   <p><code>#P = :val</code></p></li> </ul><note>  <p>Tokens that begin with the <b>:</b> character are <i>expression attribute values</i>, which are placeholders for the actual value at runtime.</p> </note> <p>For more information about expression attribute names, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Specifying Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   17     19   
    ///   - [`expression_attribute_values(impl Into<String>, AttributeValue)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::expression_attribute_values) / [`set_expression_attribute_values(Option<HashMap::<String, AttributeValue>>)`](crate::operation::update_item::builders::UpdateItemFluentBuilder::set_expression_attribute_values):<br>required: **false**<br><p>One or more values that can be substituted in an expression.</p> <p>Use the <b>:</b> (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the <code>ProductStatus</code> attribute was one of the following:</p> <p><code>Available | Backordered | Discontinued</code></p> <p>You would first need to specify <code>ExpressionAttributeValues</code> as follows:</p> <p><code>{ ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"} }</code></p> <p>You could then use these values in an expression, such as this:</p> <p><code>ProductStatus IN (:avail, :back, :disc)</code></p> <p>For more information on expression attribute values, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html">Condition Expressions</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   18     20   
    /// - On success, responds with [`UpdateItemOutput`](crate::operation::update_item::UpdateItemOutput) with field(s):
   19     21   
    ///   - [`attributes(Option<HashMap::<String, AttributeValue>>)`](crate::operation::update_item::UpdateItemOutput::attributes): <p>A map of attribute values as they appear before or after the <code>UpdateItem</code> operation, as determined by the <code>ReturnValues</code> parameter.</p> <p>The <code>Attributes</code> map is only present if <code>ReturnValues</code> was specified as something other than <code>NONE</code> in the request. Each element represents one attribute.</p>
   20     22   
    ///   - [`consumed_capacity(Option<ConsumedCapacity>)`](crate::operation::update_item::UpdateItemOutput::consumed_capacity): <p>The capacity units consumed by the <code>UpdateItem</code> operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. <code>ConsumedCapacity</code> is only returned if the <code>ReturnConsumedCapacity</code> parameter was specified. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html">Provisioned Throughput</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
   21     23   
    ///   - [`item_collection_metrics(Option<ItemCollectionMetrics>)`](crate::operation::update_item::UpdateItemOutput::item_collection_metrics): <p>Information about item collections, if any, that were affected by the <code>UpdateItem</code> operation. <code>ItemCollectionMetrics</code> is only returned if the <code>ReturnItemCollectionMetrics</code> parameter was specified. If the table does not have any local secondary indexes, this information is not returned in the response.</p> <p>Each <code>ItemCollectionMetrics</code> element consists of:</p> <ul>  <li>   <p><code>ItemCollectionKey</code> - The partition key value of the item collection. This is the same as the partition key value of the item itself.</p></li>  <li>   <p><code>SizeEstimateRangeGB</code> - An estimate of item collection size, in gigabytes. This value is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit.</p>   <p>The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.</p></li> </ul>
   22     24   
    /// - On failure, responds with [`SdkError<UpdateItemError>`](crate::operation::update_item::UpdateItemError)
          25  +
    /* FluentClientGenerator.kt:234 */
   23     26   
    pub fn update_item(&self) -> crate::operation::update_item::builders::UpdateItemFluentBuilder {
   24     27   
        crate::operation::update_item::builders::UpdateItemFluentBuilder::new(self.handle.clone())
   25     28   
    }
          29  +
    /* FluentClientGenerator.kt:187 */
   26     30   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_table.rs

@@ -1,1 +20,24 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateTable`](crate::operation::update_table::builders::UpdateTableFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`attribute_definitions(AttributeDefinition)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::attribute_definitions) / [`set_attribute_definitions(Option<Vec::<AttributeDefinition>>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_attribute_definitions):<br>required: **false**<br><p>An array of attributes that describe the key schema for the table and indexes. If you are adding a new global secondary index to the table, <code>AttributeDefinitions</code> must include the key element(s) of the new index.</p><br>
    7      9   
    ///   - [`table_name(impl Into<String>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table to be updated.</p><br>
    8     10   
    ///   - [`billing_mode(BillingMode)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::billing_mode) / [`set_billing_mode(Option<BillingMode>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_billing_mode):<br>required: **false**<br><p>Controls how you are charged for read and write throughput and how you manage capacity. When switching from pay-per-request to provisioned capacity, initial provisioned capacity values must be set. The initial provisioned capacity values are estimated based on the consumed read and write capacity of your table and global secondary indexes over the past 30 minutes.</p> <ul>  <li>   <p><code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned Mode</a>.</p></li>  <li>   <p><code>PAY_PER_REQUEST</code> - We recommend using <code>PAY_PER_REQUEST</code> for unpredictable workloads. <code>PAY_PER_REQUEST</code> sets the billing mode to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand Mode</a>.</p></li> </ul><br>
    9     11   
    ///   - [`provisioned_throughput(ProvisionedThroughput)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::provisioned_throughput) / [`set_provisioned_throughput(Option<ProvisionedThroughput>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_provisioned_throughput):<br>required: **false**<br><p>The new provisioned throughput settings for the specified table or index.</p><br>
   10     12   
    ///   - [`global_secondary_index_updates(GlobalSecondaryIndexUpdate)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::global_secondary_index_updates) / [`set_global_secondary_index_updates(Option<Vec::<GlobalSecondaryIndexUpdate>>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_global_secondary_index_updates):<br>required: **false**<br><p>An array of one or more global secondary indexes for the table. For each index in the array, you can request one action:</p> <ul>  <li>   <p><code>Create</code> - add a new global secondary index to the table.</p></li>  <li>   <p><code>Update</code> - modify the provisioned throughput settings of an existing global secondary index.</p></li>  <li>   <p><code>Delete</code> - remove a global secondary index from the table.</p></li> </ul> <p>You can create or delete only one global secondary index per <code>UpdateTable</code> operation.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html">Managing Global Secondary Indexes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   11     13   
    ///   - [`stream_specification(StreamSpecification)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::stream_specification) / [`set_stream_specification(Option<StreamSpecification>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_stream_specification):<br>required: **false**<br><p>Represents the DynamoDB Streams configuration for the table.</p><note>  <p>You receive a <code>ResourceInUseException</code> if you try to enable a stream on a table that already has a stream, or if you try to disable a stream on a table that doesn't have a stream.</p> </note><br>
   12     14   
    ///   - [`sse_specification(SseSpecification)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::sse_specification) / [`set_sse_specification(Option<SseSpecification>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_sse_specification):<br>required: **false**<br><p>The new server-side encryption settings for the specified table.</p><br>
   13     15   
    ///   - [`replica_updates(ReplicationGroupUpdate)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::replica_updates) / [`set_replica_updates(Option<Vec::<ReplicationGroupUpdate>>)`](crate::operation::update_table::builders::UpdateTableFluentBuilder::set_replica_updates):<br>required: **false**<br><p>A list of replica update actions (create, delete, or update) for the table.</p><note>  <p>This property only applies to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html">Version 2019.11.21</a> of global tables.</p> </note><br>
   14     16   
    /// - On success, responds with [`UpdateTableOutput`](crate::operation::update_table::UpdateTableOutput) with field(s):
   15     17   
    ///   - [`table_description(Option<TableDescription>)`](crate::operation::update_table::UpdateTableOutput::table_description): <p>Represents the properties of the table.</p>
   16     18   
    /// - On failure, responds with [`SdkError<UpdateTableError>`](crate::operation::update_table::UpdateTableError)
          19  +
    /* FluentClientGenerator.kt:234 */
   17     20   
    pub fn update_table(&self) -> crate::operation::update_table::builders::UpdateTableFluentBuilder {
   18     21   
        crate::operation::update_table::builders::UpdateTableFluentBuilder::new(self.handle.clone())
   19     22   
    }
          23  +
    /* FluentClientGenerator.kt:187 */
   20     24   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_table_replica_auto_scaling.rs

@@ -1,1 +18,22 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateTableReplicaAutoScaling`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`global_secondary_index_updates(GlobalSecondaryIndexAutoScalingUpdate)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::global_secondary_index_updates) / [`set_global_secondary_index_updates(Option<Vec::<GlobalSecondaryIndexAutoScalingUpdate>>)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::set_global_secondary_index_updates):<br>required: **false**<br><p>Represents the auto scaling settings of the global secondary indexes of the replica to be updated.</p><br>
    7      9   
    ///   - [`table_name(impl Into<String>)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the global table to be updated.</p><br>
    8     10   
    ///   - [`provisioned_write_capacity_auto_scaling_update(AutoScalingSettingsUpdate)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::provisioned_write_capacity_auto_scaling_update) / [`set_provisioned_write_capacity_auto_scaling_update(Option<AutoScalingSettingsUpdate>)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::set_provisioned_write_capacity_auto_scaling_update):<br>required: **false**<br><p>Represents the auto scaling settings to be modified for a global table or global secondary index.</p><br>
    9     11   
    ///   - [`replica_updates(ReplicaAutoScalingUpdate)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::replica_updates) / [`set_replica_updates(Option<Vec::<ReplicaAutoScalingUpdate>>)`](crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::set_replica_updates):<br>required: **false**<br><p>Represents the auto scaling settings of replicas of the table that will be modified.</p><br>
   10     12   
    /// - On success, responds with [`UpdateTableReplicaAutoScalingOutput`](crate::operation::update_table_replica_auto_scaling::UpdateTableReplicaAutoScalingOutput) with field(s):
   11     13   
    ///   - [`table_auto_scaling_description(Option<TableAutoScalingDescription>)`](crate::operation::update_table_replica_auto_scaling::UpdateTableReplicaAutoScalingOutput::table_auto_scaling_description): <p>Returns information about the auto scaling settings of a table with replicas.</p>
   12     14   
    /// - On failure, responds with [`SdkError<UpdateTableReplicaAutoScalingError>`](crate::operation::update_table_replica_auto_scaling::UpdateTableReplicaAutoScalingError)
          15  +
    /* FluentClientGenerator.kt:234 */
   13     16   
    pub fn update_table_replica_auto_scaling(
   14     17   
        &self,
   15     18   
    ) -> crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder {
   16     19   
        crate::operation::update_table_replica_auto_scaling::builders::UpdateTableReplicaAutoScalingFluentBuilder::new(self.handle.clone())
   17     20   
    }
          21  +
    /* FluentClientGenerator.kt:187 */
   18     22   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/update_time_to_live.rs

@@ -1,1 +14,18 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`UpdateTimeToLive`](crate::operation::update_time_to_live::builders::UpdateTimeToLiveFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`table_name(impl Into<String>)`](crate::operation::update_time_to_live::builders::UpdateTimeToLiveFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::update_time_to_live::builders::UpdateTimeToLiveFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table to be configured.</p><br>
    7      9   
    ///   - [`time_to_live_specification(TimeToLiveSpecification)`](crate::operation::update_time_to_live::builders::UpdateTimeToLiveFluentBuilder::time_to_live_specification) / [`set_time_to_live_specification(Option<TimeToLiveSpecification>)`](crate::operation::update_time_to_live::builders::UpdateTimeToLiveFluentBuilder::set_time_to_live_specification):<br>required: **true**<br><p>Represents the settings used to enable or disable Time to Live for the specified table.</p><br>
    8     10   
    /// - On success, responds with [`UpdateTimeToLiveOutput`](crate::operation::update_time_to_live::UpdateTimeToLiveOutput) with field(s):
    9     11   
    ///   - [`time_to_live_specification(Option<TimeToLiveSpecification>)`](crate::operation::update_time_to_live::UpdateTimeToLiveOutput::time_to_live_specification): <p>Represents the output of an <code>UpdateTimeToLive</code> operation.</p>
   10     12   
    /// - On failure, responds with [`SdkError<UpdateTimeToLiveError>`](crate::operation::update_time_to_live::UpdateTimeToLiveError)
          13  +
    /* FluentClientGenerator.kt:234 */
   11     14   
    pub fn update_time_to_live(&self) -> crate::operation::update_time_to_live::builders::UpdateTimeToLiveFluentBuilder {
   12     15   
        crate::operation::update_time_to_live::builders::UpdateTimeToLiveFluentBuilder::new(self.handle.clone())
   13     16   
    }
          17  +
    /* FluentClientGenerator.kt:187 */
   14     18   
}

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/config.rs

@@ -1,1 +187,227 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2         -
    3         -
/// Configuration for a dynamo service client.
           2  +
/* ServiceConfigGenerator.kt:409 */
           3  +
/// /* ServiceConfigGenerator.kt:409 */Configuration for a dynamo service client.
    4      4   
///
           5  +
/* RustType.kt:516 */
    5      6   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
           7  +
/* ServiceConfigGenerator.kt:414 */
    6      8   
pub struct Config {
    7         -
    // Both `config` and `cloneable` are the same config, but the cloneable one
           9  +
    /* ServiceConfigGenerator.kt:415 */// Both `config` and `cloneable` are the same config, but the cloneable one
    8     10   
    // is kept around so that it is possible to convert back into a builder. This can be
    9     11   
    // optimized in the future.
   10     12   
    pub(crate) config: crate::config::FrozenLayer,
   11     13   
    cloneable: ::aws_smithy_types::config_bag::CloneableLayer,
   12     14   
    pub(crate) runtime_components: crate::config::RuntimeComponentsBuilder,
   13     15   
    pub(crate) runtime_plugins: ::std::vec::Vec<crate::config::SharedRuntimePlugin>,
   14     16   
    pub(crate) behavior_version: ::std::option::Option<crate::config::BehaviorVersion>,
          17  +
    /* ServiceConfigGenerator.kt:414 */
   15     18   
}
          19  +
/* ServiceConfigGenerator.kt:433 */
   16     20   
impl Config {
   17         -
    ///
          21  +
    /// /* ServiceConfigGenerator.kt:434 */
   18     22   
    /// Constructs a config builder.
   19     23   
    /// <div class="warning">
   20     24   
    /// Note that a config created from this builder will not have the same safe defaults as one created by
   21     25   
    /// the <a href="https://crates.io/crates/aws-config" target="_blank">aws-config</a> crate.
   22     26   
    /// </div>
   23     27   
    ///
          28  +
    /* ServiceConfigGenerator.kt:435 */
   24     29   
    pub fn builder() -> Builder {
   25     30   
        Builder::default()
   26     31   
    }
          32  +
    /* ServiceConfigGenerator.kt:440 */
   27     33   
    /// Converts this config back into a builder so that it can be tweaked.
   28     34   
    pub fn to_builder(&self) -> Builder {
   29     35   
        Builder {
   30     36   
            config: self.cloneable.clone(),
   31     37   
            runtime_components: self.runtime_components.clone(),
   32     38   
            runtime_plugins: self.runtime_plugins.clone(),
   33     39   
            behavior_version: self.behavior_version,
   34     40   
        }
   35     41   
    }
          42  +
    /* StalledStreamProtectionConfigCustomization.kt:57 */
   36     43   
    /// Return a reference to the stalled stream protection configuration contained in this config, if any.
   37     44   
    pub fn stalled_stream_protection(&self) -> ::std::option::Option<&crate::config::StalledStreamProtectionConfig> {
   38     45   
        self.config.load::<crate::config::StalledStreamProtectionConfig>()
   39     46   
    }
          47  +
    /* HttpConnectorConfigDecorator.kt:52 */
   40     48   
    /// Return the [`SharedHttpClient`](crate::config::SharedHttpClient) to use when making requests, if any.
   41     49   
    pub fn http_client(&self) -> Option<crate::config::SharedHttpClient> {
   42     50   
        self.runtime_components.http_client()
   43     51   
    }
          52  +
    /* EndpointConfigCustomization.kt:47 */
   44     53   
    /// Returns the endpoint resolver.
   45     54   
    pub fn endpoint_resolver(&self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver {
   46     55   
        self.runtime_components.endpoint_resolver().expect("resolver defaulted if not set")
   47     56   
    }
          57  +
    /* ResiliencyConfigCustomization.kt:51 */
   48     58   
    /// Return a reference to the retry configuration contained in this config, if any.
   49     59   
    pub fn retry_config(&self) -> ::std::option::Option<&::aws_smithy_types::retry::RetryConfig> {
   50     60   
        self.config.load::<::aws_smithy_types::retry::RetryConfig>()
   51     61   
    }
   52     62   
   53     63   
    /// Return a cloned shared async sleep implementation from this config, if any.
   54     64   
    pub fn sleep_impl(&self) -> ::std::option::Option<crate::config::SharedAsyncSleep> {
   55     65   
        self.runtime_components.sleep_impl()
   56     66   
    }
   57     67   
   58     68   
    /// Return a reference to the timeout configuration contained in this config, if any.
   59     69   
    pub fn timeout_config(&self) -> ::std::option::Option<&::aws_smithy_types::timeout::TimeoutConfig> {
   60     70   
        self.config.load::<::aws_smithy_types::timeout::TimeoutConfig>()
   61     71   
    }
   62     72   
   63     73   
    /// Returns a reference to the retry partition contained in this config, if any.
   64     74   
    ///
   65     75   
    /// WARNING: This method is unstable and may be removed at any time. Do not rely on this
   66     76   
    /// method for anything!
   67     77   
    pub fn retry_partition(&self) -> ::std::option::Option<&::aws_smithy_runtime::client::retries::RetryPartition> {
   68     78   
        self.config.load::<::aws_smithy_runtime::client::retries::RetryPartition>()
   69     79   
    }
          80  +
    /* IdentityCacheDecorator.kt:96 */
   70     81   
    /// Returns the configured identity cache for auth.
   71     82   
    pub fn identity_cache(&self) -> ::std::option::Option<crate::config::SharedIdentityCache> {
   72     83   
        self.runtime_components.identity_cache()
   73     84   
    }
          85  +
    /* InterceptorConfigCustomization.kt:30 */
   74     86   
    /// Returns interceptors currently registered by the user.
   75     87   
    pub fn interceptors(&self) -> impl Iterator<Item = crate::config::SharedInterceptor> + '_ {
   76     88   
        self.runtime_components.interceptors()
   77     89   
    }
          90  +
    /* TimeSourceCustomization.kt:34 */
   78     91   
    /// Return time source used for this service.
          92  +
    /* TimeSourceCustomization.kt:35 */
   79     93   
    pub fn time_source(&self) -> ::std::option::Option<::aws_smithy_async::time::SharedTimeSource> {
          94  +
        /* TimeSourceCustomization.kt:39 */
   80     95   
        self.runtime_components.time_source()
          96  +
        /* TimeSourceCustomization.kt:35 */
   81     97   
    }
          98  +
    /* RetryClassifierConfigCustomization.kt:39 */
   82     99   
    /// Returns retry classifiers currently registered by the user.
   83    100   
    pub fn retry_classifiers(&self) -> impl Iterator<Item = ::aws_smithy_runtime_api::client::retries::classifiers::SharedRetryClassifier> + '_ {
   84    101   
        self.runtime_components.retry_classifiers()
   85    102   
    }
         103  +
    /* ServiceConfigGenerator.kt:433 */
   86    104   
}
   87         -
/// Builder for creating a `Config`.
         105  +
/// /* ServiceConfigGenerator.kt:458 */Builder for creating a `Config`.
         106  +
/* RustType.kt:516 */
   88    107   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
         108  +
/* ServiceConfigGenerator.kt:460 */
   89    109   
pub struct Builder {
   90         -
    pub(crate) config: ::aws_smithy_types::config_bag::CloneableLayer,
         110  +
    /* ServiceConfigGenerator.kt:461 */ pub(crate) config: ::aws_smithy_types::config_bag::CloneableLayer,
   91    111   
    pub(crate) runtime_components: crate::config::RuntimeComponentsBuilder,
   92    112   
    pub(crate) runtime_plugins: ::std::vec::Vec<crate::config::SharedRuntimePlugin>,
   93    113   
    pub(crate) behavior_version: ::std::option::Option<crate::config::BehaviorVersion>,
         114  +
    /* ServiceConfigGenerator.kt:460 */
   94    115   
}
         116  +
/* ServiceConfigGenerator.kt:476 */
   95    117   
impl ::std::default::Default for Builder {
         118  +
    /* ServiceConfigGenerator.kt:477 */
   96    119   
    fn default() -> Self {
   97    120   
        Self {
   98    121   
            config: ::std::default::Default::default(),
   99    122   
            runtime_components: crate::config::RuntimeComponentsBuilder::new("service config"),
  100    123   
            runtime_plugins: ::std::default::Default::default(),
  101    124   
            behavior_version: ::std::default::Default::default(),
  102    125   
        }
  103    126   
    }
         127  +
    /* ServiceConfigGenerator.kt:476 */
  104    128   
}
         129  +
/* ServiceConfigGenerator.kt:492 */
  105    130   
impl Builder {
  106         -
    ///
         131  +
    /// /* ServiceConfigGenerator.kt:493 */
  107    132   
    /// Constructs a config builder.
  108    133   
    /// <div class="warning">
  109    134   
    /// Note that a config created from this builder will not have the same safe defaults as one created by
  110    135   
    /// the <a href="https://crates.io/crates/aws-config" target="_blank">aws-config</a> crate.
  111    136   
    /// </div>
  112    137   
    ///
         138  +
    /* ServiceConfigGenerator.kt:494 */
  113    139   
    pub fn new() -> Self {
  114    140   
        Self::default()
  115    141   
    }
  116         -
    /// Constructs a config builder from the given `config_bag`, setting only fields stored in the config bag,
  117         -
    /// but not those in runtime components.
         142  +
    /// /* ServiceConfigGenerator.kt:327 */Constructs a config builder from the given `config_bag`, setting only fields stored in the config bag,
         143  +
    /// /* ServiceConfigGenerator.kt:328 */but not those in runtime components.
         144  +
    /* RustType.kt:516 */
  118    145   
    #[allow(unused)]
         146  +
    /* ServiceConfigGenerator.kt:330 */
  119    147   
    pub(crate) fn from_config_bag(config_bag: &::aws_smithy_types::config_bag::ConfigBag) -> Self {
         148  +
        /* ServiceConfigGenerator.kt:334 */
  120    149   
        let mut builder = Self::new();
         150  +
        /* StalledStreamProtectionConfigCustomization.kt:102 */
  121    151   
        builder.set_stalled_stream_protection(config_bag.load::<crate::config::StalledStreamProtectionConfig>().cloned());
         152  +
        /* ResiliencyConfigCustomization.kt:294 */
  122    153   
        builder.set_retry_config(config_bag.load::<::aws_smithy_types::retry::RetryConfig>().cloned());
         154  +
        /* ResiliencyConfigCustomization.kt:298 */
  123    155   
        builder.set_timeout_config(config_bag.load::<::aws_smithy_types::timeout::TimeoutConfig>().cloned());
         156  +
        /* ResiliencyConfigCustomization.kt:302 */
  124    157   
        builder.set_retry_partition(config_bag.load::<::aws_smithy_runtime::client::retries::RetryPartition>().cloned());
         158  +
        /* ServiceConfigGenerator.kt:338 */
  125    159   
        builder
         160  +
        /* ServiceConfigGenerator.kt:330 */
  126    161   
    }
         162  +
    /* StalledStreamProtectionConfigCustomization.kt:69 */
  127    163   
    /// Set the [`StalledStreamProtectionConfig`](crate::config::StalledStreamProtectionConfig)
  128    164   
    /// to configure protection for stalled streams.
  129    165   
    pub fn stalled_stream_protection(mut self, stalled_stream_protection_config: crate::config::StalledStreamProtectionConfig) -> Self {
  130    166   
        self.set_stalled_stream_protection(::std::option::Option::Some(stalled_stream_protection_config));
  131    167   
        self
  132    168   
    }
         169  +
    /* StalledStreamProtectionConfigCustomization.kt:84 */
  133    170   
    /// Set the [`StalledStreamProtectionConfig`](crate::config::StalledStreamProtectionConfig)
  134    171   
    /// to configure protection for stalled streams.
  135    172   
    pub fn set_stalled_stream_protection(
  136    173   
        &mut self,
  137    174   
        stalled_stream_protection_config: ::std::option::Option<crate::config::StalledStreamProtectionConfig>,
  138    175   
    ) -> &mut Self {
  139    176   
        self.config.store_or_unset(stalled_stream_protection_config);
  140    177   
        self
  141    178   
    }
         179  +
    /* IdempotencyTokenProviderCustomization.kt:32 */
  142    180   
    /// Sets the idempotency token provider to use for service calls that require tokens.
  143    181   
    pub fn idempotency_token_provider(
  144    182   
        mut self,
  145    183   
        idempotency_token_provider: impl ::std::convert::Into<crate::idempotency_token::IdempotencyTokenProvider>,
  146    184   
    ) -> Self {
  147    185   
        self.set_idempotency_token_provider(::std::option::Option::Some(idempotency_token_provider.into()));
  148    186   
        self
  149    187   
    }
         188  +
    /* IdempotencyTokenProviderCustomization.kt:43 */
  150    189   
    /// Sets the idempotency token provider to use for service calls that require tokens.
  151    190   
    pub fn set_idempotency_token_provider(
  152    191   
        &mut self,
  153    192   
        idempotency_token_provider: ::std::option::Option<crate::idempotency_token::IdempotencyTokenProvider>,
  154    193   
    ) -> &mut Self {
  155    194   
        self.config.store_or_unset(idempotency_token_provider);
  156    195   
        self
  157    196   
    }
         197  +
    /* HttpConnectorConfigDecorator.kt:65 */
  158    198   
    /// Sets the HTTP client to use when making requests.
  159    199   
    ///
  160    200   
    /// # Examples
  161    201   
    /// ```no_run
  162    202   
    /// # #[cfg(test)]
  163    203   
    /// # mod tests {
  164    204   
    /// # #[test]
  165    205   
    /// # fn example() {
  166    206   
    /// use std::time::Duration;
  167    207   
    /// use dynamo::config::Config;
@@ -195,235 +477,529 @@
  215    255   
    /// let mut builder = dynamo::Config::builder();
  216    256   
    /// override_http_client(&mut builder);
  217    257   
    /// let config = builder.build();
  218    258   
    /// # }
  219    259   
    /// # }
  220    260   
    /// ```
  221    261   
    pub fn set_http_client(&mut self, http_client: Option<crate::config::SharedHttpClient>) -> &mut Self {
  222    262   
        self.runtime_components.set_http_client(http_client);
  223    263   
        self
  224    264   
    }
         265  +
    /* EndpointConfigCustomization.kt:73 */
  225    266   
    /// Set the endpoint URL to use when making requests.
  226    267   
    ///
  227    268   
    /// Note: setting an endpoint URL will replace any endpoint resolver that has been set.
  228    269   
    ///
  229    270   
    /// # Panics
  230    271   
    /// Panics if an invalid URL is given.
  231    272   
    pub fn endpoint_url(mut self, endpoint_url: impl ::std::convert::Into<::std::string::String>) -> Self {
  232    273   
        self.set_endpoint_url(::std::option::Option::Some(endpoint_url.into()));
  233    274   
        self
  234    275   
    }
  235    276   
  236    277   
    /// Set the endpoint URL to use when making requests.
  237    278   
    ///
  238    279   
    /// Note: setting an endpoint URL will replace any endpoint resolver that has been set.
  239    280   
    ///
  240    281   
    /// # Panics
  241    282   
    /// Panics if an invalid URL is given.
  242    283   
    pub fn set_endpoint_url(&mut self, endpoint_url: ::std::option::Option<::std::string::String>) -> &mut Self {
  243    284   
        #[allow(deprecated)]
  244    285   
        self.set_endpoint_resolver(endpoint_url.map(|url| {
  245    286   
            ::aws_smithy_runtime_api::shared::IntoShared::into_shared(
  246    287   
                ::aws_smithy_runtime::client::orchestrator::endpoints::StaticUriEndpointResolver::uri(url),
  247    288   
            )
  248    289   
        }));
  249    290   
        self
  250    291   
    }
         292  +
    /* EndpointConfigCustomization.kt:105 */
  251    293   
    /// Sets the endpoint resolver to use when making requests.
  252    294   
    ///
  253    295   
    /// This service does not define a default endpoint resolver.
  254    296   
    ///
  255    297   
    /// Note: setting an endpoint resolver will replace any endpoint URL that has been set.
  256    298   
    /// This method accepts an endpoint resolver [specific to this service](crate::config::endpoint::ResolveEndpoint). If you want to
  257    299   
    /// provide a shared endpoint resolver, use [`Self::set_endpoint_resolver`].
  258    300   
    ///
  259    301   
    /// # Examples
  260    302   
    /// Create a custom endpoint resolver that resolves a different endpoing per-stage, e.g. staging vs. production.
  261    303   
    /// ```no_run
  262    304   
    /// use dynamo::config::endpoint::{ResolveEndpoint, EndpointFuture, Params, Endpoint};
  263    305   
    /// #[derive(Debug)]
  264    306   
    /// struct StageResolver { stage: String }
  265    307   
    /// impl ResolveEndpoint for StageResolver {
  266    308   
    ///     fn resolve_endpoint(&self, params: &Params) -> EndpointFuture<'_> {
  267    309   
    ///         let stage = &self.stage;
  268    310   
    ///         EndpointFuture::ready(Ok(Endpoint::builder().url(format!("{stage}.myservice.com")).build()))
  269    311   
    ///     }
  270    312   
    /// }
  271    313   
    /// let resolver = StageResolver { stage: std::env::var("STAGE").unwrap() };
  272    314   
    /// let config = dynamo::Config::builder().endpoint_resolver(resolver).build();
  273    315   
    /// let client = dynamo::Client::from_conf(config);
  274    316   
    /// ```
  275    317   
    pub fn endpoint_resolver(mut self, endpoint_resolver: impl crate::config::endpoint::ResolveEndpoint + 'static) -> Self {
  276    318   
        self.set_endpoint_resolver(::std::option::Option::Some(endpoint_resolver.into_shared_resolver()));
  277    319   
        self
  278    320   
    }
  279    321   
  280    322   
    /// Sets the endpoint resolver to use when making requests.
  281    323   
    ///
  282    324   
    /// This service does not define a default endpoint resolver.
         325  +
    /* EndpointConfigCustomization.kt:143 */
  283    326   
    pub fn set_endpoint_resolver(
  284    327   
        &mut self,
  285    328   
        endpoint_resolver: ::std::option::Option<::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver>,
  286    329   
    ) -> &mut Self {
  287    330   
        self.runtime_components.set_endpoint_resolver(endpoint_resolver);
  288    331   
        self
  289    332   
    }
         333  +
    /* ResiliencyConfigCustomization.kt:81 */
  290    334   
    /// Set the retry_config for the builder
  291    335   
    ///
  292    336   
    /// # Examples
  293    337   
    /// ```no_run
  294    338   
    /// use dynamo::config::Config;
  295    339   
    /// use dynamo::config::retry::RetryConfig;
  296    340   
    ///
  297    341   
    /// let retry_config = RetryConfig::standard().with_max_attempts(5);
  298    342   
    /// let config = Config::builder().retry_config(retry_config).build();
  299    343   
    /// ```
  300    344   
    pub fn retry_config(mut self, retry_config: ::aws_smithy_types::retry::RetryConfig) -> Self {
  301    345   
        self.set_retry_config(Some(retry_config));
  302    346   
        self
  303    347   
    }
  304    348   
  305    349   
    /// Set the retry_config for the builder
  306    350   
    ///
  307    351   
    /// # Examples
  308    352   
    /// ```no_run
  309    353   
    /// use dynamo::config::{Builder, Config};
  310    354   
    /// use dynamo::config::retry::RetryConfig;
  311    355   
    ///
  312    356   
    /// fn disable_retries(builder: &mut Builder) {
  313    357   
    ///     let retry_config = RetryConfig::standard().with_max_attempts(1);
  314    358   
    ///     builder.set_retry_config(Some(retry_config));
  315    359   
    /// }
  316    360   
    ///
  317    361   
    /// let mut builder = Config::builder();
  318    362   
    /// disable_retries(&mut builder);
  319    363   
    /// let config = builder.build();
  320    364   
    /// ```
         365  +
    /* ResiliencyConfigCustomization.kt:118 */
  321    366   
    pub fn set_retry_config(&mut self, retry_config: ::std::option::Option<::aws_smithy_types::retry::RetryConfig>) -> &mut Self {
  322    367   
        retry_config.map(|r| self.config.store_put(r));
  323    368   
        self
  324    369   
    }
         370  +
    /* ResiliencyConfigCustomization.kt:128 */
  325    371   
    /// Set the sleep_impl for the builder
  326    372   
    ///
  327    373   
    /// # Examples
  328    374   
    ///
  329    375   
    /// ```no_run
  330    376   
    /// use dynamo::config::{AsyncSleep, Config, SharedAsyncSleep, Sleep};
  331    377   
    ///
  332    378   
    /// #[derive(Debug)]
  333    379   
    /// pub struct ForeverSleep;
  334    380   
    ///
  335    381   
    /// impl AsyncSleep for ForeverSleep {
  336    382   
    ///     fn sleep(&self, duration: std::time::Duration) -> Sleep {
  337    383   
    ///         Sleep::new(std::future::pending())
  338    384   
    ///     }
  339    385   
    /// }
  340    386   
    ///
  341    387   
    /// let sleep_impl = SharedAsyncSleep::new(ForeverSleep);
  342    388   
    /// let config = Config::builder().sleep_impl(sleep_impl).build();
  343    389   
    /// ```
  344    390   
    pub fn sleep_impl(mut self, sleep_impl: impl crate::config::AsyncSleep + 'static) -> Self {
  345    391   
        self.set_sleep_impl(Some(::aws_smithy_runtime_api::shared::IntoShared::into_shared(sleep_impl)));
  346    392   
        self
  347    393   
    }
  348    394   
  349    395   
    /// Set the sleep_impl for the builder
  350    396   
    ///
  351    397   
    /// # Examples
  352    398   
    ///
  353    399   
    /// ```no_run
  354    400   
    /// use dynamo::config::{AsyncSleep, Builder, Config, SharedAsyncSleep, Sleep};
  355    401   
    ///
  356    402   
    /// #[derive(Debug)]
  357    403   
    /// pub struct ForeverSleep;
  358    404   
    ///
  359    405   
    /// impl AsyncSleep for ForeverSleep {
  360    406   
    ///     fn sleep(&self, duration: std::time::Duration) -> Sleep {
  361    407   
    ///         Sleep::new(std::future::pending())
  362    408   
    ///     }
  363    409   
    /// }
  364    410   
    ///
  365    411   
    /// fn set_never_ending_sleep_impl(builder: &mut Builder) {
  366    412   
    ///     let sleep_impl = SharedAsyncSleep::new(ForeverSleep);
  367    413   
    ///     builder.set_sleep_impl(Some(sleep_impl));
  368    414   
    /// }
  369    415   
    ///
  370    416   
    /// let mut builder = Config::builder();
  371    417   
    /// set_never_ending_sleep_impl(&mut builder);
  372    418   
    /// let config = builder.build();
  373    419   
    /// ```
         420  +
    /* ResiliencyConfigCustomization.kt:184 */
  374    421   
    pub fn set_sleep_impl(&mut self, sleep_impl: ::std::option::Option<crate::config::SharedAsyncSleep>) -> &mut Self {
  375    422   
        self.runtime_components.set_sleep_impl(sleep_impl);
  376    423   
        self
  377    424   
    }
         425  +
    /* ResiliencyConfigCustomization.kt:194 */
  378    426   
    /// Set the timeout_config for the builder
  379    427   
    ///
  380    428   
    /// # Examples
  381    429   
    ///
  382    430   
    /// ```no_run
  383    431   
    /// # use std::time::Duration;
  384    432   
    /// use dynamo::config::Config;
  385    433   
    /// use dynamo::config::timeout::TimeoutConfig;
  386    434   
    ///
  387    435   
    /// let timeout_config = TimeoutConfig::builder()
  388    436   
    ///     .operation_attempt_timeout(Duration::from_secs(1))
  389    437   
    ///     .build();
  390    438   
    /// let config = Config::builder().timeout_config(timeout_config).build();
  391    439   
    /// ```
  392    440   
    pub fn timeout_config(mut self, timeout_config: ::aws_smithy_types::timeout::TimeoutConfig) -> Self {
  393    441   
        self.set_timeout_config(Some(timeout_config));
  394    442   
        self
  395    443   
    }
  396    444   
  397    445   
    /// Set the timeout_config for the builder.
  398    446   
    ///
  399    447   
    /// Setting this to `None` has no effect if another source of configuration has set timeouts. If you
  400    448   
    /// are attempting to disable timeouts, use [`TimeoutConfig::disabled`](::aws_smithy_types::timeout::TimeoutConfig::disabled)
  401    449   
    ///
  402    450   
    ///
  403    451   
    /// # Examples
  404    452   
    ///
  405    453   
    /// ```no_run
  406    454   
    /// # use std::time::Duration;
  407    455   
    /// use dynamo::config::{Builder, Config};
  408    456   
    /// use dynamo::config::timeout::TimeoutConfig;
  409    457   
    ///
  410    458   
    /// fn set_request_timeout(builder: &mut Builder) {
  411    459   
    ///     let timeout_config = TimeoutConfig::builder()
  412    460   
    ///         .operation_attempt_timeout(Duration::from_secs(1))
  413    461   
    ///         .build();
  414    462   
    ///     builder.set_timeout_config(Some(timeout_config));
  415    463   
    /// }
  416    464   
    ///
  417    465   
    /// let mut builder = Config::builder();
  418    466   
    /// set_request_timeout(&mut builder);
  419    467   
    /// let config = builder.build();
  420    468   
    /// ```
         469  +
    /* ResiliencyConfigCustomization.kt:248 */
  421    470   
    pub fn set_timeout_config(&mut self, timeout_config: ::std::option::Option<::aws_smithy_types::timeout::TimeoutConfig>) -> &mut Self {
  422    471   
        // passing None has no impact.
  423    472   
        let Some(mut timeout_config) = timeout_config else { return self };
  424    473   
  425    474   
        if let Some(base) = self.config.load::<::aws_smithy_types::timeout::TimeoutConfig>() {
  426    475   
            timeout_config.take_defaults_from(base);
  427    476   
        }
  428    477   
        self.config.store_put(timeout_config);
  429    478   
        self
  430    479   
    }
         480  +
    /* ResiliencyConfigCustomization.kt:266 */
  431    481   
    /// Set the partition for retry-related state. When clients share a retry partition, they will
  432    482   
    /// also share things like token buckets and client rate limiters. By default, all clients
  433    483   
    /// for the same service will share a partition.
  434    484   
    pub fn retry_partition(mut self, retry_partition: ::aws_smithy_runtime::client::retries::RetryPartition) -> Self {
  435    485   
        self.set_retry_partition(Some(retry_partition));
  436    486   
        self
  437    487   
    }
         488  +
    /* ResiliencyConfigCustomization.kt:279 */
  438    489   
    /// Set the partition for retry-related state. When clients share a retry partition, they will
  439    490   
    /// also share things like token buckets and client rate limiters. By default, all clients
  440    491   
    /// for the same service will share a partition.
  441    492   
    pub fn set_retry_partition(
  442    493   
        &mut self,
  443    494   
        retry_partition: ::std::option::Option<::aws_smithy_runtime::client::retries::RetryPartition>,
  444    495   
    ) -> &mut Self {
  445    496   
        retry_partition.map(|r| self.config.store_put(r));
  446    497   
        self
  447    498   
    }
         499  +
    /* IdentityCacheDecorator.kt:77 */
  448    500   
    /// Set the identity cache for auth.
  449    501   
    ///
  450    502   
    /// The identity cache defaults to a lazy caching implementation that will resolve
  451    503   
    /// an identity when it is requested, and place it in the cache thereafter. Subsequent
  452    504   
    /// requests will take the value from the cache while it is still valid. Once it expires,
  453    505   
    /// the next request will result in refreshing the identity.
  454    506   
    ///
  455    507   
    /// This configuration allows you to disable or change the default caching mechanism.
  456    508   
    /// To use a custom caching mechanism, implement the [`ResolveCachedIdentity`](crate::config::ResolveCachedIdentity)
  457    509   
    /// trait and pass that implementation into this function.
@@ -509,561 +568,621 @@
  529    581   
    ///     )
  530    582   
    ///     // ...
  531    583   
    ///     .build();
  532    584   
    /// let client = dynamo::Client::from_conf(config);
  533    585   
    /// ```
  534    586   
  535    587   
    pub fn set_identity_cache(&mut self, identity_cache: impl crate::config::ResolveCachedIdentity + 'static) -> &mut Self {
  536    588   
        self.runtime_components.set_identity_cache(::std::option::Option::Some(identity_cache));
  537    589   
        self
  538    590   
    }
         591  +
    /* InterceptorConfigCustomization.kt:41 */
  539    592   
    /// Add an [interceptor](crate::config::Intercept) that runs at specific stages of the request execution pipeline.
  540    593   
    ///
  541    594   
    /// Interceptors targeted at a certain stage are executed according to the pre-defined priority.
  542    595   
    /// The SDK provides a default set of interceptors. An interceptor configured by this method
  543    596   
    /// will run after those default interceptors.
  544    597   
    ///
  545    598   
    /// # Examples
  546    599   
    /// ```no_run
  547    600   
    /// # #[cfg(test)]
  548    601   
    /// # mod tests {
@@ -615,668 +686,742 @@
  635    688   
    pub fn push_interceptor(&mut self, interceptor: crate::config::SharedInterceptor) -> &mut Self {
  636    689   
        self.runtime_components.push_interceptor(interceptor);
  637    690   
        self
  638    691   
    }
  639    692   
  640    693   
    /// Set [`SharedInterceptor`](crate::config::SharedInterceptor)s for the builder.
  641    694   
    pub fn set_interceptors(&mut self, interceptors: impl IntoIterator<Item = crate::config::SharedInterceptor>) -> &mut Self {
  642    695   
        self.runtime_components.set_interceptors(interceptors.into_iter());
  643    696   
        self
  644    697   
    }
         698  +
    /* TimeSourceCustomization.kt:47 */
  645    699   
    /// Sets the time source used for this service
  646    700   
    pub fn time_source(mut self, time_source: impl ::aws_smithy_async::time::TimeSource + 'static) -> Self {
  647    701   
        self.set_time_source(::std::option::Option::Some(::aws_smithy_runtime_api::shared::IntoShared::into_shared(
  648    702   
            time_source,
  649    703   
        )));
  650    704   
        self
  651    705   
    }
         706  +
    /* TimeSourceCustomization.kt:61 */
  652    707   
    /// Sets the time source used for this service
  653    708   
    pub fn set_time_source(&mut self, time_source: ::std::option::Option<::aws_smithy_async::time::SharedTimeSource>) -> &mut Self {
  654    709   
        self.runtime_components.set_time_source(time_source);
  655    710   
        self
  656    711   
    }
         712  +
    /* RetryClassifierConfigCustomization.kt:50 */
  657    713   
    /// Add type implementing [`ClassifyRetry`](::aws_smithy_runtime_api::client::retries::classifiers::ClassifyRetry) that will be used by the
  658    714   
    /// [`RetryStrategy`](::aws_smithy_runtime_api::client::retries::RetryStrategy) to determine what responses should be retried.
  659    715   
    ///
  660    716   
    /// A retry classifier configured by this method will run according to its [priority](::aws_smithy_runtime_api::client::retries::classifiers::RetryClassifierPriority).
  661    717   
    ///
  662    718   
    /// # Examples
  663    719   
    /// ```no_run
  664    720   
    /// # #[cfg(test)]
  665    721   
    /// # mod tests {
  666    722   
    /// # #[test]
@@ -821,877 +880,937 @@
  841    897   
  842    898   
    /// Set [`SharedRetryClassifier`](::aws_smithy_runtime_api::client::retries::classifiers::SharedRetryClassifier)s for the builder, replacing any that
  843    899   
    /// were previously set.
  844    900   
    pub fn set_retry_classifiers(
  845    901   
        &mut self,
  846    902   
        retry_classifiers: impl IntoIterator<Item = ::aws_smithy_runtime_api::client::retries::classifiers::SharedRetryClassifier>,
  847    903   
    ) -> &mut Self {
  848    904   
        self.runtime_components.set_retry_classifiers(retry_classifiers.into_iter());
  849    905   
        self
  850    906   
    }
         907  +
    /* ServiceConfigGenerator.kt:375 */
  851    908   
    /// Sets the [`behavior major version`](crate::config::BehaviorVersion).
  852    909   
    ///
  853    910   
    /// Over time, new best-practice behaviors are introduced. However, these behaviors might not be backwards
  854    911   
    /// compatible. For example, a change which introduces new default timeouts or a new retry-mode for
  855    912   
    /// all operations might be the ideal behavior but could break existing applications.
  856    913   
    ///
  857    914   
    /// # Examples
  858    915   
    ///
  859    916   
    /// Set the behavior major version to `latest`. This is equivalent to enabling the `behavior-version-latest` cargo feature.
  860    917   
    /// ```no_run
@@ -898,955 +1155,1256 @@
  918    975   
        self
  919    976   
    }
  920    977   
  921    978   
    /// Convenience method to set the latest behavior major version
  922    979   
    ///
  923    980   
    /// This is equivalent to enabling the `behavior-version-latest` Cargo feature
  924    981   
    pub fn behavior_version_latest(mut self) -> Self {
  925    982   
        self.set_behavior_version(Some(crate::config::BehaviorVersion::latest()));
  926    983   
        self
  927    984   
    }
  928         -
    /// Adds a runtime plugin to the config.
         985  +
    /// /* ServiceConfigGenerator.kt:509 */Adds a runtime plugin to the config.
         986  +
    /* ServiceConfigGenerator.kt:513 */
  929    987   
    pub fn runtime_plugin(mut self, plugin: impl crate::config::RuntimePlugin + 'static) -> Self {
  930    988   
        self.push_runtime_plugin(crate::config::SharedRuntimePlugin::new(plugin));
  931    989   
        self
  932    990   
    }
  933         -
    /// Adds a runtime plugin to the config.
         991  +
    /// /* ServiceConfigGenerator.kt:522 */Adds a runtime plugin to the config.
         992  +
    /* ServiceConfigGenerator.kt:526 */
  934    993   
    pub fn push_runtime_plugin(&mut self, plugin: crate::config::SharedRuntimePlugin) -> &mut Self {
  935    994   
        self.runtime_plugins.push(plugin);
  936    995   
        self
  937    996   
    }
         997  +
    /* RustType.kt:516 */
  938    998   
    #[cfg(any(feature = "test-util", test))]
         999  +
    /* RustType.kt:516 */
  939   1000   
    #[allow(unused_mut)]
  940         -
    /// Apply test defaults to the builder
        1001  +
    /// /* ServiceConfigGenerator.kt:541 */Apply test defaults to the builder
        1002  +
    /* ServiceConfigGenerator.kt:542 */
  941   1003   
    pub fn apply_test_defaults(&mut self) -> &mut Self {
        1004  +
        /* IdempotencyTokenProviderCustomization.kt:57 */
  942   1005   
        self.set_idempotency_token_provider(Some("00000000-0000-4000-8000-000000000000".into()));
        1006  +
        /* TimeSourceCustomization.kt:88 */
  943   1007   
        self.set_time_source(::std::option::Option::Some(::aws_smithy_async::time::SharedTimeSource::new(
  944   1008   
            ::aws_smithy_async::time::StaticTimeSource::new(::std::time::UNIX_EPOCH + ::std::time::Duration::from_secs(1234567890)),
  945   1009   
        )));
        1010  +
        /* ServiceConfigGenerator.kt:544 */
  946   1011   
        self.behavior_version = ::std::option::Option::Some(crate::config::BehaviorVersion::latest());
        1012  +
        /* ServiceConfigGenerator.kt:545 */
  947   1013   
        self
        1014  +
        /* ServiceConfigGenerator.kt:542 */
  948   1015   
    }
        1016  +
    /* RustType.kt:516 */
  949   1017   
    #[cfg(any(feature = "test-util", test))]
        1018  +
    /* RustType.kt:516 */
  950   1019   
    #[allow(unused_mut)]
  951         -
    /// Apply test defaults to the builder
        1020  +
    /// /* ServiceConfigGenerator.kt:550 */Apply test defaults to the builder
        1021  +
    /* ServiceConfigGenerator.kt:551 */
  952   1022   
    pub fn with_test_defaults(mut self) -> Self {
        1023  +
        /* ServiceConfigGenerator.kt:552 */
  953   1024   
        self.apply_test_defaults();
  954   1025   
        self
        1026  +
        /* ServiceConfigGenerator.kt:551 */
  955   1027   
    }
  956         -
    /// Builds a [`Config`].
        1028  +
    /// /* ServiceConfigGenerator.kt:555 */Builds a [`Config`].
        1029  +
    /* ServiceConfigGenerator.kt:556 */
  957   1030   
    #[allow(unused_mut)]
        1031  +
    /* ServiceConfigGenerator.kt:557 */
  958   1032   
    pub fn build(mut self) -> Config {
        1033  +
        /* ServiceConfigGenerator.kt:558 */
  959   1034   
        let mut layer = self.config;
        1035  +
        /* TimeSourceCustomization.kt:77 */
  960   1036   
        if self.runtime_components.time_source().is_none() {
  961   1037   
            self.runtime_components
  962   1038   
                .set_time_source(::std::option::Option::Some(::std::default::Default::default()));
  963   1039   
        }
        1040  +
        /* ServiceConfigGenerator.kt:567 */
  964   1041   
        Config {
  965         -
            config: crate::config::Layer::from(layer.clone()).with_name("dynamo::config::Config").freeze(),
        1042  +
            /* ServiceConfigGenerator.kt:568 */ config: crate::config::Layer::from(layer.clone()).with_name("dynamo::config::Config").freeze(),
  966   1043   
            cloneable: layer,
  967   1044   
            runtime_components: self.runtime_components,
  968   1045   
            runtime_plugins: self.runtime_plugins,
  969   1046   
            behavior_version: self.behavior_version,
        1047  +
            /* ServiceConfigGenerator.kt:567 */
  970   1048   
        }
        1049  +
        /* ServiceConfigGenerator.kt:557 */
  971   1050   
    }
        1051  +
    /* ServiceConfigGenerator.kt:492 */
  972   1052   
}
        1053  +
/* ServiceRuntimePluginGenerator.kt:116 */
  973   1054   
#[derive(::std::fmt::Debug)]
  974   1055   
pub(crate) struct ServiceRuntimePlugin {
  975   1056   
    config: ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer>,
  976   1057   
    runtime_components: ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
  977   1058   
}
  978   1059   
  979   1060   
impl ServiceRuntimePlugin {
  980   1061   
    pub fn new(_service_config: crate::config::Config) -> Self {
  981   1062   
        let config = {
  982   1063   
            let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DynamoDB_20120810");
  983   1064   
            cfg.store_put(crate::idempotency_token::default_provider());
  984   1065   
            cfg.store_put(::aws_smithy_runtime::client::orchestrator::AuthSchemeAndEndpointOrchestrationV2);
  985   1066   
            ::std::option::Option::Some(cfg.freeze())
  986   1067   
        };
  987   1068   
        let mut runtime_components = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ServiceRuntimePlugin");
  988   1069   
        runtime_components.push_interceptor(::aws_smithy_runtime::client::http::connection_poisoning::ConnectionPoisoningInterceptor::new());
  989   1070   
        runtime_components.push_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::HttpStatusCodeClassifier::default());
  990   1071   
        runtime_components.push_interceptor(crate::sdk_feature_tracker::retry_mode::RetryModeFeatureTrackerInterceptor::new());
  991   1072   
        Self { config, runtime_components }
  992   1073   
    }
  993   1074   
}
  994   1075   
  995   1076   
impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ServiceRuntimePlugin {
  996   1077   
    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
  997   1078   
        self.config.clone()
  998   1079   
    }
  999   1080   
 1000   1081   
    fn order(&self) -> ::aws_smithy_runtime_api::client::runtime_plugin::Order {
 1001   1082   
        ::aws_smithy_runtime_api::client::runtime_plugin::Order::Defaults
 1002   1083   
    }
 1003   1084   
 1004   1085   
    fn runtime_components(
 1005   1086   
        &self,
 1006   1087   
        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1007   1088   
    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
 1008   1089   
        ::std::borrow::Cow::Borrowed(&self.runtime_components)
 1009   1090   
    }
 1010   1091   
}
 1011   1092   
 1012   1093   
/// Cross-operation shared-state singletons
 1013   1094   
        1095  +
/* ConfigOverrideRuntimePluginGenerator.kt:42 */
 1014   1096   
/// A plugin that enables configuration for a single operation invocation
 1015   1097   
///
 1016   1098   
/// The `config` method will return a `FrozenLayer` by storing values from `config_override`.
 1017   1099   
/// In the case of default values requested, they will be obtained from `client_config`.
 1018   1100   
#[derive(Debug)]
 1019   1101   
pub(crate) struct ConfigOverrideRuntimePlugin {
 1020   1102   
    pub(crate) config: ::aws_smithy_types::config_bag::FrozenLayer,
 1021   1103   
    pub(crate) components: ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1022   1104   
}
 1023   1105   
 1024   1106   
impl ConfigOverrideRuntimePlugin {
 1025   1107   
    #[allow(dead_code)] // unused when a service does not provide any operations
 1026   1108   
    pub(crate) fn new(
 1027   1109   
        config_override: Builder,
 1028   1110   
        initial_config: ::aws_smithy_types::config_bag::FrozenLayer,
 1029   1111   
        initial_components: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1030   1112   
    ) -> Self {
 1031   1113   
        let mut layer = config_override.config;
 1032   1114   
        let mut components = config_override.runtime_components;
 1033   1115   
        #[allow(unused_mut)]
 1034   1116   
        let mut resolver =
 1035   1117   
            ::aws_smithy_runtime::client::config_override::Resolver::overrid(initial_config, initial_components, &mut layer, &mut components);
 1036   1118   
 1037   1119   
        let _ = resolver;
 1038   1120   
        Self {
 1039   1121   
            config: ::aws_smithy_types::config_bag::Layer::from(layer)
 1040   1122   
                .with_name("dynamo::config::ConfigOverrideRuntimePlugin")
 1041   1123   
                .freeze(),
 1042   1124   
            components,
 1043   1125   
        }
 1044   1126   
    }
 1045   1127   
}
 1046   1128   
 1047   1129   
impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ConfigOverrideRuntimePlugin {
 1048   1130   
    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
 1049   1131   
        Some(self.config.clone())
 1050   1132   
    }
 1051   1133   
 1052   1134   
    fn runtime_components(
 1053   1135   
        &self,
 1054   1136   
        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1055   1137   
    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
 1056   1138   
        ::std::borrow::Cow::Borrowed(&self.components)
 1057   1139   
    }
 1058   1140   
}
 1059   1141   
        1142  +
/* ClientRuntimeTypesReExportGenerator.kt:24 */
 1060   1143   
pub use ::aws_smithy_runtime::client::identity::IdentityCache;
 1061   1144   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1062   1145   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1063   1146   
        1147  +
/* ResiliencyConfigCustomization.kt:318 */
 1064   1148   
pub use ::aws_smithy_async::rt::sleep::Sleep;
 1065   1149   
        1150  +
/* FluentClientGenerator.kt:261 */
 1066   1151   
pub(crate) fn base_client_runtime_plugins(mut config: crate::Config) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
 1067   1152   
    let mut configured_plugins = ::std::vec::Vec::new();
 1068   1153   
    ::std::mem::swap(&mut config.runtime_plugins, &mut configured_plugins);
 1069   1154   
    #[cfg(feature = "behavior-version-latest")]
 1070   1155   
    {
 1071   1156   
        if config.behavior_version.is_none() {
 1072   1157   
            config.behavior_version = Some(::aws_smithy_runtime_api::client::behavior_version::BehaviorVersion::latest());
 1073   1158   
        }
 1074   1159   
    }
 1075   1160   
 1076   1161   
    let default_retry_partition = "dynamodb";
 1077   1162   
 1078   1163   
    let scope = "dynamo";
 1079   1164   
 1080   1165   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1081   1166   
                        // defaults
 1082   1167   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1083   1168   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1084   1169   
                                .with_retry_partition_name(default_retry_partition)
 1085   1170   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
 1086   1171   
                        ))
 1087   1172   
                        // user config
 1088   1173   
                        .with_client_plugin(
 1089   1174   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1090   1175   
                                .with_config(config.config.clone())
 1091   1176   
                                .with_runtime_components(config.runtime_components.clone())
 1092   1177   
                        )
 1093   1178   
                        // codegen config
 1094   1179   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1095   1180   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())
 1096   1181   
                        .with_client_plugin(
 1097   1182   
                            ::aws_smithy_runtime::client::metrics::MetricsRuntimePlugin::builder()
 1098   1183   
                                .with_scope(scope)
 1099   1184   
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1100   1185   
                                .build()
 1101   1186   
                                .expect("All required fields have been set")
 1102   1187   
                        );
 1103   1188   
 1104   1189   
    for plugin in configured_plugins {
 1105   1190   
        plugins = plugins.with_client_plugin(plugin);
 1106   1191   
    }
 1107   1192   
    plugins
 1108   1193   
}
 1109   1194   
        1195  +
/* ClientReExports.kt:17 */
 1110   1196   
pub use ::aws_smithy_types::config_bag::FrozenLayer;
 1111   1197   
        1198  +
/* ClientReExports.kt:17 */
 1112   1199   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder;
 1113   1200   
        1201  +
/* ClientReExports.kt:17 */
 1114   1202   
pub use ::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin;
 1115   1203   
        1204  +
/* ClientReExports.kt:17 */
 1116   1205   
pub use ::aws_smithy_runtime_api::client::behavior_version::BehaviorVersion;
 1117   1206   
        1207  +
/* ClientReExports.kt:17 */
 1118   1208   
pub use ::aws_smithy_runtime_api::client::stalled_stream_protection::StalledStreamProtectionConfig;
 1119   1209   
        1210  +
/* ClientReExports.kt:17 */
 1120   1211   
pub use ::aws_smithy_runtime_api::client::http::SharedHttpClient;
 1121   1212   
        1213  +
/* ClientReExports.kt:17 */
 1122   1214   
pub use ::aws_smithy_async::rt::sleep::SharedAsyncSleep;
 1123   1215   
        1216  +
/* ClientReExports.kt:17 */
 1124   1217   
pub use ::aws_smithy_runtime_api::client::identity::SharedIdentityCache;
 1125   1218   
        1219  +
/* ClientReExports.kt:17 */
 1126   1220   
pub use ::aws_smithy_runtime_api::client::interceptors::SharedInterceptor;
 1127   1221   
        1222  +
/* ClientReExports.kt:17 */
 1128   1223   
pub use ::aws_smithy_runtime_api::client::http::HttpClient;
 1129   1224   
        1225  +
/* ClientReExports.kt:17 */
 1130   1226   
pub use ::aws_smithy_runtime_api::shared::IntoShared;
 1131   1227   
        1228  +
/* ClientReExports.kt:17 */
 1132   1229   
pub use ::aws_smithy_async::rt::sleep::AsyncSleep;
 1133   1230   
        1231  +
/* ClientReExports.kt:17 */
 1134   1232   
pub use ::aws_smithy_runtime_api::client::identity::ResolveCachedIdentity;
 1135   1233   
        1234  +
/* ClientReExports.kt:17 */
 1136   1235   
pub use ::aws_smithy_runtime_api::client::interceptors::Intercept;
 1137   1236   
        1237  +
/* ClientReExports.kt:17 */
 1138   1238   
pub use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
 1139   1239   
        1240  +
/* ClientReExports.kt:17 */
 1140   1241   
pub use ::aws_smithy_types::config_bag::Layer;
 1141   1242   
 1142         -
/// Types needed to configure endpoint resolution.
        1243  +
/// /* ClientRustModule.kt:121 */Types needed to configure endpoint resolution.
 1143   1244   
pub mod endpoint;
 1144   1245   
 1145         -
/// HTTP request and response types.
        1246  +
/// /* ClientRustModule.kt:121 */HTTP request and response types.
 1146   1247   
pub mod http;
 1147   1248   
 1148         -
/// Types needed to implement [`Intercept`](crate::config::Intercept).
        1249  +
/// /* ClientRustModule.kt:121 */Types needed to implement [`Intercept`](crate::config::Intercept).
 1149   1250   
pub mod interceptors;
 1150   1251   
 1151         -
/// Retry configuration.
        1252  +
/// /* ClientRustModule.kt:121 */Retry configuration.
 1152   1253   
pub mod retry;
 1153   1254   
 1154         -
/// Timeout configuration.
        1255  +
/// /* ClientRustModule.kt:121 */Timeout configuration.
 1155   1256   
pub mod timeout;

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/config/endpoint.rs

@@ -1,1 +86,107 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:38 */
    2      3   
pub use ::aws_smithy_runtime_api::client::endpoint::EndpointFuture;
    3      4   
pub use ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
    4      5   
pub use ::aws_smithy_types::endpoint::Endpoint;
    5      6   
           7  +
/* RustType.kt:516 */
    6      8   
#[cfg(test)]
    7         -
mod test {}
           9  +
/* EndpointsDecorator.kt:175 */
          10  +
mod test {
    8     11   
          12  +
    /* EndpointsDecorator.kt:175 */
          13  +
}
          14  +
          15  +
/* EndpointResolverGenerator.kt:416 */
    9     16   
/// Endpoint resolver trait specific to Amazon DynamoDB
   10     17   
pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
   11     18   
    /// Resolve an endpoint with the given parameters
   12     19   
    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
   13     20   
   14     21   
    /// Convert this service-specific resolver into a `SharedEndpointResolver`
   15     22   
    ///
   16     23   
    /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
   17     24   
    fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
   18     25   
    where
   19     26   
        Self: Sized + 'static,
   20     27   
    {
   21     28   
        ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
   22     29   
    }
   23     30   
}
   24     31   
   25     32   
#[derive(Debug)]
   26     33   
struct DowncastParams<T>(T);
   27     34   
impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
   28     35   
where
   29     36   
    T: ResolveEndpoint,
   30     37   
{
   31     38   
    fn resolve_endpoint<'a>(
   32     39   
        &'a self,
   33     40   
        params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
   34     41   
    ) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
   35     42   
        let ep = match params.get::<crate::config::endpoint::Params>() {
   36     43   
            Some(params) => self.0.resolve_endpoint(params),
   37     44   
            None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
   38     45   
        };
   39     46   
        ep
   40     47   
    }
   41     48   
}
   42     49   
          50  +
/* RustType.kt:516 */
   43     51   
#[non_exhaustive]
          52  +
/* RustType.kt:516 */
   44     53   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
   45         -
/// Configuration parameters for resolving the correct endpoint
   46         -
pub struct Params {}
          54  +
/// /* EndpointParamsGenerator.kt:178 */Configuration parameters for resolving the correct endpoint
          55  +
/* EndpointParamsGenerator.kt:179 */
          56  +
pub struct Params {/* EndpointParamsGenerator.kt:179 */}
          57  +
/* EndpointParamsGenerator.kt:188 */
   47     58   
impl Params {
          59  +
    /* EndpointParamsGenerator.kt:189 */
   48     60   
    /// Create a builder for [`Params`]
   49     61   
    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
   50     62   
        crate::config::endpoint::ParamsBuilder::default()
   51     63   
    }
          64  +
    /* EndpointParamsGenerator.kt:188 */
   52     65   
}
   53     66   
   54         -
/// Builder for [`Params`]
          67  +
/// /* EndpointParamsGenerator.kt:234 */Builder for [`Params`]
          68  +
/* RustType.kt:516 */
   55     69   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   56         -
pub struct ParamsBuilder {}
          70  +
/* EndpointParamsGenerator.kt:238 */
          71  +
pub struct ParamsBuilder {/* EndpointParamsGenerator.kt:238 */}
          72  +
/* EndpointParamsGenerator.kt:246 */
   57     73   
impl ParamsBuilder {
   58         -
    /// Consume this builder, creating [`Params`].
          74  +
    /// /* EndpointParamsGenerator.kt:247 */Consume this builder, creating [`Params`].
          75  +
    /* EndpointParamsGenerator.kt:248 */
   59     76   
    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
          77  +
        /* EndpointParamsGenerator.kt:272 */
   60     78   
        Ok(
   61     79   
            #[allow(clippy::unnecessary_lazy_evaluations)]
   62     80   
            crate::config::endpoint::Params {},
   63     81   
        )
          82  +
        /* EndpointParamsGenerator.kt:248 */
   64     83   
    }
          84  +
    /* EndpointParamsGenerator.kt:246 */
   65     85   
}
   66     86   
          87  +
/* EndpointParamsGenerator.kt:139 */
   67     88   
/// An error that occurred during endpoint resolution
   68     89   
#[derive(Debug)]
   69     90   
pub struct InvalidParams {
   70     91   
    field: std::borrow::Cow<'static, str>,
   71     92   
}
   72     93   
   73     94   
impl InvalidParams {
   74     95   
    #[allow(dead_code)]
   75     96   
    fn missing(field: &'static str) -> Self {
   76     97   
        Self { field: field.into() }

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/config/http.rs

@@ -1,1 +3,4 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:60 */
    2      3   
pub use ::aws_smithy_runtime_api::client::orchestrator::HttpRequest;
    3      4   
pub use ::aws_smithy_runtime_api::client::orchestrator::HttpResponse;

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/config/interceptors.rs

@@ -1,1 +11,12 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:70 */
    2      3   
pub use ::aws_smithy_runtime_api::client::interceptors::context::AfterDeserializationInterceptorContextRef;
    3      4   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeDeserializationInterceptorContextMut;
    4      5   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeDeserializationInterceptorContextRef;
    5      6   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextMut;
    6      7   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef;
    7      8   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeTransmitInterceptorContextMut;
    8      9   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeTransmitInterceptorContextRef;
    9     10   
pub use ::aws_smithy_runtime_api::client::interceptors::context::FinalizerInterceptorContextMut;
   10     11   
pub use ::aws_smithy_runtime_api::client::interceptors::context::FinalizerInterceptorContextRef;
   11     12   
pub use ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext;