Client Test

Client Test

rev. 96f5a1b4ad139d2f1ad1e8e40f300e1cd1ff574c (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_int_enums.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 `XmlIntEnums`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct XmlIntEnums;
    6      6   
impl XmlIntEnums {
    7      7   
    /// Creates a new `XmlIntEnums`
    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::xml_int_enums::XmlIntEnumsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::xml_int_enums::XmlIntEnumsOutput::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::xml_int_enums::XmlIntEnumsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::xml_int_enums::XmlIntEnumsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::xml_int_enums::XmlIntEnumsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -104,108 +166,171 @@
  124    128   
                crate::operation::xml_int_enums::XmlIntEnumsError,
  125    129   
            >::new());
  126    130   
  127    131   
        ::std::borrow::Cow::Owned(rcb)
  128    132   
    }
  129    133   
}
  130    134   
  131    135   
#[derive(Debug)]
  132    136   
struct XmlIntEnumsResponseDeserializer;
  133    137   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlIntEnumsResponseDeserializer {
  134         -
    fn deserialize_nonstreaming(
         138  +
    fn deserialize_nonstreaming_with_config(
  135    139   
        &self,
  136    140   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         141  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  137    142   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  138    143   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  139    144   
        let headers = response.headers();
  140    145   
        let body = response.body().bytes().expect("body loaded");
  141    146   
        #[allow(unused_mut)]
  142    147   
        let mut force_error = false;
  143    148   
  144    149   
        let parse_result = if !success && status != 200 || force_error {
  145    150   
            crate::protocol_serde::shape_xml_int_enums::de_xml_int_enums_http_error(status, headers, body)
  146    151   
        } else {
@@ -291,296 +351,360 @@
  311    316   
            .expect("the config must have a deserializer");
  312    317   
  313    318   
        let parsed = de.deserialize_streaming(&mut http_response);
  314    319   
        let parsed = parsed.unwrap_or_else(|| {
  315    320   
            let http_response = http_response.map(|body| {
  316    321   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  317    322   
                    body.bytes().unwrap(),
  318    323   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  319    324   
                )))
  320    325   
            });
  321         -
            de.deserialize_nonstreaming(&http_response)
         326  +
            // Build a config bag with the protocol for schema-based deserialization
         327  +
            #[allow(unused_mut)]
         328  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         329  +
         330  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  322    331   
        });
  323    332   
        let parsed = parsed
  324    333   
            .expect("should be successful response")
  325    334   
            .downcast::<crate::operation::xml_int_enums::XmlIntEnumsOutput>()
  326    335   
            .unwrap();
  327    336   
        ::pretty_assertions::assert_eq!(parsed.int_enum1, expected_output.int_enum1, "Unexpected value for `int_enum1`");
  328    337   
        ::pretty_assertions::assert_eq!(parsed.int_enum2, expected_output.int_enum2, "Unexpected value for `int_enum2`");
  329    338   
        ::pretty_assertions::assert_eq!(parsed.int_enum3, expected_output.int_enum3, "Unexpected value for `int_enum3`");
  330    339   
        ::pretty_assertions::assert_eq!(
  331    340   
            parsed.int_enum_list,

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_int_enums/_xml_int_enums_input.rs

@@ -31,31 +284,273 @@
   51     51   
    "aws.protocoltests.restxml.synthetic",
   52     52   
    "XmlIntEnumsInput",
   53     53   
);
   54     54   
static XMLINTENUMSINPUT_MEMBER_INT_ENUM1: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   55     55   
    ::aws_smithy_schema::ShapeId::from_static(
   56     56   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsInput$intEnum1",
   57     57   
        "aws.protocoltests.restxml.synthetic",
   58     58   
        "XmlIntEnumsInput",
   59     59   
    ),
   60     60   
    ::aws_smithy_schema::ShapeType::Integer,
   61         -
    "int_enum1",
          61  +
    "intEnum1",
   62     62   
    0,
   63     63   
);
   64     64   
static XMLINTENUMSINPUT_MEMBER_INT_ENUM2: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   65     65   
    ::aws_smithy_schema::ShapeId::from_static(
   66     66   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsInput$intEnum2",
   67     67   
        "aws.protocoltests.restxml.synthetic",
   68     68   
        "XmlIntEnumsInput",
   69     69   
    ),
   70     70   
    ::aws_smithy_schema::ShapeType::Integer,
   71         -
    "int_enum2",
          71  +
    "intEnum2",
   72     72   
    1,
   73     73   
);
   74     74   
static XMLINTENUMSINPUT_MEMBER_INT_ENUM3: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   75     75   
    ::aws_smithy_schema::ShapeId::from_static(
   76     76   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsInput$intEnum3",
   77     77   
        "aws.protocoltests.restxml.synthetic",
   78     78   
        "XmlIntEnumsInput",
   79     79   
    ),
   80     80   
    ::aws_smithy_schema::ShapeType::Integer,
   81         -
    "int_enum3",
          81  +
    "intEnum3",
   82     82   
    2,
   83     83   
);
   84     84   
static XMLINTENUMSINPUT_MEMBER_INT_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   85     85   
    ::aws_smithy_schema::ShapeId::from_static(
   86     86   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsInput$intEnumList",
   87     87   
        "aws.protocoltests.restxml.synthetic",
   88     88   
        "XmlIntEnumsInput",
   89     89   
    ),
   90     90   
    ::aws_smithy_schema::ShapeType::List,
   91         -
    "int_enum_list",
          91  +
    "intEnumList",
   92     92   
    3,
   93     93   
);
   94     94   
static XMLINTENUMSINPUT_MEMBER_INT_ENUM_SET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsInput$intEnumSet",
   97     97   
        "aws.protocoltests.restxml.synthetic",
   98     98   
        "XmlIntEnumsInput",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::List,
  101         -
    "int_enum_set",
         101  +
    "intEnumSet",
  102    102   
    4,
  103    103   
);
  104    104   
static XMLINTENUMSINPUT_MEMBER_INT_ENUM_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsInput$intEnumMap",
  107    107   
        "aws.protocoltests.restxml.synthetic",
  108    108   
        "XmlIntEnumsInput",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::Map,
  111         -
    "int_enum_map",
         111  +
    "intEnumMap",
  112    112   
    5,
  113    113   
);
  114    114   
static XMLINTENUMSINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  115    115   
    XMLINTENUMSINPUT_SCHEMA_ID,
  116    116   
    ::aws_smithy_schema::ShapeType::Structure,
  117    117   
    &[
  118    118   
        &XMLINTENUMSINPUT_MEMBER_INT_ENUM1,
  119    119   
        &XMLINTENUMSINPUT_MEMBER_INT_ENUM2,
  120    120   
        &XMLINTENUMSINPUT_MEMBER_INT_ENUM3,
  121    121   
        &XMLINTENUMSINPUT_MEMBER_INT_ENUM_LIST,
  122    122   
        &XMLINTENUMSINPUT_MEMBER_INT_ENUM_SET,
  123    123   
        &XMLINTENUMSINPUT_MEMBER_INT_ENUM_MAP,
  124    124   
    ],
  125         -
);
         125  +
)
         126  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("PUT", "/XmlIntEnums", None));
  126    127   
impl XmlIntEnumsInput {
  127    128   
    /// The schema for this shape.
  128    129   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLINTENUMSINPUT_SCHEMA;
  129    130   
}
  130    131   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlIntEnumsInput {
  131    132   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  132    133   
    fn serialize_members(
  133    134   
        &self,
  134    135   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  135    136   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  136    137   
        if let Some(ref val) = self.int_enum1 {
  137    138   
            ser.write_integer(&XMLINTENUMSINPUT_MEMBER_INT_ENUM1, *val)?;
  138    139   
        }
  139    140   
        if let Some(ref val) = self.int_enum2 {
  140    141   
            ser.write_integer(&XMLINTENUMSINPUT_MEMBER_INT_ENUM2, *val)?;
  141    142   
        }
  142    143   
        if let Some(ref val) = self.int_enum3 {
  143    144   
            ser.write_integer(&XMLINTENUMSINPUT_MEMBER_INT_ENUM3, *val)?;
  144    145   
        }
  145    146   
        if let Some(ref val) = self.int_enum_list {
  146    147   
            ser.write_list(
  147    148   
                &XMLINTENUMSINPUT_MEMBER_INT_ENUM_LIST,
  148    149   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  149    150   
                    for item in val {
  150    151   
                        ser.write_integer(&aws_smithy_schema::prelude::INTEGER, *item)?;
  151    152   
                    }
  152    153   
                    Ok(())
  153    154   
                },
  154    155   
            )?;
  155    156   
        }
  156    157   
        if let Some(ref val) = self.int_enum_set {
  157    158   
            ser.write_list(
  158    159   
                &XMLINTENUMSINPUT_MEMBER_INT_ENUM_SET,
  159    160   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  160    161   
                    for item in val {
  161    162   
                        ser.write_integer(&aws_smithy_schema::prelude::INTEGER, *item)?;
  162    163   
                    }
  163    164   
                    Ok(())
  164    165   
                },
  165    166   
            )?;
  166    167   
        }
  167    168   
        if let Some(ref val) = self.int_enum_map {
  168    169   
            ser.write_map(
  169    170   
                &XMLINTENUMSINPUT_MEMBER_INT_ENUM_MAP,
  170    171   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  171    172   
                    for (key, value) in val {
  172    173   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  173    174   
                        ser.write_integer(&::aws_smithy_schema::prelude::INTEGER, *value)?;
  174    175   
                    }
  175    176   
                    Ok(())
  176    177   
                },
  177    178   
            )?;
  178    179   
        }
  179    180   
        Ok(())
  180    181   
    }
  181    182   
}
  182    183   
impl XmlIntEnumsInput {
  183    184   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  184         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  185         -
        deserializer: &mut D,
         185  +
    pub fn deserialize(
         186  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  186    187   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  187    188   
        #[allow(unused_variables, unused_mut)]
  188    189   
        let mut builder = Self::builder();
  189    190   
        #[allow(
  190    191   
            unused_variables,
  191    192   
            unreachable_code,
  192    193   
            clippy::single_match,
  193    194   
            clippy::match_single_binding,
  194    195   
            clippy::diverging_sub_expression
  195    196   
        )]
  196         -
        deserializer.read_struct(&XMLINTENUMSINPUT_SCHEMA, (), |_, member, deser| {
         197  +
        deserializer.read_struct(&XMLINTENUMSINPUT_SCHEMA, &mut |member, deser| {
  197    198   
            match member.member_index() {
  198    199   
                Some(0) => {
  199    200   
                    builder.int_enum1 = Some(deser.read_integer(member)?);
  200    201   
                }
  201    202   
                Some(1) => {
  202    203   
                    builder.int_enum2 = Some(deser.read_integer(member)?);
  203    204   
                }
  204    205   
                Some(2) => {
  205    206   
                    builder.int_enum3 = Some(deser.read_integer(member)?);
  206    207   
                }
  207    208   
                Some(3) => {
  208         -
                    builder.int_enum_list = Some({
  209         -
                        let container = if let Some(cap) = deser.container_size() {
  210         -
                            Vec::with_capacity(cap)
  211         -
                        } else {
  212         -
                            Vec::new()
  213         -
                        };
  214         -
                        deser.read_list(member, container, |mut list, deser| {
  215         -
                            list.push(deser.read_integer(member)?);
  216         -
                            Ok(list)
  217         -
                        })?
  218         -
                    });
         209  +
                    builder.int_enum_list = Some(deser.read_integer_list(member)?);
  219    210   
                }
  220    211   
                Some(4) => {
  221         -
                    builder.int_enum_set = Some({
  222         -
                        let container = if let Some(cap) = deser.container_size() {
  223         -
                            Vec::with_capacity(cap)
  224         -
                        } else {
  225         -
                            Vec::new()
  226         -
                        };
  227         -
                        deser.read_list(member, container, |mut list, deser| {
  228         -
                            list.push(deser.read_integer(member)?);
  229         -
                            Ok(list)
  230         -
                        })?
  231         -
                    });
         212  +
                    builder.int_enum_set = Some(deser.read_integer_list(member)?);
  232    213   
                }
  233    214   
                Some(5) => {
  234    215   
                    builder.int_enum_map = Some({
  235         -
                        let container = if let Some(cap) = deser.container_size() {
  236         -
                            std::collections::HashMap::with_capacity(cap)
  237         -
                        } else {
  238         -
                            std::collections::HashMap::new()
  239         -
                        };
  240         -
                        deser.read_map(member, container, |mut map, key, deser| {
  241         -
                            map.insert(key, deser.read_integer(member)?);
  242         -
                            Ok(map)
  243         -
                        })?
         216  +
                        let mut container = std::collections::HashMap::new();
         217  +
                        deser.read_map(member, &mut |key, deser| {
         218  +
                            container.insert(key, deser.read_integer(member)?);
         219  +
                            Ok(())
         220  +
                        })?;
         221  +
                        container
  244    222   
                    });
  245    223   
                }
  246    224   
                _ => {}
  247    225   
            }
  248    226   
            Ok(())
  249    227   
        })?;
  250    228   
        builder
  251    229   
            .build()
  252    230   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  253    231   
    }
  254    232   
}
         233  +
impl XmlIntEnumsInput {
         234  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         235  +
    pub fn deserialize_with_response(
         236  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         237  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         238  +
        _status: u16,
         239  +
        _body: &[u8],
         240  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         241  +
        Self::deserialize(deserializer)
         242  +
    }
         243  +
}
  255    244   
impl XmlIntEnumsInput {
  256    245   
    /// Creates a new builder-style object to manufacture [`XmlIntEnumsInput`](crate::operation::xml_int_enums::XmlIntEnumsInput).
  257    246   
    pub fn builder() -> crate::operation::xml_int_enums::builders::XmlIntEnumsInputBuilder {
  258    247   
        crate::operation::xml_int_enums::builders::XmlIntEnumsInputBuilder::default()
  259    248   
    }
  260    249   
}
  261    250   
  262    251   
