Skip to content

Commit

Permalink
Re-point those using BuildError from smithy-http to smithy-types (#…
Browse files Browse the repository at this point in the history
…3070)

## Motivation and Context
Completes #3054 (a follow-up on #3032)

## Description
#3032 moved `BuildError` from `aws_smithy_http::operation::error` to
`aws_smithy_types::error::operation`. That PR also left "breadcrumbs",
so that customers could still consume `BuldError` from `aws_smithy_http`
after the move.

This PR turns breadcrumbs into deprecation messages (via
`#[deprecated(...)]`) and updates existing places that used to use moved
types from `aws_smithy_http` to `aws_smithy_types`.

## Testing
Relied on tests in CI.

## Checklist
- [x] I have updated `CHANGELOG.next.toml` if I made changes to the
smithy-rs codegen or runtime crates

----

_By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice._

---------

Co-authored-by: Russell Cohen <[email protected]>
  • Loading branch information
ysaito1001 and rcoh authored Oct 19, 2023
1 parent 307f0ed commit e447a22
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 14 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.next.toml
Original file line number Diff line number Diff line change
Expand Up @@ -426,3 +426,11 @@ message = "**This change has [detailed upgrade guidance](https://github.com/awsl
references = ["smithy-rs#3043", "smithy-rs#3078"]
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "client" }
author = "rcoh"

