Client Test

Client Test

rev. 163d4d6410694aaf071424777ecbecd050925f36 (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/operation/execute_statement/_execute_statement_input.rs

@@ -17,17 +199,208 @@
   37     37   
    "com.amazonaws.dynamodb.synthetic",
   38     38   
    "ExecuteStatementInput",
   39     39   
);
   40     40   
static EXECUTESTATEMENTINPUT_MEMBER_STATEMENT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   41     41   
    ::aws_smithy_schema::ShapeId::from_static(
   42     42   
        "com.amazonaws.dynamodb.synthetic#ExecuteStatementInput$Statement",
   43     43   
        "com.amazonaws.dynamodb.synthetic",
   44     44   
        "ExecuteStatementInput",
   45     45   
    ),
   46     46   
    ::aws_smithy_schema::ShapeType::String,
   47         -
    "statement",
          47  +
    "Statement",
   48     48   
    0,
   49     49   
);
   50     50   
static EXECUTESTATEMENTINPUT_MEMBER_PARAMETERS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   51     51   
    ::aws_smithy_schema::ShapeId::from_static(
   52     52   
        "com.amazonaws.dynamodb.synthetic#ExecuteStatementInput$Parameters",
   53     53   
        "com.amazonaws.dynamodb.synthetic",
   54     54   
        "ExecuteStatementInput",
   55     55   
    ),
   56     56   
    ::aws_smithy_schema::ShapeType::List,
   57         -
    "parameters",
          57  +
    "Parameters",
   58     58   
    1,
   59     59   
);
   60     60   
static EXECUTESTATEMENTINPUT_MEMBER_CONSISTENT_READ: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   61     61   
    ::aws_smithy_schema::ShapeId::from_static(
   62     62   
        "com.amazonaws.dynamodb.synthetic#ExecuteStatementInput$ConsistentRead",
   63     63   
        "com.amazonaws.dynamodb.synthetic",
   64     64   
        "ExecuteStatementInput",
   65     65   
    ),
   66     66   
    ::aws_smithy_schema::ShapeType::Boolean,
   67         -
    "consistent_read",
          67  +
    "ConsistentRead",
   68     68   
    2,
   69     69   
);
   70     70   
static EXECUTESTATEMENTINPUT_MEMBER_NEXT_TOKEN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   71     71   
    ::aws_smithy_schema::ShapeId::from_static(
   72     72   
        "com.amazonaws.dynamodb.synthetic#ExecuteStatementInput$NextToken",
   73     73   
        "com.amazonaws.dynamodb.synthetic",
   74     74   
        "ExecuteStatementInput",
   75     75   
    ),
   76     76   
    ::aws_smithy_schema::ShapeType::String,
   77         -
    "next_token",
          77  +
    "NextToken",
   78     78   
    3,
   79     79   
);
   80     80   
static EXECUTESTATEMENTINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   81     81   
    EXECUTESTATEMENTINPUT_SCHEMA_ID,
   82     82   
    ::aws_smithy_schema::ShapeType::Structure,
   83     83   
    &[
   84     84   
        &EXECUTESTATEMENTINPUT_MEMBER_STATEMENT,
   85     85   
        &EXECUTESTATEMENTINPUT_MEMBER_PARAMETERS,
   86     86   
        &EXECUTESTATEMENTINPUT_MEMBER_CONSISTENT_READ,
   87     87   
        &EXECUTESTATEMENTINPUT_MEMBER_NEXT_TOKEN,
   88     88   
    ],
   89     89   
);
   90     90   
impl ExecuteStatementInput {
   91     91   
    /// The schema for this shape.
   92     92   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &EXECUTESTATEMENTINPUT_SCHEMA;
   93     93   
}
   94     94   
impl ::aws_smithy_schema::serde::SerializableStruct for ExecuteStatementInput {
   95     95   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   96     96   
    fn serialize_members(
   97     97   
        &self,
   98     98   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   99     99   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  100    100   
        if let Some(ref val) = self.statement {
  101    101   
            ser.write_string(&EXECUTESTATEMENTINPUT_MEMBER_STATEMENT, val)?;
  102    102   
        }
  103    103   
        if let Some(ref val) = self.parameters {
  104    104   
            ser.write_list(
  105    105   
                &EXECUTESTATEMENTINPUT_MEMBER_PARAMETERS,
  106    106   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  107    107   
                    for item in val {
  108         -
                        todo!("schema: unsupported list element type");
         108  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, item)?;
  109    109   
                    }
  110    110   
                    Ok(())
  111    111   
                },
  112    112   
            )?;
  113    113   
        }
  114    114   
        if let Some(ref val) = self.consistent_read {
  115    115   
            ser.write_boolean(&EXECUTESTATEMENTINPUT_MEMBER_CONSISTENT_READ, *val)?;
  116    116   
        }
  117    117   
        if let Some(ref val) = self.next_token {
  118    118   
            ser.write_string(&EXECUTESTATEMENTINPUT_MEMBER_NEXT_TOKEN, val)?;
  119    119   
        }
  120    120   
        Ok(())
  121    121   
    }
  122    122   
}
  123    123   
impl ExecuteStatementInput {
  124    124   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  125         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  126         -
        deserializer: &mut D,
         125  +
    pub fn deserialize(
         126  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  127    127   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  128    128   
        #[allow(unused_variables, unused_mut)]
  129    129   
        let mut builder = Self::builder();
  130    130   
        #[allow(
  131    131   
            unused_variables,
  132    132   
            unreachable_code,
  133    133   
            clippy::single_match,
  134    134   
            clippy::match_single_binding,
  135    135   
            clippy::diverging_sub_expression
  136    136   
        )]
  137         -
        deserializer.read_struct(&EXECUTESTATEMENTINPUT_SCHEMA, (), |_, member, deser| {
         137  +
        deserializer.read_struct(&EXECUTESTATEMENTINPUT_SCHEMA, &mut |member, deser| {
  138    138   
            match member.member_index() {
  139    139   
                Some(0) => {
  140    140   
                    builder.statement = Some(deser.read_string(member)?);
  141    141   
                }
  142    142   
                Some(1) => {
  143    143   
                    builder.parameters = Some({
  144         -
                        let container = if let Some(cap) = deser.container_size() {
  145         -
                            Vec::with_capacity(cap)
  146         -
                        } else {
  147         -
                            Vec::new()
  148         -
                        };
  149         -
                        deser.read_list(member, container, |mut list, deser| {
  150         -
                            list.push(todo!("deserialize nested aggregate"));
  151         -
                            Ok(list)
  152         -
                        })?
         144  +
                        let mut container = Vec::new();
         145  +
                        deser.read_list(member, &mut |deser| {
         146  +
                            container.push(crate::types::AttributeValue::deserialize(deser)?);
         147  +
                            Ok(())
         148  +
                        })?;
         149  +
                        container
  153    150   
                    });
  154    151   
                }
  155    152   
                Some(2) => {
  156    153   
                    builder.consistent_read = Some(deser.read_boolean(member)?);
  157    154   
                }
  158    155   
                Some(3) => {
  159    156   
                    builder.next_token = Some(deser.read_string(member)?);
  160    157   
                }
  161    158   
                _ => {}
  162    159   
            }
  163    160   
            Ok(())
  164    161   
        })?;
         162  +
        builder.statement = builder.statement.or(Some(String::new()));
  165    163   
        builder
  166    164   
            .build()
  167    165   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  168    166   
    }
  169    167   
}
         168  +
impl ExecuteStatementInput {
         169  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         170  +
    pub fn deserialize_with_response(
         171  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         172  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         173  +
        _status: u16,
         174  +
        _body: &[u8],
         175  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         176  +
        Self::deserialize(deserializer)
         177  +
    }
         178  +
}
  170    179   
impl ExecuteStatementInput {
  171    180   
    /// Creates a new builder-style object to manufacture [`ExecuteStatementInput`](crate::operation::execute_statement::ExecuteStatementInput).
  172    181   
    pub fn builder() -> crate::operation::execute_statement::builders::ExecuteStatementInputBuilder {
  173    182   
        crate::operation::execute_statement::builders::ExecuteStatementInputBuilder::default()
  174    183   
    }
  175    184   
}
  176    185   
  177    186   
/// A builder for [`ExecuteStatementInput`](crate::operation::execute_statement::ExecuteStatementInput).
  178    187   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  179    188   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/operation/execute_statement/_execute_statement_output.rs

@@ -5,5 +148,173 @@
   25     25   
    "com.amazonaws.dynamodb.synthetic",
   26     26   
    "ExecuteStatementOutput",
   27     27   
);
   28     28   
static EXECUTESTATEMENTOUTPUT_MEMBER_ITEMS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   29     29   
    ::aws_smithy_schema::ShapeId::from_static(
   30     30   
        "com.amazonaws.dynamodb.synthetic#ExecuteStatementOutput$Items",
   31     31   
        "com.amazonaws.dynamodb.synthetic",
   32     32   
        "ExecuteStatementOutput",
   33     33   
    ),
   34     34   
    ::aws_smithy_schema::ShapeType::List,
   35         -
    "items",
          35  +
    "Items",
   36     36   
    0,
   37     37   
);
   38     38   
static EXECUTESTATEMENTOUTPUT_MEMBER_NEXT_TOKEN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   39     39   
    ::aws_smithy_schema::ShapeId::from_static(
   40     40   
        "com.amazonaws.dynamodb.synthetic#ExecuteStatementOutput$NextToken",
   41     41   
        "com.amazonaws.dynamodb.synthetic",
   42     42   
        "ExecuteStatementOutput",
   43     43   
    ),
   44     44   
    ::aws_smithy_schema::ShapeType::String,
   45         -
    "next_token",
          45  +
    "NextToken",
   46     46   
    1,
   47     47   
);
   48     48   
static EXECUTESTATEMENTOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   49     49   
    EXECUTESTATEMENTOUTPUT_SCHEMA_ID,
   50     50   
    ::aws_smithy_schema::ShapeType::Structure,
   51     51   
    &[&EXECUTESTATEMENTOUTPUT_MEMBER_ITEMS, &EXECUTESTATEMENTOUTPUT_MEMBER_NEXT_TOKEN],
   52     52   
);
   53     53   
impl ExecuteStatementOutput {
   54     54   
    /// The schema for this shape.
   55     55   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &EXECUTESTATEMENTOUTPUT_SCHEMA;
   56     56   
}
   57     57   
impl ::aws_smithy_schema::serde::SerializableStruct for ExecuteStatementOutput {
   58     58   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   59     59   
    fn serialize_members(
   60     60   
        &self,
   61     61   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   62     62   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   63     63   
        if let Some(ref val) = self.items {
   64     64   
            ser.write_list(
   65     65   
                &EXECUTESTATEMENTOUTPUT_MEMBER_ITEMS,
   66     66   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   67     67   
                    for item in val {
   68         -
                        todo!("schema: unsupported list element type");
          68  +
                        ser.write_map(
          69  +
                            &::aws_smithy_schema::prelude::DOCUMENT,
          70  +
                            &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
          71  +
                                for (key, value) in item {
          72  +
                                    ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
          73  +
                                    ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
          74  +
                                }
          75  +
                                Ok(())
          76  +
                            },
          77  +
                        )?;
   69     78   
                    }
   70     79   
                    Ok(())
   71     80   
                },
   72     81   
            )?;
   73     82   
        }
   74     83   
        if let Some(ref val) = self.next_token {
   75     84   
            ser.write_string(&EXECUTESTATEMENTOUTPUT_MEMBER_NEXT_TOKEN, val)?;
   76     85   
        }
   77     86   
        Ok(())
   78     87   
    }
   79     88   
}
   80     89   