/// A builder for [`XmlIntEnumsInput`](crate::operation::xml_int_enums::XmlIntEnumsInput).
  263    252   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  264    253   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_int_enums/_xml_int_enums_output.rs

@@ -31,31 +141,141 @@
   51     51   
    "aws.protocoltests.restxml.synthetic",
   52     52   
    "XmlIntEnumsOutput",
   53     53   
);
   54     54   
static XMLINTENUMSOUTPUT_MEMBER_INT_ENUM1: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   55     55   
    ::aws_smithy_schema::ShapeId::from_static(
   56     56   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsOutput$intEnum1",
   57     57   
        "aws.protocoltests.restxml.synthetic",
   58     58   
        "XmlIntEnumsOutput",
   59     59   
    ),
   60     60   
    ::aws_smithy_schema::ShapeType::Integer,
   61         -
    "int_enum1",
          61  +
    "intEnum1",
   62     62   
    0,
   63     63   
);
   64     64   
static XMLINTENUMSOUTPUT_MEMBER_INT_ENUM2: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   65     65   
    ::aws_smithy_schema::ShapeId::from_static(
   66     66   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsOutput$intEnum2",
   67     67   
        "aws.protocoltests.restxml.synthetic",
   68     68   
        "XmlIntEnumsOutput",
   69     69   
    ),
   70     70   
    ::aws_smithy_schema::ShapeType::Integer,
   71         -
    "int_enum2",
          71  +
    "intEnum2",
   72     72   
    1,
   73     73   
);
   74     74   
static XMLINTENUMSOUTPUT_MEMBER_INT_ENUM3: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   75     75   
    ::aws_smithy_schema::ShapeId::from_static(
   76     76   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsOutput$intEnum3",
   77     77   
        "aws.protocoltests.restxml.synthetic",
   78     78   
        "XmlIntEnumsOutput",
   79     79   
    ),
   80     80   
    ::aws_smithy_schema::ShapeType::Integer,
   81         -
    "int_enum3",
          81  +
    "intEnum3",
   82     82   
    2,
   83     83   
);
   84     84   
static XMLINTENUMSOUTPUT_MEMBER_INT_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   85     85   
    ::aws_smithy_schema::ShapeId::from_static(
   86     86   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsOutput$intEnumList",
   87     87   
        "aws.protocoltests.restxml.synthetic",
   88     88   
        "XmlIntEnumsOutput",
   89     89   
    ),
   90     90   
    ::aws_smithy_schema::ShapeType::List,
   91         -
    "int_enum_list",
          91  +
    "intEnumList",
   92     92   
    3,
   93     93   
);
   94     94   
static XMLINTENUMSOUTPUT_MEMBER_INT_ENUM_SET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsOutput$intEnumSet",
   97     97   
        "aws.protocoltests.restxml.synthetic",
   98     98   
        "XmlIntEnumsOutput",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::List,
  101         -
    "int_enum_set",
         101  +
    "intEnumSet",
  102    102   
    4,
  103    103   
);
  104    104   
static XMLINTENUMSOUTPUT_MEMBER_INT_ENUM_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "aws.protocoltests.restxml.synthetic#XmlIntEnumsOutput$intEnumMap",
  107    107   
        "aws.protocoltests.restxml.synthetic",
  108    108   
        "XmlIntEnumsOutput",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::Map,
  111         -
    "int_enum_map",
         111  +
    "intEnumMap",
  112    112   
    5,
  113    113   
);
  114    114   
static XMLINTENUMSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  115    115   
    XMLINTENUMSOUTPUT_SCHEMA_ID,
  116    116   
    ::aws_smithy_schema::ShapeType::Structure,
  117    117   
    &[
  118    118   
        &XMLINTENUMSOUTPUT_MEMBER_INT_ENUM1,
  119    119   
        &XMLINTENUMSOUTPUT_MEMBER_INT_ENUM2,
  120    120   
        &XMLINTENUMSOUTPUT_MEMBER_INT_ENUM3,
  121    121   
        &XMLINTENUMSOUTPUT_MEMBER_INT_ENUM_LIST,
@@ -154,154 +282,270 @@
  174    174   
                    }
  175    175   
                    Ok(())
  176    176   
                },
  177    177   
            )?;
  178    178   
        }
  179    179   
        Ok(())
  180    180   
    }
  181    181   
}
  182    182   
impl XmlIntEnumsOutput {
  183    183   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  184         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  185         -
        deserializer: &mut D,
         184  +
    pub fn deserialize(
         185  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  186    186   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  187    187   
        #[allow(unused_variables, unused_mut)]
  188    188   
        let mut builder = Self::builder();
  189    189   
        #[allow(
  190    190   
            unused_variables,
  191    191   
            unreachable_code,
  192    192   
            clippy::single_match,
  193    193   
            clippy::match_single_binding,
  194    194   
            clippy::diverging_sub_expression
  195    195   
        )]
  196         -
        deserializer.read_struct(&XMLINTENUMSOUTPUT_SCHEMA, (), |_, member, deser| {
         196  +
        deserializer.read_struct(&XMLINTENUMSOUTPUT_SCHEMA, &mut |member, deser| {
  197    197   
            match member.member_index() {
  198    198   
                Some(0) => {
  199    199   
                    builder.int_enum1 = Some(deser.read_integer(member)?);
  200    200   
                }
  201    201   
                Some(1) => {
  202    202   
                    builder.int_enum2 = Some(deser.read_integer(member)?);
  203    203   
                }
  204    204   
                Some(2) => {
  205    205   
                    builder.int_enum3 = Some(deser.read_integer(member)?);
  206    206   
                }
  207    207   
                Some(3) => {
  208         -
                    builder.int_enum_list = Some({
  209         -
                        let container = if let Some(cap) = deser.container_size() {
  210         -
                            Vec::with_capacity(cap)
  211         -
                        } else {
  212         -
                            Vec::new()
  213         -
                        };
  214         -
                        deser.read_list(member, container, |mut list, deser| {
  215         -
                            list.push(deser.read_integer(member)?);
  216         -
                            Ok(list)
  217         -
                        })?
  218         -
                    });
         208  +
                    builder.int_enum_list = Some(deser.read_integer_list(member)?);
  219    209   
                }
  220    210   
                Some(4) => {
  221         -
                    builder.int_enum_set = Some({
  222         -
                        let container = if let Some(cap) = deser.container_size() {
  223         -
                            Vec::with_capacity(cap)
  224         -
                        } else {
  225         -
                            Vec::new()
  226         -
                        };
  227         -
                        deser.read_list(member, container, |mut list, deser| {
  228         -
                            list.push(deser.read_integer(member)?);
  229         -
                            Ok(list)
  230         -
                        })?
  231         -
                    });
         211  +
                    builder.int_enum_set = Some(deser.read_integer_list(member)?);
  232    212   
                }
  233    213   
                Some(5) => {
  234    214   
                    builder.int_enum_map = Some({
  235         -
                        let container = if let Some(cap) = deser.container_size() {
  236         -
                            std::collections::HashMap::with_capacity(cap)
  237         -
                        } else {
  238         -
                            std::collections::HashMap::new()
  239         -
                        };
  240         -
                        deser.read_map(member, container, |mut map, key, deser| {
  241         -
                            map.insert(key, deser.read_integer(member)?);
  242         -
                            Ok(map)
  243         -
                        })?
         215  +
                        let mut container = std::collections::HashMap::new();
         216  +
                        deser.read_map(member, &mut |key, deser| {
         217  +
                            container.insert(key, deser.read_integer(member)?);
         218  +
                            Ok(())
         219  +
                        })?;
         220  +
                        container
  244    221   
                    });
  245    222   
                }
  246    223   
                _ => {}
  247    224   
            }
  248    225   
            Ok(())
  249    226   
        })?;
  250    227   
        Ok(builder.build())
  251    228   
    }
  252    229   
}
         230  +
impl XmlIntEnumsOutput {
         231  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         232  +
    pub fn deserialize_with_response(
         233  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         234  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         235  +
        _status: u16,
         236  +
        _body: &[u8],
         237  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         238  +
        Self::deserialize(deserializer)
         239  +
    }
         240  +
}
  253    241   
impl XmlIntEnumsOutput {
  254    242   
    /// Creates a new builder-style object to manufacture [`XmlIntEnumsOutput`](crate::operation::xml_int_enums::XmlIntEnumsOutput).
  255    243   
    pub fn builder() -> crate::operation::xml_int_enums::builders::XmlIntEnumsOutputBuilder {
  256    244   
        crate::operation::xml_int_enums::builders::XmlIntEnumsOutputBuilder::default()
  257    245   
    }
  258    246   
}
  259    247   
  260    248   
/// A builder for [`XmlIntEnumsOutput`](crate::operation::xml_int_enums::XmlIntEnumsOutput).
  261    249   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  262    250   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_lists.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 `XmlLists`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct XmlLists;
    6      6   
impl XmlLists {
    7      7   
    /// Creates a new `XmlLists`
    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::xml_lists::XmlListsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::xml_lists::XmlListsOutput::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::xml_lists::XmlListsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::xml_lists::XmlListsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::xml_lists::XmlListsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -100,104 +162,167 @@
  120    124   
                crate::operation::xml_lists::XmlListsError,
  121    125   
            >::new());
  122    126   
  123    127   
        ::std::borrow::Cow::Owned(rcb)
  124    128   
    }
  125    129   
}
  126    130   
  127    131   
#[derive(Debug)]
  128    132   
struct XmlListsResponseDeserializer;
  129    133   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlListsResponseDeserializer {
  130         -
    fn deserialize_nonstreaming(
         134  +
    fn deserialize_nonstreaming_with_config(
  131    135   
        &self,
  132    136   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         137  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  133    138   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  134    139   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  135    140   
        let headers = response.headers();
  136    141   
        let body = response.body().bytes().expect("body loaded");
  137    142   
        #[allow(unused_mut)]
  138    143   
        let mut force_error = false;
  139    144   
  140    145   
        let parse_result = if !success && status != 200 || force_error {
  141    146   
            crate::protocol_serde::shape_xml_lists::de_xml_lists_http_error(status, headers, body)
  142    147   
        } else {
@@ -345,350 +405,414 @@
  365    370   
            .expect("the config must have a deserializer");
  366    371   
  367    372   
        let parsed = de.deserialize_streaming(&mut http_response);
  368    373   
        let parsed = parsed.unwrap_or_else(|| {
  369    374   
            let http_response = http_response.map(|body| {
  370    375   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  371    376   
                    body.bytes().unwrap(),
  372    377   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  373    378   
                )))
  374    379   
            });
  375         -
            de.deserialize_nonstreaming(&http_response)
         380  +
            // Build a config bag with the protocol for schema-based deserialization
         381  +
            #[allow(unused_mut)]
         382  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         383  +
         384  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  376    385   
        });
  377    386   
        let parsed = parsed
  378    387   
            .expect("should be successful response")
  379    388   
            .downcast::<crate::operation::xml_lists::XmlListsOutput>()
  380    389   
            .unwrap();
  381    390   
        ::pretty_assertions::assert_eq!(parsed.string_list, expected_output.string_list, "Unexpected value for `string_list`");
  382    391   
        ::pretty_assertions::assert_eq!(parsed.string_set, expected_output.string_set, "Unexpected value for `string_set`");
  383    392   
        ::pretty_assertions::assert_eq!(parsed.integer_list, expected_output.integer_list, "Unexpected value for `integer_list`");
  384    393   
        ::pretty_assertions::assert_eq!(parsed.boolean_list, expected_output.boolean_list, "Unexpected value for `boolean_list`");
  385    394   
        ::pretty_assertions::assert_eq!(

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_lists/_xml_lists_input.rs

@@ -111,111 +342,343 @@
  131    131   
    "aws.protocoltests.restxml.synthetic",
  132    132   
    "XmlListsInput",
  133    133   
);
  134    134   
static XMLLISTSINPUT_MEMBER_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$stringList",
  137    137   
        "aws.protocoltests.restxml.synthetic",
  138    138   
        "XmlListsInput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::List,
  141         -
    "string_list",
         141  +
    "stringList",
  142    142   
    0,
  143    143   
);
  144    144   
static XMLLISTSINPUT_MEMBER_STRING_SET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$stringSet",
  147    147   
        "aws.protocoltests.restxml.synthetic",
  148    148   
        "XmlListsInput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::List,
  151         -
    "string_set",
         151  +
    "stringSet",
  152    152   
    1,
  153    153   
);
  154    154   
static XMLLISTSINPUT_MEMBER_INTEGER_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  155    155   
    ::aws_smithy_schema::ShapeId::from_static(
  156    156   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$integerList",
  157    157   
        "aws.protocoltests.restxml.synthetic",
  158    158   
        "XmlListsInput",
  159    159   
    ),
  160    160   
    ::aws_smithy_schema::ShapeType::List,
  161         -
    "integer_list",
         161  +
    "integerList",
  162    162   
    2,
  163    163   
);
  164    164   
static XMLLISTSINPUT_MEMBER_BOOLEAN_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  165    165   
    ::aws_smithy_schema::ShapeId::from_static(
  166    166   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$booleanList",
  167    167   
        "aws.protocoltests.restxml.synthetic",
  168    168   
        "XmlListsInput",
  169    169   
    ),
  170    170   
    ::aws_smithy_schema::ShapeType::List,
  171         -
    "boolean_list",
         171  +
    "booleanList",
  172    172   
    3,
  173    173   
);
  174    174   
static XMLLISTSINPUT_MEMBER_TIMESTAMP_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  175    175   
    ::aws_smithy_schema::ShapeId::from_static(
  176    176   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$timestampList",
  177    177   
        "aws.protocoltests.restxml.synthetic",
  178    178   
        "XmlListsInput",
  179    179   
    ),
  180    180   
    ::aws_smithy_schema::ShapeType::List,
  181         -
    "timestamp_list",
         181  +
    "timestampList",
  182    182   
    4,
  183    183   
);
  184    184   
