Client Test

Client Test

rev. e063993ca0ab793f44c575dbe707d50a5e3e2406 (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-client-test/aws_query/rust-client-codegen/src/operation/xml_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 `XmlEnums`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct XmlEnums;
    6      6   
impl XmlEnums {
    7      7   
    /// Creates a new `XmlEnums`
    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_enums::XmlEnumsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::xml_enums::XmlEnumsOutput::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_enums::XmlEnumsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::xml_enums::XmlEnumsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::xml_enums::XmlEnumsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -100,104 +162,167 @@
  120    124   
                crate::operation::xml_enums::XmlEnumsError,
  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 XmlEnumsResponseDeserializer;
  129    133   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlEnumsResponseDeserializer {
  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_enums::de_xml_enums_http_error(status, headers, body)
  142    147   
        } else {
@@ -259,264 +319,328 @@
  279    284   
            .expect("the config must have a deserializer");
  280    285   
  281    286   
        let parsed = de.deserialize_streaming(&mut http_response);
  282    287   
        let parsed = parsed.unwrap_or_else(|| {
  283    288   
            let http_response = http_response.map(|body| {
  284    289   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  285    290   
                    body.bytes().unwrap(),
  286    291   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  287    292   
                )))
  288    293   
            });
  289         -
            de.deserialize_nonstreaming(&http_response)
         294  +
            // Build a config bag with the protocol for schema-based deserialization
         295  +
            #[allow(unused_mut)]
         296  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         297  +
         298  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  290    299   
        });
  291    300   
        let parsed = parsed
  292    301   
            .expect("should be successful response")
  293    302   
            .downcast::<crate::operation::xml_enums::XmlEnumsOutput>()
  294    303   
            .unwrap();
  295    304   
        ::pretty_assertions::assert_eq!(parsed.foo_enum1, expected_output.foo_enum1, "Unexpected value for `foo_enum1`");
  296    305   
        ::pretty_assertions::assert_eq!(parsed.foo_enum2, expected_output.foo_enum2, "Unexpected value for `foo_enum2`");
  297    306   
        ::pretty_assertions::assert_eq!(parsed.foo_enum3, expected_output.foo_enum3, "Unexpected value for `foo_enum3`");
  298    307   
        ::pretty_assertions::assert_eq!(
  299    308   
            parsed.foo_enum_list,

tmp-codegen-diff/codegen-client-test/aws_query/rust-client-codegen/src/operation/xml_enums/_xml_enums_input.rs

@@ -1,1 +67,80 @@
   18     18   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   19     19   
    fn serialize_members(
   20     20   
        &self,
   21     21   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   22     22   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   23     23   
        Ok(())
   24     24   
    }
   25     25   
}
   26     26   
impl XmlEnumsInput {
   27     27   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   28         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   29         -
        deserializer: &mut D,
          28  +
    pub fn deserialize(
          29  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   30     30   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   31     31   
        #[allow(unused_variables, unused_mut)]
   32     32   
        let mut builder = Self::builder();
   33     33   
        #[allow(
   34     34   
            unused_variables,
   35     35   
            unreachable_code,
   36     36   
            clippy::single_match,
   37     37   
            clippy::match_single_binding,
   38     38   
            clippy::diverging_sub_expression
   39     39   
        )]
   40         -
        deserializer.read_struct(&XMLENUMSINPUT_SCHEMA, (), |_, member, deser| {
          40  +
        deserializer.read_struct(&XMLENUMSINPUT_SCHEMA, &mut |member, deser| {
   41     41   
            match member.member_index() {
   42     42   
                _ => {}
   43     43   
            }
   44     44   
            Ok(())
   45     45   
        })?;
   46     46   
        builder
   47     47   
            .build()
   48     48   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   49     49   
    }
   50     50   
}
          51  +
impl XmlEnumsInput {
          52  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          53  +
    pub fn deserialize_with_response(
          54  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          55  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          56  +
        _status: u16,
          57  +
        _body: &[u8],
          58  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          59  +
        Self::builder()
          60  +
            .build()
          61  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
          62  +
    }
          63  +
}
   51     64   
impl XmlEnumsInput {
   52     65   
    /// Creates a new builder-style object to manufacture [`XmlEnumsInput`](crate::operation::xml_enums::XmlEnumsInput).
   53     66   
    pub fn builder() -> crate::operation::xml_enums::builders::XmlEnumsInputBuilder {
   54     67   
        crate::operation::xml_enums::builders::XmlEnumsInputBuilder::default()
   55     68   
    }
   56     69   
}
   57     70   
   58     71   
/// A builder for [`XmlEnumsInput`](crate::operation::xml_enums::XmlEnumsInput).
   59     72   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   60     73   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/aws_query/rust-client-codegen/src/operation/xml_enums/_xml_enums_output.rs

@@ -31,31 +141,141 @@
   51     51   
    "aws.protocoltests.query.synthetic",
   52     52   
    "XmlEnumsOutput",
   53     53   
);
   54     54   
static XMLENUMSOUTPUT_MEMBER_FOO_ENUM1: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   55     55   
    ::aws_smithy_schema::ShapeId::from_static(
   56     56   
        "aws.protocoltests.query.synthetic#XmlEnumsOutput$fooEnum1",
   57     57   
        "aws.protocoltests.query.synthetic",
   58     58   
        "XmlEnumsOutput",
   59     59   
    ),
   60     60   
    ::aws_smithy_schema::ShapeType::String,
   61         -
    "foo_enum1",
          61  +
    "fooEnum1",
   62     62   
    0,
   63     63   
);
   64     64   
static XMLENUMSOUTPUT_MEMBER_FOO_ENUM2: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   65     65   
    ::aws_smithy_schema::ShapeId::from_static(
   66     66   
        "aws.protocoltests.query.synthetic#XmlEnumsOutput$fooEnum2",
   67     67   
        "aws.protocoltests.query.synthetic",
   68     68   
        "XmlEnumsOutput",
   69     69   
    ),
   70     70   
    ::aws_smithy_schema::ShapeType::String,
   71         -
    "foo_enum2",
          71  +
    "fooEnum2",
   72     72   
    1,
   73     73   
);
   74     74   
static XMLENUMSOUTPUT_MEMBER_FOO_ENUM3: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   75     75   
    ::aws_smithy_schema::ShapeId::from_static(
   76     76   
        "aws.protocoltests.query.synthetic#XmlEnumsOutput$fooEnum3",
   77     77   
        "aws.protocoltests.query.synthetic",
   78     78   
        "XmlEnumsOutput",
   79     79   
    ),
   80     80   
    ::aws_smithy_schema::ShapeType::String,
   81         -
    "foo_enum3",
          81  +
    "fooEnum3",
   82     82   
    2,
   83     83   
);
   84     84   