impl ExecuteStatementOutput {
   81     90   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   82         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   83         -
        deserializer: &mut D,
          91  +
    pub fn deserialize(
          92  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   84     93   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   85     94   
        #[allow(unused_variables, unused_mut)]
   86     95   
        let mut builder = Self::builder();
   87     96   
        #[allow(
   88     97   
            unused_variables,
   89     98   
            unreachable_code,
   90     99   
            clippy::single_match,
   91    100   
            clippy::match_single_binding,
   92    101   
            clippy::diverging_sub_expression
   93    102   
        )]
   94         -
        deserializer.read_struct(&EXECUTESTATEMENTOUTPUT_SCHEMA, (), |_, member, deser| {
         103  +
        deserializer.read_struct(&EXECUTESTATEMENTOUTPUT_SCHEMA, &mut |member, deser| {
   95    104   
            match member.member_index() {
   96    105   
                Some(0) => {
   97    106   
                    builder.items = Some({
   98         -
                        let container = if let Some(cap) = deser.container_size() {
   99         -
                            Vec::with_capacity(cap)
  100         -
                        } else {
  101         -
                            Vec::new()
  102         -
                        };
  103         -
                        deser.read_list(member, container, |mut list, deser| {
  104         -
                            list.push(todo!("deserialize nested aggregate"));
  105         -
                            Ok(list)
  106         -
                        })?
         107  +
                        let mut container = Vec::new();
         108  +
                        deser.read_list(member, &mut |deser| {
         109  +
                            container.push({
         110  +
                                let mut map = ::std::collections::HashMap::new();
         111  +
                                deser.read_map(member, &mut |key, deser| {
         112  +
                                    let value = crate::types::AttributeValue::deserialize(deser)?;
         113  +
                                    map.insert(key, value);
         114  +
                                    Ok(())
         115  +
                                })?;
         116  +
                                map
         117  +
                            });
         118  +
                            Ok(())
         119  +
                        })?;
         120  +
                        container
  107    121   
                    });
  108    122   
                }
  109    123   
                Some(1) => {
  110    124   
                    builder.next_token = Some(deser.read_string(member)?);
  111    125   
                }
  112    126   
                _ => {}
  113    127   
            }
  114    128   
            Ok(())
  115    129   
        })?;
  116    130   
        Ok(builder.build())
  117    131   
    }
  118    132   
}
         133  +
impl ExecuteStatementOutput {
         134  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         135  +
    pub fn deserialize_with_response(
         136  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         137  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         138  +
        _status: u16,
         139  +
        _body: &[u8],
         140  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         141  +
        Self::deserialize(deserializer)
         142  +
    }
         143  +
}
  119    144   
impl ExecuteStatementOutput {
  120    145   
    /// Creates a new builder-style object to manufacture [`ExecuteStatementOutput`](crate::operation::execute_statement::ExecuteStatementOutput).
  121    146   
    pub fn builder() -> crate::operation::execute_statement::builders::ExecuteStatementOutputBuilder {
  122    147   
        crate::operation::execute_statement::builders::ExecuteStatementOutputBuilder::default()
  123    148   
    }
  124    149   
}
  125    150   
  126    151   
/// A builder for [`ExecuteStatementOutput`](crate::operation::execute_statement::ExecuteStatementOutput).
  127    152   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  128    153   
#[non_exhaustive]

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

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `ExecuteTransaction`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct ExecuteTransaction;
    6      6   
impl ExecuteTransaction {
    7      7   
    /// Creates a new `ExecuteTransaction`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::execute_transaction::ExecuteTransactionInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::execute_transaction::ExecuteTransactionOutput::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::execute_transaction::ExecuteTransactionInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::execute_transaction::ExecuteTransactionOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::execute_transaction::ExecuteTransactionError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -114,118 +238,427 @@
  134    138   
        ::std::borrow::Cow::Owned(rcb)
  135    139   
    }
  136    140   
}
  137    141   
  138    142   
#[derive(Debug)]
  139    143   
struct ExecuteTransactionResponseDeserializer;
  140    144   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ExecuteTransactionResponseDeserializer {
  141    145   
    fn deserialize_nonstreaming(
  142    146   
        &self,
  143    147   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         148  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  144    149   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  145    150   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
         151  +
        #[allow(unused_mut)]
         152  +
        let mut force_error = false;
         153  +
         154  +
        if !success && status != 200 || force_error {
  146    155   
            let headers = response.headers();
  147    156   
            let body = response.body().bytes().expect("body loaded");
  148    157   
            #[allow(unused_mut)]
  149         -
        let mut force_error = false;
         158  +
            let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(status, headers, body).map_err(|e| {
         159  +
                ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         160  +
            })?;
  150    161   
  151         -
        let parse_result = if !success && status != 200 || force_error {
  152         -
            crate::protocol_serde::shape_execute_transaction::de_execute_transaction_http_error(status, headers, body)
  153         -
        } else {
  154         -
            crate::protocol_serde::shape_execute_transaction::de_execute_transaction_http_response(status, headers, body)
         162  +
            let generic = generic_builder.build();
         163  +
            let error_code = match generic.code() {
         164  +
                ::std::option::Option::Some(code) => code,
         165  +
                ::std::option::Option::None => {
         166  +
                    return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         167  +
                        ::aws_smithy_runtime_api::box_error::BoxError::from(
         168  +
                            crate::operation::execute_transaction::ExecuteTransactionError::unhandled(generic),
         169  +
                        ),
         170  +
                    ))
         171  +
                }
         172  +
            };
         173  +
            let _error_message = generic.message().map(|msg| msg.to_owned());
         174  +
            let protocol = _cfg
         175  +
                .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         176  +
                .expect("a SharedClientProtocol is required");
         177  +
            let err = match error_code {
         178  +
                "IdempotentParameterMismatchException" => {
         179  +
                    crate::operation::execute_transaction::ExecuteTransactionError::IdempotentParameterMismatchError({
         180  +
                        let mut tmp = match protocol
         181  +
                            .deserialize_response(response, crate::types::error::IdempotentParameterMismatchError::SCHEMA, _cfg)
         182  +
                            .and_then(|mut deser| {
         183  +
                                crate::types::error::IdempotentParameterMismatchError::deserialize_with_response(
         184  +
                                    &mut *deser,
         185  +
                                    response.headers(),
         186  +
                                    response.status().into(),
         187  +
                                    body,
         188  +
                                )
         189  +
                            }) {
         190  +
                            ::std::result::Result::Ok(val) => val,
         191  +
                            ::std::result::Result::Err(e) => {
         192  +
                                return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         193  +
                                    ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         194  +
                                ))
         195  +
                            }
         196  +
                        };
         197  +
                        tmp.meta = generic;
         198  +
                        if tmp.message.is_none() {
         199  +
                            tmp.message = _error_message;
         200  +
                        }
         201  +
                        tmp
         202  +
                    })
         203  +
                }
         204  +
                "InternalServerError" => crate::operation::execute_transaction::ExecuteTransactionError::InternalServerError({
         205  +
                    let mut tmp = match protocol
         206  +
                        .deserialize_response(response, crate::types::error::InternalServerError::SCHEMA, _cfg)
         207  +
                        .and_then(|mut deser| {
         208  +
                            crate::types::error::InternalServerError::deserialize_with_response(
         209  +
                                &mut *deser,
         210  +
                                response.headers(),
         211  +
                                response.status().into(),
         212  +
                                body,
         213  +
                            )
         214  +
                        }) {
         215  +
                        ::std::result::Result::Ok(val) => val,
         216  +
                        ::std::result::Result::Err(e) => {
         217  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         218  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         219  +
                            ))
         220  +
                        }
         221  +
                    };
         222  +
                    tmp.meta = generic;
         223  +
                    if tmp.message.is_none() {
         224  +
                        tmp.message = _error_message;
         225  +
                    }
         226  +
                    tmp
         227  +
                }),
         228  +
                "ProvisionedThroughputExceededException" => {
         229  +
                    crate::operation::execute_transaction::ExecuteTransactionError::ProvisionedThroughputExceededError({
         230  +
                        let mut tmp = match protocol
         231  +
                            .deserialize_response(response, crate::types::error::ProvisionedThroughputExceededError::SCHEMA, _cfg)
         232  +
                            .and_then(|mut deser| {
         233  +
                                crate::types::error::ProvisionedThroughputExceededError::deserialize_with_response(
         234  +
                                    &mut *deser,
         235  +
                                    response.headers(),
         236  +
                                    response.status().into(),
         237  +
                                    body,
         238  +
                                )
         239  +
                            }) {
         240  +
                            ::std::result::Result::Ok(val) => val,
         241  +
                            ::std::result::Result::Err(e) => {
         242  +
                                return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         243  +
                                    ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         244  +
                                ))
         245  +
                            }
         246  +
                        };
         247  +
                        tmp.meta = generic;
         248  +
                        if tmp.message.is_none() {
         249  +
                            tmp.message = _error_message;
         250  +
                        }
         251  +
                        tmp
         252  +
                    })
         253  +
                }
         254  +
                "RequestLimitExceeded" => crate::operation::execute_transaction::ExecuteTransactionError::RequestLimitExceeded({
         255  +
                    let mut tmp = match protocol
         256  +
                        .deserialize_response(response, crate::types::error::RequestLimitExceeded::SCHEMA, _cfg)
         257  +
                        .and_then(|mut deser| {
         258  +
                            crate::types::error::RequestLimitExceeded::deserialize_with_response(
         259  +
                                &mut *deser,
         260  +
                                response.headers(),
         261  +
                                response.status().into(),
         262  +
                                body,
         263  +
                            )
         264  +
                        }) {
         265  +
                        ::std::result::Result::Ok(val) => val,
         266  +
                        ::std::result::Result::Err(e) => {
         267  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         268  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         269  +
                            ))
         270  +
                        }
         271  +
                    };
         272  +
                    tmp.meta = generic;
         273  +
                    if tmp.message.is_none() {
         274  +
                        tmp.message = _error_message;
         275  +
                    }
         276  +
                    tmp
         277  +
                }),
         278  +
                "ResourceNotFoundException" => crate::operation::execute_transaction::ExecuteTransactionError::ResourceNotFoundError({
         279  +
                    let mut tmp = match protocol
         280  +
                        .deserialize_response(response, crate::types::error::ResourceNotFoundError::SCHEMA, _cfg)
         281  +
                        .and_then(|mut deser| {
         282  +
                            crate::types::error::ResourceNotFoundError::deserialize_with_response(
         283  +
                                &mut *deser,
         284  +
                                response.headers(),
         285  +
                                response.status().into(),
         286  +
                                body,
         287  +
                            )
         288  +
                        }) {
         289  +
                        ::std::result::Result::Ok(val) => val,
         290  +
                        ::std::result::Result::Err(e) => {
         291  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         292  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         293  +
                            ))
         294  +
                        }
         295  +
                    };
         296  +
                    tmp.meta = generic;
         297  +
                    if tmp.message.is_none() {
         298  +
                        tmp.message = _error_message;
         299  +
                    }
         300  +
                    tmp
         301  +
                }),
         302  +
                "TransactionCanceledException" => crate::operation::execute_transaction::ExecuteTransactionError::TransactionCanceledError({
         303  +
                    let mut tmp = match protocol
         304  +
                        .deserialize_response(response, crate::types::error::TransactionCanceledError::SCHEMA, _cfg)
         305  +
                        .and_then(|mut deser| {
         306  +
                            crate::types::error::TransactionCanceledError::deserialize_with_response(
         307  +
                                &mut *deser,
         308  +
                                response.headers(),
         309  +
                                response.status().into(),
         310  +
                                body,
         311  +
                            )
         312  +
                        }) {
         313  +
                        ::std::result::Result::Ok(val) => val,
         314  +
                        ::std::result::Result::Err(e) => {
         315  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         316  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         317  +
                            ))
         318  +
                        }
         319  +
                    };
         320  +
                    tmp.meta = generic;
         321  +
                    if tmp.message.is_none() {
         322  +
                        tmp.message = _error_message;
         323  +
                    }
         324  +
                    tmp
         325  +
                }),
         326  +
                "TransactionInProgressException" => crate::operation::execute_transaction::ExecuteTransactionError::TransactionInProgressError({
         327  +
                    let mut tmp = match protocol
         328  +
                        .deserialize_response(response, crate::types::error::TransactionInProgressError::SCHEMA, _cfg)
         329  +
                        .and_then(|mut deser| {
         330  +
                            crate::types::error::TransactionInProgressError::deserialize_with_response(
         331  +
                                &mut *deser,
         332  +
                                response.headers(),
         333  +
                                response.status().into(),
         334  +
                                body,
         335  +
                            )
         336  +
                        }) {
         337  +
                        ::std::result::Result::Ok(val) => val,
         338  +
                        ::std::result::Result::Err(e) => {
         339  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         340  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         341  +
                            ))
         342  +
                        }
  155    343   
                    };
  156         -
        crate::protocol_serde::type_erase_result(parse_result)
         344  +
                    tmp.meta = generic;
         345  +
                    if tmp.message.is_none() {
         346  +
                        tmp.message = _error_message;
         347  +
                    }
         348  +
                    tmp
         349  +
                }),
         350  +
                _ => crate::operation::execute_transaction::ExecuteTransactionError::generic(generic),
         351  +
            };
         352  +
            ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::operation(
         353  +
                ::aws_smithy_runtime_api::client::interceptors::context::Error::erase(err),
         354  +
            ))
         355  +
        } else {
         356  +
            let protocol = _cfg
         357  +
                .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         358  +
                .expect("a SharedClientProtocol is required");
         359  +
            let mut deser = protocol
         360  +
                .deserialize_response(response, ExecuteTransaction::OUTPUT_SCHEMA, _cfg)
         361  +
                .map_err(|e| {
         362  +
                    ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         363  +
                })?;
         364  +
            let body = response.body().bytes().expect("body loaded");
         365  +
            let output = crate::operation::execute_transaction::ExecuteTransactionOutput::deserialize_with_response(
         366  +
                &mut *deser,
         367  +
                response.headers(),
         368  +
                response.status().into(),
         369  +
                body,
         370  +
            )
         371  +
            .map_err(|e| {
         372  +
                ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         373  +
            })?;
         374  +
            ::std::result::Result::Ok(::aws_smithy_runtime_api::client::interceptors::context::Output::erase(output))
         375  +
        }
  157    376   
    }
  158    377   
}
  159    378   