static XMLLISTSINPUT_MEMBER_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  185    185   
    ::aws_smithy_schema::ShapeId::from_static(
  186    186   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$enumList",
  187    187   
        "aws.protocoltests.restxml.synthetic",
  188    188   
        "XmlListsInput",
  189    189   
    ),
  190    190   
    ::aws_smithy_schema::ShapeType::List,
  191         -
    "enum_list",
         191  +
    "enumList",
  192    192   
    5,
  193    193   
);
  194    194   
static XMLLISTSINPUT_MEMBER_INT_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  195    195   
    ::aws_smithy_schema::ShapeId::from_static(
  196    196   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$intEnumList",
  197    197   
        "aws.protocoltests.restxml.synthetic",
  198    198   
        "XmlListsInput",
  199    199   
    ),
  200    200   
    ::aws_smithy_schema::ShapeType::List,
  201         -
    "int_enum_list",
         201  +
    "intEnumList",
  202    202   
    6,
  203    203   
);
  204    204   
static XMLLISTSINPUT_MEMBER_NESTED_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  205    205   
    ::aws_smithy_schema::ShapeId::from_static(
  206    206   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$nestedStringList",
  207    207   
        "aws.protocoltests.restxml.synthetic",
  208    208   
        "XmlListsInput",
  209    209   
    ),
  210    210   
    ::aws_smithy_schema::ShapeType::List,
  211         -
    "nested_string_list",
         211  +
    "nestedStringList",
  212    212   
    7,
  213    213   
);
  214    214   
static XMLLISTSINPUT_MEMBER_RENAMED_LIST_MEMBERS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  215    215   
    ::aws_smithy_schema::ShapeId::from_static(
  216    216   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$renamedListMembers",
  217    217   
        "aws.protocoltests.restxml.synthetic",
  218    218   
        "XmlListsInput",
  219    219   
    ),
  220    220   
    ::aws_smithy_schema::ShapeType::List,
  221         -
    "renamed_list_members",
         221  +
    "renamedListMembers",
  222    222   
    8,
  223    223   
)
  224    224   
.with_xml_name("renamed");
  225    225   
static XMLLISTSINPUT_MEMBER_FLATTENED_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  226    226   
    ::aws_smithy_schema::ShapeId::from_static(
  227    227   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$flattenedList",
  228    228   
        "aws.protocoltests.restxml.synthetic",
  229    229   
        "XmlListsInput",
  230    230   
    ),
  231    231   
    ::aws_smithy_schema::ShapeType::List,
  232         -
    "flattened_list",
         232  +
    "flattenedList",
  233    233   
    9,
  234    234   
)
  235    235   
.with_xml_flattened();
  236    236   
static XMLLISTSINPUT_MEMBER_FLATTENED_LIST2: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  237    237   
    ::aws_smithy_schema::ShapeId::from_static(
  238    238   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$flattenedList2",
  239    239   
        "aws.protocoltests.restxml.synthetic",
  240    240   
        "XmlListsInput",
  241    241   
    ),
  242    242   
    ::aws_smithy_schema::ShapeType::List,
  243         -
    "flattened_list2",
         243  +
    "flattenedList2",
  244    244   
    10,
  245    245   
)
  246    246   
.with_xml_name("customName")
  247    247   
.with_xml_flattened();
  248    248   
static XMLLISTSINPUT_MEMBER_FLATTENED_LIST_WITH_MEMBER_NAMESPACE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  249    249   
    ::aws_smithy_schema::ShapeId::from_static(
  250    250   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$flattenedListWithMemberNamespace",
  251    251   
        "aws.protocoltests.restxml.synthetic",
  252    252   
        "XmlListsInput",
  253    253   
    ),
  254    254   
    ::aws_smithy_schema::ShapeType::List,
  255         -
    "flattened_list_with_member_namespace",
         255  +
    "flattenedListWithMemberNamespace",
  256    256   
    11,
  257    257   
)
  258    258   
.with_xml_flattened();
  259    259   
static XMLLISTSINPUT_MEMBER_FLATTENED_LIST_WITH_NAMESPACE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  260    260   
    ::aws_smithy_schema::ShapeId::from_static(
  261    261   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$flattenedListWithNamespace",
  262    262   
        "aws.protocoltests.restxml.synthetic",
  263    263   
        "XmlListsInput",
  264    264   
    ),
  265    265   
    ::aws_smithy_schema::ShapeType::List,
  266         -
    "flattened_list_with_namespace",
         266  +
    "flattenedListWithNamespace",
  267    267   
    12,
  268    268   
)
  269    269   
.with_xml_flattened();
  270    270   
static XMLLISTSINPUT_MEMBER_STRUCTURE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  271    271   
    ::aws_smithy_schema::ShapeId::from_static(
  272    272   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$structureList",
  273    273   
        "aws.protocoltests.restxml.synthetic",
  274    274   
        "XmlListsInput",
  275    275   
    ),
  276    276   
    ::aws_smithy_schema::ShapeType::List,
  277         -
    "structure_list",
         277  +
    "structureList",
  278    278   
    13,
  279    279   
)
  280    280   
.with_xml_name("myStructureList");
  281    281   
static XMLLISTSINPUT_MEMBER_FLATTENED_STRUCTURE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  282    282   
    ::aws_smithy_schema::ShapeId::from_static(
  283    283   
        "aws.protocoltests.restxml.synthetic#XmlListsInput$flattenedStructureList",
  284    284   
        "aws.protocoltests.restxml.synthetic",
  285    285   
        "XmlListsInput",
  286    286   
    ),
  287    287   
    ::aws_smithy_schema::ShapeType::List,
  288         -
    "flattened_structure_list",
         288  +
    "flattenedStructureList",
  289    289   
    14,
  290    290   
)
  291    291   
.with_xml_flattened();
  292    292   
static XMLLISTSINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  293    293   
    XMLLISTSINPUT_SCHEMA_ID,
  294    294   
    ::aws_smithy_schema::ShapeType::Structure,
  295    295   
    &[
  296    296   
        &XMLLISTSINPUT_MEMBER_STRING_LIST,
  297    297   
        &XMLLISTSINPUT_MEMBER_STRING_SET,
  298    298   
        &XMLLISTSINPUT_MEMBER_INTEGER_LIST,
  299    299   
        &XMLLISTSINPUT_MEMBER_BOOLEAN_LIST,
  300    300   
        &XMLLISTSINPUT_MEMBER_TIMESTAMP_LIST,
  301    301   
        &XMLLISTSINPUT_MEMBER_ENUM_LIST,
  302    302   
        &XMLLISTSINPUT_MEMBER_INT_ENUM_LIST,
  303    303   
        &XMLLISTSINPUT_MEMBER_NESTED_STRING_LIST,
  304    304   
        &XMLLISTSINPUT_MEMBER_RENAMED_LIST_MEMBERS,
  305    305   
        &XMLLISTSINPUT_MEMBER_FLATTENED_LIST,
  306    306   
        &XMLLISTSINPUT_MEMBER_FLATTENED_LIST2,
  307    307   
        &XMLLISTSINPUT_MEMBER_FLATTENED_LIST_WITH_MEMBER_NAMESPACE,
  308    308   
        &XMLLISTSINPUT_MEMBER_FLATTENED_LIST_WITH_NAMESPACE,
  309    309   
        &XMLLISTSINPUT_MEMBER_STRUCTURE_LIST,
  310    310   
        &XMLLISTSINPUT_MEMBER_FLATTENED_STRUCTURE_LIST,
  311    311   
    ],
  312         -
);
         312  +
)
         313  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("PUT", "/XmlLists", None));
  313    314   
impl XmlListsInput {
  314    315   
    /// The schema for this shape.
  315    316   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLLISTSINPUT_SCHEMA;
  316    317   
}
  317    318   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlListsInput {
  318    319   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  319    320   
    fn serialize_members(
  320    321   
        &self,
  321    322   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  322    323   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
@@ -375,376 +435,444 @@
  395    396   
                    }
  396    397   
                    Ok(())
  397    398   
                },
  398    399   
            )?;
  399    400   
        }
  400    401   
        if let Some(ref val) = self.nested_string_list {
  401    402   
            ser.write_list(
  402    403   
                &XMLLISTSINPUT_MEMBER_NESTED_STRING_LIST,
  403    404   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  404    405   
                    for item in val {
  405         -
                        todo!("schema: unsupported list element type");
         406  +
                        ser.write_list(
         407  +
                            &::aws_smithy_schema::prelude::DOCUMENT,
         408  +
                            &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         409  +
                                for item in item {
         410  +
                                    ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
         411  +
                                }
         412  +
                                Ok(())
         413  +
                            },
         414  +
                        )?;
  406    415   
                    }
  407    416   
                    Ok(())
  408    417   
                },
  409    418   
            )?;
  410    419   
        }
  411    420   
        if let Some(ref val) = self.renamed_list_members {
  412    421   
            ser.write_list(
  413    422   
                &XMLLISTSINPUT_MEMBER_RENAMED_LIST_MEMBERS,
  414    423   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  415    424   
                    for item in val {
@@ -463,472 +740,659 @@
  483    492   
                    }
  484    493   
                    Ok(())
  485    494   
                },
  486    495   
            )?;
  487    496   
        }
  488    497   
        Ok(())
  489    498   
    }
  490    499   
}
  491    500   