static XMLENUMSOUTPUT_MEMBER_FOO_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   85     85   
    ::aws_smithy_schema::ShapeId::from_static(
   86     86   
        "aws.protocoltests.query.synthetic#XmlEnumsOutput$fooEnumList",
   87     87   
        "aws.protocoltests.query.synthetic",
   88     88   
        "XmlEnumsOutput",
   89     89   
    ),
   90     90   
    ::aws_smithy_schema::ShapeType::List,
   91         -
    "foo_enum_list",
          91  +
    "fooEnumList",
   92     92   
    3,
   93     93   
);
   94     94   
static XMLENUMSOUTPUT_MEMBER_FOO_ENUM_SET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "aws.protocoltests.query.synthetic#XmlEnumsOutput$fooEnumSet",
   97     97   
        "aws.protocoltests.query.synthetic",
   98     98   
        "XmlEnumsOutput",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::List,
  101         -
    "foo_enum_set",
         101  +
    "fooEnumSet",
  102    102   
    4,
  103    103   
);
  104    104   
static XMLENUMSOUTPUT_MEMBER_FOO_ENUM_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "aws.protocoltests.query.synthetic#XmlEnumsOutput$fooEnumMap",
  107    107   
        "aws.protocoltests.query.synthetic",
  108    108   
        "XmlEnumsOutput",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::Map,
  111         -
    "foo_enum_map",
         111  +
    "fooEnumMap",
  112    112   
    5,
  113    113   
);
  114    114   
static XMLENUMSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  115    115   
    XMLENUMSOUTPUT_SCHEMA_ID,
  116    116   
    ::aws_smithy_schema::ShapeType::Structure,
  117    117   
    &[
  118    118   
        &XMLENUMSOUTPUT_MEMBER_FOO_ENUM1,
  119    119   
        &XMLENUMSOUTPUT_MEMBER_FOO_ENUM2,
  120    120   
        &XMLENUMSOUTPUT_MEMBER_FOO_ENUM3,
  121    121   
        &XMLENUMSOUTPUT_MEMBER_FOO_ENUM_LIST,
@@ -154,154 +282,284 @@
  174    174   
                    }
  175    175   
                    Ok(())
  176    176   
                },
  177    177   
            )?;
  178    178   
        }
  179    179   
        Ok(())
  180    180   
    }
  181    181   
}
  182    182   
impl XmlEnumsOutput {
  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(&XMLENUMSOUTPUT_SCHEMA, (), |_, member, deser| {
         196  +
        deserializer.read_struct(&XMLENUMSOUTPUT_SCHEMA, &mut |member, deser| {
  197    197   
            match member.member_index() {
  198    198   
                Some(0) => {
  199    199   
                    builder.foo_enum1 = Some(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  200    200   
                }
  201    201   
                Some(1) => {
  202    202   
                    builder.foo_enum2 = Some(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  203    203   
                }
  204    204   
                Some(2) => {
  205    205   
                    builder.foo_enum3 = Some(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  206    206   
                }
  207    207   
                Some(3) => {
  208    208   
                    builder.foo_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(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  216         -
                            Ok(list)
  217         -
                        })?
         209  +
                        let mut container = Vec::new();
         210  +
                        deser.read_list(member, &mut |deser| {
         211  +
                            container.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
         212  +
                            Ok(())
         213  +
                        })?;
         214  +
                        container
  218    215   
                    });
  219    216   
                }
  220    217   
                Some(4) => {
  221    218   
                    builder.foo_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(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  229         -
                            Ok(list)
  230         -
                        })?
         219  +
                        let mut container = Vec::new();
         220  +
                        deser.read_list(member, &mut |deser| {
         221  +
                            container.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
         222  +
                            Ok(())
         223  +
                        })?;
         224  +
                        container
  231    225   
                    });
  232    226   
                }
  233    227   
                Some(5) => {
  234    228   
                    builder.foo_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, crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  242         -
                            Ok(map)
  243         -
                        })?
         229  +
                        let mut container = std::collections::HashMap::new();
         230  +
                        deser.read_map(member, &mut |key, deser| {
         231  +
                            container.insert(key, crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
         232  +
                            Ok(())
         233  +
                        })?;
         234  +
                        container
  244    235   
                    });
  245    236   
                }
  246    237   
                _ => {}
  247    238   
            }
  248    239   
            Ok(())
  249    240   
        })?;
  250    241   
        Ok(builder.build())
  251    242   
    }
  252    243   
}
         244  +
impl XmlEnumsOutput {
         245  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         246  +
    pub fn deserialize_with_response(
         247  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         248  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         249  +
        _status: u16,
         250  +
        _body: &[u8],
         251  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         252  +
        Self::deserialize(deserializer)
         253  +
    }
         254  +
}
  253    255   
impl XmlEnumsOutput {
  254    256   
    /// Creates a new builder-style object to manufacture [`XmlEnumsOutput`](crate::operation::xml_enums::XmlEnumsOutput).
  255    257   
    pub fn builder() -> crate::operation::xml_enums::builders::XmlEnumsOutputBuilder {
  256    258   
        crate::operation::xml_enums::builders::XmlEnumsOutputBuilder::default()
  257    259   
    }
  258    260   
}
  259    261   
  260    262   
/// A builder for [`XmlEnumsOutput`](crate::operation::xml_enums::XmlEnumsOutput).
  261    263   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  262    264   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/aws_query/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 {
@@ -249,254 +309,318 @@
  269    274   
            .expect("the config must have a deserializer");
  270    275   
  271    276   
        let parsed = de.deserialize_streaming(&mut http_response);
  272    277   
        let parsed = parsed.unwrap_or_else(|| {
  273    278   
            let http_response = http_response.map(|body| {
  274    279   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  275    280   
                    body.bytes().unwrap(),
  276    281   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  277    282   
                )))
  278    283   
            });
  279         -
            de.deserialize_nonstreaming(&http_response)
         284  +
            // Build a config bag with the protocol for schema-based deserialization
         285  +
            #[allow(unused_mut)]
         286  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         287  +
         288  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  280    289   
        });
  281    290   
        let parsed = parsed
  282    291   
            .expect("should be successful response")
  283    292   
            .downcast::<crate::operation::xml_int_enums::XmlIntEnumsOutput>()
  284    293   
            .unwrap();
  285    294   
        ::pretty_assertions::assert_eq!(parsed.int_enum1, expected_output.int_enum1, "Unexpected value for `int_enum1`");
  286    295   
        ::pretty_assertions::assert_eq!(parsed.int_enum2, expected_output.int_enum2, "Unexpected value for `int_enum2`");
  287    296   
        ::pretty_assertions::assert_eq!(parsed.int_enum3, expected_output.int_enum3, "Unexpected value for `int_enum3`");
  288    297   
        ::pretty_assertions::assert_eq!(
  289    298   
            parsed.int_enum_list,

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

@@ -1,1 +67,80 @@
   18     18   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   19     19   
    fn serialize_members(
   20     20   
        &self,
   21     21   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   22     22   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   23     23   
        Ok(())
   24     24   
    }
   25     25   
}
   26     26   