#[derive(Debug)]
  160    379   
struct ExecuteTransactionRequestSerializer;
  161    380   
impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ExecuteTransactionRequestSerializer {
  162    381   
    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
  163    382   
    fn serialize_input(
  164    383   
        &self,
  165    384   
        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
  166    385   
        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
  167    386   
    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
  168    387   
        let input = input
  169    388   
            .downcast::<crate::operation::execute_transaction::ExecuteTransactionInput>()
  170    389   
            .expect("correct type");
  171         -
        let _header_serialization_settings = _cfg
  172         -
            .load::<crate::serialization_settings::HeaderSerializationSettings>()
  173         -
            .cloned()
  174         -
            .unwrap_or_default();
  175         -
        let mut request_builder = {
  176         -
            #[allow(clippy::uninlined_format_args)]
  177         -
            fn uri_base(
  178         -
                _input: &crate::operation::execute_transaction::ExecuteTransactionInput,
  179         -
                output: &mut ::std::string::String,
  180         -
            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
  181         -
                use ::std::fmt::Write as _;
  182         -
                ::std::write!(output, "/").expect("formatting should succeed");
  183         -
                ::std::result::Result::Ok(())
  184         -
            }
  185         -
            #[allow(clippy::unnecessary_wraps)]
  186         -
            fn update_http_builder(
  187         -
                input: &crate::operation::execute_transaction::ExecuteTransactionInput,
  188         -
                builder: ::http_1x::request::Builder,
  189         -
            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
  190         -
                let mut uri = ::std::string::String::new();
  191         -
                uri_base(input, &mut uri)?;
  192         -
                ::std::result::Result::Ok(builder.method("POST").uri(uri))
  193         -
            }
  194         -
            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
  195         -
            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.0");
  196         -
            builder = _header_serialization_settings.set_default_header(
  197         -
                builder,
  198         -
                ::http_1x::header::HeaderName::from_static("x-amz-target"),
  199         -
                "DynamoDB_20120810.ExecuteTransaction",
  200         -
            );
  201         -
            builder
  202         -
        };
  203         -
        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_execute_transaction::ser_execute_transaction_input(&input)?);
  204         -
        if let Some(content_length) = body.content_length() {
  205         -
            let content_length = content_length.to_string();
  206         -
            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
  207         -
        }
  208         -
        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
         390  +
        let protocol = _cfg
         391  +
            .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         392  +
            .expect("a SharedClientProtocol is required");
         393  +
        let mut request = protocol
         394  +
            .serialize_request(&input, ExecuteTransaction::INPUT_SCHEMA, "", _cfg)
         395  +
            .map_err(::aws_smithy_runtime_api::box_error::BoxError::from)?;
         396  +
         397  +
        return ::std::result::Result::Ok(request);
  209    398   
    }
  210    399   
}
  211    400   
#[derive(Debug)]
  212    401   
struct ExecuteTransactionEndpointParamsInterceptor;
  213    402   
  214    403   
impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ExecuteTransactionEndpointParamsInterceptor {
  215    404   
    fn name(&self) -> &'static str {
  216    405   
        "ExecuteTransactionEndpointParamsInterceptor"
  217    406   
    }
  218    407   

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/operation/execute_transaction/_execute_transaction_input.rs

@@ -5,5 +153,162 @@
   25     25   
    "com.amazonaws.dynamodb.synthetic",
   26     26   
    "ExecuteTransactionInput",
   27     27   
);
   28     28   
static EXECUTETRANSACTIONINPUT_MEMBER_TRANSACT_STATEMENTS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   29     29   
    ::aws_smithy_schema::ShapeId::from_static(
   30     30   
        "com.amazonaws.dynamodb.synthetic#ExecuteTransactionInput$TransactStatements",
   31     31   
        "com.amazonaws.dynamodb.synthetic",
   32     32   
        "ExecuteTransactionInput",
   33     33   
    ),
   34     34   
    ::aws_smithy_schema::ShapeType::List,
   35         -
    "transact_statements",
          35  +
    "TransactStatements",
   36     36   
    0,
   37     37   
);
   38     38   
static EXECUTETRANSACTIONINPUT_MEMBER_CLIENT_REQUEST_TOKEN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   39     39   
    ::aws_smithy_schema::ShapeId::from_static(
   40     40   
        "com.amazonaws.dynamodb.synthetic#ExecuteTransactionInput$ClientRequestToken",
   41     41   
        "com.amazonaws.dynamodb.synthetic",
   42     42   
        "ExecuteTransactionInput",
   43     43   
    ),
   44     44   
    ::aws_smithy_schema::ShapeType::String,
   45         -
    "client_request_token",
          45  +
    "ClientRequestToken",
   46     46   
    1,
   47     47   
);
   48     48   
static EXECUTETRANSACTIONINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   49     49   
    EXECUTETRANSACTIONINPUT_SCHEMA_ID,
   50     50   
    ::aws_smithy_schema::ShapeType::Structure,
   51     51   
    &[
   52     52   
        &EXECUTETRANSACTIONINPUT_MEMBER_TRANSACT_STATEMENTS,
   53     53   
        &EXECUTETRANSACTIONINPUT_MEMBER_CLIENT_REQUEST_TOKEN,
   54     54   
    ],
   55     55   
);
   56     56   
impl ExecuteTransactionInput {
   57     57   
    /// The schema for this shape.
   58     58   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &EXECUTETRANSACTIONINPUT_SCHEMA;
   59     59   
}
   60     60   
impl ::aws_smithy_schema::serde::SerializableStruct for ExecuteTransactionInput {
   61     61   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   62     62   
    fn serialize_members(
   63     63   
        &self,
   64     64   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   65     65   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   66     66   
        if let Some(ref val) = self.transact_statements {
   67     67   
            ser.write_list(
   68     68   
                &EXECUTETRANSACTIONINPUT_MEMBER_TRANSACT_STATEMENTS,
   69     69   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   70     70   
                    for item in val {
   71     71   
                        ser.write_struct(crate::types::ParameterizedStatement::SCHEMA, item)?;
   72     72   
                    }
   73     73   
                    Ok(())
   74     74   
                },
   75     75   
            )?;
   76     76   
        }
   77     77   
        if let Some(ref val) = self.client_request_token {
   78     78   
            ser.write_string(&EXECUTETRANSACTIONINPUT_MEMBER_CLIENT_REQUEST_TOKEN, val)?;
   79     79   
        }
   80     80   
        Ok(())
   81     81   
    }
   82     82   
}
   83     83   
impl ExecuteTransactionInput {
   84     84   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   85         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   86         -
        deserializer: &mut D,
          85  +
    pub fn deserialize(
          86  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   87     87   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   88     88   
        #[allow(unused_variables, unused_mut)]
   89     89   
        let mut builder = Self::builder();
   90     90   
        #[allow(
   91     91   
            unused_variables,
   92     92   
            unreachable_code,
   93     93   
            clippy::single_match,
   94     94   
            clippy::match_single_binding,
   95     95   
            clippy::diverging_sub_expression
   96     96   
        )]
   97         -
        deserializer.read_struct(&EXECUTETRANSACTIONINPUT_SCHEMA, (), |_, member, deser| {
          97  +
        deserializer.read_struct(&EXECUTETRANSACTIONINPUT_SCHEMA, &mut |member, deser| {
   98     98   
            match member.member_index() {
   99     99   
                Some(0) => {
  100    100   
                    builder.transact_statements = Some({
  101         -
                        let container = if let Some(cap) = deser.container_size() {
  102         -
                            Vec::with_capacity(cap)
  103         -
                        } else {
  104         -
                            Vec::new()
  105         -
                        };
  106         -
                        deser.read_list(member, container, |mut list, deser| {
  107         -
                            list.push(crate::types::ParameterizedStatement::deserialize(deser)?);
  108         -
                            Ok(list)
  109         -
                        })?
         101  +
                        let mut container = Vec::new();
         102  +
                        deser.read_list(member, &mut |deser| {
         103  +
                            container.push(crate::types::ParameterizedStatement::deserialize(deser)?);
         104  +
                            Ok(())
         105  +
                        })?;
         106  +
                        container
  110    107   
                    });
  111    108   
                }
  112    109   
                Some(1) => {
  113    110   
                    builder.client_request_token = Some(deser.read_string(member)?);
  114    111   
                }
  115    112   
                _ => {}
  116    113   
            }
  117    114   
            Ok(())
  118    115   
        })?;
         116  +
        builder.transact_statements = builder.transact_statements.or(Some(Vec::new()));
  119    117   
        builder
  120    118   
            .build()
  121    119   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  122    120   
    }
  123    121   
}
         122  +