impl XmlListsInput {
  492    501   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  493         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  494         -
        deserializer: &mut D,
         502  +
    pub fn deserialize(
         503  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  495    504   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  496    505   
        #[allow(unused_variables, unused_mut)]
  497    506   
        let mut builder = Self::builder();
  498    507   
        #[allow(
  499    508   
            unused_variables,
  500    509   
            unreachable_code,
  501    510   
            clippy::single_match,
  502    511   
            clippy::match_single_binding,
  503    512   
            clippy::diverging_sub_expression
  504    513   
        )]
  505         -
        deserializer.read_struct(&XMLLISTSINPUT_SCHEMA, (), |_, member, deser| {
         514  +
        deserializer.read_struct(&XMLLISTSINPUT_SCHEMA, &mut |member, deser| {
  506    515   
            match member.member_index() {
  507    516   
                Some(0) => {
  508         -
                    builder.string_list = Some({
  509         -
                        let container = if let Some(cap) = deser.container_size() {
  510         -
                            Vec::with_capacity(cap)
  511         -
                        } else {
  512         -
                            Vec::new()
  513         -
                        };
  514         -
                        deser.read_list(member, container, |mut list, deser| {
  515         -
                            list.push(deser.read_string(member)?);
  516         -
                            Ok(list)
  517         -
                        })?
  518         -
                    });
         517  +
                    builder.string_list = Some(deser.read_string_list(member)?);
  519    518   
                }
  520    519   
                Some(1) => {
  521         -
                    builder.string_set = Some({
  522         -
                        let container = if let Some(cap) = deser.container_size() {
  523         -
                            Vec::with_capacity(cap)
  524         -
                        } else {
  525         -
                            Vec::new()
  526         -
                        };
  527         -
                        deser.read_list(member, container, |mut list, deser| {
  528         -
                            list.push(deser.read_string(member)?);
  529         -
                            Ok(list)
  530         -
                        })?
  531         -
                    });
         520  +
                    builder.string_set = Some(deser.read_string_list(member)?);
  532    521   
                }
  533    522   
                Some(2) => {
  534         -
                    builder.integer_list = Some({
  535         -
                        let container = if let Some(cap) = deser.container_size() {
  536         -
                            Vec::with_capacity(cap)
  537         -
                        } else {
  538         -
                            Vec::new()
  539         -
                        };
  540         -
                        deser.read_list(member, container, |mut list, deser| {
  541         -
                            list.push(deser.read_integer(member)?);
  542         -
                            Ok(list)
  543         -
                        })?
  544         -
                    });
         523  +
                    builder.integer_list = Some(deser.read_integer_list(member)?);
  545    524   
                }
  546    525   
                Some(3) => {
  547    526   
                    builder.boolean_list = Some({
  548         -
                        let container = if let Some(cap) = deser.container_size() {
  549         -
                            Vec::with_capacity(cap)
  550         -
                        } else {
  551         -
                            Vec::new()
  552         -
                        };
  553         -
                        deser.read_list(member, container, |mut list, deser| {
  554         -
                            list.push(deser.read_boolean(member)?);
  555         -
                            Ok(list)
  556         -
                        })?
         527  +
                        let mut container = Vec::new();
         528  +
                        deser.read_list(member, &mut |deser| {
         529  +
                            container.push(deser.read_boolean(member)?);
         530  +
                            Ok(())
         531  +
                        })?;
         532  +
                        container
  557    533   
                    });
  558    534   
                }
  559    535   
                Some(4) => {
  560    536   
                    builder.timestamp_list = Some({
  561         -
                        let container = if let Some(cap) = deser.container_size() {
  562         -
                            Vec::with_capacity(cap)
  563         -
                        } else {
  564         -
                            Vec::new()
  565         -
                        };
  566         -
                        deser.read_list(member, container, |mut list, deser| {
  567         -
                            list.push(deser.read_timestamp(member)?);
  568         -
                            Ok(list)
  569         -
                        })?
         537  +
                        let mut container = Vec::new();
         538  +
                        deser.read_list(member, &mut |deser| {
         539  +
                            container.push(deser.read_timestamp(member)?);
         540  +
                            Ok(())
         541  +
                        })?;
         542  +
                        container
  570    543   
                    });
  571    544   
                }
  572    545   
                Some(5) => {
  573    546   
                    builder.enum_list = Some({
  574         -
                        let container = if let Some(cap) = deser.container_size() {
  575         -
                            Vec::with_capacity(cap)
  576         -
                        } else {
  577         -
                            Vec::new()
  578         -
                        };
  579         -
                        deser.read_list(member, container, |mut list, deser| {
  580         -
                            list.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  581         -
                            Ok(list)
  582         -
                        })?
         547  +
                        let mut container = Vec::new();
         548  +
                        deser.read_list(member, &mut |deser| {
         549  +
                            container.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
         550  +
                            Ok(())
         551  +
                        })?;
         552  +
                        container
  583    553   
                    });
  584    554   
                }
  585    555   
                Some(6) => {
  586         -
                    builder.int_enum_list = Some({
  587         -
                        let container = if let Some(cap) = deser.container_size() {
  588         -
                            Vec::with_capacity(cap)
  589         -
                        } else {
  590         -
                            Vec::new()
  591         -
                        };
  592         -
                        deser.read_list(member, container, |mut list, deser| {
  593         -
                            list.push(deser.read_integer(member)?);
  594         -
                            Ok(list)
  595         -
                        })?
  596         -
                    });
         556  +
                    builder.int_enum_list = Some(deser.read_integer_list(member)?);
  597    557   
                }
  598    558   
                Some(7) => {
  599    559   
                    builder.nested_string_list = Some({
  600         -
                        let container = if let Some(cap) = deser.container_size() {
  601         -
                            Vec::with_capacity(cap)
  602         -
                        } else {
  603         -
                            Vec::new()
  604         -
                        };
  605         -
                        deser.read_list(member, container, |mut list, deser| {
  606         -
                            list.push(todo!("deserialize nested aggregate"));
  607         -
                            Ok(list)
  608         -
                        })?
         560  +
                        let mut container = Vec::new();
         561  +
                        deser.read_list(member, &mut |deser| {
         562  +
                            container.push({
         563  +
                                let mut list = Vec::new();
         564  +
                                deser.read_list(member, &mut |deser| {
         565  +
                                    list.push(deser.read_string(&::aws_smithy_schema::prelude::DOCUMENT)?);
         566  +
                                    Ok(())
         567  +
                                })?;
         568  +
                                list
         569  +
                            });
         570  +
                            Ok(())
         571  +
                        })?;
         572  +
                        container
  609    573   
                    });
  610    574   
                }
  611    575   
                Some(8) => {
  612         -
                    builder.renamed_list_members = Some({
  613         -
                        let container = if let Some(cap) = deser.container_size() {
  614         -
                            Vec::with_capacity(cap)
  615         -
                        } else {
  616         -
                            Vec::new()
  617         -
                        };
  618         -
                        deser.read_list(member, container, |mut list, deser| {
  619         -
                            list.push(deser.read_string(member)?);
  620         -
                            Ok(list)
  621         -
                        })?
  622         -
                    });
         576  +
                    builder.renamed_list_members = Some(deser.read_string_list(member)?);
  623    577   
                }
  624    578   
                Some(9) => {
  625         -
                    builder.flattened_list = Some({
  626         -
                        let container = if let Some(cap) = deser.container_size() {
  627         -
                            Vec::with_capacity(cap)
  628         -
                        } else {
  629         -
                            Vec::new()
  630         -
                        };
  631         -
                        deser.read_list(member, container, |mut list, deser| {
  632         -
                            list.push(deser.read_string(member)?);
  633         -
                            Ok(list)
  634         -
                        })?
  635         -
                    });
         579  +
                    builder.flattened_list = Some(deser.read_string_list(member)?);
  636    580   
                }
  637    581   
                Some(10) => {
  638         -
                    builder.flattened_list2 = Some({
  639         -
                        let container = if let Some(cap) = deser.container_size() {
  640         -
                            Vec::with_capacity(cap)
  641         -
                        } else {
  642         -
                            Vec::new()
  643         -
                        };
  644         -
                        deser.read_list(member, container, |mut list, deser| {
  645         -
                            list.push(deser.read_string(member)?);
  646         -
                            Ok(list)
  647         -
                        })?
  648         -
                    });
         582  +
                    builder.flattened_list2 = Some(deser.read_string_list(member)?);
  649    583   
                }
  650    584   
                Some(11) => {
  651         -
                    builder.flattened_list_with_member_namespace = Some({
  652         -
                        let container = if let Some(cap) = deser.container_size() {
  653         -
                            Vec::with_capacity(cap)
  654         -
                        } else {
  655         -
                            Vec::new()
  656         -
                        };
  657         -
                        deser.read_list(member, container, |mut list, deser| {
  658         -
                            list.push(deser.read_string(member)?);
  659         -
                            Ok(list)
  660         -
                        })?
  661         -
                    });
         585  +
                    builder.flattened_list_with_member_namespace = Some(deser.read_string_list(member)?);
  662    586   
                }
  663    587   
                Some(12) => {
  664         -
                    builder.flattened_list_with_namespace = Some({
  665         -
                        let container = if let Some(cap) = deser.container_size() {
  666         -
                            Vec::with_capacity(cap)
  667         -
                        } else {
  668         -
                            Vec::new()
  669         -
                        };
  670         -
                        deser.read_list(member, container, |mut list, deser| {
  671         -
                            list.push(deser.read_string(member)?);
  672         -
                            Ok(list)
  673         -
                        })?
  674         -
                    });
         588  +
                    builder.flattened_list_with_namespace = Some(deser.read_string_list(member)?);
  675    589   
                }
  676    590   
                Some(13) => {
  677    591   
                    builder.structure_list = Some({
  678         -
                        let container = if let Some(cap) = deser.container_size() {
  679         -
                            Vec::with_capacity(cap)
  680         -
                        } else {
  681         -
                            Vec::new()
  682         -
                        };
  683         -
                        deser.read_list(member, container, |mut list, deser| {
  684         -
                            list.push(crate::types::StructureListMember::deserialize(deser)?);
  685         -
                            Ok(list)
  686         -
                        })?
         592  +
                        let mut container = Vec::new();
         593  +
                        deser.read_list(member, &mut |deser| {
         594  +
                            container.push(crate::types::StructureListMember::deserialize(deser)?);
         595  +
                            Ok(())
         596  +
                        })?;
         597  +
                        container
  687    598   
                    });
  688    599   
                }
  689    600   
                Some(14) => {
  690    601   
                    builder.flattened_structure_list = Some({
  691         -
                        let container = if let Some(cap) = deser.container_size() {
  692         -
                            Vec::with_capacity(cap)
  693         -
                        } else {
  694         -
                            Vec::new()
  695         -
                        };
  696         -
                        deser.read_list(member, container, |mut list, deser| {
  697         -
                            list.push(crate::types::StructureListMember::deserialize(deser)?);
  698         -
                            Ok(list)
  699         -
                        })?
         602  +
                        let mut container = Vec::new();
         603  +
                        deser.read_list(member, &mut |deser| {
         604  +
                            container.push(crate::types::StructureListMember::deserialize(deser)?);
         605  +
                            Ok(())
         606  +
                        })?;
         607  +
                        container
  700    608   
                    });
  701    609   
                }
  702    610   
                _ => {}
  703    611   
            }
  704    612   
            Ok(())
  705    613   
        })?;
  706    614   
        builder
  707    615   
            .build()
  708    616   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  709    617   
    }
  710    618   
}
         619  +
impl XmlListsInput {
         620  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         621  +
    pub fn deserialize_with_response(
         622  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         623  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         624  +
        _status: u16,
         625  +
        _body: &[u8],
         626  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         627  +
        Self::deserialize(deserializer)
         628  +
    }
         629  +
}
  711    630   
impl XmlListsInput {
  712    631   
    /// Creates a new builder-style object to manufacture [`XmlListsInput`](crate::operation::xml_lists::XmlListsInput).
  713    632   
    pub fn builder() -> crate::operation::xml_lists::builders::XmlListsInputBuilder {
  714    633   
        crate::operation::xml_lists::builders::XmlListsInputBuilder::default()
  715    634   
    }
  716    635   
}
  717    636   
  718    637   
/// A builder for [`XmlListsInput`](crate::operation::xml_lists::XmlListsInput).
  719    638   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  720    639   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_lists/_xml_lists_output.rs

@@ -111,111 +318,318 @@
  131    131   
    "aws.protocoltests.restxml.synthetic",
  132    132   
    "XmlListsOutput",
  133    133   
);
  134    134   
static XMLLISTSOUTPUT_MEMBER_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$stringList",
  137    137   
        "aws.protocoltests.restxml.synthetic",
  138    138   
        "XmlListsOutput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::List,
  141         -
    "string_list",
         141  +
    "stringList",
  142    142   
    0,
  143    143   
);
  144    144   
static XMLLISTSOUTPUT_MEMBER_STRING_SET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$stringSet",
  147    147   
        "aws.protocoltests.restxml.synthetic",
  148    148   
        "XmlListsOutput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::List,
  151         -
    "string_set",
         151  +
    "stringSet",
  152    152   
    1,
  153    153   
);
  154    154   
static XMLLISTSOUTPUT_MEMBER_INTEGER_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  155    155   
    ::aws_smithy_schema::ShapeId::from_static(
  156    156   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$integerList",
  157    157   
        "aws.protocoltests.restxml.synthetic",
  158    158   
        "XmlListsOutput",
  159    159   
    ),
  160    160   
    ::aws_smithy_schema::ShapeType::List,
  161         -
    "integer_list",
         161  +
    "integerList",
  162    162   
    2,
  163    163   
);
  164    164   
static XMLLISTSOUTPUT_MEMBER_BOOLEAN_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  165    165   
    ::aws_smithy_schema::ShapeId::from_static(
  166    166   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$booleanList",
  167    167   
        "aws.protocoltests.restxml.synthetic",
  168    168   
        "XmlListsOutput",
  169    169   
    ),
  170    170   
    ::aws_smithy_schema::ShapeType::List,
  171         -
    "boolean_list",
         171  +
    "booleanList",
  172    172   
    3,
  173    173   
);
  174    174   
static XMLLISTSOUTPUT_MEMBER_TIMESTAMP_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  175    175   
    ::aws_smithy_schema::ShapeId::from_static(
  176    176   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$timestampList",
  177    177   
        "aws.protocoltests.restxml.synthetic",
  178    178   
        "XmlListsOutput",
  179    179   
    ),
  180    180   
    ::aws_smithy_schema::ShapeType::List,
  181         -
    "timestamp_list",
         181  +
    "timestampList",
  182    182   
    4,
  183    183   
);
  184    184   
static XMLLISTSOUTPUT_MEMBER_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  185    185   
    ::aws_smithy_schema::ShapeId::from_static(
  186    186   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$enumList",
  187    187   
        "aws.protocoltests.restxml.synthetic",
  188    188   
        "XmlListsOutput",
  189    189   
    ),
  190    190   
    ::aws_smithy_schema::ShapeType::List,
  191         -
    "enum_list",
         191  +
    "enumList",
  192    192   
    5,
  193    193   
);
  194    194   
static XMLLISTSOUTPUT_MEMBER_INT_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  195    195   
    ::aws_smithy_schema::ShapeId::from_static(
  196    196   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$intEnumList",
  197    197   
        "aws.protocoltests.restxml.synthetic",
  198    198   
        "XmlListsOutput",
  199    199   
    ),
  200    200   
    ::aws_smithy_schema::ShapeType::List,
  201         -
    "int_enum_list",
         201  +
    "intEnumList",
  202    202   
    6,
  203    203   
);
  204    204   
static XMLLISTSOUTPUT_MEMBER_NESTED_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  205    205   
    ::aws_smithy_schema::ShapeId::from_static(
  206    206   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$nestedStringList",
  207    207   
        "aws.protocoltests.restxml.synthetic",
  208    208   
        "XmlListsOutput",
  209    209   
    ),
  210    210   
    ::aws_smithy_schema::ShapeType::List,
  211         -
    "nested_string_list",
         211  +
    "nestedStringList",
  212    212   
    7,
  213    213   
);
  214    214   
static XMLLISTSOUTPUT_MEMBER_RENAMED_LIST_MEMBERS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  215    215   
    ::aws_smithy_schema::ShapeId::from_static(
  216    216   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$renamedListMembers",
  217    217   
        "aws.protocoltests.restxml.synthetic",
  218    218   
        "XmlListsOutput",
  219    219   
    ),
  220    220   
    ::aws_smithy_schema::ShapeType::List,
  221         -
    "renamed_list_members",
         221  +
    "renamedListMembers",
  222    222   
    8,
  223    223   
)
  224    224   
.with_xml_name("renamed");
  225    225   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  226    226   
    ::aws_smithy_schema::ShapeId::from_static(
  227    227   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$flattenedList",
  228    228   
        "aws.protocoltests.restxml.synthetic",
  229    229   
        "XmlListsOutput",
  230    230   
    ),
  231    231   
    ::aws_smithy_schema::ShapeType::List,
  232         -
    "flattened_list",
         232  +
    "flattenedList",
  233    233   
    9,
  234    234   
)
  235    235   
.with_xml_flattened();
  236    236   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST2: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  237    237   
    ::aws_smithy_schema::ShapeId::from_static(
  238    238   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$flattenedList2",
  239    239   
        "aws.protocoltests.restxml.synthetic",
  240    240   
        "XmlListsOutput",
  241    241   
    ),
  242    242   
    ::aws_smithy_schema::ShapeType::List,
  243         -
    "flattened_list2",
         243  +
    "flattenedList2",
  244    244   
    10,
  245    245   
)
  246    246   
.with_xml_name("customName")
  247    247   
.with_xml_flattened();
  248    248   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST_WITH_MEMBER_NAMESPACE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  249    249   
    ::aws_smithy_schema::ShapeId::from_static(
  250    250   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$flattenedListWithMemberNamespace",
  251    251   
        "aws.protocoltests.restxml.synthetic",
  252    252   
        "XmlListsOutput",
  253    253   
    ),
  254    254   
    ::aws_smithy_schema::ShapeType::List,
  255         -
    "flattened_list_with_member_namespace",
         255  +
    "flattenedListWithMemberNamespace",
  256    256   
    11,
  257    257   
)
  258    258   
