AWS SDK

AWS SDK

rev. af028824dbfecd029fcbd1be9a9038a9c67237e4..adaebde1f4822749babbf33102490032425579aa

Files changed:

tmp-codegen-diff/services/build.gradle.kts

@@ -1,1 +0,155 @@
    3      3   
 * SPDX-License-Identifier: Apache-2.0
    4      4   
 */
    5      5   
import aws.sdk.kotlin.gradle.dsl.configurePublishing
    6      6   
import aws.sdk.kotlin.gradle.kmp.*
    7      7   
import aws.sdk.kotlin.gradle.util.typedProp
    8      8   
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
    9      9   
import java.time.LocalDateTime
   10     10   
   11     11   
plugins {
   12     12   
    `maven-publish`
   13         -
    alias(libs.plugins.dokka)
          13  +
    `dokka-convention`
   14     14   
    alias(libs.plugins.aws.kotlin.repo.tools.kmp) apply false
   15     15   
}
   16     16   
   17     17   
val sdkVersion: String by project
   18     18   
   19     19   
val optinAnnotations = listOf(
   20     20   
    "aws.smithy.kotlin.runtime.InternalApi",
   21     21   
    "aws.sdk.kotlin.runtime.InternalSdkApi",
   22     22   
    "kotlin.RequiresOptIn",
   23     23   
)
   24     24   
   25     25   
// capture locally - scope issue with custom KMP plugin
   26     26   
val libraries = libs
   27     27   
   28     28   
subprojects {
   29     29   
    group = "aws.sdk.kotlin"
   30     30   
    version = sdkVersion
   31     31   
   32     32   
    apply {
   33     33   
        plugin("org.jetbrains.kotlin.multiplatform")
   34         -
        plugin("org.jetbrains.dokka")
   35     34   
        plugin(libraries.plugins.aws.kotlin.repo.tools.kmp.get().pluginId)
   36     35   
    }
   37     36   
   38     37   
    logger.info("configuring: $project")
   39     38   
   40     39   
    kotlin {
   41     40   
        explicitApi()
   42     41   
   43     42   
        sourceSets {
   44     43   
            all {
   45     44   
                // have generated sdk's opt-in to internal runtime features
   46     45   
                optinAnnotations.forEach { languageSettings.optIn(it) }
   47     46   
            }
   48     47   
   49     48   
            getByName("commonMain") {
   50     49   
                kotlin.srcDir("generated-src/main/kotlin")
   51     50   
            }
   52     51   
   53     52   
            getByName("commonTest") {
   54     53   
                kotlin.srcDir("generated-src/test")
   55     54   
   56     55   
                dependencies {
   57     56   
                    implementation(libraries.kotlinx.coroutines.test)
   58     57   
                    implementation(libraries.smithy.kotlin.http.test)
   59     58   
                }
   60     59   
            }
   61     60   
        }
   62     61   
   63     62   
        if (project.file("e2eTest").exists()) {
   64     63   
            jvm().compilations {
   65     64   
                val e2eTest by creating {
   66     65   
                    defaultSourceSet {
   67     66   
                        kotlin.srcDir("e2eTest/src")
   68     67   
                        resources.srcDir("e2eTest/test-resources")
   69     68   
                        dependsOn(this@kotlin.sourceSets.getByName("commonMain"))
   70     69   
                        dependsOn(this@kotlin.sourceSets.getByName("jvmMain"))
   71     70   
   72     71   
                        dependencies {
   73     72   
                            api(libraries.smithy.kotlin.testing)
   74     73   
                            implementation(libraries.kotlin.test)
   75     74   
                            implementation(libraries.kotlin.test.junit5)
   76     75   
                            implementation(project(":tests:e2e-test-util"))
   77     76   
                            implementation(libraries.slf4j.simple)
   78     77   
                        }
   79     78   
                    }
   80     79   
   81         -
                    kotlinOptions {
   82         -
                        // Enable coroutine runTests in 1.6.10
   83         -
                        // NOTE: may be removed after coroutines-test runTests becomes stable
   84         -
                        freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.RequiresOptIn"
   85         -
                    }
   86         -
   87     80   
                    tasks.register<Test>("e2eTest") {
   88     81   
                        description = "Run e2e service tests"
   89     82   
                        group = "verification"
   90     83   
   91     84   
                        if (project.name == "s3") {
   92     85   
                            dependencies {
   93     86   
                                implementation(project(":services:s3control"))
   94     87   
                                implementation(project(":services:sts"))
   95     88   
                                implementation(libs.smithy.kotlin.aws.signing.crt)
   96     89   
                            }
   97     90   
                        }
   98     91   
   99     92   
                        if (project.name == "sesv2") {
  100     93   
                            dependencies {
  101     94   
                                implementation(libs.smithy.kotlin.aws.signing.crt) // needed for E2E test of SigV4a
  102     95   
                            }
  103     96   
                        }
  104     97   
  105     98   
                        if (project.name == "route53") {
  106     99   
                            dependencies {
  107    100   
                                implementation(libraries.smithy.kotlin.http.test) // needed for URI E2E tests
  108    101   
                            }
  109    102   
                        }
  110    103   
  111    104   
                        // Run the tests with the classpath containing the compile dependencies (including 'main'),
  112    105   
                        // runtime dependencies, and the outputs of this compilation:
  113    106   
                        classpath = compileDependencyFiles + runtimeDependencyFiles + output.allOutputs
  114    107   
  115    108   
                        // Run only the tests from this compilation's outputs:
  116    109   
                        testClassesDirs = output.classesDirs
  117    110   
  118    111   
                        useJUnitPlatform()
  119    112   
                        testLogging {
  120    113   
                            events("passed", "skipped", "failed")
  121    114   
                            showStandardStreams = true
  122    115   
                            showStackTraces = true
  123    116   
                            showExceptions = true
  124    117   
                            exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
  125    118   
                        }
  126    119   
  127    120   
                        // model a random input to enable re-running e2e tests back to back without
  128    121   
                        // up-to-date checks or cache getting in the way
  129    122   
                        inputs.property("integration.datetime", LocalDateTime.now())
  130    123   
                        systemProperty("org.slf4j.simpleLogger.defaultLogLevel", System.getProperty("org.slf4j.simpleLogger.defaultLogLevel", "WARN"))
  131    124   
                    }
  132    125   
                }
  133    126   
            }
  134    127   
        }
  135    128   
    }
  136    129   
  137         -
    dependencies {
  138         -
        dokkaPlugin(project(":dokka-aws"))
  139         -
    }
  140         -
  141    130   
    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
  142    131   
        compilerOptions {
  143    132   
            allWarningsAsErrors.set(false) // FIXME Tons of errors occur in generated code
  144    133   
            jvmTarget.set(JvmTarget.JVM_1_8) // fixes outgoing variant metadata: https://github.com/smithy-lang/smithy-kotlin/issues/258
  145    134   
        }
  146    135   
    }
  147    136   
  148    137   
    configurePublishing("aws-sdk-kotlin")
  149    138   
    publishing {
  150    139   
        publications.all {
  151    140   
            if (this !is MavenPublication) return@all
  152    141   
            project.afterEvaluate {
  153    142   
                val sdkId = project.typedProp<String>("aws.sdk.id") ?: error("service build `${project.name}` is missing `aws.sdk.id` property required for publishing")
  154    143   
                pom.properties.put("aws.sdk.id", sdkId)
  155    144   
            }
  156    145   
        }
  157    146   
    }
  158    147   
}
         148  +
         149  +
// Configure Dokka for subprojects
         150  +
dependencies {
         151  +
    subprojects.forEach {
         152  +
        it.plugins.apply("dokka-convention") // Apply the Dokka conventions plugin to the subproject
         153  +
        dokka(project(it.path)) // Aggregate the subproject's generated documentation
         154  +
    }
         155  +
}

tmp-codegen-diff/services/codebuild/build.gradle.kts

@@ -1,1 +60,60 @@
    1      1   
    2      2   
description = "The AWS SDK for Kotlin client for CodeBuild"
    3      3   
project.ext.set("aws.sdk.id", "CodeBuild")
    4      4   
    5      5   