impl XmlIntEnumsInput {
   27     27   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   28         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   29         -
        deserializer: &mut D,
          28  +
    pub fn deserialize(
          29  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   30     30   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   31     31   
        #[allow(unused_variables, unused_mut)]
   32     32   
        let mut builder = Self::builder();
   33     33   
        #[allow(
   34     34   
            unused_variables,
   35     35   
            unreachable_code,
   36     36   
            clippy::single_match,
   37     37   
            clippy::match_single_binding,
   38     38   
            clippy::diverging_sub_expression
   39     39   
        )]
   40         -
        deserializer.read_struct(&XMLINTENUMSINPUT_SCHEMA, (), |_, member, deser| {
          40  +
        deserializer.read_struct(&XMLINTENUMSINPUT_SCHEMA, &mut |member, deser| {
   41     41   
            match member.member_index() {
   42     42   
                _ => {}
   43     43   
            }
   44     44   
            Ok(())
   45     45   
        })?;
   46     46   
        builder
   47     47   
            .build()
   48     48   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   49     49   
    }
   50     50   
}
          51  +
impl XmlIntEnumsInput {
          52  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          53  +
    pub fn deserialize_with_response(
          54  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          55  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          56  +
        _status: u16,
          57  +
        _body: &[u8],
          58  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          59  +
        Self::builder()
          60  +
            .build()
          61  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
          62  +
    }
          63  +
}
   51     64   
impl XmlIntEnumsInput {
   52     65   
    /// Creates a new builder-style object to manufacture [`XmlIntEnumsInput`](crate::operation::xml_int_enums::XmlIntEnumsInput).
   53     66   
    pub fn builder() -> crate::operation::xml_int_enums::builders::XmlIntEnumsInputBuilder {
   54     67   
        crate::operation::xml_int_enums::builders::XmlIntEnumsInputBuilder::default()
   55     68   
    }
   56     69   
}
   57     70   
   58     71   
/// A builder for [`XmlIntEnumsInput`](crate::operation::xml_int_enums::XmlIntEnumsInput).
   59     72   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   60     73   
#[non_exhaustive]

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

@@ -31,31 +141,141 @@
   51     51   
    "aws.protocoltests.query.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.query.synthetic#XmlIntEnumsOutput$intEnum1",
   57     57   
        "aws.protocoltests.query.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.query.synthetic#XmlIntEnumsOutput$intEnum2",
   67     67   
        "aws.protocoltests.query.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.query.synthetic#XmlIntEnumsOutput$intEnum3",
   77     77   
        "aws.protocoltests.query.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.query.synthetic#XmlIntEnumsOutput$intEnumList",
   87     87   
        "aws.protocoltests.query.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.query.synthetic#XmlIntEnumsOutput$intEnumSet",
   97     97   
        "aws.protocoltests.query.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.query.synthetic#XmlIntEnumsOutput$intEnumMap",
  107    107   
        "aws.protocoltests.query.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/aws_query/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 {
@@ -262,267 +322,331 @@
  282    287   
            .expect("the config must have a deserializer");
  283    288   
  284    289   
        let parsed = de.deserialize_streaming(&mut http_response);
  285    290   
        let parsed = parsed.unwrap_or_else(|| {
  286    291   
            let http_response = http_response.map(|body| {
  287    292   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  288    293   
                    body.bytes().unwrap(),
  289    294   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  290    295   
                )))
  291    296   
            });
  292         -
            de.deserialize_nonstreaming(&http_response)
         297  +
            // Build a config bag with the protocol for schema-based deserialization
         298  +
            #[allow(unused_mut)]
         299  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         300  +
         301  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  293    302   
        });
  294    303   
        let parsed = parsed
  295    304   
            .expect("should be successful response")
  296    305   
            .downcast::<crate::operation::xml_lists::XmlListsOutput>()
  297    306   
            .unwrap();
  298    307   
        ::pretty_assertions::assert_eq!(parsed.string_list, expected_output.string_list, "Unexpected value for `string_list`");
  299    308   
        ::pretty_assertions::assert_eq!(parsed.string_set, expected_output.string_set, "Unexpected value for `string_set`");
  300    309   
        ::pretty_assertions::assert_eq!(parsed.integer_list, expected_output.integer_list, "Unexpected value for `integer_list`");
  301    310   
        ::pretty_assertions::assert_eq!(parsed.boolean_list, expected_output.boolean_list, "Unexpected value for `boolean_list`");
  302    311   
        ::pretty_assertions::assert_eq!(

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

@@ -1,1 +67,80 @@
   18     18   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   19     19   
    fn serialize_members(
   20     20   
        &self,
   21     21   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   22     22   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   23     23   
        Ok(())
   24     24   
    }
   25     25   
}
   26     26   
impl XmlListsInput {
   27     27   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   28         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   29         -
        deserializer: &mut D,
          28  +
    pub fn deserialize(
          29  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   30     30   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   31     31   
        #[allow(unused_variables, unused_mut)]
   32     32   
        let mut builder = Self::builder();
   33     33   
        #[allow(
   34     34   
            unused_variables,
   35     35   
            unreachable_code,
   36     36   
            clippy::single_match,
   37     37   
            clippy::match_single_binding,
   38     38   
            clippy::diverging_sub_expression
   39     39   
        )]
   40         -
        deserializer.read_struct(&XMLLISTSINPUT_SCHEMA, (), |_, member, deser| {
          40  +
        deserializer.read_struct(&XMLLISTSINPUT_SCHEMA, &mut |member, deser| {
   41     41   
            match member.member_index() {
   42     42   
                _ => {}
   43     43   
            }
   44     44   
            Ok(())
   45     45   
        })?;
   46     46   
        builder
   47     47   
            .build()
   48     48   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   49     49   
    }
   50     50   
}
          51  +