.with_xml_flattened();
  259    259   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST_WITH_NAMESPACE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  260    260   
    ::aws_smithy_schema::ShapeId::from_static(
  261    261   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$flattenedListWithNamespace",
  262    262   
        "aws.protocoltests.restxml.synthetic",
  263    263   
        "XmlListsOutput",
  264    264   
    ),
  265    265   
    ::aws_smithy_schema::ShapeType::List,
  266         -
    "flattened_list_with_namespace",
         266  +
    "flattenedListWithNamespace",
  267    267   
    12,
  268    268   
)
  269    269   
.with_xml_flattened();
  270    270   
static XMLLISTSOUTPUT_MEMBER_STRUCTURE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  271    271   
    ::aws_smithy_schema::ShapeId::from_static(
  272    272   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$structureList",
  273    273   
        "aws.protocoltests.restxml.synthetic",
  274    274   
        "XmlListsOutput",
  275    275   
    ),
  276    276   
    ::aws_smithy_schema::ShapeType::List,
  277         -
    "structure_list",
         277  +
    "structureList",
  278    278   
    13,
  279    279   
)
  280    280   
.with_xml_name("myStructureList");
  281    281   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_STRUCTURE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  282    282   
    ::aws_smithy_schema::ShapeId::from_static(
  283    283   
        "aws.protocoltests.restxml.synthetic#XmlListsOutput$flattenedStructureList",
  284    284   
        "aws.protocoltests.restxml.synthetic",
  285    285   
        "XmlListsOutput",
  286    286   
    ),
  287    287   
    ::aws_smithy_schema::ShapeType::List,
  288         -
    "flattened_structure_list",
         288  +
    "flattenedStructureList",
  289    289   
    14,
  290    290   
)
  291    291   
.with_xml_flattened();
  292    292   
static XMLLISTSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  293    293   
    XMLLISTSOUTPUT_SCHEMA_ID,
  294    294   
    ::aws_smithy_schema::ShapeType::Structure,
  295    295   
    &[
  296    296   
        &XMLLISTSOUTPUT_MEMBER_STRING_LIST,
  297    297   
        &XMLLISTSOUTPUT_MEMBER_STRING_SET,
  298    298   
        &XMLLISTSOUTPUT_MEMBER_INTEGER_LIST,
@@ -375,375 +435,443 @@
  395    395   
                    }
  396    396   
                    Ok(())
  397    397   
                },
  398    398   
            )?;
  399    399   
        }
  400    400   
        if let Some(ref val) = self.nested_string_list {
  401    401   
            ser.write_list(
  402    402   
                &XMLLISTSOUTPUT_MEMBER_NESTED_STRING_LIST,
  403    403   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  404    404   
                    for item in val {
  405         -
                        todo!("schema: unsupported list element type");
         405  +
                        ser.write_list(
         406  +
                            &::aws_smithy_schema::prelude::DOCUMENT,
         407  +
                            &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         408  +
                                for item in item {
         409  +
                                    ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
         410  +
                                }
         411  +
                                Ok(())
         412  +
                            },
         413  +
                        )?;
  406    414   
                    }
  407    415   
                    Ok(())
  408    416   
                },
  409    417   
            )?;
  410    418   
        }
  411    419   
        if let Some(ref val) = self.renamed_list_members {
  412    420   
            ser.write_list(
  413    421   
                &XMLLISTSOUTPUT_MEMBER_RENAMED_LIST_MEMBERS,
  414    422   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  415    423   
                    for item in val {
@@ -463,471 +738,656 @@
  483    491   
                    }
  484    492   
                    Ok(())
  485    493   
                },
  486    494   
            )?;
  487    495   
        }
  488    496   
        Ok(())
  489    497   
    }
  490    498   
}
  491    499   
impl XmlListsOutput {
  492    500   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  493         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  494         -
        deserializer: &mut D,
         501  +
    pub fn deserialize(
         502  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  495    503   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  496    504   
        #[allow(unused_variables, unused_mut)]
  497    505   
        let mut builder = Self::builder();
  498    506   
        #[allow(
  499    507   
            unused_variables,
  500    508   
            unreachable_code,
  501    509   
            clippy::single_match,
  502    510   
            clippy::match_single_binding,
  503    511   
            clippy::diverging_sub_expression
  504    512   
        )]
  505         -
        deserializer.read_struct(&XMLLISTSOUTPUT_SCHEMA, (), |_, member, deser| {
         513  +
        deserializer.read_struct(&XMLLISTSOUTPUT_SCHEMA, &mut |member, deser| {
  506    514   
            match member.member_index() {
  507    515   
                Some(0) => {
  508         -
                    builder.string_list = Some({
  509         -
                        let container = if let Some(cap) = deser.container_size() {
  510         -
                            Vec::with_capacity(cap)
  511         -
                        } else {
  512         -
                            Vec::new()
  513         -
                        };
  514         -
                        deser.read_list(member, container, |mut list, deser| {
  515         -
                            list.push(deser.read_string(member)?);
  516         -
                            Ok(list)
  517         -
                        })?
  518         -
                    });
         516  +
                    builder.string_list = Some(deser.read_string_list(member)?);
  519    517   
                }
  520    518   
                Some(1) => {
  521         -
                    builder.string_set = Some({
  522         -
                        let container = if let Some(cap) = deser.container_size() {
  523         -
                            Vec::with_capacity(cap)
  524         -
                        } else {
  525         -
                            Vec::new()
  526         -
                        };
  527         -
                        deser.read_list(member, container, |mut list, deser| {
  528         -
                            list.push(deser.read_string(member)?);
  529         -
                            Ok(list)
  530         -
                        })?
  531         -
                    });
         519  +
                    builder.string_set = Some(deser.read_string_list(member)?);
  532    520   
                }
  533    521   
                Some(2) => {
  534         -
                    builder.integer_list = Some({
  535         -
                        let container = if let Some(cap) = deser.container_size() {
  536         -
                            Vec::with_capacity(cap)
  537         -
                        } else {
  538         -
                            Vec::new()
  539         -
                        };
  540         -
                        deser.read_list(member, container, |mut list, deser| {
  541         -
                            list.push(deser.read_integer(member)?);
  542         -
                            Ok(list)
  543         -
                        })?
  544         -
                    });
         522  +
                    builder.integer_list = Some(deser.read_integer_list(member)?);
  545    523   
                }
  546    524   
                Some(3) => {
  547    525   
                    builder.boolean_list = Some({
  548         -
                        let container = if let Some(cap) = deser.container_size() {
  549         -
                            Vec::with_capacity(cap)
  550         -
                        } else {
  551         -
                            Vec::new()
  552         -
                        };
  553         -
                        deser.read_list(member, container, |mut list, deser| {
  554         -
                            list.push(deser.read_boolean(member)?);
  555         -
                            Ok(list)
  556         -
                        })?
         526  +
                        let mut container = Vec::new();
         527  +
                        deser.read_list(member, &mut |deser| {
         528  +
                            container.push(deser.read_boolean(member)?);
         529  +
                            Ok(())
         530  +
                        })?;
         531  +
                        container
  557    532   
                    });
  558    533   
                }
  559    534   
                Some(4) => {
  560    535   
                    builder.timestamp_list = Some({
  561         -
                        let container = if let Some(cap) = deser.container_size() {
  562         -
                            Vec::with_capacity(cap)
  563         -
                        } else {
  564         -
                            Vec::new()
  565         -
                        };
  566         -
                        deser.read_list(member, container, |mut list, deser| {
  567         -
                            list.push(deser.read_timestamp(member)?);
  568         -
                            Ok(list)
  569         -
                        })?
         536  +
                        let mut container = Vec::new();
         537  +
                        deser.read_list(member, &mut |deser| {
         538  +
                            container.push(deser.read_timestamp(member)?);
         539  +
                            Ok(())
         540  +
                        })?;
         541  +
                        container
  570    542   
                    });
  571    543   
                }
  572    544   
                Some(5) => {
  573    545   
                    builder.enum_list = Some({
  574         -
                        let container = if let Some(cap) = deser.container_size() {
  575         -
                            Vec::with_capacity(cap)
  576         -
                        } else {
  577         -
                            Vec::new()
  578         -
                        };
  579         -
                        deser.read_list(member, container, |mut list, deser| {
  580         -
                            list.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  581         -
                            Ok(list)
  582         -
                        })?
         546  +
                        let mut container = Vec::new();
         547  +
                        deser.read_list(member, &mut |deser| {
         548  +
                            container.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
         549  +
                            Ok(())
         550  +
                        })?;
         551  +
                        container
  583    552   
                    });
  584    553   
                }
  585    554   
                Some(6) => {
  586         -
                    builder.int_enum_list = Some({
  587         -
                        let container = if let Some(cap) = deser.container_size() {
  588         -
                            Vec::with_capacity(cap)
  589         -
                        } else {
  590         -
                            Vec::new()
  591         -
                        };
  592         -
                        deser.read_list(member, container, |mut list, deser| {
  593         -
                            list.push(deser.read_integer(member)?);
  594         -
                            Ok(list)
  595         -
                        })?
  596         -
                    });
         555  +
                    builder.int_enum_list = Some(deser.read_integer_list(member)?);
  597    556   
                }
  598    557   
                Some(7) => {
  599    558   
                    builder.nested_string_list = Some({
  600         -
                        let container = if let Some(cap) = deser.container_size() {
  601         -
                            Vec::with_capacity(cap)
  602         -
                        } else {
  603         -
                            Vec::new()
  604         -
                        };
  605         -
                        deser.read_list(member, container, |mut list, deser| {
  606         -
                            list.push(todo!("deserialize nested aggregate"));
  607         -
                            Ok(list)
  608         -
                        })?
         559  +
                        let mut container = Vec::new();
         560  +
                        deser.read_list(member, &mut |deser| {
         561  +
                            container.push({
         562  +
                                let mut list = Vec::new();
         563  +
                                deser.read_list(member, &mut |deser| {
         564  +
                                    list.push(deser.read_string(&::aws_smithy_schema::prelude::DOCUMENT)?);
         565  +
                                    Ok(())
         566  +
                                })?;
         567  +
                                list
         568  +
                            });
         569  +
                            Ok(())
         570  +
                        })?;
         571  +
                        container
  609    572   
                    });
  610    573   
                }
  611    574   
                Some(8) => {
  612         -
                    builder.renamed_list_members = Some({
  613         -
                        let container = if let Some(cap) = deser.container_size() {
  614         -
                            Vec::with_capacity(cap)
  615         -
                        } else {
  616         -
                            Vec::new()
  617         -
                        };
  618         -
                        deser.read_list(member, container, |mut list, deser| {
  619         -
                            list.push(deser.read_string(member)?);
  620         -
                            Ok(list)
  621         -
                        })?
  622         -
                    });
         575  +
                    builder.renamed_list_members = Some(deser.read_string_list(member)?);
  623    576   
                }
  624    577   
                Some(9) => {
  625         -
                    builder.flattened_list = Some({
  626         -
                        let container = if let Some(cap) = deser.container_size() {
  627         -
                            Vec::with_capacity(cap)
  628         -
                        } else {
  629         -
                            Vec::new()
  630         -
                        };
  631         -
                        deser.read_list(member, container, |mut list, deser| {
  632         -
                            list.push(deser.read_string(member)?);
  633         -
                            Ok(list)
  634         -
                        })?
  635         -
                    });
         578  +
                    builder.flattened_list = Some(deser.read_string_list(member)?);
  636    579   
                }
  637    580   
                Some(10) => {
  638         -
                    builder.flattened_list2 = Some({
  639         -
                        let container = if let Some(cap) = deser.container_size() {
  640         -
                            Vec::with_capacity(cap)
  641         -
                        } else {
  642         -
                            Vec::new()
  643         -
                        };
  644         -
                        deser.read_list(member, container, |mut list, deser| {
  645         -
                            list.push(deser.read_string(member)?);
  646         -
                            Ok(list)
  647         -
                        })?
  648         -
                    });
         581  +
                    builder.flattened_list2 = Some(deser.read_string_list(member)?);
  649    582   
                }
  650    583   
                Some(11) => {
  651         -
                    builder.flattened_list_with_member_namespace = Some({
  652         -
                        let container = if let Some(cap) = deser.container_size() {
  653         -
                            Vec::with_capacity(cap)
  654         -
                        } else {
  655         -
                            Vec::new()
  656         -
                        };
  657         -
                        deser.read_list(member, container, |mut list, deser| {
  658         -
                            list.push(deser.read_string(member)?);
  659         -
                            Ok(list)
  660         -
                        })?
  661         -
                    });
         584  +
                    builder.flattened_list_with_member_namespace = Some(deser.read_string_list(member)?);
  662    585   
                }
  663    586   
                Some(12) => {
  664         -
                    builder.flattened_list_with_namespace = Some({
  665         -
                        let container = if let Some(cap) = deser.container_size() {
  666         -
                            Vec::with_capacity(cap)
  667         -
                        } else {
  668         -
                            Vec::new()
  669         -
                        };
  670         -
                        deser.read_list(member, container, |mut list, deser| {
  671         -
                            list.push(deser.read_string(member)?);
  672         -
                            Ok(list)
  673         -
                        })?
  674         -
                    });
         587  +
                    builder.flattened_list_with_namespace = Some(deser.read_string_list(member)?);
  675    588   
                }
  676    589   
                Some(13) => {
  677    590   
                    builder.structure_list = Some({
  678         -
                        let container = if let Some(cap) = deser.container_size() {
  679         -
                            Vec::with_capacity(cap)
  680         -
                        } else {
  681         -
                            Vec::new()
  682         -
                        };
  683         -
                        deser.read_list(member, container, |mut list, deser| {
  684         -
                            list.push(crate::types::StructureListMember::deserialize(deser)?);
  685         -
                            Ok(list)
  686         -
                        })?
         591  +
                        let mut container = Vec::new();
         592  +
                        deser.read_list(member, &mut |deser| {
         593  +
                            container.push(crate::types::StructureListMember::deserialize(deser)?);
         594  +
                            Ok(())
         595  +
                        })?;
         596  +
                        container
  687    597   
                    });
  688    598   
                }
  689    599   
                Some(14) => {
  690    600   
                    builder.flattened_structure_list = Some({
  691         -
                        let container = if let Some(cap) = deser.container_size() {
  692         -
                            Vec::with_capacity(cap)
  693         -
                        } else {
  694         -
                            Vec::new()
  695         -
                        };
  696         -
                        deser.read_list(member, container, |mut list, deser| {
  697         -
                            list.push(crate::types::StructureListMember::deserialize(deser)?);
  698         -
                            Ok(list)
  699         -
                        })?
         601  +
                        let mut container = Vec::new();
         602  +
                        deser.read_list(member, &mut |deser| {
         603  +
                            container.push(crate::types::StructureListMember::deserialize(deser)?);
         604  +
                            Ok(())
         605  +
                        })?;
         606  +
                        container
  700    607   
                    });
  701    608   
                }
  702    609   
                _ => {}
  703    610   
            }
  704    611   
            Ok(())
  705    612   
        })?;
  706    613   
        Ok(builder.build())
  707    614   
    }
  708    615   
}
         616  +