kotlin {
    6      6   
    sourceSets {
    7      7   
        commonMain {
    8      8   
            dependencies {
    9         -
                implementation("aws.smithy.kotlin:aws-credentials:1.4.17-SNAPSHOT")
           9  +
                implementation("aws.smithy.kotlin:aws-credentials:1.4.2-SNAPSHOT")
   10     10   
                implementation(project(":aws-runtime:aws-http"))
   11         -
                implementation("aws.smithy.kotlin:aws-json-protocols:1.4.17-SNAPSHOT")
   12         -
                implementation("aws.smithy.kotlin:aws-protocol-core:1.4.17-SNAPSHOT")
   13         -
                implementation("aws.smithy.kotlin:aws-signing-common:1.4.17-SNAPSHOT")
   14         -
                implementation("aws.smithy.kotlin:aws-signing-default:1.4.17-SNAPSHOT")
   15         -
                implementation("aws.smithy.kotlin:http:1.4.17-SNAPSHOT")
   16         -
                implementation("aws.smithy.kotlin:http-auth:1.4.17-SNAPSHOT")
   17         -
                implementation("aws.smithy.kotlin:http-auth-aws:1.4.17-SNAPSHOT")
   18         -
                implementation("aws.smithy.kotlin:http-client-engine-default:1.4.17-SNAPSHOT")
   19         -
                implementation("aws.smithy.kotlin:identity-api:1.4.17-SNAPSHOT")
          11  +
                implementation("aws.smithy.kotlin:aws-json-protocols:1.4.2-SNAPSHOT")
          12  +
                implementation("aws.smithy.kotlin:aws-protocol-core:1.4.2-SNAPSHOT")
          13  +
                implementation("aws.smithy.kotlin:aws-signing-common:1.4.2-SNAPSHOT")
          14  +
                implementation("aws.smithy.kotlin:aws-signing-default:1.4.2-SNAPSHOT")
          15  +
                implementation("aws.smithy.kotlin:http:1.4.2-SNAPSHOT")
          16  +
                implementation("aws.smithy.kotlin:http-auth:1.4.2-SNAPSHOT")
          17  +
                implementation("aws.smithy.kotlin:http-auth-aws:1.4.2-SNAPSHOT")
          18  +
                implementation("aws.smithy.kotlin:http-client-engine-default:1.4.2-SNAPSHOT")
          19  +
                implementation("aws.smithy.kotlin:identity-api:1.4.2-SNAPSHOT")
   20     20   
                implementation("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
   21         -
                implementation("aws.smithy.kotlin:serde:1.4.17-SNAPSHOT")
   22         -
                implementation("aws.smithy.kotlin:serde-json:1.4.17-SNAPSHOT")
   23         -
                implementation("aws.smithy.kotlin:telemetry-defaults:1.4.17-SNAPSHOT")
          21  +
                implementation("aws.smithy.kotlin:serde:1.4.2-SNAPSHOT")
          22  +
                implementation("aws.smithy.kotlin:serde-json:1.4.2-SNAPSHOT")
          23  +
                implementation("aws.smithy.kotlin:telemetry-defaults:1.4.2-SNAPSHOT")
   24     24   
                api(project(":aws-runtime:aws-config"))
   25     25   
                api(project(":aws-runtime:aws-core"))
   26     26   
                api(project(":aws-runtime:aws-endpoint"))
   27         -
                api("aws.smithy.kotlin:http-client:1.4.17-SNAPSHOT")
   28         -
                api("aws.smithy.kotlin:runtime-core:1.4.17-SNAPSHOT")
   29         -
                api("aws.smithy.kotlin:smithy-client:1.4.17-SNAPSHOT")
   30         -
                api("aws.smithy.kotlin:telemetry-api:1.4.17-SNAPSHOT")
          27  +
                api("aws.smithy.kotlin:http-client:1.4.2-SNAPSHOT")
          28  +
                api("aws.smithy.kotlin:runtime-core:1.4.2-SNAPSHOT")
          29  +
                api("aws.smithy.kotlin:smithy-client:1.4.2-SNAPSHOT")
          30  +
                api("aws.smithy.kotlin:telemetry-api:1.4.2-SNAPSHOT")
   31     31   
            }
   32     32   
        }
   33     33   
    }
   34     34   
   35     35   
    jvm {
   36     36   
        compilations {
   37     37   
            val mainPath = getByName("main").output.classesDirs
   38     38   
            val testPath = getByName("test").output.classesDirs
   39     39   
            tasks {
   40     40   
                register<Jar>("smokeTestJar") {

tmp-codegen-diff/services/codebuild/generated-src/main/kotlin/aws/sdk/kotlin/services/codebuild/CodeBuildClient.kt

@@ -106,106 +166,165 @@
  126    126   
import aws.sdk.kotlin.services.codebuild.model.UpdateFleetRequest
  127    127   
import aws.sdk.kotlin.services.codebuild.model.UpdateFleetResponse
  128    128   
import aws.sdk.kotlin.services.codebuild.model.UpdateProjectRequest
  129    129   
import aws.sdk.kotlin.services.codebuild.model.UpdateProjectResponse
  130    130   
import aws.sdk.kotlin.services.codebuild.model.UpdateProjectVisibilityRequest
  131    131   
import aws.sdk.kotlin.services.codebuild.model.UpdateProjectVisibilityResponse
  132    132   
import aws.sdk.kotlin.services.codebuild.model.UpdateReportGroupRequest
  133    133   
import aws.sdk.kotlin.services.codebuild.model.UpdateReportGroupResponse
  134    134   
import aws.sdk.kotlin.services.codebuild.model.UpdateWebhookRequest
  135    135   
import aws.sdk.kotlin.services.codebuild.model.UpdateWebhookResponse
  136         -
import aws.smithy.kotlin.runtime.auth.AuthSchemeId
  137    136   
import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProvider
  138    137   
import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProviderConfig
  139    138   
import aws.smithy.kotlin.runtime.awsprotocol.ClockSkewInterceptor
  140    139   
import aws.smithy.kotlin.runtime.client.AbstractSdkClientBuilder
  141    140   
import aws.smithy.kotlin.runtime.client.AbstractSdkClientFactory
  142    141   
import aws.smithy.kotlin.runtime.client.LogMode
  143    142   
import aws.smithy.kotlin.runtime.client.RetryClientConfig
  144    143   
import aws.smithy.kotlin.runtime.client.RetryStrategyClientConfig
  145    144   
import aws.smithy.kotlin.runtime.client.RetryStrategyClientConfigImpl
  146    145   
import aws.smithy.kotlin.runtime.client.SdkClient
@@ -179,178 +293,285 @@
  199    198   
    }
  200    199   
  201    200   
    public class Builder internal constructor(): AbstractSdkClientBuilder<Config, Config.Builder, CodeBuildClient>() {
  202    201   
        override val config: Config.Builder = Config.Builder()
  203    202   
        override fun newClient(config: Config): CodeBuildClient = DefaultCodeBuildClient(config)
  204    203   
    }
  205    204   
  206    205   
    public class Config private constructor(builder: Builder) : AwsSdkClientConfig, CredentialsProviderConfig, HttpAuthConfig, HttpClientConfig, HttpEngineConfig by builder.buildHttpEngineConfig(), RetryClientConfig, RetryStrategyClientConfig by builder.buildRetryStrategyClientConfig(), SdkClientConfig, TelemetryConfig {
  207    206   
        override val clientName: String = builder.clientName
  208    207   
        override val region: String? = builder.region
  209         -
        override val authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = builder.authSchemePreference
  210    208   
        override val authSchemes: kotlin.collections.List<aws.smithy.kotlin.runtime.http.auth.AuthScheme> = builder.authSchemes
  211    209   
        override val credentialsProvider: CredentialsProvider = builder.credentialsProvider ?: DefaultChainCredentialsProvider(httpClient = httpClient, region = region).manage()
  212    210   
        public val endpointProvider: CodeBuildEndpointProvider = builder.endpointProvider ?: DefaultCodeBuildEndpointProvider()
  213    211   
        public val endpointUrl: Url? = builder.endpointUrl
  214    212   
        override val interceptors: kotlin.collections.List<aws.smithy.kotlin.runtime.http.interceptors.HttpInterceptor> = builder.interceptors
  215    213   
        override val logMode: LogMode = builder.logMode ?: LogMode.Default
  216    214   
        override val retryPolicy: RetryPolicy<Any?> = builder.retryPolicy ?: AwsRetryPolicy.Default
  217    215   
        override val telemetryProvider: TelemetryProvider = builder.telemetryProvider ?: TelemetryProvider.Global
  218    216   
        override val useDualStack: Boolean = builder.useDualStack ?: false
  219    217   
        override val useFips: Boolean = builder.useFips ?: false
  220    218   
        override val applicationId: String? = builder.applicationId
  221         -
        public val authSchemeProvider: CodeBuildAuthSchemeProvider = builder.authSchemeProvider ?: DefaultCodeBuildAuthSchemeProvider(authSchemePreference = authSchemePreference)
         219  +
        public val authSchemeProvider: CodeBuildAuthSchemeProvider = builder.authSchemeProvider ?: DefaultCodeBuildAuthSchemeProvider()
  222    220   
        public companion object {
  223    221   
            public inline operator fun invoke(block: Builder.() -> kotlin.Unit): Config = Builder().apply(block).build()
  224    222   
        }
  225    223   
  226    224   
        public fun toBuilder(): Builder = Builder().apply {
  227    225   
            clientName = this@Config.clientName
  228    226   
            region = this@Config.region
  229         -
            authSchemePreference = this@Config.authSchemePreference
  230    227   
            authSchemes = this@Config.authSchemes
  231    228   
            credentialsProvider = this@Config.credentialsProvider
  232    229   
            endpointProvider = this@Config.endpointProvider
  233    230   
            endpointUrl = this@Config.endpointUrl
  234    231   
            httpClient = this@Config.httpClient
  235    232   
            interceptors = this@Config.interceptors.toMutableList()
  236    233   
            logMode = this@Config.logMode
  237    234   
            retryPolicy = this@Config.retryPolicy
  238    235   
            retryStrategy = this@Config.retryStrategy
  239    236   
            telemetryProvider = this@Config.telemetryProvider
  240    237   
            useDualStack = this@Config.useDualStack
  241    238   
            useFips = this@Config.useFips
  242    239   
            applicationId = this@Config.applicationId
  243    240   
            authSchemeProvider = this@Config.authSchemeProvider
  244    241   
        }
  245    242   
  246    243   
        public class Builder : AwsSdkClientConfig.Builder, CredentialsProviderConfig.Builder, HttpAuthConfig.Builder, HttpClientConfig.Builder, HttpEngineConfig.Builder by HttpEngineConfigImpl.BuilderImpl(), RetryClientConfig.Builder, RetryStrategyClientConfig.Builder by RetryStrategyClientConfigImpl.BuilderImpl(), SdkClientConfig.Builder<Config>, TelemetryConfig.Builder {
  247    244   
            /**
  248    245   
             * A reader-friendly name for the client.
  249    246   
             */
  250    247   
            override var clientName: String = "CodeBuild"
  251    248   
  252    249   
            /**
  253    250   
             * The AWS region (e.g. `us-west-2`) to make requests to. See about AWS
  254    251   
             * [global infrastructure](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) for more
  255    252   
             * information
  256    253   
             */
  257    254   
            override var region: String? = null
  258    255   
  259         -
            /**
  260         -
             * The ordered preference of [AuthScheme] that this client will use.
  261         -
             */
  262         -
            override var authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = null
  263         -
  264    256   
            /**
  265    257   
             * Register new or override default [AuthScheme]s configured for this client. By default, the set
  266    258   
             * of auth schemes configured comes from the service model. An auth scheme configured explicitly takes
  267    259   
             * precedence over the defaults and can be used to customize identity resolution and signing for specific
  268    260   
             * authentication schemes.
  269    261   
             */
  270    262   
            override var authSchemes: kotlin.collections.List<aws.smithy.kotlin.runtime.http.auth.AuthScheme> = emptyList()
  271    263   
  272    264   
            /**
  273    265   
             * The AWS credentials provider to use for authenticating requests. If not provided a

tmp-codegen-diff/services/codebuild/generated-src/main/kotlin/aws/sdk/kotlin/services/codebuild/auth/DefaultCodeBuildAuthSchemeProvider.kt

@@ -1,1 +25,21 @@
    1      1   
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
    2      2   
    3      3   
package aws.sdk.kotlin.services.codebuild.auth
    4      4   
    5      5   
import aws.sdk.kotlin.services.codebuild.endpoints.CodeBuildEndpointProvider
    6      6   
import aws.smithy.kotlin.runtime.auth.AuthOption
    7         -
import aws.smithy.kotlin.runtime.http.auth.reprioritizeAuthOptions
    8      7   
import aws.smithy.kotlin.runtime.http.auth.sigV4
    9      8   
   10         -
public class DefaultCodeBuildAuthSchemeProvider(private val endpointProvider: CodeBuildEndpointProvider? = null, private val authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = null) : CodeBuildAuthSchemeProvider {
           9  +
public class DefaultCodeBuildAuthSchemeProvider(private val endpointProvider: CodeBuildEndpointProvider? = null) : CodeBuildAuthSchemeProvider {
   11     10   
    private val operationOverrides = mapOf<String, List<AuthOption>>(
   12     11   
    )
   13         -
   14     12   
    private val serviceDefaults = listOf<AuthOption>(
   15     13   
        sigV4(),
   16     14   
    )
   17         -
   18     15   
    override suspend fun resolveAuthScheme(params: CodeBuildAuthSchemeParameters): List<AuthOption> {
   19         -
        val modeledAuthOptions = operationOverrides.getOrElse(params.operationName) { serviceDefaults }
   20         -
   21         -
        val authOptions = modeledAuthOptions
   22         -
   23         -
        return authSchemePreference?.let { reprioritizeAuthOptions(it, authOptions) } ?: authOptions
          16  +
        val modeledAuthOptions = operationOverrides.getOrElse(params.operationName) {
          17  +
            serviceDefaults
          18  +
        }
          19  +
        return modeledAuthOptions
   24     20   
    }
   25     21   
}

tmp-codegen-diff/services/codebuild/generated-src/test/kotlin/aws/sdk/kotlin/services/codebuild/smoketests/SmokeTests.kt

@@ -1,1 +68,52 @@
    1      1   
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
    2      2   
    3      3   
package aws.sdk.kotlin.services.codebuild.smoketests
    4      4   
    5      5   
import aws.sdk.kotlin.services.codebuild.CodeBuildClient
    6      6   
import aws.sdk.kotlin.services.codebuild.model.ListBuildsRequest
    7      7   
import aws.smithy.kotlin.runtime.http.interceptors.SmokeTestsInterceptor
    8      8   
import aws.smithy.kotlin.runtime.http.interceptors.SmokeTestsSuccessException
    9      9   
import aws.smithy.kotlin.runtime.io.use
   10         -
import aws.smithy.kotlin.runtime.smoketests.DefaultPrinter
   11     10   
import aws.smithy.kotlin.runtime.smoketests.exitProcess
          11  +
import aws.smithy.kotlin.runtime.smoketests.printExceptionStackTrace
   12     12   
import aws.smithy.kotlin.runtime.util.PlatformProvider
   13         -
import kotlin.text.Appendable
   14     13   
          14  +
private var exitCode = 0
          15  +
private val skipTags = PlatformProvider.System.getenv("AWS_SMOKE_TEST_SKIP_TAGS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
          16  +
private val serviceFilter = PlatformProvider.System.getenv("AWS_SMOKE_TEST_SERVICE_IDS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
          17  +
          18  +
private val regionOverride = PlatformProvider.System.getenv("AWS_SMOKE_TEST_REGION")
   15     19   
   16     20   
public suspend fun main() {
   17         -
    val success = SmokeTestRunner().runAllTests()
   18         -
    if (!success) {
   19         -
        exitProcess(1)
   20         -
    }
          21  +
    listBuildsSuccess()
          22  +
    exitProcess(exitCode)
   21     23   
}
   22     24   
   23         -
public class SmokeTestRunner(private val platform: PlatformProvider = PlatformProvider.System, private val printer: Appendable = DefaultPrinter) {
   24         -
    private val skipTags = platform.getenv("AWS_SMOKE_TEST_SKIP_TAGS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
   25         -
    private val serviceFilter = platform.getenv("AWS_SMOKE_TEST_SERVICE_IDS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
   26         -
   27         -
    private val regionOverride = PlatformProvider.System.getenv("AWS_SMOKE_TEST_REGION")
   28         -
   29         -
    public suspend fun runAllTests(): Boolean =
   30         -
        listOf<suspend () -> Boolean>(
   31         -
            ::listBuildsSuccess,
   32         -
        )
   33         -
            .map { it() }
   34         -
            .all { it }
          25  +
private suspend fun listBuildsSuccess() {
          26  +
    val tags = setOf<String>()
          27  +
    if ((serviceFilter.isNotEmpty() && "CodeBuild" !in serviceFilter) || tags.any { it in skipTags }) {
          28  +
        println("ok CodeBuild ListBuildsSuccess - no error expected from service # skip")
          29  +
        return
          30  +
    }
   35     31   
   36         -
    private suspend fun listBuildsSuccess(): Boolean {
   37         -
        val tags = setOf<String>()
   38         -
        if ((serviceFilter.isNotEmpty() && "CodeBuild" !in serviceFilter) || tags.any { it in skipTags }) {
   39         -
            printer.appendLine("ok CodeBuild ListBuildsSuccess - no error expected from service # skip")
   40         -
            return true
          32  +
    try {
          33  +
        CodeBuildClient {
          34  +
            interceptors.add(SmokeTestsInterceptor())
          35  +
            region = regionOverride ?: "us-west-2"
          36  +
        }.use { client ->
          37  +
            client.listBuilds(
          38  +
                ListBuildsRequest {
          39  +
                }
          40  +
            )
   41     41   
        }
   42     42   
   43         -
        return try {
   44         -
            CodeBuildClient {
   45         -
                interceptors.add(SmokeTestsInterceptor())
   46         -
                region = regionOverride ?: "us-west-2"
   47         -
            }.use { client ->
   48         -
                client.listBuilds(
   49         -
                    ListBuildsRequest {
   50         -
                    }
   51         -
                )
   52         -
            }
   53         -
   54         -
            error("Unexpectedly completed smoke test operation without throwing exception")
   55         -
   56         -
        } catch (exception: Exception) {
   57         -
            val success: Boolean = exception is SmokeTestsSuccessException
   58         -
            val status: String = if (success) "ok" else "not ok"
   59         -
            printer.appendLine("$status CodeBuild ListBuildsSuccess - no error expected from service ")
   60         -
            if (!success) {
   61         -
                printer.appendLine(exception.stackTraceToString().prependIndent("# "))
   62         -
            }
   63         -
   64         -
            success
          43  +
    } catch (exception: Exception) {
          44  +
        val success: Boolean = exception is SmokeTestsSuccessException
          45  +
        val status: String = if (success) "ok" else "not ok"
          46  +
        println("$status CodeBuild ListBuildsSuccess - no error expected from service ")
          47  +
        if (!success) {
          48  +
            printExceptionStackTrace(exception)
          49  +
            exitCode = 1
   65     50   
        }
   66     51   
    }
   67         -
   68     52   
}

tmp-codegen-diff/services/dynamodb/build.gradle.kts

@@ -1,1 +60,60 @@
    1      1   
    2      2   
description = "The AWS SDK for Kotlin client for DynamoDB"
    3      3   
project.ext.set("aws.sdk.id", "DynamoDB")
    4      4   
    5      5   
kotlin {
    6      6   
    sourceSets {
    7      7   
        commonMain {
    8      8   
            dependencies {
    9         -
                implementation("aws.smithy.kotlin:aws-credentials:1.4.17-SNAPSHOT")
           9  +
                implementation("aws.smithy.kotlin:aws-credentials:1.4.2-SNAPSHOT")
   10     10   
                implementation(project(":aws-runtime:aws-http"))
   11         -
                implementation("aws.smithy.kotlin:aws-json-protocols:1.4.17-SNAPSHOT")
   12         -
                implementation("aws.smithy.kotlin:aws-protocol-core:1.4.17-SNAPSHOT")
   13         -
                implementation("aws.smithy.kotlin:aws-signing-common:1.4.17-SNAPSHOT")
   14         -
                implementation("aws.smithy.kotlin:aws-signing-default:1.4.17-SNAPSHOT")
   15         -
                implementation("aws.smithy.kotlin:http:1.4.17-SNAPSHOT")
   16         -
                implementation("aws.smithy.kotlin:http-auth:1.4.17-SNAPSHOT")
   17         -
                implementation("aws.smithy.kotlin:http-auth-aws:1.4.17-SNAPSHOT")
   18         -
                implementation("aws.smithy.kotlin:http-client-engine-default:1.4.17-SNAPSHOT")
   19         -
                implementation("aws.smithy.kotlin:identity-api:1.4.17-SNAPSHOT")
          11  +
                implementation("aws.smithy.kotlin:aws-json-protocols:1.4.2-SNAPSHOT")
          12  +
                implementation("aws.smithy.kotlin:aws-protocol-core:1.4.2-SNAPSHOT")
          13  +
                implementation("aws.smithy.kotlin:aws-signing-common:1.4.2-SNAPSHOT")
          14  +
                implementation("aws.smithy.kotlin:aws-signing-default:1.4.2-SNAPSHOT")
          15  +
                implementation("aws.smithy.kotlin:http:1.4.2-SNAPSHOT")
          16  +
                implementation("aws.smithy.kotlin:http-auth:1.4.2-SNAPSHOT")
          17  +
                implementation("aws.smithy.kotlin:http-auth-aws:1.4.2-SNAPSHOT")
          18  +
                implementation("aws.smithy.kotlin:http-client-engine-default:1.4.2-SNAPSHOT")
          19  +
                implementation("aws.smithy.kotlin:identity-api:1.4.2-SNAPSHOT")
   20     20   
                implementation("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
   21         -
                implementation("aws.smithy.kotlin:serde:1.4.17-SNAPSHOT")
   22         -
                implementation("aws.smithy.kotlin:serde-json:1.4.17-SNAPSHOT")
   23         -
                implementation("aws.smithy.kotlin:telemetry-defaults:1.4.17-SNAPSHOT")
          21  +
                implementation("aws.smithy.kotlin:serde:1.4.2-SNAPSHOT")
          22  +
                implementation("aws.smithy.kotlin:serde-json:1.4.2-SNAPSHOT")
          23  +
                implementation("aws.smithy.kotlin:telemetry-defaults:1.4.2-SNAPSHOT")
   24     24   
                api(project(":aws-runtime:aws-config"))
   25     25   
                api(project(":aws-runtime:aws-core"))
   26     26   
                api(project(":aws-runtime:aws-endpoint"))
   27         -
                api("aws.smithy.kotlin:http-client:1.4.17-SNAPSHOT")
   28         -
                api("aws.smithy.kotlin:runtime-core:1.4.17-SNAPSHOT")
   29         -
                api("aws.smithy.kotlin:smithy-client:1.4.17-SNAPSHOT")
   30         -
                api("aws.smithy.kotlin:telemetry-api:1.4.17-SNAPSHOT")
          27  +
                api("aws.smithy.kotlin:http-client:1.4.2-SNAPSHOT")
          28  +
                api("aws.smithy.kotlin:runtime-core:1.4.2-SNAPSHOT")
          29  +
                api("aws.smithy.kotlin:smithy-client:1.4.2-SNAPSHOT")
          30  +
                api("aws.smithy.kotlin:telemetry-api:1.4.2-SNAPSHOT")
   31     31   
            }
   32     32   
        }
   33     33   
    }
   34     34   
   35     35   
    jvm {
   36     36   
        compilations {
   37     37   
            val mainPath = getByName("main").output.classesDirs
   38     38   
            val testPath = getByName("test").output.classesDirs
   39     39   
            tasks {
   40     40   
                register<Jar>("smokeTestJar") {

tmp-codegen-diff/services/dynamodb/generated-src/main/kotlin/aws/sdk/kotlin/services/dynamodb/DynamoDbClient.kt

@@ -105,105 +165,164 @@
  125    125   
import aws.sdk.kotlin.services.dynamodb.model.UpdateItemRequest
  126    126   
import aws.sdk.kotlin.services.dynamodb.model.UpdateItemResponse
  127    127   
import aws.sdk.kotlin.services.dynamodb.model.UpdateKinesisStreamingDestinationRequest
  128    128   
import aws.sdk.kotlin.services.dynamodb.model.UpdateKinesisStreamingDestinationResponse
  129    129   
import aws.sdk.kotlin.services.dynamodb.model.UpdateTableReplicaAutoScalingRequest
  130    130   
import aws.sdk.kotlin.services.dynamodb.model.UpdateTableReplicaAutoScalingResponse
  131    131   
import aws.sdk.kotlin.services.dynamodb.model.UpdateTableRequest
  132    132   
import aws.sdk.kotlin.services.dynamodb.model.UpdateTableResponse
  133    133   
import aws.sdk.kotlin.services.dynamodb.model.UpdateTimeToLiveRequest
  134    134   
import aws.sdk.kotlin.services.dynamodb.model.UpdateTimeToLiveResponse
  135         -
import aws.smithy.kotlin.runtime.auth.AuthSchemeId
  136    135   
import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProvider
  137    136   
import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProviderConfig
  138    137   
import aws.smithy.kotlin.runtime.awsprotocol.ClockSkewInterceptor
  139    138   
import aws.smithy.kotlin.runtime.client.AbstractSdkClientBuilder
  140    139   
import aws.smithy.kotlin.runtime.client.AbstractSdkClientFactory
  141    140   
import aws.smithy.kotlin.runtime.client.IdempotencyTokenConfig
  142    141   
import aws.smithy.kotlin.runtime.client.IdempotencyTokenProvider
  143    142   
import aws.smithy.kotlin.runtime.client.LogMode
  144    143   
import aws.smithy.kotlin.runtime.client.RetryClientConfig
  145    144   
import aws.smithy.kotlin.runtime.client.RetryStrategyClientConfig
@@ -186,185 +311,303 @@
  206    205   
  207    206   
    public class Builder internal constructor(): AbstractSdkClientBuilder<Config, Config.Builder, DynamoDbClient>() {
  208    207   
        override val config: Config.Builder = Config.Builder()
  209    208   
        override fun newClient(config: Config): DynamoDbClient = DefaultDynamoDbClient(config)
  210    209   
    }
  211    210   
  212    211   
    public class Config private constructor(builder: Builder) : AwsSdkClientConfig, CredentialsProviderConfig, HttpAuthConfig, HttpClientConfig, HttpEngineConfig by builder.buildHttpEngineConfig(), IdempotencyTokenConfig, RetryClientConfig, RetryStrategyClientConfig by builder.buildRetryStrategyClientConfig(), SdkClientConfig, TelemetryConfig {
  213    212   
        override val clientName: String = builder.clientName
  214    213   
        override val region: String? = builder.region
  215    214   
        public val accountIdEndpointMode: AccountIdEndpointMode = builder.accountIdEndpointMode ?: AccountIdEndpointMode.PREFERRED
  216         -
        override val authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = builder.authSchemePreference
  217    215   
        override val authSchemes: kotlin.collections.List<aws.smithy.kotlin.runtime.http.auth.AuthScheme> = builder.authSchemes
  218    216   
        override val credentialsProvider: CredentialsProvider = builder.credentialsProvider ?: DefaultChainCredentialsProvider(httpClient = httpClient, region = region).manage()
  219    217   
        public val endpointDiscoverer: DynamoDbEndpointDiscoverer? = builder.endpointDiscoverer
  220    218   
        public val endpointProvider: DynamoDbEndpointProvider = builder.endpointProvider ?: DefaultDynamoDbEndpointProvider()
  221    219   
        public val endpointUrl: Url? = builder.endpointUrl
  222    220   
        override val idempotencyTokenProvider: IdempotencyTokenProvider = builder.idempotencyTokenProvider ?: IdempotencyTokenProvider.Default
  223    221   
        override val interceptors: kotlin.collections.List<aws.smithy.kotlin.runtime.http.interceptors.HttpInterceptor> = builder.interceptors
  224    222   
        override val logMode: LogMode = builder.logMode ?: LogMode.Default
  225    223   
        override val retryPolicy: RetryPolicy<Any?> = builder.retryPolicy ?: AwsRetryPolicy.Default
  226    224   
        override val telemetryProvider: TelemetryProvider = builder.telemetryProvider ?: TelemetryProvider.Global
  227    225   
        override val useDualStack: Boolean = builder.useDualStack ?: false
  228    226   
        override val useFips: Boolean = builder.useFips ?: false
  229    227   
        override val applicationId: String? = builder.applicationId
  230         -
        public val authSchemeProvider: DynamoDbAuthSchemeProvider = builder.authSchemeProvider ?: DefaultDynamoDbAuthSchemeProvider(authSchemePreference = authSchemePreference)
         228  +
        public val authSchemeProvider: DynamoDbAuthSchemeProvider = builder.authSchemeProvider ?: DefaultDynamoDbAuthSchemeProvider()
  231    229   
        public companion object {
  232    230   
            public inline operator fun invoke(block: Builder.() -> kotlin.Unit): Config = Builder().apply(block).build()
  233    231   
        }
  234    232   
  235    233   
        public fun toBuilder(): Builder = Builder().apply {
  236    234   
            clientName = this@Config.clientName
  237    235   
            region = this@Config.region
  238    236   
            accountIdEndpointMode = this@Config.accountIdEndpointMode
  239         -
            authSchemePreference = this@Config.authSchemePreference
  240    237   
            authSchemes = this@Config.authSchemes
  241    238   
            credentialsProvider = this@Config.credentialsProvider
  242    239   
            endpointDiscoverer = this@Config.endpointDiscoverer
  243    240   
            endpointProvider = this@Config.endpointProvider
  244    241   
            endpointUrl = this@Config.endpointUrl
  245    242   
            httpClient = this@Config.httpClient
  246    243   
            idempotencyTokenProvider = this@Config.idempotencyTokenProvider
  247    244   
            interceptors = this@Config.interceptors.toMutableList()
  248    245   
            logMode = this@Config.logMode
  249    246   
            retryPolicy = this@Config.retryPolicy
  250    247   
            retryStrategy = this@Config.retryStrategy
  251    248   
            telemetryProvider = this@Config.telemetryProvider
  252    249   
            useDualStack = this@Config.useDualStack
  253    250   
            useFips = this@Config.useFips
  254    251   
            applicationId = this@Config.applicationId
  255    252   
            authSchemeProvider = this@Config.authSchemeProvider
  256    253   
        }
  257    254   
  258    255   
        public class Builder : AwsSdkClientConfig.Builder, CredentialsProviderConfig.Builder, HttpAuthConfig.Builder, HttpClientConfig.Builder, HttpEngineConfig.Builder by HttpEngineConfigImpl.BuilderImpl(), IdempotencyTokenConfig.Builder, RetryClientConfig.Builder, RetryStrategyClientConfig.Builder by RetryStrategyClientConfigImpl.BuilderImpl(), SdkClientConfig.Builder<Config>, TelemetryConfig.Builder {
  259    256   
            /**
  260    257   
             * A reader-friendly name for the client.
  261    258   
             */
  262    259   
            override var clientName: String = "DynamoDB"
  263    260   
  264    261   
            /**
  265    262   
             * The AWS region (e.g. `us-west-2`) to make requests to. See about AWS
  266    263   
             * [global infrastructure](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) for more
  267    264   
             * information
  268    265   
             */
  269    266   
            override var region: String? = null
  270    267   
  271    268   
            /**
  272    269   
             * Control the way account ID is bound to the endpoint resolver parameters.
  273    270   
             * Defaults to [AccountIdEndpointMode.PREFERRED].
  274    271   
             */
  275    272   
            public var accountIdEndpointMode: AccountIdEndpointMode? = null
  276    273   
  277         -
            /**
  278         -
             * The ordered preference of [AuthScheme] that this client will use.
  279         -
             */
  280         -
            override var authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = null
  281         -
  282    274   
            /**
  283    275   
             * Register new or override default [AuthScheme]s configured for this client. By default, the set
  284    276   
             * of auth schemes configured comes from the service model. An auth scheme configured explicitly takes
  285    277   
             * precedence over the defaults and can be used to customize identity resolution and signing for specific
  286    278   
             * authentication schemes.
  287    279   
             */
  288    280   
            override var authSchemes: kotlin.collections.List<aws.smithy.kotlin.runtime.http.auth.AuthScheme> = emptyList()
  289    281   
  290    282   
            /**
  291    283   
             * The AWS credentials provider to use for authenticating requests. If not provided a

tmp-codegen-diff/services/dynamodb/generated-src/main/kotlin/aws/sdk/kotlin/services/dynamodb/auth/DefaultDynamoDbAuthSchemeProvider.kt

@@ -1,1 +25,21 @@
    1      1   
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
    2      2   
    3      3   
package aws.sdk.kotlin.services.dynamodb.auth
    4      4   
    5      5   
import aws.sdk.kotlin.services.dynamodb.endpoints.DynamoDbEndpointProvider
    6      6   
import aws.smithy.kotlin.runtime.auth.AuthOption
    7         -
import aws.smithy.kotlin.runtime.http.auth.reprioritizeAuthOptions
    8      7   
import aws.smithy.kotlin.runtime.http.auth.sigV4
    9      8   
   10         -
public class DefaultDynamoDbAuthSchemeProvider(private val endpointProvider: DynamoDbEndpointProvider? = null, private val authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = null) : DynamoDbAuthSchemeProvider {
           9  +
public class DefaultDynamoDbAuthSchemeProvider(private val endpointProvider: DynamoDbEndpointProvider? = null) : DynamoDbAuthSchemeProvider {
   11     10   
    private val operationOverrides = mapOf<String, List<AuthOption>>(
   12     11   
    )
   13         -
   14     12   
    private val serviceDefaults = listOf<AuthOption>(
   15     13   
        sigV4(),
   16     14   
    )
   17         -
   18     15   
    override suspend fun resolveAuthScheme(params: DynamoDbAuthSchemeParameters): List<AuthOption> {
   19         -
        val modeledAuthOptions = operationOverrides.getOrElse(params.operationName) { serviceDefaults }
   20         -
   21         -
        val authOptions = modeledAuthOptions
   22         -
   23         -
        return authSchemePreference?.let { reprioritizeAuthOptions(it, authOptions) } ?: authOptions
          16  +
        val modeledAuthOptions = operationOverrides.getOrElse(params.operationName) {
          17  +
            serviceDefaults
          18  +
        }
          19  +
        return modeledAuthOptions
   24     20   
    }
   25     21   
}

tmp-codegen-diff/services/dynamodb/generated-src/main/kotlin/aws/sdk/kotlin/services/dynamodb/endpoints/DynamoDbEndpointDiscoverer.kt

@@ -1,1 +64,60 @@
   19     19   
   20     20   
/**
   21     21   
 * A class which looks up specific endpoints for DynamoDB calls via the `describeEndpoints`
   22     22   
 * API. These unique endpoints are cached as appropriate to avoid unnecessary latency in subsequent
   23     23   
 * calls.
   24     24   
 */
   25     25   
public class DynamoDbEndpointDiscoverer {
   26     26   
    private val cache = ReadThroughCache<DiscoveryParams, Host>(10.minutes, Clock.System)
   27     27   
   28     28   
    internal fun asEndpointResolver(client: DynamoDbClient, delegate: EndpointResolverAdapter) = EndpointResolver { request ->
   29         -
        if (client.config.endpointUrl == null) {
   30         -
            val identity = request.identity
   31         -
            require(identity is Credentials) { "Endpoint discovery requires AWS credentials" }
   32         -
   33         -
            val cacheKey = DiscoveryParams(client.config.region, identity.accessKeyId)
   34         -
            request.context[discoveryParamsKey] = cacheKey
   35         -
            val discoveredHost = cache.get(cacheKey) { discoverHost(client) }
   36         -
   37         -
            val originalEndpoint = delegate.resolve(request)
   38         -
            Endpoint(
   39         -
                originalEndpoint.uri.copy { host = discoveredHost },
   40         -
                originalEndpoint.headers,
   41         -
                originalEndpoint.attributes,
   42         -
            )
   43         -
        } else {
   44         -
            delegate.resolve(request)
   45         -
        }
          29  +
        val identity = request.identity
          30  +
        require(identity is Credentials) { "Endpoint discovery requires AWS credentials" }
          31  +
          32  +
        val cacheKey = DiscoveryParams(client.config.region, identity.accessKeyId)
          33  +
        request.context[discoveryParamsKey] = cacheKey
          34  +
        val discoveredHost = cache.get(cacheKey) { discoverHost(client) }
          35  +
          36  +
        val originalEndpoint = delegate.resolve(request)
          37  +
        Endpoint(
          38  +
            originalEndpoint.uri.copy { host = discoveredHost },
          39  +
            originalEndpoint.headers,
          40  +
            originalEndpoint.attributes,
          41  +
        )
   46     42   
    }
   47     43   
   48     44   
    private suspend fun discoverHost(client: DynamoDbClient): ExpiringValue<Host> =
   49     45   
        client.describeEndpoints()
   50     46   
            .endpoints
   51     47   
            ?.map { ep -> ExpiringValue(
   52     48   
                Host.parse(ep.address!!),
   53     49   
                Instant.now() + ep.cachePeriodInMinutes.minutes,
   54     50   
            )}
   55     51   
            ?.firstOrNull()

tmp-codegen-diff/services/dynamodb/generated-src/main/kotlin/aws/sdk/kotlin/services/dynamodb/endpoints/internal/EndpointResolverAdapter.kt

@@ -128,128 +196,196 @@
  148    148   
    "UpdateKinesisStreamingDestination" to ::bindUpdateKinesisStreamingDestinationEndpointContext,
  149    149   
    "UpdateTable" to ::bindUpdateTableEndpointContext,
  150    150   
    "UpdateTableReplicaAutoScaling" to ::bindUpdateTableReplicaAutoScalingEndpointContext,
  151    151   
    "UpdateTimeToLive" to ::bindUpdateTimeToLiveEndpointContext,
  152    152   
)
  153    153   
  154    154   
private fun bindBatchGetItemEndpointContext(builder: DynamoDbEndpointParameters.Builder, request: ResolveEndpointRequest): Unit {
  155    155   
    @Suppress("UNCHECKED_CAST")
  156    156   
    val input = request.context[HttpOperationContext.OperationInput] as BatchGetItemRequest
  157    157   
    val requestItems = input.requestItems
  158         -
    val keys = requestItems?.keys?.map { it.toString() }?.toList()
         158  +
    val keys = listOf("value", "key")
  159    159   
    builder.resourceArnList = keys
  160    160   
}
  161    161   
  162    162   
private fun bindBatchWriteItemEndpointContext(builder: DynamoDbEndpointParameters.Builder, request: ResolveEndpointRequest): Unit {
  163    163   
    @Suppress("UNCHECKED_CAST")
  164    164   
    val input = request.context[HttpOperationContext.OperationInput] as BatchWriteItemRequest
  165    165   
    val requestItems = input.requestItems
  166         -
    val keys = requestItems?.keys?.map { it.toString() }?.toList()
         166  +
    val keys = listOf("value", "key")
  167    167   
    builder.resourceArnList = keys
  168    168   
}
  169    169   
  170    170   
private fun bindCreateBackupEndpointContext(builder: DynamoDbEndpointParameters.Builder, request: ResolveEndpointRequest): Unit {
  171    171   
    @Suppress("UNCHECKED_CAST")
  172    172   
    val input = request.context[HttpOperationContext.OperationInput] as CreateBackupRequest
  173    173   
    builder.resourceArn = input.tableName
  174    174   
}
  175    175   
  176    176   
private fun bindCreateGlobalTableEndpointContext(builder: DynamoDbEndpointParameters.Builder, request: ResolveEndpointRequest): Unit {

tmp-codegen-diff/services/dynamodb/generated-src/main/kotlin/aws/sdk/kotlin/services/dynamodb/model/AttributeValue.kt

@@ -21,21 +226,226 @@
   41     41   
     * `"BOOL": true`
   42     42   
     */
   43     43   
    public data class Bool(val value: kotlin.Boolean) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
   44     44   
    }
   45     45   
   46     46   
    /**
   47     47   
     * An attribute of type Binary Set. For example:
   48     48   
     *
   49     49   
     * `"BS": ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]`
   50     50   
     */
   51         -
    public data class Bs(val value: kotlin.collections.List<kotlin.ByteArray>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
          51  +
    public data class Bs(val value: List<kotlin.ByteArray>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
   52     52   
    }
   53     53   
   54     54   
    /**
   55     55   
     * An attribute of type List. For example:
   56     56   
     *
   57     57   
     * `"L": [ {"S": "Cookies"} , {"S": "Coffee"}, {"N": "3.14159"}]`
   58     58   
     */
   59         -
    public data class L(val value: kotlin.collections.List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
          59  +
    public data class L(val value: List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
   60     60   
    }
   61     61   
   62     62   
    /**
   63     63   
     * An attribute of type Map. For example:
   64     64   
     *
   65     65   
     * `"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}`
   66     66   
     */
   67         -
    public data class M(val value: kotlin.collections.Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
          67  +
    public data class M(val value: Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
   68     68   
    }
   69     69   
   70     70   
    /**
   71     71   
     * An attribute of type Number. For example:
   72     72   
     *
   73     73   
     * `"N": "123.45"`
   74     74   
     *
   75     75   
     * Numbers are sent across the network to DynamoDB as strings, to maximize compatibility across languages and libraries. However, DynamoDB treats them as number type attributes for mathematical operations.
   76     76   
     */
   77     77   
    public data class N(val value: kotlin.String) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
   78     78   
    }
   79     79   
   80     80   
    /**
   81     81   
     * An attribute of type Number Set. For example:
   82     82   
     *
   83     83   
     * `"NS": ["42.2", "-19", "7.5", "3.14"]`
   84     84   
     *
   85     85   
     * Numbers are sent across the network to DynamoDB as strings, to maximize compatibility across languages and libraries. However, DynamoDB treats them as number type attributes for mathematical operations.
   86     86   
     */
   87         -
    public data class Ns(val value: kotlin.collections.List<kotlin.String>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
          87  +
    public data class Ns(val value: List<kotlin.String>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
   88     88   
    }
   89     89   
   90     90   
    /**
   91     91   
     * An attribute of type Null. For example:
   92     92   
     *
   93     93   
     * `"NULL": true`
   94     94   
     */
   95     95   
    public data class Null(val value: kotlin.Boolean) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
   96     96   
    }
   97     97   
   98     98   
    /**
   99     99   
     * An attribute of type String. For example:
  100    100   
     *
  101    101   
     * `"S": "Hello"`
  102    102   
     */
  103    103   
    public data class S(val value: kotlin.String) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
  104    104   
    }
  105    105   
  106    106   
    /**
  107    107   
     * An attribute of type String Set. For example:
  108    108   
     *
  109    109   
     * `"SS": ["Giraffe", "Hippo" ,"Zebra"]`
  110    110   
     */
  111         -
    public data class Ss(val value: kotlin.collections.List<kotlin.String>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
         111  +
    public data class Ss(val value: List<kotlin.String>) : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
  112    112   
    }
  113    113   
  114    114   
    public object SdkUnknown : aws.sdk.kotlin.services.dynamodb.model.AttributeValue() {
  115    115   
    }
  116    116   
  117    117   
    /**
  118    118   
     * Casts this [AttributeValue] as a [B] and retrieves its [kotlin.ByteArray] value. Throws an exception if the [AttributeValue] is not a
  119    119   
     * [B].
  120    120   
     */
  121    121   
    public fun asB(): kotlin.ByteArray = (this as AttributeValue.B).value
  122    122   
  123    123   
    /**
  124    124   
     * Casts this [AttributeValue] as a [B] and retrieves its [kotlin.ByteArray] value. Returns null if the [AttributeValue] is not a [B].
  125    125   
     */
  126    126   
    public fun asBOrNull(): kotlin.ByteArray? = (this as? AttributeValue.B)?.value
  127    127   
  128    128   
    /**
  129    129   
     * Casts this [AttributeValue] as a [Bool] and retrieves its [kotlin.Boolean] value. Throws an exception if the [AttributeValue] is not a
  130    130   
     * [Bool].
  131    131   
     */
  132    132   
    public fun asBool(): kotlin.Boolean = (this as AttributeValue.Bool).value
  133    133   
  134    134   
    /**
  135    135   
     * Casts this [AttributeValue] as a [Bool] and retrieves its [kotlin.Boolean] value. Returns null if the [AttributeValue] is not a [Bool].
  136    136   
     */
  137    137   
    public fun asBoolOrNull(): kotlin.Boolean? = (this as? AttributeValue.Bool)?.value
  138    138   
  139    139   
    /**
  140         -
     * Casts this [AttributeValue] as a [Bs] and retrieves its [kotlin.collections.List<kotlin.ByteArray>] value. Throws an exception if the [AttributeValue] is not a
         140  +
     * Casts this [AttributeValue] as a [Bs] and retrieves its [List<kotlin.ByteArray>] value. Throws an exception if the [AttributeValue] is not a
  141    141   
     * [Bs].
  142    142   
     */
  143         -
    public fun asBs(): kotlin.collections.List<kotlin.ByteArray> = (this as AttributeValue.Bs).value
         143  +
    public fun asBs(): List<kotlin.ByteArray> = (this as AttributeValue.Bs).value
  144    144   
  145    145   
    /**
  146         -
     * Casts this [AttributeValue] as a [Bs] and retrieves its [kotlin.collections.List<kotlin.ByteArray>] value. Returns null if the [AttributeValue] is not a [Bs].
         146  +
     * Casts this [AttributeValue] as a [Bs] and retrieves its [List<kotlin.ByteArray>] value. Returns null if the [AttributeValue] is not a [Bs].
  147    147   
     */
  148         -
    public fun asBsOrNull(): kotlin.collections.List<kotlin.ByteArray>? = (this as? AttributeValue.Bs)?.value
         148  +
    public fun asBsOrNull(): List<kotlin.ByteArray>? = (this as? AttributeValue.Bs)?.value
  149    149   
  150    150   
    /**
  151         -
     * Casts this [AttributeValue] as a [L] and retrieves its [kotlin.collections.List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Throws an exception if the [AttributeValue] is not a
         151  +
     * Casts this [AttributeValue] as a [L] and retrieves its [List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Throws an exception if the [AttributeValue] is not a
  152    152   
     * [L].
  153    153   
     */
  154         -
    public fun asL(): kotlin.collections.List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue> = (this as AttributeValue.L).value
         154  +
    public fun asL(): List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue> = (this as AttributeValue.L).value
  155    155   
  156    156   
    /**
  157         -
     * Casts this [AttributeValue] as a [L] and retrieves its [kotlin.collections.List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Returns null if the [AttributeValue] is not a [L].
         157  +
     * Casts this [AttributeValue] as a [L] and retrieves its [List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Returns null if the [AttributeValue] is not a [L].
  158    158   
     */
  159         -
    public fun asLOrNull(): kotlin.collections.List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>? = (this as? AttributeValue.L)?.value
         159  +
    public fun asLOrNull(): List<aws.sdk.kotlin.services.dynamodb.model.AttributeValue>? = (this as? AttributeValue.L)?.value
  160    160   
  161    161   
    /**
  162         -
     * Casts this [AttributeValue] as a [M] and retrieves its [kotlin.collections.Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Throws an exception if the [AttributeValue] is not a
         162  +
     * Casts this [AttributeValue] as a [M] and retrieves its [Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Throws an exception if the [AttributeValue] is not a
  163    163   
     * [M].
  164    164   
     */
  165         -
    public fun asM(): kotlin.collections.Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue> = (this as AttributeValue.M).value
         165  +
    public fun asM(): Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue> = (this as AttributeValue.M).value
  166    166   
  167    167   
    /**
  168         -
     * Casts this [AttributeValue] as a [M] and retrieves its [kotlin.collections.Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Returns null if the [AttributeValue] is not a [M].
         168  +
     * Casts this [AttributeValue] as a [M] and retrieves its [Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>] value. Returns null if the [AttributeValue] is not a [M].
  169    169   
     */
  170         -
    public fun asMOrNull(): kotlin.collections.Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>? = (this as? AttributeValue.M)?.value
         170  +
    public fun asMOrNull(): Map<kotlin.String, aws.sdk.kotlin.services.dynamodb.model.AttributeValue>? = (this as? AttributeValue.M)?.value
  171    171   
  172    172   
    /**
  173    173   
     * Casts this [AttributeValue] as a [N] and retrieves its [kotlin.String] value. Throws an exception if the [AttributeValue] is not a
  174    174   
     * [N].
  175    175   
     */
  176    176   
    public fun asN(): kotlin.String = (this as AttributeValue.N).value
  177    177   
  178    178   
    /**
  179    179   
     * Casts this [AttributeValue] as a [N] and retrieves its [kotlin.String] value. Returns null if the [AttributeValue] is not a [N].
  180    180   
     */
  181    181   
    public fun asNOrNull(): kotlin.String? = (this as? AttributeValue.N)?.value
  182    182   
  183    183   
    /**
  184         -
     * Casts this [AttributeValue] as a [Ns] and retrieves its [kotlin.collections.List<kotlin.String>] value. Throws an exception if the [AttributeValue] is not a
         184  +
     * Casts this [AttributeValue] as a [Ns] and retrieves its [List<kotlin.String>] value. Throws an exception if the [AttributeValue] is not a
  185    185   
     * [Ns].
  186    186   
     */
  187         -
    public fun asNs(): kotlin.collections.List<kotlin.String> = (this as AttributeValue.Ns).value
         187  +
    public fun asNs(): List<kotlin.String> = (this as AttributeValue.Ns).value
  188    188   
  189    189   
    /**
  190         -
     * Casts this [AttributeValue] as a [Ns] and retrieves its [kotlin.collections.List<kotlin.String>] value. Returns null if the [AttributeValue] is not a [Ns].
         190  +
     * Casts this [AttributeValue] as a [Ns] and retrieves its [List<kotlin.String>] value. Returns null if the [AttributeValue] is not a [Ns].
  191    191   
     */
  192         -
    public fun asNsOrNull(): kotlin.collections.List<kotlin.String>? = (this as? AttributeValue.Ns)?.value
         192  +
    public fun asNsOrNull(): List<kotlin.String>? = (this as? AttributeValue.Ns)?.value
  193    193   
  194    194   
    /**
  195    195   
     * Casts this [AttributeValue] as a [Null] and retrieves its [kotlin.Boolean] value. Throws an exception if the [AttributeValue] is not a
  196    196   
     * [Null].
  197    197   
     */
  198    198   
    public fun asNull(): kotlin.Boolean = (this as AttributeValue.Null).value
  199    199   
  200    200   
    /**
  201    201   
     * Casts this [AttributeValue] as a [Null] and retrieves its [kotlin.Boolean] value. Returns null if the [AttributeValue] is not a [Null].
  202    202   
     */
  203    203   
    public fun asNullOrNull(): kotlin.Boolean? = (this as? AttributeValue.Null)?.value
  204    204   
  205    205   
    /**
  206    206   
     * Casts this [AttributeValue] as a [S] and retrieves its [kotlin.String] value. Throws an exception if the [AttributeValue] is not a
  207    207   
     * [S].
  208    208   
     */
  209    209   
    public fun asS(): kotlin.String = (this as AttributeValue.S).value
  210    210   
  211    211   
    /**
  212    212   
     * Casts this [AttributeValue] as a [S] and retrieves its [kotlin.String] value. Returns null if the [AttributeValue] is not a [S].
  213    213   
     */
  214    214   
    public fun asSOrNull(): kotlin.String? = (this as? AttributeValue.S)?.value
  215    215   
  216    216   
    /**
  217         -
     * Casts this [AttributeValue] as a [Ss] and retrieves its [kotlin.collections.List<kotlin.String>] value. Throws an exception if the [AttributeValue] is not a
         217  +
     * Casts this [AttributeValue] as a [Ss] and retrieves its [List<kotlin.String>] value. Throws an exception if the [AttributeValue] is not a
  218    218   
     * [Ss].
  219    219   
     */
  220         -
    public fun asSs(): kotlin.collections.List<kotlin.String> = (this as AttributeValue.Ss).value
         220  +
    public fun asSs(): List<kotlin.String> = (this as AttributeValue.Ss).value
  221    221   
  222    222   
    /**
  223         -
     * Casts this [AttributeValue] as a [Ss] and retrieves its [kotlin.collections.List<kotlin.String>] value. Returns null if the [AttributeValue] is not a [Ss].
         223  +
     * Casts this [AttributeValue] as a [Ss] and retrieves its [List<kotlin.String>] value. Returns null if the [AttributeValue] is not a [Ss].
  224    224   
     */
  225         -
    public fun asSsOrNull(): kotlin.collections.List<kotlin.String>? = (this as? AttributeValue.Ss)?.value
         225  +
    public fun asSsOrNull(): List<kotlin.String>? = (this as? AttributeValue.Ss)?.value
  226    226   
}

tmp-codegen-diff/services/dynamodb/generated-src/test/kotlin/aws/sdk/kotlin/services/dynamodb/smoketests/SmokeTests.kt

@@ -1,1 +69,53 @@
    1      1   
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
    2      2   
    3      3   
package aws.sdk.kotlin.services.dynamodb.smoketests
    4      4   
    5      5   
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
    6      6   
import aws.sdk.kotlin.services.dynamodb.model.ListTablesRequest
    7      7   
import aws.smithy.kotlin.runtime.http.interceptors.SmokeTestsInterceptor
    8      8   
import aws.smithy.kotlin.runtime.http.interceptors.SmokeTestsSuccessException
    9      9   
import aws.smithy.kotlin.runtime.io.use
   10         -
import aws.smithy.kotlin.runtime.smoketests.DefaultPrinter
   11     10   
import aws.smithy.kotlin.runtime.smoketests.exitProcess
          11  +
import aws.smithy.kotlin.runtime.smoketests.printExceptionStackTrace
   12     12   
import aws.smithy.kotlin.runtime.util.PlatformProvider
   13         -
import kotlin.text.Appendable
   14     13   
          14  +
private var exitCode = 0
          15  +
private val skipTags = PlatformProvider.System.getenv("AWS_SMOKE_TEST_SKIP_TAGS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
          16  +
private val serviceFilter = PlatformProvider.System.getenv("AWS_SMOKE_TEST_SERVICE_IDS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
          17  +
          18  +
private val regionOverride = PlatformProvider.System.getenv("AWS_SMOKE_TEST_REGION")
   15     19   
   16     20   
public suspend fun main() {
   17         -
    val success = SmokeTestRunner().runAllTests()
   18         -
    if (!success) {
   19         -
        exitProcess(1)
   20         -
    }
          21  +
    listTablesSuccess()
          22  +
    exitProcess(exitCode)
   21     23   
}
   22     24   
   23         -
public class SmokeTestRunner(private val platform: PlatformProvider = PlatformProvider.System, private val printer: Appendable = DefaultPrinter) {
   24         -
    private val skipTags = platform.getenv("AWS_SMOKE_TEST_SKIP_TAGS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
   25         -
    private val serviceFilter = platform.getenv("AWS_SMOKE_TEST_SERVICE_IDS")?.let { it.split(",").map { it.trim() }.toSet() } ?: emptySet()
   26         -
   27         -
    private val regionOverride = PlatformProvider.System.getenv("AWS_SMOKE_TEST_REGION")
   28         -
   29         -
    public suspend fun runAllTests(): Boolean =
   30         -
        listOf<suspend () -> Boolean>(
   31         -
            ::listTablesSuccess,
   32         -
        )
   33         -
            .map { it() }
   34         -
            .all { it }
          25  +
private suspend fun listTablesSuccess() {
          26  +
    val tags = setOf<String>()
          27  +
    if ((serviceFilter.isNotEmpty() && "DynamoDB" !in serviceFilter) || tags.any { it in skipTags }) {
          28  +
        println("ok DynamoDB ListTablesSuccess - no error expected from service # skip")
          29  +
        return
          30  +
    }
   35     31   
   36         -
    private suspend fun listTablesSuccess(): Boolean {
   37         -
        val tags = setOf<String>()
   38         -
        if ((serviceFilter.isNotEmpty() && "DynamoDB" !in serviceFilter) || tags.any { it in skipTags }) {
   39         -
            printer.appendLine("ok DynamoDB ListTablesSuccess - no error expected from service # skip")
   40         -
            return true
          32  +
    try {
          33  +
        DynamoDbClient {
          34  +
            interceptors.add(SmokeTestsInterceptor())
          35  +
            region = regionOverride ?: "us-west-2"
          36  +
        }.use { client ->
          37  +
            client.listTables(
          38  +
                ListTablesRequest {
          39  +
                    limit = 1
          40  +
                }
          41  +
            )
   41     42   
        }
   42     43   
   43         -
        return try {
   44         -
            DynamoDbClient {
   45         -
                interceptors.add(SmokeTestsInterceptor())
   46         -
                region = regionOverride ?: "us-west-2"
   47         -
            }.use { client ->
   48         -
                client.listTables(
   49         -
                    ListTablesRequest {
   50         -
                        limit = 1
   51         -
                    }
   52         -
                )
   53         -
            }
   54         -
   55         -
            error("Unexpectedly completed smoke test operation without throwing exception")
   56         -
   57         -
        } catch (exception: Exception) {
   58         -
            val success: Boolean = exception is SmokeTestsSuccessException
   59         -
            val status: String = if (success) "ok" else "not ok"
   60         -
            printer.appendLine("$status DynamoDB ListTablesSuccess - no error expected from service ")
   61         -
            if (!success) {
   62         -
                printer.appendLine(exception.stackTraceToString().prependIndent("# "))
   63         -
            }
   64         -
   65         -
            success
          44  +
    } catch (exception: Exception) {
          45  +
        val success: Boolean = exception is SmokeTestsSuccessException
          46  +
        val status: String = if (success) "ok" else "not ok"
          47  +
        println("$status DynamoDB ListTablesSuccess - no error expected from service ")
          48  +
        if (!success) {
          49  +
            printExceptionStackTrace(exception)
          50  +
            exitCode = 1
   66     51   
        }
   67     52   
    }
   68         -
   69     53   
}

tmp-codegen-diff/services/ec2/build.gradle.kts

@@ -1,1 +61,61 @@
    1      1   
    2      2   
description = "The AWS SDK for Kotlin client for EC2"
    3      3   
project.ext.set("aws.sdk.id", "EC2")
    4      4   
    5      5   
kotlin {
    6      6   
    sourceSets {
    7      7   
        commonMain {
    8      8   
            dependencies {
    9         -
                implementation("aws.smithy.kotlin:aws-credentials:1.4.17-SNAPSHOT")
           9  +
                implementation("aws.smithy.kotlin:aws-credentials:1.4.2-SNAPSHOT")
   10     10   
                implementation(project(":aws-runtime:aws-http"))
   11         -
                implementation("aws.smithy.kotlin:aws-protocol-core:1.4.17-SNAPSHOT")
   12         -
                implementation("aws.smithy.kotlin:aws-signing-common:1.4.17-SNAPSHOT")
   13         -
                implementation("aws.smithy.kotlin:aws-signing-default:1.4.17-SNAPSHOT")
   14         -
                implementation("aws.smithy.kotlin:aws-xml-protocols:1.4.17-SNAPSHOT")
   15         -
                implementation("aws.smithy.kotlin:http:1.4.17-SNAPSHOT")
   16         -
                implementation("aws.smithy.kotlin:http-auth:1.4.17-SNAPSHOT")
   17         -
                implementation("aws.smithy.kotlin:http-auth-aws:1.4.17-SNAPSHOT")
   18         -
                implementation("aws.smithy.kotlin:http-client-engine-default:1.4.17-SNAPSHOT")
   19         -
                implementation("aws.smithy.kotlin:identity-api:1.4.17-SNAPSHOT")
          11  +
                implementation("aws.smithy.kotlin:aws-protocol-core:1.4.2-SNAPSHOT")
          12  +
                implementation("aws.smithy.kotlin:aws-signing-common:1.4.2-SNAPSHOT")
          13  +
                implementation("aws.smithy.kotlin:aws-signing-default:1.4.2-SNAPSHOT")
          14  +
                implementation("aws.smithy.kotlin:aws-xml-protocols:1.4.2-SNAPSHOT")
          15  +
                implementation("aws.smithy.kotlin:http:1.4.2-SNAPSHOT")
          16  +
                implementation("aws.smithy.kotlin:http-auth:1.4.2-SNAPSHOT")
          17  +
                implementation("aws.smithy.kotlin:http-auth-aws:1.4.2-SNAPSHOT")
          18  +
                implementation("aws.smithy.kotlin:http-client-engine-default:1.4.2-SNAPSHOT")
          19  +
                implementation("aws.smithy.kotlin:identity-api:1.4.2-SNAPSHOT")
   20     20   
                implementation("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
   21         -
                implementation("aws.smithy.kotlin:serde:1.4.17-SNAPSHOT")
   22         -
                implementation("aws.smithy.kotlin:serde-form-url:1.4.17-SNAPSHOT")
   23         -
                implementation("aws.smithy.kotlin:serde-xml:1.4.17-SNAPSHOT")
   24         -
                implementation("aws.smithy.kotlin:telemetry-defaults:1.4.17-SNAPSHOT")
          21  +
                implementation("aws.smithy.kotlin:serde:1.4.2-SNAPSHOT")
          22  +
                implementation("aws.smithy.kotlin:serde-form-url:1.4.2-SNAPSHOT")
          23  +
                implementation("aws.smithy.kotlin:serde-xml:1.4.2-SNAPSHOT")
          24  +
                implementation("aws.smithy.kotlin:telemetry-defaults:1.4.2-SNAPSHOT")
   25     25   
                api(project(":aws-runtime:aws-config"))
   26     26   
                api(project(":aws-runtime:aws-core"))
   27     27   
                api(project(":aws-runtime:aws-endpoint"))
   28         -
                api("aws.smithy.kotlin:http-client:1.4.17-SNAPSHOT")
   29         -
                api("aws.smithy.kotlin:runtime-core:1.4.17-SNAPSHOT")
   30         -
                api("aws.smithy.kotlin:smithy-client:1.4.17-SNAPSHOT")
   31         -
                api("aws.smithy.kotlin:telemetry-api:1.4.17-SNAPSHOT")
          28  +
                api("aws.smithy.kotlin:http-client:1.4.2-SNAPSHOT")
          29  +
                api("aws.smithy.kotlin:runtime-core:1.4.2-SNAPSHOT")
          30  +
                api("aws.smithy.kotlin:smithy-client:1.4.2-SNAPSHOT")
          31  +
                api("aws.smithy.kotlin:telemetry-api:1.4.2-SNAPSHOT")
   32     32   
            }
   33     33   
        }
   34     34   
    }
   35     35   
   36     36   
    jvm {
   37     37   
        compilations {
   38     38   
            val mainPath = getByName("main").output.classesDirs
   39     39   
            val testPath = getByName("test").output.classesDirs
   40     40   
            tasks {
   41     41   
                register<Jar>("smokeTestJar") {

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/Ec2Client.kt

@@ -1350,1350 +1410,1409 @@
 1370   1370   
import aws.sdk.kotlin.services.ec2.model.UnlockSnapshotRequest
 1371   1371   
import aws.sdk.kotlin.services.ec2.model.UnlockSnapshotResponse
 1372   1372   
import aws.sdk.kotlin.services.ec2.model.UnmonitorInstancesRequest
 1373   1373   
import aws.sdk.kotlin.services.ec2.model.UnmonitorInstancesResponse
 1374   1374   
import aws.sdk.kotlin.services.ec2.model.UpdateSecurityGroupRuleDescriptionsEgressRequest
 1375   1375   
import aws.sdk.kotlin.services.ec2.model.UpdateSecurityGroupRuleDescriptionsEgressResponse
 1376   1376   
import aws.sdk.kotlin.services.ec2.model.UpdateSecurityGroupRuleDescriptionsIngressRequest
 1377   1377   
import aws.sdk.kotlin.services.ec2.model.UpdateSecurityGroupRuleDescriptionsIngressResponse
 1378   1378   
import aws.sdk.kotlin.services.ec2.model.WithdrawByoipCidrRequest
 1379   1379   
import aws.sdk.kotlin.services.ec2.model.WithdrawByoipCidrResponse
 1380         -
import aws.smithy.kotlin.runtime.auth.AuthSchemeId
 1381   1380   
import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProvider
 1382   1381   
import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProviderConfig
 1383   1382   
import aws.smithy.kotlin.runtime.awsprotocol.ClockSkewInterceptor
 1384   1383   
import aws.smithy.kotlin.runtime.client.AbstractSdkClientBuilder
 1385   1384   
import aws.smithy.kotlin.runtime.client.AbstractSdkClientFactory
 1386   1385   
import aws.smithy.kotlin.runtime.client.IdempotencyTokenConfig
 1387   1386   
import aws.smithy.kotlin.runtime.client.IdempotencyTokenProvider
 1388   1387   
import aws.smithy.kotlin.runtime.client.LogMode
 1389   1388   
import aws.smithy.kotlin.runtime.client.RetryClientConfig
 1390   1389   
import aws.smithy.kotlin.runtime.client.RetryStrategyClientConfig
@@ -1425,1424 +1541,1533 @@
 1445   1444   
    }
 1446   1445   
 1447   1446   
    public class Builder internal constructor(): AbstractSdkClientBuilder<Config, Config.Builder, Ec2Client>() {
 1448   1447   
        override val config: Config.Builder = Config.Builder()
 1449   1448   
        override fun newClient(config: Config): Ec2Client = DefaultEc2Client(config)
 1450   1449   
    }
 1451   1450   
 1452   1451   
    public class Config private constructor(builder: Builder) : AwsSdkClientConfig, CredentialsProviderConfig, HttpAuthConfig, HttpClientConfig, HttpEngineConfig by builder.buildHttpEngineConfig(), IdempotencyTokenConfig, RetryClientConfig, RetryStrategyClientConfig by builder.buildRetryStrategyClientConfig(), SdkClientConfig, TelemetryConfig {
 1453   1452   
        override val clientName: String = builder.clientName
 1454   1453   
        override val region: String? = builder.region
 1455         -
        override val authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = builder.authSchemePreference
 1456   1454   
        override val authSchemes: kotlin.collections.List<aws.smithy.kotlin.runtime.http.auth.AuthScheme> = builder.authSchemes
 1457   1455   
        override val credentialsProvider: CredentialsProvider = builder.credentialsProvider ?: DefaultChainCredentialsProvider(httpClient = httpClient, region = region).manage()
 1458   1456   
        public val endpointProvider: Ec2EndpointProvider = builder.endpointProvider ?: DefaultEc2EndpointProvider()
 1459   1457   
        public val endpointUrl: Url? = builder.endpointUrl
 1460   1458   
        override val idempotencyTokenProvider: IdempotencyTokenProvider = builder.idempotencyTokenProvider ?: IdempotencyTokenProvider.Default
 1461   1459   
        override val interceptors: kotlin.collections.List<aws.smithy.kotlin.runtime.http.interceptors.HttpInterceptor> = builder.interceptors
 1462   1460   
        override val logMode: LogMode = builder.logMode ?: LogMode.Default
 1463   1461   
        override val retryPolicy: RetryPolicy<Any?> = builder.retryPolicy ?: AwsRetryPolicy.Default
 1464   1462   
        override val telemetryProvider: TelemetryProvider = builder.telemetryProvider ?: TelemetryProvider.Global
 1465   1463   
        override val useDualStack: Boolean = builder.useDualStack ?: false
 1466   1464   
        override val useFips: Boolean = builder.useFips ?: false
 1467   1465   
        override val applicationId: String? = builder.applicationId
 1468         -
        public val authSchemeProvider: Ec2AuthSchemeProvider = builder.authSchemeProvider ?: DefaultEc2AuthSchemeProvider(authSchemePreference = authSchemePreference)
        1466  +
        public val authSchemeProvider: Ec2AuthSchemeProvider = builder.authSchemeProvider ?: DefaultEc2AuthSchemeProvider()
 1469   1467   
        public companion object {
 1470   1468   
            public inline operator fun invoke(block: Builder.() -> kotlin.Unit): Config = Builder().apply(block).build()
 1471   1469   
        }
 1472   1470   
 1473   1471   
        public fun toBuilder(): Builder = Builder().apply {
 1474   1472   
            clientName = this@Config.clientName
 1475   1473   
            region = this@Config.region
 1476         -
            authSchemePreference = this@Config.authSchemePreference
 1477   1474   
            authSchemes = this@Config.authSchemes
 1478   1475   
            credentialsProvider = this@Config.credentialsProvider
 1479   1476   
            endpointProvider = this@Config.endpointProvider
 1480   1477   
            endpointUrl = this@Config.endpointUrl
 1481   1478   
            httpClient = this@Config.httpClient
 1482   1479   
            idempotencyTokenProvider = this@Config.idempotencyTokenProvider
 1483   1480   
            interceptors = this@Config.interceptors.toMutableList()
 1484   1481   
            logMode = this@Config.logMode
 1485   1482   
            retryPolicy = this@Config.retryPolicy
 1486   1483   
            retryStrategy = this@Config.retryStrategy
 1487   1484   
            telemetryProvider = this@Config.telemetryProvider
 1488   1485   
            useDualStack = this@Config.useDualStack
 1489   1486   
            useFips = this@Config.useFips
 1490   1487   
            applicationId = this@Config.applicationId
 1491   1488   
            authSchemeProvider = this@Config.authSchemeProvider
 1492   1489   
        }
 1493   1490   
 1494   1491   
        public class Builder : AwsSdkClientConfig.Builder, CredentialsProviderConfig.Builder, HttpAuthConfig.Builder, HttpClientConfig.Builder, HttpEngineConfig.Builder by HttpEngineConfigImpl.BuilderImpl(), IdempotencyTokenConfig.Builder, RetryClientConfig.Builder, RetryStrategyClientConfig.Builder by RetryStrategyClientConfigImpl.BuilderImpl(), SdkClientConfig.Builder<Config>, TelemetryConfig.Builder {
 1495   1492   
            /**
 1496   1493   
             * A reader-friendly name for the client.
 1497   1494   
             */
 1498   1495   
            override var clientName: String = "EC2"
 1499   1496   
 1500   1497   
            /**
 1501   1498   
             * The AWS region (e.g. `us-west-2`) to make requests to. See about AWS
 1502   1499   
             * [global infrastructure](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) for more
 1503   1500   
             * information
 1504   1501   
             */
 1505   1502   
            override var region: String? = null
 1506   1503   
 1507         -
            /**
 1508         -
             * The ordered preference of [AuthScheme] that this client will use.
 1509         -
             */
 1510         -
            override var authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = null
 1511         -
 1512   1504   
            /**
 1513   1505   
             * Register new or override default [AuthScheme]s configured for this client. By default, the set
 1514   1506   
             * of auth schemes configured comes from the service model. An auth scheme configured explicitly takes
 1515   1507   
             * precedence over the defaults and can be used to customize identity resolution and signing for specific
 1516   1508   
             * authentication schemes.
 1517   1509   
             */
 1518   1510   
            override var authSchemes: kotlin.collections.List<aws.smithy.kotlin.runtime.http.auth.AuthScheme> = emptyList()
 1519   1511   
 1520   1512   
            /**
 1521   1513   
             * The AWS credentials provider to use for authenticating requests. If not provided a

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/auth/DefaultEc2AuthSchemeProvider.kt

@@ -1,1 +25,21 @@
    1      1   
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
    2      2   
    3      3   
package aws.sdk.kotlin.services.ec2.auth
    4      4   
    5      5   
import aws.sdk.kotlin.services.ec2.endpoints.Ec2EndpointProvider
    6      6   
import aws.smithy.kotlin.runtime.auth.AuthOption
    7         -
import aws.smithy.kotlin.runtime.http.auth.reprioritizeAuthOptions
    8      7   
import aws.smithy.kotlin.runtime.http.auth.sigV4
    9      8   
   10         -
public class DefaultEc2AuthSchemeProvider(private val endpointProvider: Ec2EndpointProvider? = null, private val authSchemePreference: kotlin.collections.List<aws.smithy.kotlin.runtime.auth.AuthSchemeId>? = null) : Ec2AuthSchemeProvider {
           9  +
public class DefaultEc2AuthSchemeProvider(private val endpointProvider: Ec2EndpointProvider? = null) : Ec2AuthSchemeProvider {
   11     10   
    private val operationOverrides = mapOf<String, List<AuthOption>>(
   12     11   
    )
   13         -
   14     12   
    private val serviceDefaults = listOf<AuthOption>(
   15     13   
        sigV4(),
   16     14   
    )
   17         -
   18     15   
    override suspend fun resolveAuthScheme(params: Ec2AuthSchemeParameters): List<AuthOption> {
   19         -
        val modeledAuthOptions = operationOverrides.getOrElse(params.operationName) { serviceDefaults }
   20         -
   21         -
        val authOptions = modeledAuthOptions
   22         -
   23         -
        return authSchemePreference?.let { reprioritizeAuthOptions(it, authOptions) } ?: authOptions
          16  +
        val modeledAuthOptions = operationOverrides.getOrElse(params.operationName) {
          17  +
            serviceDefaults
          18  +
        }
          19  +
        return modeledAuthOptions
   24     20   
    }
   25     21   
}