impl XmlListsInput {
          52  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          53  +
    pub fn deserialize_with_response(
          54  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          55  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          56  +
        _status: u16,
          57  +
        _body: &[u8],
          58  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          59  +
        Self::builder()
          60  +
            .build()
          61  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
          62  +
    }
          63  +
}
   51     64   
impl XmlListsInput {
   52     65   
    /// Creates a new builder-style object to manufacture [`XmlListsInput`](crate::operation::xml_lists::XmlListsInput).
   53     66   
    pub fn builder() -> crate::operation::xml_lists::builders::XmlListsInputBuilder {
   54     67   
        crate::operation::xml_lists::builders::XmlListsInputBuilder::default()
   55     68   
    }
   56     69   
}
   57     70   
   58     71   
/// A builder for [`XmlListsInput`](crate::operation::xml_lists::XmlListsInput).
   59     72   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   60     73   
#[non_exhaustive]

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

@@ -103,103 +299,299 @@
  123    123   
    "aws.protocoltests.query.synthetic",
  124    124   
    "XmlListsOutput",
  125    125   
);
  126    126   
static XMLLISTSOUTPUT_MEMBER_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  127    127   
    ::aws_smithy_schema::ShapeId::from_static(
  128    128   
        "aws.protocoltests.query.synthetic#XmlListsOutput$stringList",
  129    129   
        "aws.protocoltests.query.synthetic",
  130    130   
        "XmlListsOutput",
  131    131   
    ),
  132    132   
    ::aws_smithy_schema::ShapeType::List,
  133         -
    "string_list",
         133  +
    "stringList",
  134    134   
    0,
  135    135   
);
  136    136   
static XMLLISTSOUTPUT_MEMBER_STRING_SET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  137    137   
    ::aws_smithy_schema::ShapeId::from_static(
  138    138   
        "aws.protocoltests.query.synthetic#XmlListsOutput$stringSet",
  139    139   
        "aws.protocoltests.query.synthetic",
  140    140   
        "XmlListsOutput",
  141    141   
    ),
  142    142   
    ::aws_smithy_schema::ShapeType::List,
  143         -
    "string_set",
         143  +
    "stringSet",
  144    144   
    1,
  145    145   
);
  146    146   
static XMLLISTSOUTPUT_MEMBER_INTEGER_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  147    147   
    ::aws_smithy_schema::ShapeId::from_static(
  148    148   
        "aws.protocoltests.query.synthetic#XmlListsOutput$integerList",
  149    149   
        "aws.protocoltests.query.synthetic",
  150    150   
        "XmlListsOutput",
  151    151   
    ),
  152    152   
    ::aws_smithy_schema::ShapeType::List,
  153         -
    "integer_list",
         153  +
    "integerList",
  154    154   
    2,
  155    155   
);
  156    156   
static XMLLISTSOUTPUT_MEMBER_BOOLEAN_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  157    157   
    ::aws_smithy_schema::ShapeId::from_static(
  158    158   
        "aws.protocoltests.query.synthetic#XmlListsOutput$booleanList",
  159    159   
        "aws.protocoltests.query.synthetic",
  160    160   
        "XmlListsOutput",
  161    161   
    ),
  162    162   
    ::aws_smithy_schema::ShapeType::List,
  163         -
    "boolean_list",
         163  +
    "booleanList",
  164    164   
    3,
  165    165   
);
  166    166   
static XMLLISTSOUTPUT_MEMBER_TIMESTAMP_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  167    167   
    ::aws_smithy_schema::ShapeId::from_static(
  168    168   
        "aws.protocoltests.query.synthetic#XmlListsOutput$timestampList",
  169    169   
        "aws.protocoltests.query.synthetic",
  170    170   
        "XmlListsOutput",
  171    171   
    ),
  172    172   
    ::aws_smithy_schema::ShapeType::List,
  173         -
    "timestamp_list",
         173  +
    "timestampList",
  174    174   
    4,
  175    175   
);
  176    176   
static XMLLISTSOUTPUT_MEMBER_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  177    177   
    ::aws_smithy_schema::ShapeId::from_static(
  178    178   
        "aws.protocoltests.query.synthetic#XmlListsOutput$enumList",
  179    179   
        "aws.protocoltests.query.synthetic",
  180    180   
        "XmlListsOutput",
  181    181   
    ),
  182    182   
    ::aws_smithy_schema::ShapeType::List,
  183         -
    "enum_list",
         183  +
    "enumList",
  184    184   
    5,
  185    185   
);
  186    186   
static XMLLISTSOUTPUT_MEMBER_INT_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  187    187   
    ::aws_smithy_schema::ShapeId::from_static(
  188    188   
        "aws.protocoltests.query.synthetic#XmlListsOutput$intEnumList",
  189    189   
        "aws.protocoltests.query.synthetic",
  190    190   
        "XmlListsOutput",
  191    191   
    ),
  192    192   
    ::aws_smithy_schema::ShapeType::List,
  193         -
    "int_enum_list",
         193  +
    "intEnumList",
  194    194   
    6,
  195    195   
);
  196    196   
static XMLLISTSOUTPUT_MEMBER_NESTED_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  197    197   
    ::aws_smithy_schema::ShapeId::from_static(
  198    198   
        "aws.protocoltests.query.synthetic#XmlListsOutput$nestedStringList",
  199    199   
        "aws.protocoltests.query.synthetic",
  200    200   
        "XmlListsOutput",
  201    201   
    ),
  202    202   
    ::aws_smithy_schema::ShapeType::List,
  203         -
    "nested_string_list",
         203  +
    "nestedStringList",
  204    204   
    7,
  205    205   
);
  206    206   
static XMLLISTSOUTPUT_MEMBER_RENAMED_LIST_MEMBERS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  207    207   
    ::aws_smithy_schema::ShapeId::from_static(
  208    208   
        "aws.protocoltests.query.synthetic#XmlListsOutput$renamedListMembers",
  209    209   
        "aws.protocoltests.query.synthetic",
  210    210   
        "XmlListsOutput",
  211    211   
    ),
  212    212   
    ::aws_smithy_schema::ShapeType::List,
  213         -
    "renamed_list_members",
         213  +
    "renamedListMembers",
  214    214   
    8,
  215    215   
)
  216    216   
.with_xml_name("renamed");
  217    217   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  218    218   
    ::aws_smithy_schema::ShapeId::from_static(
  219    219   
        "aws.protocoltests.query.synthetic#XmlListsOutput$flattenedList",
  220    220   
        "aws.protocoltests.query.synthetic",
  221    221   
        "XmlListsOutput",
  222    222   
    ),
  223    223   
    ::aws_smithy_schema::ShapeType::List,
  224         -
    "flattened_list",
         224  +
    "flattenedList",
  225    225   
    9,
  226    226   
)
  227    227   