impl XmlListsOutput {
         617  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         618  +
    pub fn deserialize_with_response(
         619  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         620  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         621  +
        _status: u16,
         622  +
        _body: &[u8],
         623  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         624  +
        Self::deserialize(deserializer)
         625  +
    }
         626  +
}
  709    627   
impl XmlListsOutput {
  710    628   
    /// Creates a new builder-style object to manufacture [`XmlListsOutput`](crate::operation::xml_lists::XmlListsOutput).
  711    629   
    pub fn builder() -> crate::operation::xml_lists::builders::XmlListsOutputBuilder {
  712    630   
        crate::operation::xml_lists::builders::XmlListsOutputBuilder::default()
  713    631   
    }
  714    632   
}
  715    633   
  716    634   
/// A builder for [`XmlListsOutput`](crate::operation::xml_lists::XmlListsOutput).
  717    635   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  718    636   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_map_with_xml_namespace.rs

@@ -1,1 +40,45 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `XmlMapWithXmlNamespace`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct XmlMapWithXmlNamespace;
    6      6   
impl XmlMapWithXmlNamespace {
    7      7   
    /// Creates a new `XmlMapWithXmlNamespace`
    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::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema =
          15  +
        crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceOutput::SCHEMA;
   11     16   
    pub(crate) async fn orchestrate(
   12     17   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     18   
        input: crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceInput,
   14     19   
    ) -> ::std::result::Result<
   15     20   
        crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceOutput,
   16     21   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     22   
            crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceError,
   18     23   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     24   
        >,
   20     25   
    > {
@@ -110,115 +172,178 @@
  130    135   
                crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceError,
  131    136   
            >::new());
  132    137   
  133    138   
        ::std::borrow::Cow::Owned(rcb)
  134    139   
    }
  135    140   
}
  136    141   
  137    142   
#[derive(Debug)]
  138    143   
struct XmlMapWithXmlNamespaceResponseDeserializer;
  139    144   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlMapWithXmlNamespaceResponseDeserializer {
  140         -
    fn deserialize_nonstreaming(
         145  +
    fn deserialize_nonstreaming_with_config(
  141    146   
        &self,
  142    147   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         148  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  143    149   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  144    150   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  145    151   
        let headers = response.headers();
  146    152   
        let body = response.body().bytes().expect("body loaded");
  147    153   
        #[allow(unused_mut)]
  148    154   
        let mut force_error = false;
  149    155   
  150    156   
        let parse_result = if !success && status != 200 || force_error {
  151    157   
            crate::protocol_serde::shape_xml_map_with_xml_namespace::de_xml_map_with_xml_namespace_http_error(status, headers, body)
  152    158   
        } else {
@@ -289,295 +349,359 @@
  309    315   
            .expect("the config must have a deserializer");
  310    316   
  311    317   
        let parsed = de.deserialize_streaming(&mut http_response);
  312    318   
        let parsed = parsed.unwrap_or_else(|| {
  313    319   
            let http_response = http_response.map(|body| {
  314    320   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  315    321   
                    body.bytes().unwrap(),
  316    322   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  317    323   
                )))
  318    324   
            });
  319         -
            de.deserialize_nonstreaming(&http_response)
         325  +
            // Build a config bag with the protocol for schema-based deserialization
         326  +
            #[allow(unused_mut)]
         327  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         328  +
         329  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  320    330   
        });
  321    331   
        let parsed = parsed
  322    332   
            .expect("should be successful response")
  323    333   
            .downcast::<crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceOutput>()
  324    334   
            .unwrap();
  325    335   
        ::pretty_assertions::assert_eq!(parsed.my_map, expected_output.my_map, "Unexpected value for `my_map`");
  326    336   
    }
  327    337   
}
  328    338   
  329    339   
/// Error type for the `XmlMapWithXmlNamespaceError` operation.

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_map_with_xml_namespace/_xml_map_with_xml_namespace_input.rs

@@ -1,1 +129,131 @@
   17     17   
    "aws.protocoltests.restxml.synthetic",
   18     18   
    "XmlMapWithXmlNamespaceInput",
   19     19   
);
   20     20   
static XMLMAPWITHXMLNAMESPACEINPUT_MEMBER_MY_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "aws.protocoltests.restxml.synthetic#XmlMapWithXmlNamespaceInput$myMap",
   23     23   
        "aws.protocoltests.restxml.synthetic",
   24     24   
        "XmlMapWithXmlNamespaceInput",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::Map,
   27         -
    "my_map",
          27  +
    "myMap",
   28     28   
    0,
   29     29   
)
   30     30   
.with_xml_namespace()
   31     31   
.with_xml_name("KVP");
   32     32   
static XMLMAPWITHXMLNAMESPACEINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   33     33   
    XMLMAPWITHXMLNAMESPACEINPUT_SCHEMA_ID,
   34     34   
    ::aws_smithy_schema::ShapeType::Structure,
   35     35   
    &[&XMLMAPWITHXMLNAMESPACEINPUT_MEMBER_MY_MAP],
   36         -
);
          36  +
)
          37  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("POST", "/XmlMapWithXmlNamespace", None));
   37     38   
impl XmlMapWithXmlNamespaceInput {
   38     39   
    /// The schema for this shape.
   39     40   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLMAPWITHXMLNAMESPACEINPUT_SCHEMA;
   40     41   
}
   41     42   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlMapWithXmlNamespaceInput {
   42     43   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   43     44   
    fn serialize_members(
   44     45   
        &self,
   45     46   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   46     47   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   47     48   
        if let Some(ref val) = self.my_map {
   48     49   
            ser.write_map(
   49     50   
                &XMLMAPWITHXMLNAMESPACEINPUT_MEMBER_MY_MAP,
   50     51   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   51     52   
                    for (key, value) in val {
   52     53   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   53     54   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, value)?;
   54     55   
                    }
   55     56   
                    Ok(())
   56     57   
                },
   57     58   
            )?;
   58     59   
        }
   59     60   
        Ok(())
   60     61   
    }
   61     62   
}
   62     63   
impl XmlMapWithXmlNamespaceInput {
   63     64   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   64         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   65         -
        deserializer: &mut D,
          65  +
    pub fn deserialize(
          66  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   66     67   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   67     68   
        #[allow(unused_variables, unused_mut)]
   68     69   
        let mut builder = Self::builder();
   69     70   
        #[allow(
   70     71   
            unused_variables,
   71     72   
            unreachable_code,
   72     73   
            clippy::single_match,
   73     74   
            clippy::match_single_binding,
   74     75   
            clippy::diverging_sub_expression
   75     76   
        )]
   76         -
        deserializer.read_struct(&XMLMAPWITHXMLNAMESPACEINPUT_SCHEMA, (), |_, member, deser| {
          77  +
        deserializer.read_struct(&XMLMAPWITHXMLNAMESPACEINPUT_SCHEMA, &mut |member, deser| {
   77     78   
            match member.member_index() {
   78     79   
                Some(0) => {
   79         -
                    builder.my_map = Some({
   80         -
                        let container = if let Some(cap) = deser.container_size() {
   81         -
                            std::collections::HashMap::with_capacity(cap)
   82         -
                        } else {
   83         -
                            std::collections::HashMap::new()
   84         -
                        };
   85         -
                        deser.read_map(member, container, |mut map, key, deser| {
   86         -
                            map.insert(key, deser.read_string(member)?);
   87         -
                            Ok(map)
   88         -
                        })?
   89         -
                    });
          80  +
                    builder.my_map = Some(deser.read_string_string_map(member)?);
   90     81   
                }
   91     82   
                _ => {}
   92     83   
            }
   93     84   
            Ok(())
   94     85   
        })?;
   95     86   
        builder
   96     87   
            .build()
   97     88   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   98     89   
    }
   99     90   
}
          91  +
impl XmlMapWithXmlNamespaceInput {
          92  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          93  +
    pub fn deserialize_with_response(
          94  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          95  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          96  +
        _status: u16,
          97  +
        _body: &[u8],
          98  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          99  +
        Self::deserialize(deserializer)
         100  +
    }
         101  +
}
  100    102   
impl XmlMapWithXmlNamespaceInput {
  101    103   
    /// Creates a new builder-style object to manufacture [`XmlMapWithXmlNamespaceInput`](crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceInput).
  102    104   
    pub fn builder() -> crate::operation::xml_map_with_xml_namespace::builders::XmlMapWithXmlNamespaceInputBuilder {
  103    105   
        crate::operation::xml_map_with_xml_namespace::builders::XmlMapWithXmlNamespaceInputBuilder::default()
  104    106   
    }
  105    107   
}
  106    108   
  107    109   
/// A builder for [`XmlMapWithXmlNamespaceInput`](crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceInput).
  108    110   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  109    111   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_map_with_xml_namespace/_xml_map_with_xml_namespace_output.rs

@@ -1,1 +127,128 @@
   17     17   
    "aws.protocoltests.restxml.synthetic",
   18     18   
    "XmlMapWithXmlNamespaceOutput",
   19     19   
);
   20     20   
static XMLMAPWITHXMLNAMESPACEOUTPUT_MEMBER_MY_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "aws.protocoltests.restxml.synthetic#XmlMapWithXmlNamespaceOutput$myMap",
   23     23   
        "aws.protocoltests.restxml.synthetic",
   24     24   
        "XmlMapWithXmlNamespaceOutput",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::Map,
   27         -
    "my_map",
          27  +
    "myMap",
   28     28   
    0,
   29     29   
)
   30     30   
.with_xml_namespace()
   31     31   
.with_xml_name("KVP");
   32     32   
static XMLMAPWITHXMLNAMESPACEOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   33     33   
    XMLMAPWITHXMLNAMESPACEOUTPUT_SCHEMA_ID,
   34     34   
    ::aws_smithy_schema::ShapeType::Structure,
   35     35   
    &[&XMLMAPWITHXMLNAMESPACEOUTPUT_MEMBER_MY_MAP],
   36     36   
);
   37     37   
impl XmlMapWithXmlNamespaceOutput {
   38     38   
    /// The schema for this shape.
   39     39   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLMAPWITHXMLNAMESPACEOUTPUT_SCHEMA;
   40     40   
}
   41     41   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlMapWithXmlNamespaceOutput {
   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.my_map {
   48     48   
            ser.write_map(
   49     49   
                &XMLMAPWITHXMLNAMESPACEOUTPUT_MEMBER_MY_MAP,
   50     50   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   51     51   
                    for (key, value) in val {
   52     52   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   53     53   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, value)?;
   54     54   
                    }
   55     55   
                    Ok(())
   56     56   
                },
   57     57   
            )?;
   58     58   
        }
   59     59   
        Ok(())
   60     60   
    }
   61     61   
}
   62     62   
impl XmlMapWithXmlNamespaceOutput {
   63     63   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   64         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   65         -
        deserializer: &mut D,
          64  +
    pub fn deserialize(
          65  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   66     66   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   67     67   
        #[allow(unused_variables, unused_mut)]
   68     68   
        let mut builder = Self::builder();
   69     69   
        #[allow(
   70     70   
            unused_variables,
   71     71   
            unreachable_code,
   72     72   
            clippy::single_match,
   73     73   
            clippy::match_single_binding,
   74     74   
            clippy::diverging_sub_expression
   75     75   
        )]
   76         -
        deserializer.read_struct(&XMLMAPWITHXMLNAMESPACEOUTPUT_SCHEMA, (), |_, member, deser| {
          76  +
        deserializer.read_struct(&XMLMAPWITHXMLNAMESPACEOUTPUT_SCHEMA, &mut |member, deser| {
   77     77   
            match member.member_index() {
   78     78   
                Some(0) => {
   79         -
                    builder.my_map = Some({
   80         -
                        let container = if let Some(cap) = deser.container_size() {
   81         -
                            std::collections::HashMap::with_capacity(cap)
   82         -
                        } else {
   83         -
                            std::collections::HashMap::new()
   84         -
                        };
   85         -
                        deser.read_map(member, container, |mut map, key, deser| {
   86         -
                            map.insert(key, deser.read_string(member)?);
   87         -
                            Ok(map)
   88         -
                        })?
   89         -
                    });
          79  +
                    builder.my_map = Some(deser.read_string_string_map(member)?);
   90     80   
                }
   91     81   
                _ => {}
   92     82   
            }
   93     83   
            Ok(())
   94     84   
        })?;
   95     85   
        Ok(builder.build())
   96     86   
    }
   97     87   
}
          88  +