impl ExecuteTransactionInput {
         123  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         124  +
    pub fn deserialize_with_response(
         125  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         126  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         127  +
        _status: u16,
         128  +
        _body: &[u8],
         129  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         130  +
        Self::deserialize(deserializer)
         131  +
    }
         132  +
}
  124    133   
impl ExecuteTransactionInput {
  125    134   
    /// Creates a new builder-style object to manufacture [`ExecuteTransactionInput`](crate::operation::execute_transaction::ExecuteTransactionInput).
  126    135   
    pub fn builder() -> crate::operation::execute_transaction::builders::ExecuteTransactionInputBuilder {
  127    136   
        crate::operation::execute_transaction::builders::ExecuteTransactionInputBuilder::default()
  128    137   
    }
  129    138   
}
  130    139   
  131    140   
/// A builder for [`ExecuteTransactionInput`](crate::operation::execute_transaction::ExecuteTransactionInput).
  132    141   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  133    142   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/operation/execute_transaction/_execute_transaction_output.rs

@@ -1,1 +126,134 @@
   19     19   
    "com.amazonaws.dynamodb.synthetic",
   20     20   
    "ExecuteTransactionOutput",
   21     21   
);
   22     22   
static EXECUTETRANSACTIONOUTPUT_MEMBER_RESPONSES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   23     23   
    ::aws_smithy_schema::ShapeId::from_static(
   24     24   
        "com.amazonaws.dynamodb.synthetic#ExecuteTransactionOutput$Responses",
   25     25   
        "com.amazonaws.dynamodb.synthetic",
   26     26   
        "ExecuteTransactionOutput",
   27     27   
    ),
   28     28   
    ::aws_smithy_schema::ShapeType::List,
   29         -
    "responses",
          29  +
    "Responses",
   30     30   
    0,
   31     31   
);
   32     32   
static EXECUTETRANSACTIONOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   33     33   
    EXECUTETRANSACTIONOUTPUT_SCHEMA_ID,
   34     34   
    ::aws_smithy_schema::ShapeType::Structure,
   35     35   
    &[&EXECUTETRANSACTIONOUTPUT_MEMBER_RESPONSES],
   36     36   
);
   37     37   
impl ExecuteTransactionOutput {
   38     38   
    /// The schema for this shape.
   39     39   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &EXECUTETRANSACTIONOUTPUT_SCHEMA;
   40     40   
}
   41     41   
impl ::aws_smithy_schema::serde::SerializableStruct for ExecuteTransactionOutput {
   42     42   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   43     43   
    fn serialize_members(
   44     44   
        &self,
   45     45   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   46     46   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   47     47   
        if let Some(ref val) = self.responses {
   48     48   
            ser.write_list(
   49     49   
                &EXECUTETRANSACTIONOUTPUT_MEMBER_RESPONSES,
   50     50   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   51     51   
                    for item in val {
   52     52   
                        ser.write_struct(crate::types::ItemResponse::SCHEMA, item)?;
   53     53   
                    }
   54     54   
                    Ok(())
   55     55   
                },
   56     56   
            )?;
   57     57   
        }
   58     58   
        Ok(())
   59     59   
    }
   60     60   
}
   61     61   
impl ExecuteTransactionOutput {
   62     62   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   63         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   64         -
        deserializer: &mut D,
          63  +
    pub fn deserialize(
          64  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   65     65   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   66     66   
        #[allow(unused_variables, unused_mut)]
   67     67   
        let mut builder = Self::builder();
   68     68   
        #[allow(
   69     69   
            unused_variables,
   70     70   
            unreachable_code,
   71     71   
            clippy::single_match,
   72     72   
            clippy::match_single_binding,
   73     73   
            clippy::diverging_sub_expression
   74     74   
        )]
   75         -
        deserializer.read_struct(&EXECUTETRANSACTIONOUTPUT_SCHEMA, (), |_, member, deser| {
          75  +
        deserializer.read_struct(&EXECUTETRANSACTIONOUTPUT_SCHEMA, &mut |member, deser| {
   76     76   
            match member.member_index() {
   77     77   
                Some(0) => {
   78     78   
                    builder.responses = Some({
   79         -
                        let container = if let Some(cap) = deser.container_size() {
   80         -
                            Vec::with_capacity(cap)
   81         -
                        } else {
   82         -
                            Vec::new()
   83         -
                        };
   84         -
                        deser.read_list(member, container, |mut list, deser| {
   85         -
                            list.push(crate::types::ItemResponse::deserialize(deser)?);
   86         -
                            Ok(list)
   87         -
                        })?
          79  +
                        let mut container = Vec::new();
          80  +
                        deser.read_list(member, &mut |deser| {
          81  +
                            container.push(crate::types::ItemResponse::deserialize(deser)?);
          82  +
                            Ok(())
          83  +
                        })?;
          84  +
                        container
   88     85   
                    });
   89     86   
                }
   90     87   
                _ => {}
   91     88   
            }
   92     89   
            Ok(())
   93     90   
        })?;
   94     91   
        Ok(builder.build())
   95     92   
    }
   96     93   
}
          94  +
impl ExecuteTransactionOutput {
          95  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          96  +
    pub fn deserialize_with_response(
          97  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          98  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          99  +
        _status: u16,
         100  +
        _body: &[u8],
         101  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         102  +
        Self::deserialize(deserializer)
         103  +
    }
         104  +
}
   97    105   
impl ExecuteTransactionOutput {
   98    106   
    /// Creates a new builder-style object to manufacture [`ExecuteTransactionOutput`](crate::operation::execute_transaction::ExecuteTransactionOutput).
   99    107   
    pub fn builder() -> crate::operation::execute_transaction::builders::ExecuteTransactionOutputBuilder {
  100    108   
        crate::operation::execute_transaction::builders::ExecuteTransactionOutputBuilder::default()
  101    109   
    }
  102    110   
}
  103    111   
  104    112   
/// A builder for [`ExecuteTransactionOutput`](crate::operation::execute_transaction::ExecuteTransactionOutput).
  105    113   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  106    114   
#[non_exhaustive]

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

@@ -1,1 +40,46 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `ExportTableToPointInTime`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct ExportTableToPointInTime;
    6      6   
impl ExportTableToPointInTime {
    7      7   
    /// Creates a new `ExportTableToPointInTime`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema =
          13  +
        crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeInput::SCHEMA;
          14  +
    /// The schema for this operation's output shape.
          15  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema =
          16  +
        crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeOutput::SCHEMA;
   11     17   
    pub(crate) async fn orchestrate(
   12     18   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     19   
        input: crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeInput,
   14     20   
    ) -> ::std::result::Result<
   15     21   
        crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeOutput,
   16     22   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     23   
            crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError,
   18     24   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     25   
        >,
   20     26   
    > {
@@ -115,121 +241,406 @@
  135    141   
        ::std::borrow::Cow::Owned(rcb)
  136    142   
    }
  137    143   
}
  138    144   
  139    145   
#[derive(Debug)]
  140    146   
struct ExportTableToPointInTimeResponseDeserializer;
  141    147   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ExportTableToPointInTimeResponseDeserializer {
  142    148   
    fn deserialize_nonstreaming(
  143    149   
        &self,
  144    150   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         151  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  145    152   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  146    153   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
         154  +
        #[allow(unused_mut)]
         155  +
        let mut force_error = false;
         156  +
         157  +
        if !success && status != 200 || force_error {
  147    158   
            let headers = response.headers();
  148    159   
            let body = response.body().bytes().expect("body loaded");
  149    160   
            #[allow(unused_mut)]
  150         -
        let mut force_error = false;
         161  +
            let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(status, headers, body).map_err(|e| {
         162  +
                ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         163  +
            })?;
  151    164   
  152         -
        let parse_result = if !success && status != 200 || force_error {
  153         -
            crate::protocol_serde::shape_export_table_to_point_in_time::de_export_table_to_point_in_time_http_error(status, headers, body)
  154         -
        } else {
  155         -
            crate::protocol_serde::shape_export_table_to_point_in_time::de_export_table_to_point_in_time_http_response(status, headers, body)
         165  +
            let generic = generic_builder.build();
         166  +
            let error_code = match generic.code() {
         167  +
                ::std::option::Option::Some(code) => code,
         168  +
                ::std::option::Option::None => {
         169  +
                    return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         170  +
                        ::aws_smithy_runtime_api::box_error::BoxError::from(
         171  +
                            crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::unhandled(generic),
         172  +
                        ),
         173  +
                    ))
         174  +
                }
         175  +
            };
         176  +
            let _error_message = generic.message().map(|msg| msg.to_owned());
         177  +
            let protocol = _cfg
         178  +
                .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         179  +
                .expect("a SharedClientProtocol is required");
         180  +
            let err = match error_code {
         181  +
                "ExportConflictException" => crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::ExportConflictError({
         182  +
                    let mut tmp = match protocol
         183  +
                        .deserialize_response(response, crate::types::error::ExportConflictError::SCHEMA, _cfg)
         184  +
                        .and_then(|mut deser| {
         185  +
                            crate::types::error::ExportConflictError::deserialize_with_response(
         186  +
                                &mut *deser,
         187  +
                                response.headers(),
         188  +
                                response.status().into(),
         189  +
                                body,
         190  +
                            )
         191  +
                        }) {
         192  +
                        ::std::result::Result::Ok(val) => val,
         193  +
                        ::std::result::Result::Err(e) => {
         194  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         195  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         196  +
                            ))
         197  +
                        }
         198  +
                    };
         199  +
                    tmp.meta = generic;
         200  +
                    if tmp.message.is_none() {
         201  +
                        tmp.message = _error_message;
         202  +
                    }
         203  +
                    tmp
         204  +
                }),
         205  +
                "InternalServerError" => crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::InternalServerError({
         206  +
                    let mut tmp = match protocol
         207  +
                        .deserialize_response(response, crate::types::error::InternalServerError::SCHEMA, _cfg)
         208  +
                        .and_then(|mut deser| {
         209  +
                            crate::types::error::InternalServerError::deserialize_with_response(
         210  +
                                &mut *deser,
         211  +
                                response.headers(),
         212  +
                                response.status().into(),
         213  +
                                body,
         214  +
                            )
         215  +
                        }) {
         216  +
                        ::std::result::Result::Ok(val) => val,
         217  +
                        ::std::result::Result::Err(e) => {
         218  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         219  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         220  +
                            ))
         221  +
                        }
         222  +
                    };
         223  +
                    tmp.meta = generic;
         224  +
                    if tmp.message.is_none() {
         225  +
                        tmp.message = _error_message;
         226  +
                    }
         227  +
                    tmp
         228  +
                }),
         229  +
                "InvalidExportTimeException" => {
         230  +
                    crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::InvalidExportTimeError({
         231  +
                        let mut tmp = match protocol
         232  +
                            .deserialize_response(response, crate::types::error::InvalidExportTimeError::SCHEMA, _cfg)
         233  +
                            .and_then(|mut deser| {
         234  +
                                crate::types::error::InvalidExportTimeError::deserialize_with_response(
         235  +
                                    &mut *deser,
         236  +
                                    response.headers(),
         237  +
                                    response.status().into(),
         238  +
                                    body,
         239  +
                                )
         240  +
                            }) {
         241  +
                            ::std::result::Result::Ok(val) => val,
         242  +
                            ::std::result::Result::Err(e) => {
         243  +
                                return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         244  +
                                    ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         245  +
                                ))
         246  +
                            }
  156    247   
                        };
  157         -
        crate::protocol_serde::type_erase_result(parse_result)
         248  +
                        tmp.meta = generic;
         249  +
                        if tmp.message.is_none() {
         250  +
                            tmp.message = _error_message;
         251  +
                        }
         252  +
                        tmp
         253  +
                    })
         254  +
                }
         255  +
                "LimitExceededException" => crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::LimitExceededError({
         256  +
                    let mut tmp = match protocol
         257  +
                        .deserialize_response(response, crate::types::error::LimitExceededError::SCHEMA, _cfg)
         258  +
                        .and_then(|mut deser| {
         259  +
                            crate::types::error::LimitExceededError::deserialize_with_response(
         260  +
                                &mut *deser,
         261  +
                                response.headers(),
         262  +
                                response.status().into(),
         263  +
                                body,
         264  +
                            )
         265  +
                        }) {
         266  +
                        ::std::result::Result::Ok(val) => val,
         267  +
                        ::std::result::Result::Err(e) => {
         268  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         269  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         270  +
                            ))
         271  +
                        }
         272  +
                    };
         273  +
                    tmp.meta = generic;
         274  +
                    if tmp.message.is_none() {
         275  +
                        tmp.message = _error_message;
         276  +
                    }
         277  +
                    tmp
         278  +
                }),
         279  +
                "PointInTimeRecoveryUnavailableException" => {
         280  +
                    crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::PointInTimeRecoveryUnavailableError({
         281  +
                        let mut tmp = match protocol
         282  +
                            .deserialize_response(response, crate::types::error::PointInTimeRecoveryUnavailableError::SCHEMA, _cfg)
         283  +
                            .and_then(|mut deser| {
         284  +
                                crate::types::error::PointInTimeRecoveryUnavailableError::deserialize_with_response(
         285  +
                                    &mut *deser,
         286  +
                                    response.headers(),
         287  +
                                    response.status().into(),
         288  +
                                    body,
         289  +
                                )
         290  +
                            }) {
         291  +
                            ::std::result::Result::Ok(val) => val,
         292  +
                            ::std::result::Result::Err(e) => {
         293  +
                                return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         294  +
                                    ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         295  +
                                ))
         296  +
                            }
         297  +
                        };
         298  +
                        tmp.meta = generic;
         299  +
                        if tmp.message.is_none() {
         300  +
                            tmp.message = _error_message;
         301  +
                        }
         302  +
                        tmp
         303  +
                    })
         304  +
                }
         305  +
                "TableNotFoundException" => crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::TableNotFoundError({
         306  +
                    let mut tmp = match protocol
         307  +
                        .deserialize_response(response, crate::types::error::TableNotFoundError::SCHEMA, _cfg)
         308  +
                        .and_then(|mut deser| {
         309  +
                            crate::types::error::TableNotFoundError::deserialize_with_response(
         310  +
                                &mut *deser,
         311  +
                                response.headers(),
         312  +
                                response.status().into(),
         313  +
                                body,
         314  +
                            )
         315  +
                        }) {
         316  +
                        ::std::result::Result::Ok(val) => val,
         317  +
                        ::std::result::Result::Err(e) => {
         318  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         319  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         320  +
                            ))
         321  +
                        }
         322  +
                    };
         323  +
                    tmp.meta = generic;
         324  +
                    if tmp.message.is_none() {
         325  +
                        tmp.message = _error_message;
         326  +
                    }
         327  +
                    tmp
         328  +
                }),
         329  +
                _ => crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeError::generic(generic),
         330  +
            };
         331  +
            ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::operation(
         332  +
                ::aws_smithy_runtime_api::client::interceptors::context::Error::erase(err),
         333  +
            ))
         334  +
        } else {
         335  +
            let protocol = _cfg
         336  +
                .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         337  +
                .expect("a SharedClientProtocol is required");
         338  +
            let mut deser = protocol
         339  +
                .deserialize_response(response, ExportTableToPointInTime::OUTPUT_SCHEMA, _cfg)
         340  +
                .map_err(|e| {
         341  +
                    ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         342  +
                })?;
         343  +
            let body = response.body().bytes().expect("body loaded");
         344  +
            let output = crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeOutput::deserialize_with_response(
         345  +
                &mut *deser,
         346  +
                response.headers(),
         347  +
                response.status().into(),
         348  +
                body,
         349  +
            )
         350  +
            .map_err(|e| {
         351  +
                ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         352  +
            })?;
         353  +
            ::std::result::Result::Ok(::aws_smithy_runtime_api::client::interceptors::context::Output::erase(output))
         354  +
        }
  158    355   
    }
  159    356   
}
  160    357   