[[smithy-rs]]
message = """
`aws_smithy_http::operation::error::{BuildError, SerializationError}` have been moved to `aws_smithy_types::error::operation::{BuildError, SerializationError}`. Type aliases for them are left in `aws_smithy_http` for backwards compatibility but are deprecated.
"""
references = ["smithy-rs#3054", "smithy-rs#3070"]
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "all" }
author = "ysaito1001"
4 changes: 2 additions & 2 deletions aws/rust-runtime/aws-inlineable/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ aws-credential-types = { path = "../aws-credential-types" }
aws-http = { path = "../aws-http" }
aws-runtime = { path = "../aws-runtime" }
aws-sigv4 = { path = "../aws-sigv4" }
aws-smithy-async = { path = "../../../rust-runtime/aws-smithy-async", features = ["rt-tokio"] }
aws-smithy-checksums = { path = "../../../rust-runtime/aws-smithy-checksums" }
aws-smithy-http = { path = "../../../rust-runtime/aws-smithy-http" }
aws-smithy-runtime-api = { path = "../../../rust-runtime/aws-smithy-runtime-api", features = ["client"] }
aws-smithy-runtime = { path = "../../../rust-runtime/aws-smithy-runtime", features = ["client"] }
aws-smithy-runtime-api = { path = "../../../rust-runtime/aws-smithy-runtime-api", features = ["client"] }
aws-smithy-types = { path = "../../../rust-runtime/aws-smithy-types" }
aws-smithy-async = { path = "../../../rust-runtime/aws-smithy-async", features = ["rt-tokio"] }
bytes = "1"
hex = "0.4.3"
http = "0.2.9"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ use aws_sigv4::http_request::SignableBody;
use aws_smithy_checksums::ChecksumAlgorithm;
use aws_smithy_checksums::{body::calculate, http::HttpChecksum};
use aws_smithy_http::body::{BoxBody, SdkBody};
use aws_smithy_http::operation::error::BuildError;
use aws_smithy_runtime_api::box_error::BoxError;
use aws_smithy_runtime_api::client::interceptors::context::{
BeforeSerializationInterceptorContextRef, BeforeTransmitInterceptorContextMut, Input,
Expand All @@ -23,6 +22,7 @@ use aws_smithy_runtime_api::client::interceptors::Intercept;
use aws_smithy_runtime_api::client::orchestrator::HttpRequest;
use aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
use aws_smithy_types::config_bag::{ConfigBag, Layer, Storable, StoreReplace};
use aws_smithy_types::error::operation::BuildError;
use http::HeaderValue;
use http_body::Body;
use std::{fmt, mem};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
use aws_sdk_s3::config::{Credentials, Region};
use aws_sdk_s3::error::DisplayErrorContext;
use aws_sdk_s3::Client;
use aws_smithy_http::operation::error::BuildError;
use aws_smithy_runtime::client::http::test_util::capture_request;
use aws_smithy_types::error::operation::BuildError;

#[tokio::test]
async fn test_error_when_required_query_param_is_unset() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ sealed class BuilderSection(name: String) : Section(name) {
/** Customizations for BuilderGenerator */
abstract class BuilderCustomization : NamedCustomization<BuilderSection>()

fun RuntimeConfig.operationBuildError() = RuntimeType.operationModule(this).resolve("error::BuildError")
fun RuntimeConfig.serializationError() = RuntimeType.operationModule(this).resolve("error::SerializationError")
fun RuntimeConfig.operationBuildError() = RuntimeType.smithyTypes(this).resolve("error::operation::BuildError")
fun RuntimeConfig.serializationError() = RuntimeType.smithyTypes(this).resolve("error::operation::SerializationError")

fun MemberShape.enforceRequired(
field: Writable,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use thiserror::Error;
#[derive(Debug, Error)]
pub enum ResponseRejection {
#[error("error serializing JSON-encoded body: {0}")]
Serialization(#[from] aws_smithy_http::operation::error::SerializationError),
Serialization(#[from] aws_smithy_types::error::operation::SerializationError),
#[error("error building HTTP response: {0}")]
HttpBuild(#[from] http::Error),
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ pub enum ResponseRejection {
/// `httpHeader` or `httpPrefixHeaders`.
/// Used when failing to serialize an `httpPayload`-bound struct into an HTTP response body.
#[error("error building HTTP response: {0}")]
Build(#[from] aws_smithy_http::operation::error::BuildError),
Build(#[from] aws_smithy_types::error::operation::BuildError),

/// Used when failing to serialize a struct into a `String` for the JSON-encoded HTTP response
/// body.
Expand All @@ -76,7 +76,7 @@ pub enum ResponseRejection {
/// supplied timestamp is outside of the valid range when formatting using RFC-3339, i.e. a
/// date outside the `0001-01-01T00:00:00.000Z`-`9999-12-31T23:59:59.999Z` range is supplied.
#[error("error serializing JSON-encoded body: {0}")]
Serialization(#[from] aws_smithy_http::operation::error::SerializationError),
Serialization(#[from] aws_smithy_types::error::operation::SerializationError),

/// Used when consuming an [`http::response::Builder`] into the constructed [`http::Response`]
/// when calling [`http::response::Builder::body`].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ pub enum ResponseRejection {
#[error("invalid bound HTTP status code; status codes must be inside the 100-999 range: {0}")]
InvalidHttpStatusCode(TryFromIntError),
#[error("error building HTTP response: {0}")]
Build(#[from] aws_smithy_http::operation::error::BuildError),
Build(#[from] aws_smithy_types::error::operation::BuildError),
#[error("error serializing XML-encoded body: {0}")]
Serialization(#[from] aws_smithy_http::operation::error::SerializationError),
Serialization(#[from] aws_smithy_types::error::operation::SerializationError),
#[error("error building HTTP response: {0}")]
HttpBuild(#[from] http::Error),
}
Expand Down
12 changes: 9 additions & 3 deletions rust-runtime/aws-smithy-http/src/operation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,17 @@
use aws_smithy_types::config_bag::{Storable, StoreReplace};
use std::borrow::Cow;

//TODO(runtimeCratesVersioningCleanup): Re-point those who use the following reexport to
// directly depend on `aws_smithy_types` and remove the reexport below.
//TODO(runtimeCratesVersioningCleanup): Re-point those who use the deprecated type aliases to
// directly depend on `aws_smithy_types` and remove the type aliases below.
/// Errors for operations
pub mod error {
pub use aws_smithy_types::error::operation::{BuildError, SerializationError};
/// An error occurred attempting to build an `Operation` from an input.
#[deprecated(note = "Moved to `aws_smithy_types::error::operation::BuildError`.")]
pub type BuildError = aws_smithy_types::error::operation::BuildError;

/// An error that occurs when serialization of an operation fails.
#[deprecated(note = "Moved to `aws_smithy_types::error::operation::SerializationError`.")]
pub type SerializationError = aws_smithy_types::error::operation::SerializationError;
}

/// Metadata added to the [`ConfigBag`](aws_smithy_types::config_bag::ConfigBag) that identifies the API being called.
Expand Down

0 comments on commit e447a22

Please sign in to comment.