impl XmlMapWithXmlNamespaceOutput {
          89  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          90  +
    pub fn deserialize_with_response(
          91  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          92  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          93  +
        _status: u16,
          94  +
        _body: &[u8],
          95  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          96  +
        Self::deserialize(deserializer)
          97  +
    }
          98  +
}
   98     99   
impl XmlMapWithXmlNamespaceOutput {
   99    100   
    /// Creates a new builder-style object to manufacture [`XmlMapWithXmlNamespaceOutput`](crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceOutput).
  100    101   
    pub fn builder() -> crate::operation::xml_map_with_xml_namespace::builders::XmlMapWithXmlNamespaceOutputBuilder {
  101    102   
        crate::operation::xml_map_with_xml_namespace::builders::XmlMapWithXmlNamespaceOutputBuilder::default()
  102    103   
    }
  103    104   
}
  104    105   
  105    106   
/// A builder for [`XmlMapWithXmlNamespaceOutput`](crate::operation::xml_map_with_xml_namespace::XmlMapWithXmlNamespaceOutput).
  106    107   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  107    108   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_maps.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 `XmlMaps`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct XmlMaps;
    6      6   
impl XmlMaps {
    7      7   
    /// Creates a new `XmlMaps`
    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::xml_maps::XmlMapsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::xml_maps::XmlMapsOutput::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::xml_maps::XmlMapsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::xml_maps::XmlMapsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::xml_maps::XmlMapsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -100,104 +162,167 @@
  120    124   
                crate::operation::xml_maps::XmlMapsError,
  121    125   
            >::new());
  122    126   
  123    127   
        ::std::borrow::Cow::Owned(rcb)
  124    128   
    }
  125    129   
}
  126    130   
  127    131   
#[derive(Debug)]
  128    132   
struct XmlMapsResponseDeserializer;
  129    133   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlMapsResponseDeserializer {
  130         -
    fn deserialize_nonstreaming(
         134  +
    fn deserialize_nonstreaming_with_config(
  131    135   
        &self,
  132    136   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         137  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  133    138   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  134    139   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  135    140   
        let headers = response.headers();
  136    141   
        let body = response.body().bytes().expect("body loaded");
  137    142   
        #[allow(unused_mut)]
  138    143   
        let mut force_error = false;
  139    144   
  140    145   
        let parse_result = if !success && status != 200 || force_error {
  141    146   
            crate::protocol_serde::shape_xml_maps::de_xml_maps_http_error(status, headers, body)
  142    147   
        } else {
@@ -295,300 +355,364 @@
  315    320   
            .expect("the config must have a deserializer");
  316    321   
  317    322   
        let parsed = de.deserialize_streaming(&mut http_response);
  318    323   
        let parsed = parsed.unwrap_or_else(|| {
  319    324   
            let http_response = http_response.map(|body| {
  320    325   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  321    326   
                    body.bytes().unwrap(),
  322    327   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  323    328   
                )))
  324    329   
            });
  325         -
            de.deserialize_nonstreaming(&http_response)
         330  +
            // Build a config bag with the protocol for schema-based deserialization
         331  +
            #[allow(unused_mut)]
         332  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         333  +
         334  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  326    335   
        });
  327    336   
        let parsed = parsed
  328    337   
            .expect("should be successful response")
  329    338   
            .downcast::<crate::operation::xml_maps::XmlMapsOutput>()
  330    339   
            .unwrap();
  331    340   
        ::pretty_assertions::assert_eq!(parsed.my_map, expected_output.my_map, "Unexpected value for `my_map`");
  332    341   
    }
  333    342   
}
  334    343   
  335    344   
/// Error type for the `XmlMapsError` operation.

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_maps/_xml_maps_input.rs

@@ -1,1 +127,136 @@
   17     17   
    "aws.protocoltests.restxml.synthetic",
   18     18   
    "XmlMapsInput",
   19     19   
);
   20     20   
static XMLMAPSINPUT_MEMBER_MY_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "aws.protocoltests.restxml.synthetic#XmlMapsInput$myMap",
   23     23   
        "aws.protocoltests.restxml.synthetic",
   24     24   
        "XmlMapsInput",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::Map,
   27         -
    "my_map",
          27  +
    "myMap",
   28     28   
    0,
   29     29   
);
   30     30   
static XMLMAPSINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   31     31   
    XMLMAPSINPUT_SCHEMA_ID,
   32     32   
    ::aws_smithy_schema::ShapeType::Structure,
   33     33   
    &[&XMLMAPSINPUT_MEMBER_MY_MAP],
   34         -
);
          34  +
)
          35  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("POST", "/XmlMaps", None));
   35     36   
impl XmlMapsInput {
   36     37   
    /// The schema for this shape.
   37     38   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLMAPSINPUT_SCHEMA;
   38     39   
}
   39     40   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlMapsInput {
   40     41   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   41     42   
    fn serialize_members(
   42     43   
        &self,
   43     44   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   44     45   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   45     46   
        if let Some(ref val) = self.my_map {
   46     47   
            ser.write_map(
   47     48   
                &XMLMAPSINPUT_MEMBER_MY_MAP,
   48     49   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   49     50   
                    for (key, value) in val {
   50     51   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   51     52   
                        ser.write_struct(crate::types::GreetingStruct::SCHEMA, value)?;
   52     53   
                    }
   53     54   
                    Ok(())
   54     55   
                },
   55     56   
            )?;
   56     57   
        }
   57     58   
        Ok(())
   58     59   
    }
   59     60   
}
   60     61   
impl XmlMapsInput {
   61     62   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   62         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   63         -
        deserializer: &mut D,
          63  +
    pub fn deserialize(
          64  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   64     65   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   65     66   
        #[allow(unused_variables, unused_mut)]
   66     67   
        let mut builder = Self::builder();
   67     68   
        #[allow(
   68     69   
            unused_variables,
   69     70   
            unreachable_code,
   70     71   
            clippy::single_match,
   71     72   
            clippy::match_single_binding,
   72     73   
            clippy::diverging_sub_expression
   73     74   
        )]
   74         -
        deserializer.read_struct(&XMLMAPSINPUT_SCHEMA, (), |_, member, deser| {
          75  +
        deserializer.read_struct(&XMLMAPSINPUT_SCHEMA, &mut |member, deser| {
   75     76   
            match member.member_index() {
   76     77   
                Some(0) => {
   77     78   
                    builder.my_map = Some({
   78         -
                        let container = if let Some(cap) = deser.container_size() {
   79         -
                            std::collections::HashMap::with_capacity(cap)
   80         -
                        } else {
   81         -
                            std::collections::HashMap::new()
   82         -
                        };
   83         -
                        deser.read_map(member, container, |mut map, key, deser| {
   84         -
                            map.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
   85         -
                            Ok(map)
   86         -
                        })?
          79  +
                        let mut container = std::collections::HashMap::new();
          80  +
                        deser.read_map(member, &mut |key, deser| {
          81  +
                            container.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
          82  +
                            Ok(())
          83  +
                        })?;
          84  +
                        container
   87     85   
                    });
   88     86   
                }
   89     87   
                _ => {}
   90     88   
            }
   91     89   
            Ok(())
   92     90   
        })?;
   93     91   
        builder
   94     92   
            .build()
   95     93   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   96     94   
    }
   97     95   
}
          96  +
impl XmlMapsInput {
          97  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          98  +
    pub fn deserialize_with_response(
          99  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         100  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         101  +
        _status: u16,
         102  +
        _body: &[u8],
         103  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         104  +
        Self::deserialize(deserializer)
         105  +
    }
         106  +
}
   98    107   
impl XmlMapsInput {
   99    108   
    /// Creates a new builder-style object to manufacture [`XmlMapsInput`](crate::operation::xml_maps::XmlMapsInput).
  100    109   
    pub fn builder() -> crate::operation::xml_maps::builders::XmlMapsInputBuilder {
  101    110   
        crate::operation::xml_maps::builders::XmlMapsInputBuilder::default()
  102    111   
    }
  103    112   
}
  104    113   
  105    114   
/// A builder for [`XmlMapsInput`](crate::operation::xml_maps::XmlMapsInput).
  106    115   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  107    116   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_maps/_xml_maps_output.rs

@@ -1,1 +125,133 @@
   17     17   
    "aws.protocoltests.restxml.synthetic",
   18     18   
    "XmlMapsOutput",
   19     19   
);
   20     20   
static XMLMAPSOUTPUT_MEMBER_MY_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "aws.protocoltests.restxml.synthetic#XmlMapsOutput$myMap",
   23     23   
        "aws.protocoltests.restxml.synthetic",
   24     24   
        "XmlMapsOutput",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::Map,
   27         -
    "my_map",
          27  +
    "myMap",
   28     28   
    0,
   29     29   
);
   30     30   
static XMLMAPSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   31     31   
    XMLMAPSOUTPUT_SCHEMA_ID,
   32     32   
    ::aws_smithy_schema::ShapeType::Structure,
   33     33   
    &[&XMLMAPSOUTPUT_MEMBER_MY_MAP],
   34     34   
);
   35     35   
impl XmlMapsOutput {
   36     36   
    /// The schema for this shape.
   37     37   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLMAPSOUTPUT_SCHEMA;
   38     38   
}
   39     39   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlMapsOutput {
   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.my_map {
   46     46   
            ser.write_map(
   47     47   
                &XMLMAPSOUTPUT_MEMBER_MY_MAP,
   48     48   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   49     49   
                    for (key, value) in val {
   50     50   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   51     51   
                        ser.write_struct(crate::types::GreetingStruct::SCHEMA, value)?;
   52     52   
                    }
   53     53   
                    Ok(())
   54     54   
                },
   55     55   
            )?;
   56     56   
        }
   57     57   
        Ok(())
   58     58   
    }
   59     59   
}
   60     60   
impl XmlMapsOutput {
   61     61   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   62         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   63         -
        deserializer: &mut D,
          62  +
    pub fn deserialize(
          63  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   64     64   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   65     65   
        #[allow(unused_variables, unused_mut)]
   66     66   
        let mut builder = Self::builder();
   67     67   
        #[allow(
   68     68   
            unused_variables,
   69     69   
            unreachable_code,
   70     70   
            clippy::single_match,
   71     71   
            clippy::match_single_binding,
   72     72   
            clippy::diverging_sub_expression
   73     73   
        )]
   74         -
        deserializer.read_struct(&XMLMAPSOUTPUT_SCHEMA, (), |_, member, deser| {
          74  +
        deserializer.read_struct(&XMLMAPSOUTPUT_SCHEMA, &mut |member, deser| {
   75     75   
            match member.member_index() {
   76     76   
                Some(0) => {
   77     77   
                    builder.my_map = Some({
   78         -
                        let container = if let Some(cap) = deser.container_size() {
   79         -
                            std::collections::HashMap::with_capacity(cap)
   80         -
                        } else {
   81         -
                            std::collections::HashMap::new()
   82         -
                        };
   83         -
                        deser.read_map(member, container, |mut map, key, deser| {
   84         -
                            map.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
   85         -
                            Ok(map)
   86         -
                        })?
          78  +
                        let mut container = std::collections::HashMap::new();
          79  +
                        deser.read_map(member, &mut |key, deser| {
          80  +
                            container.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
          81  +
                            Ok(())
          82  +
                        })?;
          83  +
                        container
   87     84   
                    });
   88     85   
                }
   89     86   
                _ => {}
   90     87   
            }
   91     88   
            Ok(())
   92     89   
        })?;
   93     90   
        Ok(builder.build())
   94     91   
    }
   95     92   
}
          93  +
impl XmlMapsOutput {
          94  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          95  +
    pub fn deserialize_with_response(
          96  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          97  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          98  +
        _status: u16,
          99  +
        _body: &[u8],
         100  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         101  +
        Self::deserialize(deserializer)
         102  +
    }
         103  +
}
   96    104   
impl XmlMapsOutput {
   97    105   
    /// Creates a new builder-style object to manufacture [`XmlMapsOutput`](crate::operation::xml_maps::XmlMapsOutput).
   98    106   
    pub fn builder() -> crate::operation::xml_maps::builders::XmlMapsOutputBuilder {
   99    107   
        crate::operation::xml_maps::builders::XmlMapsOutputBuilder::default()
  100    108   
    }
  101    109   
}
  102    110   
  103    111   
/// A builder for [`XmlMapsOutput`](crate::operation::xml_maps::XmlMapsOutput).
  104    112   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  105    113   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_maps_xml_name.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 `XmlMapsXmlName`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct XmlMapsXmlName;
    6      6   
impl XmlMapsXmlName {
    7      7   
    /// Creates a new `XmlMapsXmlName`
    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::xml_maps_xml_name::XmlMapsXmlNameInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::xml_maps_xml_name::XmlMapsXmlNameOutput::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::xml_maps_xml_name::XmlMapsXmlNameInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::xml_maps_xml_name::XmlMapsXmlNameOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::xml_maps_xml_name::XmlMapsXmlNameError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -104,108 +166,171 @@
  124    128   
                crate::operation::xml_maps_xml_name::XmlMapsXmlNameError,
  125    129   
            >::new());
  126    130   
  127    131   
        ::std::borrow::Cow::Owned(rcb)
  128    132   
    }
  129    133   
}
  130    134   
  131    135   
#[derive(Debug)]
  132    136   