#[derive(Debug)]
  161    358   
struct ExportTableToPointInTimeRequestSerializer;
  162    359   
impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ExportTableToPointInTimeRequestSerializer {
  163    360   
    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
  164    361   
    fn serialize_input(
  165    362   
        &self,
  166    363   
        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
  167    364   
        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
  168    365   
    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
  169    366   
        let input = input
  170    367   
            .downcast::<crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeInput>()
  171    368   
            .expect("correct type");
  172         -
        let _header_serialization_settings = _cfg
  173         -
            .load::<crate::serialization_settings::HeaderSerializationSettings>()
  174         -
            .cloned()
  175         -
            .unwrap_or_default();
  176         -
        let mut request_builder = {
  177         -
            #[allow(clippy::uninlined_format_args)]
  178         -
            fn uri_base(
  179         -
                _input: &crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeInput,
  180         -
                output: &mut ::std::string::String,
  181         -
            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
  182         -
                use ::std::fmt::Write as _;
  183         -
                ::std::write!(output, "/").expect("formatting should succeed");
  184         -
                ::std::result::Result::Ok(())
  185         -
            }
  186         -
            #[allow(clippy::unnecessary_wraps)]
  187         -
            fn update_http_builder(
  188         -
                input: &crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeInput,
  189         -
                builder: ::http_1x::request::Builder,
  190         -
            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
  191         -
                let mut uri = ::std::string::String::new();
  192         -
                uri_base(input, &mut uri)?;
  193         -
                ::std::result::Result::Ok(builder.method("POST").uri(uri))
  194         -
            }
  195         -
            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
  196         -
            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.0");
  197         -
            builder = _header_serialization_settings.set_default_header(
  198         -
                builder,
  199         -
                ::http_1x::header::HeaderName::from_static("x-amz-target"),
  200         -
                "DynamoDB_20120810.ExportTableToPointInTime",
  201         -
            );
  202         -
            builder
  203         -
        };
  204         -
        let body = ::aws_smithy_types::body::SdkBody::from(
  205         -
            crate::protocol_serde::shape_export_table_to_point_in_time::ser_export_table_to_point_in_time_input(&input)?,
  206         -
        );
  207         -
        if let Some(content_length) = body.content_length() {
  208         -
            let content_length = content_length.to_string();
  209         -
            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
  210         -
        }
  211         -
        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
         369  +
        let protocol = _cfg
         370  +
            .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         371  +
            .expect("a SharedClientProtocol is required");
         372  +
        let mut request = protocol
         373  +
            .serialize_request(&input, ExportTableToPointInTime::INPUT_SCHEMA, "", _cfg)
         374  +
            .map_err(::aws_smithy_runtime_api::box_error::BoxError::from)?;
         375  +
         376  +
        return ::std::result::Result::Ok(request);
  212    377   
    }
  213    378   
}
  214    379   
#[derive(Debug)]
  215    380   
struct ExportTableToPointInTimeEndpointParamsInterceptor;
  216    381   
  217    382   
impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ExportTableToPointInTimeEndpointParamsInterceptor {
  218    383   
    fn name(&self) -> &'static str {
  219    384   
        "ExportTableToPointInTimeEndpointParamsInterceptor"
  220    385   
    }
  221    386   

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/operation/export_table_to_point_in_time/_export_table_to_point_in_time_input.rs

@@ -61,61 +310,323 @@
   81     81   
    "com.amazonaws.dynamodb.synthetic",
   82     82   
    "ExportTableToPointInTimeInput",
   83     83   
);
   84     84   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_TABLE_ARN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   85     85   
    ::aws_smithy_schema::ShapeId::from_static(
   86     86   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$TableArn",
   87     87   
        "com.amazonaws.dynamodb.synthetic",
   88     88   
        "ExportTableToPointInTimeInput",
   89     89   
    ),
   90     90   
    ::aws_smithy_schema::ShapeType::String,
   91         -
    "table_arn",
          91  +
    "TableArn",
   92     92   
    0,
   93     93   
);
   94     94   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_EXPORT_TIME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$ExportTime",
   97     97   
        "com.amazonaws.dynamodb.synthetic",
   98     98   
        "ExportTableToPointInTimeInput",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::Timestamp,
  101         -
    "export_time",
         101  +
    "ExportTime",
  102    102   
    1,
  103    103   
);
  104    104   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_CLIENT_TOKEN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$ClientToken",
  107    107   
        "com.amazonaws.dynamodb.synthetic",
  108    108   
        "ExportTableToPointInTimeInput",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::String,
  111         -
    "client_token",
         111  +
    "ClientToken",
  112    112   
    2,
  113    113   
);
  114    114   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_BUCKET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  115    115   
    ::aws_smithy_schema::ShapeId::from_static(
  116    116   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$S3Bucket",
  117    117   
        "com.amazonaws.dynamodb.synthetic",
  118    118   
        "ExportTableToPointInTimeInput",
  119    119   
    ),
  120    120   
    ::aws_smithy_schema::ShapeType::String,
  121         -
    "s3_bucket",
         121  +
    "S3Bucket",
  122    122   
    3,
  123    123   
);
  124    124   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_BUCKET_OWNER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  125    125   
    ::aws_smithy_schema::ShapeId::from_static(
  126    126   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$S3BucketOwner",
  127    127   
        "com.amazonaws.dynamodb.synthetic",
  128    128   
        "ExportTableToPointInTimeInput",
  129    129   
    ),
  130    130   
    ::aws_smithy_schema::ShapeType::String,
  131         -
    "s3_bucket_owner",
         131  +
    "S3BucketOwner",
  132    132   
    4,
  133    133   
);
  134    134   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_PREFIX: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$S3Prefix",
  137    137   
        "com.amazonaws.dynamodb.synthetic",
  138    138   
        "ExportTableToPointInTimeInput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::String,
  141         -
    "s3_prefix",
         141  +
    "S3Prefix",
  142    142   
    5,
  143    143   
);
  144    144   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_SSE_ALGORITHM: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$S3SseAlgorithm",
  147    147   
        "com.amazonaws.dynamodb.synthetic",
  148    148   
        "ExportTableToPointInTimeInput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::String,
  151         -
    "s3_sse_algorithm",
         151  +
    "S3SseAlgorithm",
  152    152   
    6,
  153    153   
);
  154    154   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_SSE_KMS_KEY_ID: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  155    155   
    ::aws_smithy_schema::ShapeId::from_static(
  156    156   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$S3SseKmsKeyId",
  157    157   
        "com.amazonaws.dynamodb.synthetic",
  158    158   
        "ExportTableToPointInTimeInput",
  159    159   
    ),
  160    160   
    ::aws_smithy_schema::ShapeType::String,
  161         -
    "s3_sse_kms_key_id",
         161  +
    "S3SseKmsKeyId",
  162    162   
    7,
  163    163   
);
  164    164   
static EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_EXPORT_FORMAT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  165    165   
    ::aws_smithy_schema::ShapeId::from_static(
  166    166   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeInput$ExportFormat",
  167    167   
        "com.amazonaws.dynamodb.synthetic",
  168    168   
        "ExportTableToPointInTimeInput",
  169    169   
    ),
  170    170   
    ::aws_smithy_schema::ShapeType::String,
  171         -
    "export_format",
         171  +
    "ExportFormat",
  172    172   
    8,
  173    173   
);
  174    174   
static EXPORTTABLETOPOINTINTIMEINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  175    175   
    EXPORTTABLETOPOINTINTIMEINPUT_SCHEMA_ID,
  176    176   
    ::aws_smithy_schema::ShapeType::Structure,
  177    177   
    &[
  178    178   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_TABLE_ARN,
  179    179   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_EXPORT_TIME,
  180    180   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_CLIENT_TOKEN,
  181    181   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_BUCKET,
  182    182   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_BUCKET_OWNER,
  183    183   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_PREFIX,
  184    184   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_SSE_ALGORITHM,
  185    185   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_SSE_KMS_KEY_ID,
  186    186   
        &EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_EXPORT_FORMAT,
  187    187   
    ],
  188    188   
);
  189    189   
impl ExportTableToPointInTimeInput {
  190    190   
    /// The schema for this shape.
  191    191   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &EXPORTTABLETOPOINTINTIMEINPUT_SCHEMA;
  192    192   
}
  193    193   
impl ::aws_smithy_schema::serde::SerializableStruct for ExportTableToPointInTimeInput {
  194    194   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  195    195   
    fn serialize_members(
  196    196   
        &self,
  197    197   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  198    198   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  199    199   
        if let Some(ref val) = self.table_arn {
  200    200   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_TABLE_ARN, val)?;
  201    201   
        }
  202    202   
        if let Some(ref val) = self.export_time {
  203    203   
            ser.write_timestamp(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_EXPORT_TIME, val)?;
  204    204   
        }
  205    205   
        if let Some(ref val) = self.client_token {
  206    206   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_CLIENT_TOKEN, val)?;
  207    207   
        }
  208    208   
        if let Some(ref val) = self.s3_bucket {
  209    209   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_BUCKET, val)?;
  210    210   
        }
  211    211   
        if let Some(ref val) = self.s3_bucket_owner {
  212    212   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_BUCKET_OWNER, val)?;
  213    213   
        }
  214    214   
        if let Some(ref val) = self.s3_prefix {
  215    215   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_PREFIX, val)?;
  216    216   
        }
  217    217   
        if let Some(ref val) = self.s3_sse_algorithm {
  218    218   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_SSE_ALGORITHM, val.as_str())?;
  219    219   
        }
  220    220   
        if let Some(ref val) = self.s3_sse_kms_key_id {
  221    221   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_S3_SSE_KMS_KEY_ID, val)?;
  222    222   
        }
  223    223   
        if let Some(ref val) = self.export_format {
  224    224   
            ser.write_string(&EXPORTTABLETOPOINTINTIMEINPUT_MEMBER_EXPORT_FORMAT, val.as_str())?;
  225    225   
        }
  226    226   
        Ok(())
  227    227   
    }
  228    228   
}
  229    229   
impl ExportTableToPointInTimeInput {
  230    230   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  231         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  232         -
        deserializer: &mut D,
         231  +
    pub fn deserialize(
         232  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  233    233   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  234    234   
        #[allow(unused_variables, unused_mut)]
  235    235   
        let mut builder = Self::builder();
  236    236   
        #[allow(
  237    237   
            unused_variables,
  238    238   
            unreachable_code,
  239    239   
            clippy::single_match,
  240    240   
            clippy::match_single_binding,
  241    241   
            clippy::diverging_sub_expression
  242    242   
        )]
  243         -
        deserializer.read_struct(&EXPORTTABLETOPOINTINTIMEINPUT_SCHEMA, (), |_, member, deser| {
         243  +
        deserializer.read_struct(&EXPORTTABLETOPOINTINTIMEINPUT_SCHEMA, &mut |member, deser| {
  244    244   
            match member.member_index() {
  245    245   
                Some(0) => {
  246    246   
                    builder.table_arn = Some(deser.read_string(member)?);
  247    247   
                }
  248    248   
                Some(1) => {
  249    249   
                    builder.export_time = Some(deser.read_timestamp(member)?);
  250    250   
                }
  251    251   
                Some(2) => {
  252    252   
                    builder.client_token = Some(deser.read_string(member)?);
  253    253   
                }
  254    254   
                Some(3) => {
  255    255   
                    builder.s3_bucket = Some(deser.read_string(member)?);
  256    256   
                }
  257    257   
                Some(4) => {
  258    258   
                    builder.s3_bucket_owner = Some(deser.read_string(member)?);
  259    259   
                }
  260    260   
                Some(5) => {
  261    261   
                    builder.s3_prefix = Some(deser.read_string(member)?);
  262    262   
                }
  263    263   
                Some(6) => {
  264    264   
                    builder.s3_sse_algorithm = Some(crate::types::S3SseAlgorithm::from(deser.read_string(member)?.as_str()));
  265    265   
                }
  266    266   
                Some(7) => {
  267    267   
                    builder.s3_sse_kms_key_id = Some(deser.read_string(member)?);
  268    268   
                }
  269    269   
                Some(8) => {
  270    270   
                    builder.export_format = Some(crate::types::ExportFormat::from(deser.read_string(member)?.as_str()));
  271    271   
                }
  272    272   
                _ => {}
  273    273   
            }
  274    274   
            Ok(())
  275    275   
        })?;
         276  +
        builder.table_arn = builder.table_arn.or(Some(String::new()));
         277  +
        builder.s3_bucket = builder.s3_bucket.or(Some(String::new()));
  276    278   
        builder
  277    279   
            .build()
  278    280   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  279    281   
    }
  280    282   
}
         283  +
impl ExportTableToPointInTimeInput {
         284  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         285  +
    pub fn deserialize_with_response(
         286  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         287  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         288  +
        _status: u16,
         289  +
        _body: &[u8],
         290  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         291  +
        Self::deserialize(deserializer)
         292  +
    }
         293  +
}
  281    294   
impl ExportTableToPointInTimeInput {
  282    295   
    /// Creates a new builder-style object to manufacture [`ExportTableToPointInTimeInput`](crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeInput).
  283    296   
    pub fn builder() -> crate::operation::export_table_to_point_in_time::builders::ExportTableToPointInTimeInputBuilder {
  284    297   
        crate::operation::export_table_to_point_in_time::builders::ExportTableToPointInTimeInputBuilder::default()
  285    298   
    }
  286    299   
}
  287    300   
  288    301   
/// A builder for [`ExportTableToPointInTimeInput`](crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeInput).
  289    302   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  290    303   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/operation/export_table_to_point_in_time/_export_table_to_point_in_time_output.rs

@@ -1,1 +106,117 @@
   17     17   
    "com.amazonaws.dynamodb.synthetic",
   18     18   
    "ExportTableToPointInTimeOutput",
   19     19   
);
   20     20   
static EXPORTTABLETOPOINTINTIMEOUTPUT_MEMBER_EXPORT_DESCRIPTION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "com.amazonaws.dynamodb.synthetic#ExportTableToPointInTimeOutput$ExportDescription",
   23     23   
        "com.amazonaws.dynamodb.synthetic",
   24     24   
        "ExportTableToPointInTimeOutput",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::Structure,
   27         -
    "export_description",
          27  +
    "ExportDescription",
   28     28   
    0,
   29     29   
);
   30     30   
static EXPORTTABLETOPOINTINTIMEOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   31     31   
    EXPORTTABLETOPOINTINTIMEOUTPUT_SCHEMA_ID,
   32     32   
    ::aws_smithy_schema::ShapeType::Structure,
   33     33   
    &[&EXPORTTABLETOPOINTINTIMEOUTPUT_MEMBER_EXPORT_DESCRIPTION],
   34     34   
);
   35     35   
impl ExportTableToPointInTimeOutput {
   36     36   
    /// The schema for this shape.
   37     37   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &EXPORTTABLETOPOINTINTIMEOUTPUT_SCHEMA;
   38     38   
}
   39     39   
impl ::aws_smithy_schema::serde::SerializableStruct for ExportTableToPointInTimeOutput {
   40     40   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   41     41   
    fn serialize_members(
   42     42   
        &self,
   43     43   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   44     44   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   45     45   
        if let Some(ref val) = self.export_description {
   46     46   
            ser.write_struct(&EXPORTTABLETOPOINTINTIMEOUTPUT_MEMBER_EXPORT_DESCRIPTION, val)?;
   47     47   
        }
   48     48   
        Ok(())
   49     49   
    }
   50     50   
}
   51     51   
impl ExportTableToPointInTimeOutput {
   52     52   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   53         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   54         -
        deserializer: &mut D,
          53  +
    pub fn deserialize(
          54  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   55     55   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   56     56   
        #[allow(unused_variables, unused_mut)]
   57     57   
        let mut builder = Self::builder();
   58     58   
        #[allow(
   59     59   
            unused_variables,
   60     60   
            unreachable_code,
   61     61   
            clippy::single_match,
   62     62   
            clippy::match_single_binding,
   63     63   
            clippy::diverging_sub_expression
   64     64   
        )]
   65         -
        deserializer.read_struct(&EXPORTTABLETOPOINTINTIMEOUTPUT_SCHEMA, (), |_, member, deser| {
          65  +
        deserializer.read_struct(&EXPORTTABLETOPOINTINTIMEOUTPUT_SCHEMA, &mut |member, deser| {
   66     66   
            match member.member_index() {
   67     67   
                Some(0) => {
   68     68   
                    builder.export_description = Some(crate::types::ExportDescription::deserialize(deser)?);
   69     69   
                }
   70     70   
                _ => {}
   71     71   
            }
   72     72   
            Ok(())
   73     73   
        })?;
   74     74   
        Ok(builder.build())
   75     75   
    }
   76     76   
}
          77  +
impl ExportTableToPointInTimeOutput {
          78  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          79  +
    pub fn deserialize_with_response(
          80  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          81  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          82  +
        _status: u16,
          83  +
        _body: &[u8],
          84  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          85  +
        Self::deserialize(deserializer)
          86  +
    }
          87  +
}
   77     88   
impl ExportTableToPointInTimeOutput {
   78     89   
    /// Creates a new builder-style object to manufacture [`ExportTableToPointInTimeOutput`](crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeOutput).
   79     90   
    pub fn builder() -> crate::operation::export_table_to_point_in_time::builders::ExportTableToPointInTimeOutputBuilder {
   80     91   
        crate::operation::export_table_to_point_in_time::builders::ExportTableToPointInTimeOutputBuilder::default()
   81     92   
    }
   82     93   
}
   83     94   
   84     95   
/// A builder for [`ExportTableToPointInTimeOutput`](crate::operation::export_table_to_point_in_time::ExportTableToPointInTimeOutput).
   85     96   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   86     97   
#[non_exhaustive]

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

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `GetItem`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct GetItem;
    6      6   
impl GetItem {
    7      7   
    /// Creates a new `GetItem`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::get_item::GetItemInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::get_item::GetItemOutput::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::get_item::GetItemInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::get_item::GetItemOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::get_item::GetItemError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -100,104 +222,353 @@
  120    124   
        ::std::borrow::Cow::Owned(rcb)
  121    125   
    }
  122    126   
}
  123    127   
  124    128   
#[derive(Debug)]
  125    129   