.with_xml_flattened();
  228    228   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST2: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  229    229   
    ::aws_smithy_schema::ShapeId::from_static(
  230    230   
        "aws.protocoltests.query.synthetic#XmlListsOutput$flattenedList2",
  231    231   
        "aws.protocoltests.query.synthetic",
  232    232   
        "XmlListsOutput",
  233    233   
    ),
  234    234   
    ::aws_smithy_schema::ShapeType::List,
  235         -
    "flattened_list2",
         235  +
    "flattenedList2",
  236    236   
    10,
  237    237   
)
  238    238   
.with_xml_name("customName")
  239    239   
.with_xml_flattened();
  240    240   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST_WITH_MEMBER_NAMESPACE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  241    241   
    ::aws_smithy_schema::ShapeId::from_static(
  242    242   
        "aws.protocoltests.query.synthetic#XmlListsOutput$flattenedListWithMemberNamespace",
  243    243   
        "aws.protocoltests.query.synthetic",
  244    244   
        "XmlListsOutput",
  245    245   
    ),
  246    246   
    ::aws_smithy_schema::ShapeType::List,
  247         -
    "flattened_list_with_member_namespace",
         247  +
    "flattenedListWithMemberNamespace",
  248    248   
    11,
  249    249   
)
  250    250   
.with_xml_flattened();
  251    251   
static XMLLISTSOUTPUT_MEMBER_FLATTENED_LIST_WITH_NAMESPACE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  252    252   
    ::aws_smithy_schema::ShapeId::from_static(
  253    253   
        "aws.protocoltests.query.synthetic#XmlListsOutput$flattenedListWithNamespace",
  254    254   
        "aws.protocoltests.query.synthetic",
  255    255   
        "XmlListsOutput",
  256    256   
    ),
  257    257   
    ::aws_smithy_schema::ShapeType::List,
  258         -
    "flattened_list_with_namespace",
         258  +
    "flattenedListWithNamespace",
  259    259   
    12,
  260    260   
)
  261    261   
.with_xml_flattened();
  262    262   
static XMLLISTSOUTPUT_MEMBER_STRUCTURE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  263    263   
    ::aws_smithy_schema::ShapeId::from_static(
  264    264   
        "aws.protocoltests.query.synthetic#XmlListsOutput$structureList",
  265    265   
        "aws.protocoltests.query.synthetic",
  266    266   
        "XmlListsOutput",
  267    267   
    ),
  268    268   
    ::aws_smithy_schema::ShapeType::List,
  269         -
    "structure_list",
         269  +
    "structureList",
  270    270   
    13,
  271    271   
)
  272    272   
.with_xml_name("myStructureList");
  273    273   
static XMLLISTSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  274    274   
    XMLLISTSOUTPUT_SCHEMA_ID,
  275    275   
    ::aws_smithy_schema::ShapeType::Structure,
  276    276   
    &[
  277    277   
        &XMLLISTSOUTPUT_MEMBER_STRING_LIST,
  278    278   
        &XMLLISTSOUTPUT_MEMBER_STRING_SET,
  279    279   
        &XMLLISTSOUTPUT_MEMBER_INTEGER_LIST,
@@ -355,355 +415,423 @@
  375    375   
                    }
  376    376   
                    Ok(())
  377    377   
                },
  378    378   
            )?;
  379    379   
        }
  380    380   
        if let Some(ref val) = self.nested_string_list {
  381    381   
            ser.write_list(
  382    382   
                &XMLLISTSOUTPUT_MEMBER_NESTED_STRING_LIST,
  383    383   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  384    384   
                    for item in val {
  385         -
                        todo!("schema: unsupported list element type");
         385  +
                        ser.write_list(
         386  +
                            &::aws_smithy_schema::prelude::DOCUMENT,
         387  +
                            &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         388  +
                                for item in item {
         389  +
                                    ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
         390  +
                                }
         391  +
                                Ok(())
         392  +
                            },
         393  +
                        )?;
  386    394   
                    }
  387    395   
                    Ok(())
  388    396   
                },
  389    397   
            )?;
  390    398   
        }
  391    399   
        if let Some(ref val) = self.renamed_list_members {
  392    400   
            ser.write_list(
  393    401   
                &XMLLISTSOUTPUT_MEMBER_RENAMED_LIST_MEMBERS,
  394    402   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  395    403   
                    for item in val {
@@ -432,440 +694,615 @@
  452    460   
                    }
  453    461   
                    Ok(())
  454    462   
                },
  455    463   
            )?;
  456    464   
        }
  457    465   
        Ok(())
  458    466   
    }
  459    467   
}
  460    468   