struct XmlMapsXmlNameResponseDeserializer;
  133    137   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlMapsXmlNameResponseDeserializer {
  134         -
    fn deserialize_nonstreaming(
         138  +
    fn deserialize_nonstreaming_with_config(
  135    139   
        &self,
  136    140   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         141  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  137    142   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  138    143   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  139    144   
        let headers = response.headers();
  140    145   
        let body = response.body().bytes().expect("body loaded");
  141    146   
        #[allow(unused_mut)]
  142    147   
        let mut force_error = false;
  143    148   
  144    149   
        let parse_result = if !success && status != 200 || force_error {
  145    150   
            crate::protocol_serde::shape_xml_maps_xml_name::de_xml_maps_xml_name_http_error(status, headers, body)
  146    151   
        } else {
@@ -301,306 +361,370 @@
  321    326   
            .expect("the config must have a deserializer");
  322    327   
  323    328   
        let parsed = de.deserialize_streaming(&mut http_response);
  324    329   
        let parsed = parsed.unwrap_or_else(|| {
  325    330   
            let http_response = http_response.map(|body| {
  326    331   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  327    332   
                    body.bytes().unwrap(),
  328    333   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  329    334   
                )))
  330    335   
            });
  331         -
            de.deserialize_nonstreaming(&http_response)
         336  +
            // Build a config bag with the protocol for schema-based deserialization
         337  +
            #[allow(unused_mut)]
         338  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         339  +
         340  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  332    341   
        });
  333    342   
        let parsed = parsed
  334    343   
            .expect("should be successful response")
  335    344   
            .downcast::<crate::operation::xml_maps_xml_name::XmlMapsXmlNameOutput>()
  336    345   
            .unwrap();
  337    346   
        ::pretty_assertions::assert_eq!(parsed.my_map, expected_output.my_map, "Unexpected value for `my_map`");
  338    347   
    }
  339    348   
}
  340    349   
  341    350   
/// Error type for the `XmlMapsXmlNameError` operation.

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_maps_xml_name/_xml_maps_xml_name_input.rs

@@ -1,1 +127,136 @@
   17     17   
    "aws.protocoltests.restxml.synthetic",
   18     18   
    "XmlMapsXmlNameInput",
   19     19   
);
   20     20   
static XMLMAPSXMLNAMEINPUT_MEMBER_MY_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "aws.protocoltests.restxml.synthetic#XmlMapsXmlNameInput$myMap",
   23     23   
        "aws.protocoltests.restxml.synthetic",
   24     24   
        "XmlMapsXmlNameInput",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::Map,
   27         -
    "my_map",
          27  +
    "myMap",
   28     28   
    0,
   29     29   
);
   30     30   
static XMLMAPSXMLNAMEINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   31     31   
    XMLMAPSXMLNAMEINPUT_SCHEMA_ID,
   32     32   
    ::aws_smithy_schema::ShapeType::Structure,
   33     33   
    &[&XMLMAPSXMLNAMEINPUT_MEMBER_MY_MAP],
   34         -
);
          34  +
)
          35  +
.with_http(aws_smithy_schema::traits::HttpTrait::new("POST", "/XmlMapsXmlName", None));
   35     36   
impl XmlMapsXmlNameInput {
   36     37   
    /// The schema for this shape.
   37     38   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLMAPSXMLNAMEINPUT_SCHEMA;
   38     39   
}
   39     40   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlMapsXmlNameInput {
   40     41   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   41     42   
    fn serialize_members(
   42     43   
        &self,
   43     44   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   44     45   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   45     46   
        if let Some(ref val) = self.my_map {
   46     47   
            ser.write_map(
   47     48   
                &XMLMAPSXMLNAMEINPUT_MEMBER_MY_MAP,
   48     49   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   49     50   
                    for (key, value) in val {
   50     51   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   51     52   
                        ser.write_struct(crate::types::GreetingStruct::SCHEMA, value)?;
   52     53   
                    }
   53     54   
                    Ok(())
   54     55   
                },
   55     56   
            )?;
   56     57   
        }
   57     58   
        Ok(())
   58     59   
    }
   59     60   
}
   60     61   
impl XmlMapsXmlNameInput {
   61     62   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   62         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   63         -
        deserializer: &mut D,
          63  +
    pub fn deserialize(
          64  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   64     65   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   65     66   
        #[allow(unused_variables, unused_mut)]
   66     67   
        let mut builder = Self::builder();
   67     68   
        #[allow(
   68     69   
            unused_variables,
   69     70   
            unreachable_code,
   70     71   
            clippy::single_match,
   71     72   
            clippy::match_single_binding,
   72     73   
            clippy::diverging_sub_expression
   73     74   
        )]
   74         -
        deserializer.read_struct(&XMLMAPSXMLNAMEINPUT_SCHEMA, (), |_, member, deser| {
          75  +
        deserializer.read_struct(&XMLMAPSXMLNAMEINPUT_SCHEMA, &mut |member, deser| {
   75     76   
            match member.member_index() {
   76     77   
                Some(0) => {
   77     78   
                    builder.my_map = Some({
   78         -
                        let container = if let Some(cap) = deser.container_size() {
   79         -
                            std::collections::HashMap::with_capacity(cap)
   80         -
                        } else {
   81         -
                            std::collections::HashMap::new()
   82         -
                        };
   83         -
                        deser.read_map(member, container, |mut map, key, deser| {
   84         -
                            map.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
   85         -
                            Ok(map)
   86         -
                        })?
          79  +
                        let mut container = std::collections::HashMap::new();
          80  +
                        deser.read_map(member, &mut |key, deser| {
          81  +
                            container.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
          82  +
                            Ok(())
          83  +
                        })?;
          84  +
                        container
   87     85   
                    });
   88     86   
                }
   89     87   
                _ => {}
   90     88   
            }
   91     89   
            Ok(())
   92     90   
        })?;
   93     91   
        builder
   94     92   
            .build()
   95     93   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   96     94   
    }
   97     95   
}
          96  +
impl XmlMapsXmlNameInput {
          97  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          98  +
    pub fn deserialize_with_response(
          99  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         100  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         101  +
        _status: u16,
         102  +
        _body: &[u8],
         103  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         104  +
        Self::deserialize(deserializer)
         105  +
    }
         106  +
}
   98    107   
impl XmlMapsXmlNameInput {
   99    108   
    /// Creates a new builder-style object to manufacture [`XmlMapsXmlNameInput`](crate::operation::xml_maps_xml_name::XmlMapsXmlNameInput).
  100    109   
    pub fn builder() -> crate::operation::xml_maps_xml_name::builders::XmlMapsXmlNameInputBuilder {
  101    110   
        crate::operation::xml_maps_xml_name::builders::XmlMapsXmlNameInputBuilder::default()
  102    111   
    }
  103    112   
}
  104    113   
  105    114   
/// A builder for [`XmlMapsXmlNameInput`](crate::operation::xml_maps_xml_name::XmlMapsXmlNameInput).
  106    115   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  107    116   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_maps_xml_name/_xml_maps_xml_name_output.rs

@@ -1,1 +125,133 @@
   17     17   
    "aws.protocoltests.restxml.synthetic",
   18     18   
    "XmlMapsXmlNameOutput",
   19     19   
);
   20     20   
static XMLMAPSXMLNAMEOUTPUT_MEMBER_MY_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "aws.protocoltests.restxml.synthetic#XmlMapsXmlNameOutput$myMap",
   23     23   
        "aws.protocoltests.restxml.synthetic",
   24     24   
        "XmlMapsXmlNameOutput",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::Map,
   27         -
    "my_map",
          27  +
    "myMap",
   28     28   
    0,
   29     29   
);
   30     30   
static XMLMAPSXMLNAMEOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   31     31   
    XMLMAPSXMLNAMEOUTPUT_SCHEMA_ID,
   32     32   
    ::aws_smithy_schema::ShapeType::Structure,
   33     33   
    &[&XMLMAPSXMLNAMEOUTPUT_MEMBER_MY_MAP],
   34     34   
);
   35     35   
impl XmlMapsXmlNameOutput {
   36     36   
    /// The schema for this shape.
   37     37   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &XMLMAPSXMLNAMEOUTPUT_SCHEMA;
   38     38   
}
   39     39   
impl ::aws_smithy_schema::serde::SerializableStruct for XmlMapsXmlNameOutput {
   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.my_map {
   46     46   
            ser.write_map(
   47     47   
                &XMLMAPSXMLNAMEOUTPUT_MEMBER_MY_MAP,
   48     48   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   49     49   
                    for (key, value) in val {
   50     50   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   51     51   
                        ser.write_struct(crate::types::GreetingStruct::SCHEMA, value)?;
   52     52   
                    }
   53     53   
                    Ok(())
   54     54   
                },
   55     55   
            )?;
   56     56   
        }
   57     57   
        Ok(())
   58     58   
    }
   59     59   
}
   60     60   
impl XmlMapsXmlNameOutput {
   61     61   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   62         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   63         -
        deserializer: &mut D,
          62  +
    pub fn deserialize(
          63  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   64     64   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   65     65   
        #[allow(unused_variables, unused_mut)]
   66     66   
        let mut builder = Self::builder();
   67     67   
        #[allow(
   68     68   
            unused_variables,
   69     69   
            unreachable_code,
   70     70   
            clippy::single_match,
   71     71   
            clippy::match_single_binding,
   72     72   
            clippy::diverging_sub_expression
   73     73   
        )]
   74         -
        deserializer.read_struct(&XMLMAPSXMLNAMEOUTPUT_SCHEMA, (), |_, member, deser| {
          74  +
        deserializer.read_struct(&XMLMAPSXMLNAMEOUTPUT_SCHEMA, &mut |member, deser| {
   75     75   
            match member.member_index() {
   76     76   
                Some(0) => {
   77     77   
                    builder.my_map = Some({
   78         -
                        let container = if let Some(cap) = deser.container_size() {
   79         -
                            std::collections::HashMap::with_capacity(cap)
   80         -
                        } else {
   81         -
                            std::collections::HashMap::new()
   82         -
                        };
   83         -
                        deser.read_map(member, container, |mut map, key, deser| {
   84         -
                            map.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
   85         -
                            Ok(map)
   86         -
                        })?
          78  +
                        let mut container = std::collections::HashMap::new();
          79  +
                        deser.read_map(member, &mut |key, deser| {
          80  +
                            container.insert(key, crate::types::GreetingStruct::deserialize(deser)?);
          81  +
                            Ok(())
          82  +
                        })?;
          83  +
                        container
   87     84   
                    });
   88     85   
                }
   89     86   
                _ => {}
   90     87   
            }
   91     88   
            Ok(())
   92     89   
        })?;
   93     90   
        Ok(builder.build())
   94     91   
    }
   95     92   
}
          93  +
impl XmlMapsXmlNameOutput {
          94  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          95  +
    pub fn deserialize_with_response(
          96  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          97  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          98  +
        _status: u16,
          99  +
        _body: &[u8],
         100  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         101  +
        Self::deserialize(deserializer)
         102  +
    }
         103  +
}
   96    104   
impl XmlMapsXmlNameOutput {
   97    105   
    /// Creates a new builder-style object to manufacture [`XmlMapsXmlNameOutput`](crate::operation::xml_maps_xml_name::XmlMapsXmlNameOutput).
   98    106   
    pub fn builder() -> crate::operation::xml_maps_xml_name::builders::XmlMapsXmlNameOutputBuilder {
   99    107   
        crate::operation::xml_maps_xml_name::builders::XmlMapsXmlNameOutputBuilder::default()
  100    108   
    }
  101    109   
}
  102    110   
  103    111   
/// A builder for [`XmlMapsXmlNameOutput`](crate::operation::xml_maps_xml_name::XmlMapsXmlNameOutput).
  104    112   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  105    113   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/xml_namespaces.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 `XmlNamespaces`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct XmlNamespaces;
    6      6   
impl XmlNamespaces {
    7      7   
    /// Creates a new `XmlNamespaces`
    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::xml_namespaces::XmlNamespacesInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::xml_namespaces::XmlNamespacesOutput::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::xml_namespaces::XmlNamespacesInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::xml_namespaces::XmlNamespacesOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::xml_namespaces::XmlNamespacesError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -104,108 +166,171 @@
  124    128   
                crate::operation::xml_namespaces::XmlNamespacesError,
  125    129   
            >::new());
  126    130   
  127    131   
        ::std::borrow::Cow::Owned(rcb)
  128    132   
    }
  129    133   
}
  130    134   
  131    135   
#[derive(Debug)]
  132    136   
struct XmlNamespacesResponseDeserializer;
  133    137   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlNamespacesResponseDeserializer {
  134         -
    fn deserialize_nonstreaming(
         138  +
    fn deserialize_nonstreaming_with_config(
  135    139   
        &self,
  136    140   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         141  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  137    142   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  138    143   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  139    144   
        let headers = response.headers();
  140    145   
        let body = response.body().bytes().expect("body loaded");
  141    146   
        #[allow(unused_mut)]
  142    147   
        let mut force_error = false;
  143    148   
  144    149   
        let parse_result = if !success && status != 200 || force_error {
  145    150   
            crate::protocol_serde::shape_xml_namespaces::de_xml_namespaces_http_error(status, headers, body)
  146    151   
        } else {
@@ -281,286 +341,350 @@
  301    306   
            .expect("the config must have a deserializer");
  302    307   
  303    308   
        let parsed = de.deserialize_streaming(&mut http_response);
  304    309   
        let parsed = parsed.unwrap_or_else(|| {
  305    310   
            let http_response = http_response.map(|body| {
  306    311   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  307    312   
                    body.bytes().unwrap(),
  308    313   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  309    314   
                )))
  310    315   
            });
  311         -
            de.deserialize_nonstreaming(&http_response)
         316  +
            // Build a config bag with the protocol for schema-based deserialization
         317  +
            #[allow(unused_mut)]
         318  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         319  +
         320  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  312    321   
        });
  313    322   
        let parsed = parsed
  314    323   
            .expect("should be successful response")
  315    324   
            .downcast::<crate::operation::xml_namespaces::XmlNamespacesOutput>()
  316    325   
            .unwrap();
  317    326   
        ::pretty_assertions::assert_eq!(parsed.nested, expected_output.nested, "Unexpected value for `nested`");
  318    327   
    }
  319    328   
}
  320    329   
  321    330   
/// Error type for the `XmlNamespacesError` operation.