struct GetItemResponseDeserializer;
  126    130   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for GetItemResponseDeserializer {
  127    131   
    fn deserialize_nonstreaming(
  128    132   
        &self,
  129    133   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         134  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  130    135   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  131    136   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
         137  +
        #[allow(unused_mut)]
         138  +
        let mut force_error = false;
         139  +
         140  +
        if !success && status != 200 || force_error {
  132    141   
            let headers = response.headers();
  133    142   
            let body = response.body().bytes().expect("body loaded");
  134    143   
            #[allow(unused_mut)]
  135         -
        let mut force_error = false;
         144  +
            let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(status, headers, body).map_err(|e| {
         145  +
                ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         146  +
            })?;
  136    147   
  137         -
        let parse_result = if !success && status != 200 || force_error {
  138         -
            crate::protocol_serde::shape_get_item::de_get_item_http_error(status, headers, body)
  139         -
        } else {
  140         -
            crate::protocol_serde::shape_get_item::de_get_item_http_response(status, headers, body)
         148  +
            let generic = generic_builder.build();
         149  +
            let error_code = match generic.code() {
         150  +
                ::std::option::Option::Some(code) => code,
         151  +
                ::std::option::Option::None => {
         152  +
                    return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         153  +
                        ::aws_smithy_runtime_api::box_error::BoxError::from(crate::operation::get_item::GetItemError::unhandled(generic)),
         154  +
                    ))
         155  +
                }
         156  +
            };
         157  +
            let _error_message = generic.message().map(|msg| msg.to_owned());
         158  +
            let protocol = _cfg
         159  +
                .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         160  +
                .expect("a SharedClientProtocol is required");
         161  +
            let err = match error_code {
         162  +
                "InternalServerError" => crate::operation::get_item::GetItemError::InternalServerError({
         163  +
                    let mut tmp = match protocol
         164  +
                        .deserialize_response(response, crate::types::error::InternalServerError::SCHEMA, _cfg)
         165  +
                        .and_then(|mut deser| {
         166  +
                            crate::types::error::InternalServerError::deserialize_with_response(
         167  +
                                &mut *deser,
         168  +
                                response.headers(),
         169  +
                                response.status().into(),
         170  +
                                body,
         171  +
                            )
         172  +
                        }) {
         173  +
                        ::std::result::Result::Ok(val) => val,
         174  +
                        ::std::result::Result::Err(e) => {
         175  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         176  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         177  +
                            ))
         178  +
                        }
         179  +
                    };
         180  +
                    tmp.meta = generic;
         181  +
                    if tmp.message.is_none() {
         182  +
                        tmp.message = _error_message;
         183  +
                    }
         184  +
                    tmp
         185  +
                }),
         186  +
                "InvalidEndpointException" => crate::operation::get_item::GetItemError::InvalidEndpointError({
         187  +
                    let mut tmp = match protocol
         188  +
                        .deserialize_response(response, crate::types::error::InvalidEndpointError::SCHEMA, _cfg)
         189  +
                        .and_then(|mut deser| {
         190  +
                            crate::types::error::InvalidEndpointError::deserialize_with_response(
         191  +
                                &mut *deser,
         192  +
                                response.headers(),
         193  +
                                response.status().into(),
         194  +
                                body,
         195  +
                            )
         196  +
                        }) {
         197  +
                        ::std::result::Result::Ok(val) => val,
         198  +
                        ::std::result::Result::Err(e) => {
         199  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         200  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         201  +
                            ))
         202  +
                        }
         203  +
                    };
         204  +
                    tmp.meta = generic;
         205  +
                    if tmp.message.is_none() {
         206  +
                        tmp.message = _error_message;
         207  +
                    }
         208  +
                    tmp
         209  +
                }),
         210  +
                "ProvisionedThroughputExceededException" => crate::operation::get_item::GetItemError::ProvisionedThroughputExceededError({
         211  +
                    let mut tmp = match protocol
         212  +
                        .deserialize_response(response, crate::types::error::ProvisionedThroughputExceededError::SCHEMA, _cfg)
         213  +
                        .and_then(|mut deser| {
         214  +
                            crate::types::error::ProvisionedThroughputExceededError::deserialize_with_response(
         215  +
                                &mut *deser,
         216  +
                                response.headers(),
         217  +
                                response.status().into(),
         218  +
                                body,
         219  +
                            )
         220  +
                        }) {
         221  +
                        ::std::result::Result::Ok(val) => val,
         222  +
                        ::std::result::Result::Err(e) => {
         223  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         224  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         225  +
                            ))
         226  +
                        }
         227  +
                    };
         228  +
                    tmp.meta = generic;
         229  +
                    if tmp.message.is_none() {
         230  +
                        tmp.message = _error_message;
         231  +
                    }
         232  +
                    tmp
         233  +
                }),
         234  +
                "RequestLimitExceeded" => crate::operation::get_item::GetItemError::RequestLimitExceeded({
         235  +
                    let mut tmp = match protocol
         236  +
                        .deserialize_response(response, crate::types::error::RequestLimitExceeded::SCHEMA, _cfg)
         237  +
                        .and_then(|mut deser| {
         238  +
                            crate::types::error::RequestLimitExceeded::deserialize_with_response(
         239  +
                                &mut *deser,
         240  +
                                response.headers(),
         241  +
                                response.status().into(),
         242  +
                                body,
         243  +
                            )
         244  +
                        }) {
         245  +
                        ::std::result::Result::Ok(val) => val,
         246  +
                        ::std::result::Result::Err(e) => {
         247  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         248  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         249  +
                            ))
         250  +
                        }
  141    251   
                    };
  142         -
        crate::protocol_serde::type_erase_result(parse_result)
         252  +
                    tmp.meta = generic;
         253  +
                    if tmp.message.is_none() {
         254  +
                        tmp.message = _error_message;
         255  +
                    }
         256  +
                    tmp
         257  +
                }),
         258  +
                "ResourceNotFoundException" => crate::operation::get_item::GetItemError::ResourceNotFoundError({
         259  +
                    let mut tmp = match protocol
         260  +
                        .deserialize_response(response, crate::types::error::ResourceNotFoundError::SCHEMA, _cfg)
         261  +
                        .and_then(|mut deser| {
         262  +
                            crate::types::error::ResourceNotFoundError::deserialize_with_response(
         263  +
                                &mut *deser,
         264  +
                                response.headers(),
         265  +
                                response.status().into(),
         266  +
                                body,
         267  +
                            )
         268  +
                        }) {
         269  +
                        ::std::result::Result::Ok(val) => val,
         270  +
                        ::std::result::Result::Err(e) => {
         271  +
                            return ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(
         272  +
                                ::aws_smithy_runtime_api::box_error::BoxError::from(e),
         273  +
                            ))
         274  +
                        }
         275  +
                    };
         276  +
                    tmp.meta = generic;
         277  +
                    if tmp.message.is_none() {
         278  +
                        tmp.message = _error_message;
         279  +
                    }
         280  +
                    tmp
         281  +
                }),
         282  +
                _ => crate::operation::get_item::GetItemError::generic(generic),
         283  +
            };
         284  +
            ::std::result::Result::Err(::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::operation(
         285  +
                ::aws_smithy_runtime_api::client::interceptors::context::Error::erase(err),
         286  +
            ))
         287  +
        } else {
         288  +
            let protocol = _cfg
         289  +
                .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         290  +
                .expect("a SharedClientProtocol is required");
         291  +
            let mut deser = protocol.deserialize_response(response, GetItem::OUTPUT_SCHEMA, _cfg).map_err(|e| {
         292  +
                ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(e))
         293  +
            })?;
         294  +
            let body = response.body().bytes().expect("body loaded");
         295  +
            let output =
         296  +
                crate::operation::get_item::GetItemOutput::deserialize_with_response(&mut *deser, response.headers(), response.status().into(), body)
         297  +
                    .map_err(|e| {
         298  +
                        ::aws_smithy_runtime_api::client::orchestrator::OrchestratorError::other(::aws_smithy_runtime_api::box_error::BoxError::from(
         299  +
                            e,
         300  +
                        ))
         301  +
                    })?;
         302  +
            ::std::result::Result::Ok(::aws_smithy_runtime_api::client::interceptors::context::Output::erase(output))
         303  +
        }
  143    304   
    }
  144    305   
}
  145    306   
#[derive(Debug)]
  146    307   
struct GetItemRequestSerializer;
  147    308   
impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for GetItemRequestSerializer {
  148    309   
    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
  149    310   
    fn serialize_input(
  150    311   
        &self,
  151    312   
        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
  152    313   
        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
  153    314   
    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
  154    315   
        let input = input.downcast::<crate::operation::get_item::GetItemInput>().expect("correct type");
  155         -
        let _header_serialization_settings = _cfg
  156         -
            .load::<crate::serialization_settings::HeaderSerializationSettings>()
  157         -
            .cloned()
  158         -
            .unwrap_or_default();
  159         -
        let mut request_builder = {
  160         -
            #[allow(clippy::uninlined_format_args)]
  161         -
            fn uri_base(
  162         -
                _input: &crate::operation::get_item::GetItemInput,
  163         -
                output: &mut ::std::string::String,
  164         -
            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
  165         -
                use ::std::fmt::Write as _;
  166         -
                ::std::write!(output, "/").expect("formatting should succeed");
  167         -
                ::std::result::Result::Ok(())
  168         -
            }
  169         -
            #[allow(clippy::unnecessary_wraps)]
  170         -
            fn update_http_builder(
  171         -
                input: &crate::operation::get_item::GetItemInput,
  172         -
                builder: ::http_1x::request::Builder,
  173         -
            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
  174         -
                let mut uri = ::std::string::String::new();
  175         -
                uri_base(input, &mut uri)?;
  176         -
                ::std::result::Result::Ok(builder.method("POST").uri(uri))
  177         -
            }
  178         -
            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
  179         -
            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.0");
  180         -
            builder = _header_serialization_settings.set_default_header(
  181         -
                builder,
  182         -
                ::http_1x::header::HeaderName::from_static("x-amz-target"),
  183         -
                "DynamoDB_20120810.GetItem",
  184         -
            );
  185         -
            builder
  186         -
        };
  187         -
        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_get_item::ser_get_item_input(&input)?);
  188         -
        if let Some(content_length) = body.content_length() {
  189         -
            let content_length = content_length.to_string();
  190         -
            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
  191         -
        }
  192         -
        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
         316  +
        let protocol = _cfg
         317  +
            .load::<::aws_smithy_schema::protocol::SharedClientProtocol>()
         318  +
            .expect("a SharedClientProtocol is required");
         319  +
        let mut request = protocol
         320  +
            .serialize_request(&input, GetItem::INPUT_SCHEMA, "", _cfg)
         321  +
            .map_err(::aws_smithy_runtime_api::box_error::BoxError::from)?;
         322  +
         323  +
        return ::std::result::Result::Ok(request);
  193    324   
    }
  194    325   
}
  195    326   
#[derive(Debug)]
  196    327   
struct GetItemEndpointParamsInterceptor;
  197    328   
  198    329   
impl ::aws_smithy_runtime_api::client::interceptors::Intercept for GetItemEndpointParamsInterceptor {
  199    330   
    fn name(&self) -> &'static str {
  200    331   
        "GetItemEndpointParamsInterceptor"
  201    332   
    }
  202    333   

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/operation/get_item/_get_item_input.rs

@@ -112,112 +380,370 @@
  132    132   
    "com.amazonaws.dynamodb.synthetic",
  133    133   
    "GetItemInput",
  134    134   
);
  135    135   
static GETITEMINPUT_MEMBER_TABLE_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  136    136   
    ::aws_smithy_schema::ShapeId::from_static(
  137    137   
        "com.amazonaws.dynamodb.synthetic#GetItemInput$TableName",
  138    138   
        "com.amazonaws.dynamodb.synthetic",
  139    139   
        "GetItemInput",
  140    140   
    ),
  141    141   
    ::aws_smithy_schema::ShapeType::String,
  142         -
    "table_name",
         142  +
    "TableName",
  143    143   
    0,
  144    144   
);
  145    145   
