aws_sdk_iotsitewise/operation/
update_asset_model_composite_model.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `UpdateAssetModelCompositeModel`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct UpdateAssetModelCompositeModel;
6impl UpdateAssetModelCompositeModel {
7    /// Creates a new `UpdateAssetModelCompositeModel`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelInput,
14    ) -> ::std::result::Result<
15        crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "IoTSiteWise",
56            "UpdateAssetModelCompositeModel",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "IoTSiteWise.UpdateAssetModelCompositeModel",
65            "rpc.service" = "IoTSiteWise",
66            "rpc.method" = "UpdateAssetModelCompositeModel",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79        runtime_plugins = runtime_plugins.with_operation_plugin(crate::client_idempotency_token::IdempotencyTokenRuntimePlugin::new(
80            |token_provider, input| {
81                let input: &mut crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelInput =
82                    input.downcast_mut().expect("correct type");
83                if input.client_token.is_none() {
84                    input.client_token = ::std::option::Option::Some(token_provider.make_idempotency_token());
85                }
86            },
87        ));
88        if let ::std::option::Option::Some(config_override) = config_override {
89            for plugin in config_override.runtime_plugins.iter().cloned() {
90                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
91            }
92            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
93                config_override,
94                client_config.config.clone(),
95                &client_config.runtime_components,
96            ));
97        }
98        runtime_plugins
99    }
100}
101impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for UpdateAssetModelCompositeModel {
102    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
103        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("UpdateAssetModelCompositeModel");
104
105        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
106            UpdateAssetModelCompositeModelRequestSerializer,
107        ));
108        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
109            UpdateAssetModelCompositeModelResponseDeserializer,
110        ));
111
112        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
113            crate::config::auth::Params::builder()
114                .operation_name("UpdateAssetModelCompositeModel")
115                .build()
116                .expect("required fields set"),
117        ));
118
119        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
120            "UpdateAssetModelCompositeModel",
121            "IoTSiteWise",
122        ));
123        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
124        signing_options.double_uri_encode = true;
125        signing_options.content_sha256_header = false;
126        signing_options.normalize_uri_path = true;
127        signing_options.payload_override = None;
128
129        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
130            signing_options,
131            ..::std::default::Default::default()
132        });
133
134        ::std::option::Option::Some(cfg.freeze())
135    }
136
137    fn runtime_components(
138        &self,
139        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
140    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
141        #[allow(unused_mut)]
142        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("UpdateAssetModelCompositeModel")
143            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
144            .with_interceptor(UpdateAssetModelCompositeModelEndpointParamsInterceptor)
145            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
146                crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelError,
147            >::new())
148            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
149                crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelError,
150            >::new())
151            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
152                crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelError,
153            >::new());
154
155        ::std::borrow::Cow::Owned(rcb)
156    }
157}
158
159#[derive(Debug)]
160struct UpdateAssetModelCompositeModelResponseDeserializer;
161impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for UpdateAssetModelCompositeModelResponseDeserializer {
162    fn deserialize_nonstreaming(
163        &self,
164        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
165    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
166        let (success, status) = (response.status().is_success(), response.status().as_u16());
167        let headers = response.headers();
168        let body = response.body().bytes().expect("body loaded");
169        #[allow(unused_mut)]
170        let mut force_error = false;
171        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
172        let parse_result = if !success && status != 202 || force_error {
173            crate::protocol_serde::shape_update_asset_model_composite_model::de_update_asset_model_composite_model_http_error(status, headers, body)
174        } else {
175            crate::protocol_serde::shape_update_asset_model_composite_model::de_update_asset_model_composite_model_http_response(
176                status, headers, body,
177            )
178        };
179        crate::protocol_serde::type_erase_result(parse_result)
180    }
181}
182#[derive(Debug)]
183struct UpdateAssetModelCompositeModelRequestSerializer;
184impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for UpdateAssetModelCompositeModelRequestSerializer {
185    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
186    fn serialize_input(
187        &self,
188        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
189        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
190    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
191        let input = input
192            .downcast::<crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelInput>()
193            .expect("correct type");
194        let _header_serialization_settings = _cfg
195            .load::<crate::serialization_settings::HeaderSerializationSettings>()
196            .cloned()
197            .unwrap_or_default();
198        let mut request_builder = {
199            #[allow(clippy::uninlined_format_args)]
200            fn uri_base(
201                _input: &crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelInput,
202                output: &mut ::std::string::String,
203            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
204                use ::std::fmt::Write as _;
205                let input_1 = &_input.asset_model_id;
206                let input_1 = input_1
207                    .as_ref()
208                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("asset_model_id", "cannot be empty or unset"))?;
209                let asset_model_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
210                if asset_model_id.is_empty() {
211                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
212                        "asset_model_id",
213                        "cannot be empty or unset",
214                    ));
215                }
216                let input_2 = &_input.asset_model_composite_model_id;
217                let input_2 = input_2.as_ref().ok_or_else(|| {
218                    ::aws_smithy_types::error::operation::BuildError::missing_field("asset_model_composite_model_id", "cannot be empty or unset")
219                })?;
220                let asset_model_composite_model_id =
221                    ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
222                if asset_model_composite_model_id.is_empty() {
223                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
224                        "asset_model_composite_model_id",
225                        "cannot be empty or unset",
226                    ));
227                }
228                ::std::write!(
229                    output,
230                    "/asset-models/{assetModelId}/composite-models/{assetModelCompositeModelId}",
231                    assetModelId = asset_model_id,
232                    assetModelCompositeModelId = asset_model_composite_model_id
233                )
234                .expect("formatting should succeed");
235                ::std::result::Result::Ok(())
236            }
237            #[allow(clippy::unnecessary_wraps)]
238            fn update_http_builder(
239                input: &crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelInput,
240                builder: ::http::request::Builder,
241            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
242                let mut uri = ::std::string::String::new();
243                uri_base(input, &mut uri)?;
244                let builder =
245                    crate::protocol_serde::shape_update_asset_model_composite_model::ser_update_asset_model_composite_model_headers(input, builder)?;
246                ::std::result::Result::Ok(builder.method("PUT").uri(uri))
247            }
248            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
249            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
250            builder
251        };
252        let body = ::aws_smithy_types::body::SdkBody::from(
253            crate::protocol_serde::shape_update_asset_model_composite_model::ser_update_asset_model_composite_model_input(&input)?,
254        );
255        if let Some(content_length) = body.content_length() {
256            let content_length = content_length.to_string();
257            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
258        }
259        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
260    }
261}
262#[derive(Debug)]
263struct UpdateAssetModelCompositeModelEndpointParamsInterceptor;
264
265impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateAssetModelCompositeModelEndpointParamsInterceptor {
266    fn name(&self) -> &'static str {
267        "UpdateAssetModelCompositeModelEndpointParamsInterceptor"
268    }
269
270    fn read_before_execution(
271        &self,
272        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
273            '_,
274            ::aws_smithy_runtime_api::client::interceptors::context::Input,
275            ::aws_smithy_runtime_api::client::interceptors::context::Output,
276            ::aws_smithy_runtime_api::client::interceptors::context::Error,
277        >,
278        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
279    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
280        let _input = context
281            .input()
282            .downcast_ref::<UpdateAssetModelCompositeModelInput>()
283            .ok_or("failed to downcast to UpdateAssetModelCompositeModelInput")?;
284
285        let endpoint_prefix = ::aws_smithy_runtime_api::client::endpoint::EndpointPrefix::new("api.").map_err(|err| {
286            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint prefix could not be built", err)
287        })?;
288        cfg.interceptor_state().store_put(endpoint_prefix);
289
290        let params = crate::config::endpoint::Params::builder()
291            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
292            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
293            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
294            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
295            .build()
296            .map_err(|err| {
297                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
298            })?;
299        cfg.interceptor_state()
300            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
301        ::std::result::Result::Ok(())
302    }
303}
304
305// The get_* functions below are generated from JMESPath expressions in the
306// operationContextParams trait. They target the operation's input shape.
307
308/// Error type for the `UpdateAssetModelCompositeModelError` operation.
309#[non_exhaustive]
310#[derive(::std::fmt::Debug)]
311pub enum UpdateAssetModelCompositeModelError {
312    /// <p>Your request has conflicting operations. This can occur if you're trying to perform more than one operation on the same resource at the same time.</p>
313    ConflictingOperationException(crate::types::error::ConflictingOperationException),
314    /// <p>IoT SiteWise can't process your request right now. Try again later.</p>
315    InternalFailureException(crate::types::error::InternalFailureException),
316    /// <p>The request isn't valid. This can occur if your request contains malformed JSON or unsupported characters. Check your request and try again.</p>
317    InvalidRequestException(crate::types::error::InvalidRequestException),
318    /// <p>You've reached the quota for a resource. For example, this can occur if you're trying to associate more than the allowed number of child assets or attempting to create more than the allowed number of properties for an asset model.</p>
319    /// <p>For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>
320    LimitExceededException(crate::types::error::LimitExceededException),
321    /// <p>The precondition in one or more of the request-header fields evaluated to <code>FALSE</code>.</p>
322    PreconditionFailedException(crate::types::error::PreconditionFailedException),
323    /// <p>The resource already exists.</p>
324    ResourceAlreadyExistsException(crate::types::error::ResourceAlreadyExistsException),
325    /// <p>The requested resource can't be found.</p>
326    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
327    /// <p>Your request exceeded a rate limit. For example, you might have exceeded the number of IoT SiteWise assets that can be created per second, the allowed number of messages per second, and so on.</p>
328    /// <p>For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>
329    ThrottlingException(crate::types::error::ThrottlingException),
330    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
331    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
332    variable wildcard pattern and check `.code()`:
333     \
334    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
335     \
336    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-UpdateAssetModelCompositeModelError) for what information is available for the error.")]
337    Unhandled(crate::error::sealed_unhandled::Unhandled),
338}
339impl UpdateAssetModelCompositeModelError {
340    /// Creates the `UpdateAssetModelCompositeModelError::Unhandled` variant from any error type.
341    pub fn unhandled(
342        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
343    ) -> Self {
344        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
345            source: err.into(),
346            meta: ::std::default::Default::default(),
347        })
348    }
349
350    /// Creates the `UpdateAssetModelCompositeModelError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
351    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
352        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
353            source: err.clone().into(),
354            meta: err,
355        })
356    }
357    ///
358    /// Returns error metadata, which includes the error code, message,
359    /// request ID, and potentially additional information.
360    ///
361    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
362        match self {
363            Self::ConflictingOperationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
364            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::InvalidRequestException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
366            Self::LimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
367            Self::PreconditionFailedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
368            Self::ResourceAlreadyExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
369            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
370            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
371            Self::Unhandled(e) => &e.meta,
372        }
373    }
374    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::ConflictingOperationException`.
375    pub fn is_conflicting_operation_exception(&self) -> bool {
376        matches!(self, Self::ConflictingOperationException(_))
377    }
378    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::InternalFailureException`.
379    pub fn is_internal_failure_exception(&self) -> bool {
380        matches!(self, Self::InternalFailureException(_))
381    }
382    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::InvalidRequestException`.
383    pub fn is_invalid_request_exception(&self) -> bool {
384        matches!(self, Self::InvalidRequestException(_))
385    }
386    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::LimitExceededException`.
387    pub fn is_limit_exceeded_exception(&self) -> bool {
388        matches!(self, Self::LimitExceededException(_))
389    }
390    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::PreconditionFailedException`.
391    pub fn is_precondition_failed_exception(&self) -> bool {
392        matches!(self, Self::PreconditionFailedException(_))
393    }
394    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::ResourceAlreadyExistsException`.
395    pub fn is_resource_already_exists_exception(&self) -> bool {
396        matches!(self, Self::ResourceAlreadyExistsException(_))
397    }
398    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::ResourceNotFoundException`.
399    pub fn is_resource_not_found_exception(&self) -> bool {
400        matches!(self, Self::ResourceNotFoundException(_))
401    }
402    /// Returns `true` if the error kind is `UpdateAssetModelCompositeModelError::ThrottlingException`.
403    pub fn is_throttling_exception(&self) -> bool {
404        matches!(self, Self::ThrottlingException(_))
405    }
406}
407impl ::std::error::Error for UpdateAssetModelCompositeModelError {
408    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
409        match self {
410            Self::ConflictingOperationException(_inner) => ::std::option::Option::Some(_inner),
411            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
412            Self::InvalidRequestException(_inner) => ::std::option::Option::Some(_inner),
413            Self::LimitExceededException(_inner) => ::std::option::Option::Some(_inner),
414            Self::PreconditionFailedException(_inner) => ::std::option::Option::Some(_inner),
415            Self::ResourceAlreadyExistsException(_inner) => ::std::option::Option::Some(_inner),
416            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
417            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
418            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
419        }
420    }
421}
422impl ::std::fmt::Display for UpdateAssetModelCompositeModelError {
423    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
424        match self {
425            Self::ConflictingOperationException(_inner) => _inner.fmt(f),
426            Self::InternalFailureException(_inner) => _inner.fmt(f),
427            Self::InvalidRequestException(_inner) => _inner.fmt(f),
428            Self::LimitExceededException(_inner) => _inner.fmt(f),
429            Self::PreconditionFailedException(_inner) => _inner.fmt(f),
430            Self::ResourceAlreadyExistsException(_inner) => _inner.fmt(f),
431            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
432            Self::ThrottlingException(_inner) => _inner.fmt(f),
433            Self::Unhandled(_inner) => {
434                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
435                    write!(f, "unhandled error ({code})")
436                } else {
437                    f.write_str("unhandled error")
438                }
439            }
440        }
441    }
442}
443impl ::aws_smithy_types::retry::ProvideErrorKind for UpdateAssetModelCompositeModelError {
444    fn code(&self) -> ::std::option::Option<&str> {
445        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
446    }
447    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
448        ::std::option::Option::None
449    }
450}
451impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for UpdateAssetModelCompositeModelError {
452    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
453        match self {
454            Self::ConflictingOperationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
455            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
456            Self::InvalidRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
457            Self::LimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
458            Self::PreconditionFailedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
459            Self::ResourceAlreadyExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
460            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
461            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
462            Self::Unhandled(_inner) => &_inner.meta,
463        }
464    }
465}
466impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for UpdateAssetModelCompositeModelError {
467    fn create_unhandled_error(
468        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
469        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
470    ) -> Self {
471        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
472            source,
473            meta: meta.unwrap_or_default(),
474        })
475    }
476}
477impl ::aws_types::request_id::RequestId for crate::operation::update_asset_model_composite_model::UpdateAssetModelCompositeModelError {
478    fn request_id(&self) -> Option<&str> {
479        self.meta().request_id()
480    }
481}
482
483pub use crate::operation::update_asset_model_composite_model::_update_asset_model_composite_model_output::UpdateAssetModelCompositeModelOutput;
484
485pub use crate::operation::update_asset_model_composite_model::_update_asset_model_composite_model_input::UpdateAssetModelCompositeModelInput;
486
487mod _update_asset_model_composite_model_input;
488
489mod _update_asset_model_composite_model_output;
490
491/// Builders
492pub mod builders;