impl XmlListsOutput {
  461    469   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  462         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  463         -
        deserializer: &mut D,
         470  +
    pub fn deserialize(
         471  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  464    472   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  465    473   
        #[allow(unused_variables, unused_mut)]
  466    474   
        let mut builder = Self::builder();
  467    475   
        #[allow(
  468    476   
            unused_variables,
  469    477   
            unreachable_code,
  470    478   
            clippy::single_match,
  471    479   
            clippy::match_single_binding,
  472    480   
            clippy::diverging_sub_expression
  473    481   
        )]
  474         -
        deserializer.read_struct(&XMLLISTSOUTPUT_SCHEMA, (), |_, member, deser| {
         482  +
        deserializer.read_struct(&XMLLISTSOUTPUT_SCHEMA, &mut |member, deser| {
  475    483   
            match member.member_index() {
  476    484   
                Some(0) => {
  477         -
                    builder.string_list = Some({
  478         -
                        let container = if let Some(cap) = deser.container_size() {
  479         -
                            Vec::with_capacity(cap)
  480         -
                        } else {
  481         -
                            Vec::new()
  482         -
                        };
  483         -
                        deser.read_list(member, container, |mut list, deser| {
  484         -
                            list.push(deser.read_string(member)?);
  485         -
                            Ok(list)
  486         -
                        })?
  487         -
                    });
         485  +
                    builder.string_list = Some(deser.read_string_list(member)?);
  488    486   
                }
  489    487   
                Some(1) => {
  490         -
                    builder.string_set = Some({
  491         -
                        let container = if let Some(cap) = deser.container_size() {
  492         -
                            Vec::with_capacity(cap)
  493         -
                        } else {
  494         -
                            Vec::new()
  495         -
                        };
  496         -
                        deser.read_list(member, container, |mut list, deser| {
  497         -
                            list.push(deser.read_string(member)?);
  498         -
                            Ok(list)
  499         -
                        })?
  500         -
                    });
         488  +
                    builder.string_set = Some(deser.read_string_list(member)?);
  501    489   
                }
  502    490   
                Some(2) => {
  503         -
                    builder.integer_list = Some({
  504         -
                        let container = if let Some(cap) = deser.container_size() {
  505         -
                            Vec::with_capacity(cap)
  506         -
                        } else {
  507         -
                            Vec::new()
  508         -
                        };
  509         -
                        deser.read_list(member, container, |mut list, deser| {
  510         -
                            list.push(deser.read_integer(member)?);
  511         -
                            Ok(list)
  512         -
                        })?
  513         -
                    });
         491  +
                    builder.integer_list = Some(deser.read_integer_list(member)?);
  514    492   
                }
  515    493   
                Some(3) => {
  516    494   
                    builder.boolean_list = Some({
  517         -
                        let container = if let Some(cap) = deser.container_size() {
  518         -
                            Vec::with_capacity(cap)
  519         -
                        } else {
  520         -
                            Vec::new()
  521         -
                        };
  522         -
                        deser.read_list(member, container, |mut list, deser| {
  523         -
                            list.push(deser.read_boolean(member)?);
  524         -
                            Ok(list)
  525         -
                        })?
         495  +
                        let mut container = Vec::new();
         496  +
                        deser.read_list(member, &mut |deser| {
         497  +
                            container.push(deser.read_boolean(member)?);
         498  +
                            Ok(())
         499  +
                        })?;
         500  +
                        container
  526    501   
                    });
  527    502   
                }
  528    503   
                Some(4) => {
  529    504   
                    builder.timestamp_list = Some({
  530         -
                        let container = if let Some(cap) = deser.container_size() {
  531         -
                            Vec::with_capacity(cap)
  532         -
                        } else {
  533         -
                            Vec::new()
  534         -
                        };
  535         -
                        deser.read_list(member, container, |mut list, deser| {
  536         -
                            list.push(deser.read_timestamp(member)?);
  537         -
                            Ok(list)
  538         -
                        })?
         505  +
                        let mut container = Vec::new();
         506  +
                        deser.read_list(member, &mut |deser| {
         507  +
                            container.push(deser.read_timestamp(member)?);
         508  +
                            Ok(())
         509  +
                        })?;
         510  +
                        container
  539    511   
                    });
  540    512   
                }
  541    513   
                Some(5) => {
  542    514   
                    builder.enum_list = Some({
  543         -
                        let container = if let Some(cap) = deser.container_size() {
  544         -
                            Vec::with_capacity(cap)
  545         -
                        } else {
  546         -
                            Vec::new()
  547         -
                        };
  548         -
                        deser.read_list(member, container, |mut list, deser| {
  549         -
                            list.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  550         -
                            Ok(list)
  551         -
                        })?
         515  +
                        let mut container = Vec::new();
         516  +
                        deser.read_list(member, &mut |deser| {
         517  +
                            container.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
         518  +
                            Ok(())
         519  +
                        })?;
         520  +
                        container
  552    521   
                    });
  553    522   
                }
  554    523   
                Some(6) => {
  555         -
                    builder.int_enum_list = Some({
  556         -
                        let container = if let Some(cap) = deser.container_size() {
  557         -
                            Vec::with_capacity(cap)
  558         -
                        } else {
  559         -
                            Vec::new()
  560         -
                        };
  561         -
                        deser.read_list(member, container, |mut list, deser| {
  562         -
                            list.push(deser.read_integer(member)?);
  563         -
                            Ok(list)
  564         -
                        })?
  565         -
                    });
         524  +
                    builder.int_enum_list = Some(deser.read_integer_list(member)?);
  566    525   
                }
  567    526   
                Some(7) => {
  568    527   
                    builder.nested_string_list = Some({
  569         -
                        let container = if let Some(cap) = deser.container_size() {
  570         -
                            Vec::with_capacity(cap)
  571         -
                        } else {
  572         -
                            Vec::new()
  573         -
                        };
  574         -
                        deser.read_list(member, container, |mut list, deser| {
  575         -
                            list.push(todo!("deserialize nested aggregate"));
  576         -
                            Ok(list)
  577         -
                        })?
         528  +
                        let mut container = Vec::new();
         529  +
                        deser.read_list(member, &mut |deser| {
         530  +
                            container.push({
         531  +
                                let mut list = Vec::new();
         532  +
                                deser.read_list(member, &mut |deser| {
         533  +
                                    list.push(deser.read_string(&::aws_smithy_schema::prelude::DOCUMENT)?);
         534  +
                                    Ok(())
         535  +
                                })?;
         536  +
                                list
         537  +
                            });
         538  +
                            Ok(())
         539  +
                        })?;
         540  +
                        container
  578    541   
                    });
  579    542   
                }
  580    543   
                Some(8) => {
  581         -
                    builder.renamed_list_members = Some({
  582         -
                        let container = if let Some(cap) = deser.container_size() {
  583         -
                            Vec::with_capacity(cap)
  584         -
                        } else {
  585         -
                            Vec::new()
  586         -
                        };
  587         -
                        deser.read_list(member, container, |mut list, deser| {
  588         -
                            list.push(deser.read_string(member)?);
  589         -
                            Ok(list)
  590         -
                        })?
  591         -
                    });
         544  +
                    builder.renamed_list_members = Some(deser.read_string_list(member)?);
  592    545   
                }
  593    546   
                Some(9) => {
  594         -
                    builder.flattened_list = Some({
  595         -
                        let container = if let Some(cap) = deser.container_size() {
  596         -
                            Vec::with_capacity(cap)
  597         -
                        } else {
  598         -
                            Vec::new()
  599         -
                        };
  600         -
                        deser.read_list(member, container, |mut list, deser| {
  601         -
                            list.push(deser.read_string(member)?);
  602         -
                            Ok(list)
  603         -
                        })?
  604         -
                    });
         547  +
                    builder.flattened_list = Some(deser.read_string_list(member)?);
  605    548   
                }
  606    549   
                Some(10) => {
  607         -
                    builder.flattened_list2 = Some({
  608         -
                        let container = if let Some(cap) = deser.container_size() {
  609         -
                            Vec::with_capacity(cap)
  610         -
                        } else {
  611         -
                            Vec::new()
  612         -
                        };
  613         -
                        deser.read_list(member, container, |mut list, deser| {
  614         -
                            list.push(deser.read_string(member)?);
  615         -
                            Ok(list)
  616         -
                        })?
  617         -
                    });
         550  +
                    builder.flattened_list2 = Some(deser.read_string_list(member)?);
  618    551   
                }
  619    552   
                Some(11) => {
  620         -
                    builder.flattened_list_with_member_namespace = Some({
  621         -
                        let container = if let Some(cap) = deser.container_size() {
  622         -
                            Vec::with_capacity(cap)
  623         -
                        } else {
  624         -
                            Vec::new()
  625         -
                        };
  626         -
                        deser.read_list(member, container, |mut list, deser| {
  627         -
                            list.push(deser.read_string(member)?);
  628         -
                            Ok(list)
  629         -
                        })?
  630         -
                    });
         553  +
                    builder.flattened_list_with_member_namespace = Some(deser.read_string_list(member)?);
  631    554   
                }
  632    555   
                Some(12) => {
  633         -
                    builder.flattened_list_with_namespace = Some({
  634         -
                        let container = if let Some(cap) = deser.container_size() {
  635         -
                            Vec::with_capacity(cap)
  636         -
                        } else {
  637         -
                            Vec::new()
  638         -
                        };
  639         -
                        deser.read_list(member, container, |mut list, deser| {
  640         -
                            list.push(deser.read_string(member)?);
  641         -
                            Ok(list)
  642         -
                        })?
  643         -
                    });
         556  +
                    builder.flattened_list_with_namespace = Some(deser.read_string_list(member)?);
  644    557   
                }
  645    558   
                Some(13) => {
  646    559   
                    builder.structure_list = Some({
  647         -
                        let container = if let Some(cap) = deser.container_size() {
  648         -
                            Vec::with_capacity(cap)
  649         -
                        } else {
  650         -
                            Vec::new()
  651         -
                        };
  652         -
                        deser.read_list(member, container, |mut list, deser| {
  653         -
                            list.push(crate::types::StructureListMember::deserialize(deser)?);
  654         -
                            Ok(list)
  655         -
                        })?
         560  +
                        let mut container = Vec::new();
         561  +
                        deser.read_list(member, &mut |deser| {
         562  +
                            container.push(crate::types::StructureListMember::deserialize(deser)?);
         563  +
                            Ok(())
         564  +
                        })?;
         565  +
                        container
  656    566   
                    });
  657    567   
                }
  658    568   
                _ => {}
  659    569   
            }
  660    570   
            Ok(())
  661    571   
        })?;
  662    572   
        Ok(builder.build())
  663    573   
    }
  664    574   
}
         575  +