static GETITEMINPUT_MEMBER_KEY: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  146    146   
    ::aws_smithy_schema::ShapeId::from_static(
  147    147   
        "com.amazonaws.dynamodb.synthetic#GetItemInput$Key",
  148    148   
        "com.amazonaws.dynamodb.synthetic",
  149    149   
        "GetItemInput",
  150    150   
    ),
  151    151   
    ::aws_smithy_schema::ShapeType::Map,
  152         -
    "key",
         152  +
    "Key",
  153    153   
    1,
  154    154   
);
  155    155   
static GETITEMINPUT_MEMBER_ATTRIBUTES_TO_GET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  156    156   
    ::aws_smithy_schema::ShapeId::from_static(
  157    157   
        "com.amazonaws.dynamodb.synthetic#GetItemInput$AttributesToGet",
  158    158   
        "com.amazonaws.dynamodb.synthetic",
  159    159   
        "GetItemInput",
  160    160   
    ),
  161    161   
    ::aws_smithy_schema::ShapeType::List,
  162         -
    "attributes_to_get",
         162  +
    "AttributesToGet",
  163    163   
    2,
  164    164   
);
  165    165   
static GETITEMINPUT_MEMBER_CONSISTENT_READ: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  166    166   
    ::aws_smithy_schema::ShapeId::from_static(
  167    167   
        "com.amazonaws.dynamodb.synthetic#GetItemInput$ConsistentRead",
  168    168   
        "com.amazonaws.dynamodb.synthetic",
  169    169   
        "GetItemInput",
  170    170   
    ),
  171    171   
    ::aws_smithy_schema::ShapeType::Boolean,
  172         -
    "consistent_read",
         172  +
    "ConsistentRead",
  173    173   
    3,
  174    174   
);
  175    175   
static GETITEMINPUT_MEMBER_RETURN_CONSUMED_CAPACITY: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  176    176   
    ::aws_smithy_schema::ShapeId::from_static(
  177    177   
        "com.amazonaws.dynamodb.synthetic#GetItemInput$ReturnConsumedCapacity",
  178    178   
        "com.amazonaws.dynamodb.synthetic",
  179    179   
        "GetItemInput",
  180    180   
    ),
  181    181   
    ::aws_smithy_schema::ShapeType::String,
  182         -
    "return_consumed_capacity",
         182  +
    "ReturnConsumedCapacity",
  183    183   
    4,
  184    184   
);
  185    185   
static GETITEMINPUT_MEMBER_PROJECTION_EXPRESSION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  186    186   
    ::aws_smithy_schema::ShapeId::from_static(
  187    187   
        "com.amazonaws.dynamodb.synthetic#GetItemInput$ProjectionExpression",
  188    188   
        "com.amazonaws.dynamodb.synthetic",
  189    189   
        "GetItemInput",
  190    190   
    ),
  191    191   
    ::aws_smithy_schema::ShapeType::String,
  192         -
    "projection_expression",
         192  +
    "ProjectionExpression",
  193    193   
    5,
  194    194   
);
  195    195   
static GETITEMINPUT_MEMBER_EXPRESSION_ATTRIBUTE_NAMES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  196    196   
    ::aws_smithy_schema::ShapeId::from_static(
  197    197   
        "com.amazonaws.dynamodb.synthetic#GetItemInput$ExpressionAttributeNames",
  198    198   
        "com.amazonaws.dynamodb.synthetic",
  199    199   
        "GetItemInput",
  200    200   
    ),
  201    201   
    ::aws_smithy_schema::ShapeType::Map,
  202         -
    "expression_attribute_names",
         202  +
    "ExpressionAttributeNames",
  203    203   
    6,
  204    204   
);
  205    205   
static GETITEMINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  206    206   
    GETITEMINPUT_SCHEMA_ID,
  207    207   
    ::aws_smithy_schema::ShapeType::Structure,
  208    208   
    &[
  209    209   
        &GETITEMINPUT_MEMBER_TABLE_NAME,
  210    210   
        &GETITEMINPUT_MEMBER_KEY,
  211    211   
        &GETITEMINPUT_MEMBER_ATTRIBUTES_TO_GET,
  212    212   
        &GETITEMINPUT_MEMBER_CONSISTENT_READ,
  213    213   
        &GETITEMINPUT_MEMBER_RETURN_CONSUMED_CAPACITY,
  214    214   
        &GETITEMINPUT_MEMBER_PROJECTION_EXPRESSION,
  215    215   
        &GETITEMINPUT_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
  216    216   
    ],
  217    217   
);
  218    218   
impl GetItemInput {
  219    219   
    /// The schema for this shape.
  220    220   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &GETITEMINPUT_SCHEMA;
  221    221   
}
  222    222   
impl ::aws_smithy_schema::serde::SerializableStruct for GetItemInput {
  223    223   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  224    224   
    fn serialize_members(
  225    225   
        &self,
  226    226   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  227    227   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  228    228   
        if let Some(ref val) = self.table_name {
  229    229   
            ser.write_string(&GETITEMINPUT_MEMBER_TABLE_NAME, val)?;
  230    230   
        }
  231    231   
        if let Some(ref val) = self.key {
  232    232   
            ser.write_map(&GETITEMINPUT_MEMBER_KEY, &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  233    233   
                for (key, value) in val {
  234    234   
                    ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  235         -
                    todo!("schema: unsupported map value type");
         235  +
                    ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
  236    236   
                }
  237    237   
                Ok(())
  238    238   
            })?;
  239    239   
        }
  240    240   
        if let Some(ref val) = self.attributes_to_get {
  241    241   
            ser.write_list(
  242    242   
                &GETITEMINPUT_MEMBER_ATTRIBUTES_TO_GET,
  243    243   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  244    244   
                    for item in val {
  245    245   
                        ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
  246    246   
                    }
  247    247   
                    Ok(())
  248    248   
                },
  249    249   
            )?;
  250    250   
        }
  251    251   
        if let Some(ref val) = self.consistent_read {
  252    252   
            ser.write_boolean(&GETITEMINPUT_MEMBER_CONSISTENT_READ, *val)?;
  253    253   
        }
  254    254   
        if let Some(ref val) = self.return_consumed_capacity {
  255    255   
            ser.write_string(&GETITEMINPUT_MEMBER_RETURN_CONSUMED_CAPACITY, val.as_str())?;
  256    256   
        }
  257    257   
        if let Some(ref val) = self.projection_expression {
  258    258   
            ser.write_string(&GETITEMINPUT_MEMBER_PROJECTION_EXPRESSION, val)?;
  259    259   
        }
  260    260   
        if let Some(ref val) = self.expression_attribute_names {
  261    261   
            ser.write_map(
  262    262   
                &GETITEMINPUT_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
  263    263   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  264    264   
                    for (key, value) in val {
  265    265   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  266    266   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, value)?;
  267    267   
                    }
  268    268   
                    Ok(())
  269    269   
                },
  270    270   
            )?;
  271    271   
        }
  272    272   
        Ok(())
  273    273   
    }
  274    274   
}
  275    275   
impl GetItemInput {
  276    276   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  277         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  278         -
        deserializer: &mut D,
         277  +
    pub fn deserialize(
         278  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  279    279   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  280    280   
        #[allow(unused_variables, unused_mut)]
  281    281   
        let mut builder = Self::builder();
  282    282   
        #[allow(
  283    283   
            unused_variables,
  284    284   
            unreachable_code,
  285    285   
            clippy::single_match,
  286    286   
            clippy::match_single_binding,
  287    287   
            clippy::diverging_sub_expression
  288    288   
        )]
  289         -
        deserializer.read_struct(&GETITEMINPUT_SCHEMA, (), |_, member, deser| {
         289  +
        deserializer.read_struct(&GETITEMINPUT_SCHEMA, &mut |member, deser| {
  290    290   
            match member.member_index() {
  291    291   
                Some(0) => {
  292    292   
                    builder.table_name = Some(deser.read_string(member)?);
  293    293   
                }
  294    294   
                Some(1) => {
  295    295   
                    builder.key = Some({
  296         -
                        let container = if let Some(cap) = deser.container_size() {
  297         -
                            std::collections::HashMap::with_capacity(cap)
  298         -
                        } else {
  299         -
                            std::collections::HashMap::new()
  300         -
                        };
  301         -
                        deser.read_map(member, container, |mut map, key, deser| {
  302         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  303         -
                            Ok(map)
  304         -
                        })?
         296  +
                        let mut container = std::collections::HashMap::new();
         297  +
                        deser.read_map(member, &mut |key, deser| {
         298  +
                            container.insert(key, crate::types::AttributeValue::deserialize(deser)?);
         299  +
                            Ok(())
         300  +
                        })?;
         301  +
                        container
  305    302   
                    });
  306    303   
                }
  307    304   
                Some(2) => {
  308         -
                    builder.attributes_to_get = Some({
  309         -
                        let container = if let Some(cap) = deser.container_size() {
  310         -
                            Vec::with_capacity(cap)
  311         -
                        } else {
  312         -
                            Vec::new()
  313         -
                        };
  314         -
                        deser.read_list(member, container, |mut list, deser| {
  315         -
                            list.push(deser.read_string(member)?);
  316         -
                            Ok(list)
  317         -
                        })?
  318         -
                    });
         305  +
                    builder.attributes_to_get = Some(deser.read_string_list(member)?);
  319    306   
                }
  320    307   
                Some(3) => {
  321    308   
                    builder.consistent_read = Some(deser.read_boolean(member)?);
  322    309   
                }
  323    310   
                Some(4) => {
  324    311   
                    builder.return_consumed_capacity = Some(crate::types::ReturnConsumedCapacity::from(deser.read_string(member)?.as_str()));
  325    312   
                }
  326    313   
                Some(5) => {
  327    314   
                    builder.projection_expression = Some(deser.read_string(member)?);
  328    315   
                }
  329    316   
                Some(6) => {
  330         -
                    builder.expression_attribute_names = Some({
  331         -
                        let container = if let Some(cap) = deser.container_size() {
  332         -
                            std::collections::HashMap::with_capacity(cap)
  333         -
                        } else {
  334         -
                            std::collections::HashMap::new()
  335         -
                        };
  336         -
                        deser.read_map(member, container, |mut map, key, deser| {
  337         -
                            map.insert(key, deser.read_string(member)?);
  338         -
                            Ok(map)
  339         -
                        })?
  340         -
                    });
         317  +
                    builder.expression_attribute_names = Some(deser.read_string_string_map(member)?);
  341    318   
                }
  342    319   
                _ => {}
  343    320   
            }
  344    321   
            Ok(())
  345    322   
        })?;
         323  +
        builder.table_name = builder.table_name.or(Some(String::new()));
         324  +
        builder.key = builder.key.or(Some(::std::collections::HashMap::new()));
  346    325   
        builder
  347    326   
            .build()
  348    327   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  349    328   
    }
  350    329   
}
         330  +
impl GetItemInput {
         331  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         332  +
    pub fn deserialize_with_response(
         333  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         334  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         335  +
        _status: u16,
         336  +
        _body: &[u8],
         337  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         338  +
        Self::deserialize(deserializer)
         339  +
    }
         340  +
}
  351    341   
impl GetItemInput {
  352    342   
    /// Creates a new builder-style object to manufacture [`GetItemInput`](crate::operation::get_item::GetItemInput).
  353    343   
    pub fn builder() -> crate::operation::get_item::builders::GetItemInputBuilder {
  354    344   
        crate::operation::get_item::builders::GetItemInputBuilder::default()
  355    345   
    }
  356    346   
}
  357    347   
  358    348   
/// A builder for [`GetItemInput`](crate::operation::get_item::GetItemInput).
  359    349   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  360    350   
#[non_exhaustive]