impl XmlListsOutput {
         576  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         577  +
    pub fn deserialize_with_response(
         578  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         579  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         580  +
        _status: u16,
         581  +
        _body: &[u8],
         582  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         583  +
        Self::deserialize(deserializer)
         584  +
    }
         585  +
}
  665    586   
impl XmlListsOutput {
  666    587   
    /// Creates a new builder-style object to manufacture [`XmlListsOutput`](crate::operation::xml_lists::XmlListsOutput).
  667    588   
    pub fn builder() -> crate::operation::xml_lists::builders::XmlListsOutputBuilder {
  668    589   
        crate::operation::xml_lists::builders::XmlListsOutputBuilder::default()
  669    590   
    }
  670    591   
}
  671    592   
  672    593   
/// A builder for [`XmlListsOutput`](crate::operation::xml_lists::XmlListsOutput).
  673    594   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  674    595   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/aws_query/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   
    > {
@@ -97,101 +159,164 @@
  117    121   
                crate::operation::xml_maps::XmlMapsError,
  118    122   
            >::new());
  119    123   
  120    124   
        ::std::borrow::Cow::Owned(rcb)
  121    125   
    }
  122    126   
}
  123    127   
  124    128   
#[derive(Debug)]
  125    129   
struct XmlMapsResponseDeserializer;
  126    130   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for XmlMapsResponseDeserializer {
  127         -
    fn deserialize_nonstreaming(
         131  +
    fn deserialize_nonstreaming_with_config(
  128    132   
        &self,
  129    133   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         134  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  130    135   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  131    136   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  132    137   
        let headers = response.headers();
  133    138   
        let body = response.body().bytes().expect("body loaded");
  134    139   
        #[allow(unused_mut)]
  135    140   
        let mut force_error = false;
  136    141   
  137    142   
        let parse_result = if !success && status != 200 || force_error {
  138    143   
            crate::protocol_serde::shape_xml_maps::de_xml_maps_http_error(status, headers, body)
  139    144   
        } else {
@@ -243,248 +303,312 @@
  263    268   
            .expect("the config must have a deserializer");
  264    269   
  265    270   
        let parsed = de.deserialize_streaming(&mut http_response);
  266    271   
        let parsed = parsed.unwrap_or_else(|| {
  267    272   
            let http_response = http_response.map(|body| {
  268    273   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  269    274   
                    body.bytes().unwrap(),
  270    275   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  271    276   
                )))
  272    277   
            });
  273         -
            de.deserialize_nonstreaming(&http_response)
         278  +
            // Build a config bag with the protocol for schema-based deserialization
         279  +
            #[allow(unused_mut)]
         280  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         281  +
         282  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  274    283   
        });
  275    284   
        let parsed = parsed
  276    285   
            .expect("should be successful response")
  277    286   
            .downcast::<crate::operation::xml_maps::XmlMapsOutput>()
  278    287   
            .unwrap();
  279    288   
        ::pretty_assertions::assert_eq!(parsed.my_map, expected_output.my_map, "Unexpected value for `my_map`");
  280    289   
    }
  281    290   
}
  282    291   
  283    292   
/// Error type for the `XmlMapsError` operation.

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

@@ -1,1 +67,80 @@
   18     18   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   19     19   
    fn serialize_members(
   20     20   
        &self,
   21     21   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   22     22   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   23     23   
        Ok(())
   24     24   
    }
   25     25   
}
   26     26   
impl XmlMapsInput {
   27     27   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   28         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   29         -
        deserializer: &mut D,
          28  +
    pub fn deserialize(
          29  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   30     30   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   31     31   
        #[allow(unused_variables, unused_mut)]
   32     32   
        let mut builder = Self::builder();
   33     33   
        #[allow(
   34     34   
            unused_variables,
   35     35   
            unreachable_code,
   36     36   
            clippy::single_match,
   37     37   
            clippy::match_single_binding,
   38     38   
            clippy::diverging_sub_expression
   39     39   
        )]
   40         -
        deserializer.read_struct(&XMLMAPSINPUT_SCHEMA, (), |_, member, deser| {
          40  +
        deserializer.read_struct(&XMLMAPSINPUT_SCHEMA, &mut |member, deser| {
   41     41   
            match member.member_index() {
   42     42   
                _ => {}
   43     43   
            }
   44     44   
            Ok(())
   45     45   
        })?;
   46     46   
        builder
   47     47   
            .build()
   48     48   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   49     49   
    }
   50     50   
}
          51  +
impl XmlMapsInput {
          52  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          53  +
    pub fn deserialize_with_response(
          54  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          55  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          56  +
        _status: u16,
          57  +
        _body: &[u8],
          58  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          59  +
        Self::builder()
          60  +
            .build()
          61  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
          62  +
    }
          63  +
}
   51     64   
impl XmlMapsInput {
   52     65   
    /// Creates a new builder-style object to manufacture [`XmlMapsInput`](crate::operation::xml_maps::XmlMapsInput).
   53     66   
    pub fn builder() -> crate::operation::xml_maps::builders::XmlMapsInputBuilder {
   54     67   
        crate::operation::xml_maps::builders::XmlMapsInputBuilder::default()
   55     68   
    }
   56     69   
}
   57     70   
   58     71   
/// A builder for [`XmlMapsInput`](crate::operation::xml_maps::XmlMapsInput).
   59     72   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   60     73   
#[non_exhaustive]

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

@@ -1,1 +125,133 @@
   17     17   
    "aws.protocoltests.query.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.query.synthetic#XmlMapsOutput$myMap",
   23     23   
        "aws.protocoltests.query.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/aws_query/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 {
@@ -254,259 +314,323 @@
  274    279   
            .expect("the config must have a deserializer");
  275    280   
  276    281   
        let parsed = de.deserialize_streaming(&mut http_response);
  277    282   
        let parsed = parsed.unwrap_or_else(|| {
  278    283   
            let http_response = http_response.map(|body| {
  279    284   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  280    285   
                    body.bytes().unwrap(),
  281    286   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  282    287   
                )))
  283    288   
            });
  284         -
            de.deserialize_nonstreaming(&http_response)
         289  +
            // Build a config bag with the protocol for schema-based deserialization
         290  +
            #[allow(unused_mut)]
         291  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         292  +
         293  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  285    294   
        });
  286    295   
        let parsed = parsed
  287    296   
            .expect("should be successful response")
  288    297   
            .downcast::<crate::operation::xml_maps_xml_name::XmlMapsXmlNameOutput>()
  289    298   
            .unwrap();
  290    299   
        ::pretty_assertions::assert_eq!(parsed.my_map, expected_output.my_map, "Unexpected value for `my_map`");
  291    300   
    }
  292    301   
}
  293    302   
  294    303   
/// Error type for the `XmlMapsXmlNameError` operation.

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

@@ -1,1 +69,82 @@
   18     18   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   19     19   
    fn serialize_members(
   20     20   
        &self,
   21     21   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   22     22   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   23     23   
        Ok(())
   24     24   
    }
   25     25   
}
   26     26   
impl XmlMapsXmlNameInput {
   27     27   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   28         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   29         -
        deserializer: &mut D,
          28  +
    pub fn deserialize(
          29  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   30     30   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   31     31   
        #[allow(unused_variables, unused_mut)]
   32     32   
        let mut builder = Self::builder();
   33     33   
        #[allow(
   34     34   
            unused_variables,
   35     35   
            unreachable_code,
   36     36   
            clippy::single_match,
   37     37   
            clippy::match_single_binding,
   38     38   
            clippy::diverging_sub_expression
   39     39   
        )]
   40         -
        deserializer.read_struct(&XMLMAPSXMLNAMEINPUT_SCHEMA, (), |_, member, deser| {
          40  +
        deserializer.read_struct(&XMLMAPSXMLNAMEINPUT_SCHEMA, &mut |member, deser| {
   41     41   
            match member.member_index() {
   42     42   
                _ => {}
   43     43   
            }
   44     44   
            Ok(())
   45     45   
        })?;
   46     46   
        builder
   47     47   
            .build()
   48     48   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
   49     49   
    }
   50     50   
}
          51  +
impl XmlMapsXmlNameInput {
          52  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          53  +
    pub fn deserialize_with_response(
          54  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          55  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          56  +
        _status: u16,
          57  +
        _body: &[u8],
          58  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          59  +
        Self::builder()
          60  +
            .build()
          61  +
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
          62  +
    }
          63  +
}
   51     64   
impl XmlMapsXmlNameInput {
   52     65   
    /// Creates a new builder-style object to manufacture [`XmlMapsXmlNameInput`](crate::operation::xml_maps_xml_name::XmlMapsXmlNameInput).
   53     66   
    pub fn builder() -> crate::operation::xml_maps_xml_name::builders::XmlMapsXmlNameInputBuilder {
   54     67   
        crate::operation::xml_maps_xml_name::builders::XmlMapsXmlNameInputBuilder::default()
   55     68   
    }
   56     69   
}
   57     70   
   58     71   
/// A builder for [`XmlMapsXmlNameInput`](crate::operation::xml_maps_xml_name::XmlMapsXmlNameInput).
   59     72   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   60     73   
#[non_exhaustive]

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

@@ -1,1 +125,133 @@
   17     17   
    "aws.protocoltests.query.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.query.synthetic#XmlMapsXmlNameOutput$myMap",
   23     23   
        "aws.protocoltests.query.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/aws_query/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 {
@@ -244,249 +304,313 @@
  264    269   
            .expect("the config must have a deserializer");
  265    270   
  266    271   
        let parsed = de.deserialize_streaming(&mut http_response);
  267    272   
        let parsed = parsed.unwrap_or_else(|| {
  268    273   
            let http_response = http_response.map(|body| {
  269    274   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  270    275   
                    body.bytes().unwrap(),
  271    276   
                    ::aws_smithy_protocol_test::MediaType::from("application/xml"),
  272    277   
                )))
  273    278   
            });
  274         -
            de.deserialize_nonstreaming(&http_response)
         279  +
            // Build a config bag with the protocol for schema-based deserialization
         280  +
            #[allow(unused_mut)]
         281  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         282  +
         283  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  275    284   
        });
  276    285   
        let parsed = parsed
  277    286   
            .expect("should be successful response")
  278    287   
            .downcast::<crate::operation::xml_namespaces::XmlNamespacesOutput>()
  279    288   
            .unwrap();
  280    289   
        ::pretty_assertions::assert_eq!(parsed.nested, expected_output.nested, "Unexpected value for `nested`");
  281    290   
    }
  282    291   
}
  283    292   
  284    293   
/// Error type for the `XmlNamespacesError` operation.