Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
167 commits
Select commit Hold shift + click to select a range
a4734c7
fix: create JMESPATH flattenIfPossible functions for Lists (#1169)
0marperez Dec 16, 2024
7911a94
chore: release 1.3.30
aws-sdk-kotlin-ci Dec 16, 2024
7085c8a
chore: bump snapshot version to 1.3.31-SNAPSHOT
aws-sdk-kotlin-ci Dec 16, 2024
4575023
misc: enhance support for replayable instances of `InputStream` (#1197)
lauzadis Dec 18, 2024
b0a4bac
chore: release 1.3.31
aws-sdk-kotlin-ci Dec 18, 2024
80f4538
chore: bump snapshot version to 1.3.32-SNAPSHOT
aws-sdk-kotlin-ci Dec 18, 2024
e9d16a9
fix: CBOR protocol test assertions / blob serialization (#1198)
lauzadis Dec 18, 2024
48849a1
fix: correctly serialize subset of shape's members when configured (#…
lauzadis Jan 6, 2025
ded3a4b
chore: release 1.3.32
aws-sdk-kotlin-ci Jan 6, 2025
d97e8ba
chore: bump snapshot version to 1.3.33-SNAPSHOT
aws-sdk-kotlin-ci Jan 6, 2025
78f17f3
chore: add *-main to branch workflows (#1209)
ianbotsf Jan 8, 2025
d06ee0a
chore: add .kotlin/ to .gitignore (#1208)
ianbotsf Jan 8, 2025
d2e7c91
chore: smithy version bump (#1213)
0marperez Jan 10, 2025
5a2df8f
chore: release 1.3.33
aws-sdk-kotlin-ci Jan 10, 2025
003633b
chore: bump snapshot version to 1.3.34-SNAPSHOT
aws-sdk-kotlin-ci Jan 10, 2025
5f5ec8f
feat: add `AuthTokenGenerator` (#1212)
lauzadis Jan 10, 2025
3fe1b5e
chore: release 1.3.34
aws-sdk-kotlin-ci Jan 10, 2025
0bba308
chore: bump snapshot version to 1.3.35-SNAPSHOT
aws-sdk-kotlin-ci Jan 10, 2025
52e4439
misc: merge v1.4 into main (#1218)
0marperez Jan 15, 2025
e0c25d6
feat: support default checksums (#1191)
0marperez Jan 15, 2025
14e0958
chore: release 1.4.0
aws-sdk-kotlin-ci Jan 15, 2025
ed95d7b
chore: bump snapshot version to 1.4.1-SNAPSHOT
aws-sdk-kotlin-ci Jan 15, 2025
a4ace35
fix: add 0.9.x aws-crt-kotlin transform (#1220)
lauzadis Jan 16, 2025
15e5f0c
fix: Ensure `Host` header is included when signing auth tokens (#1222)
lauzadis Jan 16, 2025
447ac10
chore: release 1.4.1
aws-sdk-kotlin-ci Jan 16, 2025
0f8db44
chore: bump snapshot version to 1.4.2-SNAPSHOT
aws-sdk-kotlin-ci Jan 16, 2025
8b33693
fix: address various failing protocol tests (#1223)
lauzadis Jan 23, 2025
03badf9
misc: re-enable `kotlinWarningsAsErrors=true` (#1224)
lauzadis Jan 23, 2025
9f44cdb
fix: ignore hop-by-hop headers when signing requests (#1227)
ianbotsf Jan 28, 2025
97ac447
chore: release 1.4.2
aws-sdk-kotlin-ci Jan 28, 2025
b7e50e3
chore: bump snapshot version to 1.4.3-SNAPSHOT
aws-sdk-kotlin-ci Jan 28, 2025
e6357f9
misc: add telemetry configuration to DefaultAwsSigner (#1226)
xinsong-cui Jan 30, 2025
9d6857b
misc: gradle mirror (#1204)
0marperez Feb 4, 2025
5323882
fix: correctly check equality for CaseInsensitiveMap (#1235)
ianbotsf Feb 6, 2025
1af0e82
misc: gradle version bump (#1236)
0marperez Feb 7, 2025
120768c
fix: correct hash code calculation for case-insensitive map entries (…
ianbotsf Feb 8, 2025
d7e3603
misc: bump build plugin version (#1239)
lauzadis Feb 12, 2025
c1bcb04
fix: favor endpointUrl over endpoint discovery when provided (#1240)
ianbotsf Feb 13, 2025
4223bfa
chore: release 1.4.3
aws-sdk-kotlin-ci Feb 13, 2025
cea7b1f
chore: bump snapshot version to 1.4.4-SNAPSHOT
aws-sdk-kotlin-ci Feb 13, 2025
ad4d2a3
misc: test union member name same as union (#1241)
0marperez Feb 14, 2025
a0be9e4
fix: unions with member names matching auto-imported Kotlin symbols (…
0marperez Feb 14, 2025
00500f2
fix: bump maximum event stream message length to 24MB (#1243)
lauzadis Feb 18, 2025
7329212
chore: release 1.4.4
aws-sdk-kotlin-ci Feb 18, 2025
612c39b
chore: bump snapshot version to 1.4.5-SNAPSHOT
aws-sdk-kotlin-ci Feb 18, 2025
283ca31
misc: Remove Elastic Inference SDK ID test (#1247)
0marperez Feb 24, 2025
82b9ffe
feat: Kotlin implementation of SigV4a signing (#1246)
lauzadis Feb 24, 2025
0df4e42
chore: release 1.4.5
aws-sdk-kotlin-ci Feb 24, 2025
7430722
chore: bump snapshot version to 1.4.6-SNAPSHOT
aws-sdk-kotlin-ci Feb 24, 2025
80d395b
fix: account ID based endpoints (#1245)
0marperez Feb 25, 2025
5dbc684
chore: release 1.4.6
aws-sdk-kotlin-ci Feb 25, 2025
dc6b646
chore: bump snapshot version to 1.4.7-SNAPSHOT
aws-sdk-kotlin-ci Feb 25, 2025
09838a7
fix: replace `Span.makeCurrent()` with `Span.asContextElement()` (#1237)
lauzadis Feb 25, 2025
d06ccf3
chore: release 1.4.7
aws-sdk-kotlin-ci Feb 25, 2025
03a8e62
chore: bump snapshot version to 1.4.8-SNAPSHOT
aws-sdk-kotlin-ci Feb 25, 2025
aae827c
fix: idempotency tokens being code-generated for nested structures (#…
0marperez Feb 27, 2025
c498b42
chore: release 1.4.8
aws-sdk-kotlin-ci Feb 27, 2025
462967b
chore: bump snapshot version to 1.4.9-SNAPSHOT
aws-sdk-kotlin-ci Feb 27, 2025
72155f7
fix: correctly codegen paginators for types which require fully-quali…
ianbotsf Feb 27, 2025
0e4a7cb
chore: bump Ktor dependency (#1250)
ianbotsf Feb 27, 2025
aa02ac4
chore: release 1.4.9
aws-sdk-kotlin-ci Feb 27, 2025
8178808
chore: bump snapshot version to 1.4.10-SNAPSHOT
aws-sdk-kotlin-ci Feb 27, 2025
4b0df67
misc: remove `@InternalApi` from `SdkClientOption` extension function…
lauzadis Mar 3, 2025
6f94c6a
fix: correctly handle sequential calls to `SingleFlightGroup` (#1251)
ianbotsf Mar 3, 2025
667161b
chore: release 1.4.10
aws-sdk-kotlin-ci Mar 6, 2025
f1d5f6b
chore: bump snapshot version to 1.4.11-SNAPSHOT
aws-sdk-kotlin-ci Mar 6, 2025
bf9a200
feat: main to feature branches merge (#1254)
0marperez Mar 12, 2025
6e10c01
feat: emit accountId metrics (#1255)
xinsong-cui Mar 14, 2025
1caac30
chore: release 1.4.11
aws-sdk-kotlin-ci Mar 14, 2025
0a29a00
chore: bump snapshot version to 1.4.12-SNAPSHOT
aws-sdk-kotlin-ci Mar 14, 2025
3e307f7
misc: run merge main on push to main (#1261)
0marperez Apr 1, 2025
f6557ba
feat: sync mirror (#1260)
0marperez Apr 1, 2025
5d8d7fd
chore: reintegrate E2E smoke tests into the top-level Gradle build; m…
ianbotsf Apr 2, 2025
2109a72
misc: include `aws-crt-kotlin` as a composite build (#1263)
lauzadis Apr 3, 2025
b092fd6
chore: release 1.4.12
aws-sdk-kotlin-ci Apr 4, 2025
ce7c62d
chore: bump snapshot version to 1.4.13-SNAPSHOT
aws-sdk-kotlin-ci Apr 4, 2025
fc3837b
misc: prepare codegen packages for internal import (#1266)
lauzadis Apr 9, 2025
a5e1874
chore: release 1.4.13
aws-sdk-kotlin-ci Apr 10, 2025
f6e959c
chore: bump snapshot version to 1.4.14-SNAPSHOT
aws-sdk-kotlin-ci Apr 10, 2025
9621ad1
misc: use aws-kotlin-repo-tools show-results action (#1268)
lauzadis Apr 11, 2025
286474a
chore: upgrade aws-kotlin-repo-tools (#1270)
ianbotsf Apr 14, 2025
44d19cd
misc: add lineSeparator to Filesystem (#1267)
lauzadis Apr 14, 2025
b56b9f2
feat: release readiness check (#1264)
0marperez Apr 16, 2025
57251e1
misc: add 1.x JSON configuration (#1275)
lauzadis Apr 16, 2025
875e133
fix: merge main workflow credentials (#1274)
0marperez Apr 16, 2025
4672748
feat: add service protocol benchmarks (#1271)
xinsong-cui Apr 18, 2025
82a3004
chore: release 1.4.14
aws-sdk-kotlin-ci Apr 18, 2025
a6f248a
chore: bump snapshot version to 1.4.15-SNAPSHOT
aws-sdk-kotlin-ci Apr 18, 2025
73370d7
fix: improve handling of expected socket exceptions when using connec…
ianbotsf Apr 21, 2025
b7c7da1
chore: release 1.4.15
aws-sdk-kotlin-ci Apr 21, 2025
4ba2762
chore: bump snapshot version to 1.4.16-SNAPSHOT
aws-sdk-kotlin-ci Apr 21, 2025
fddb0fa
feat: add `authSchemePreference` configuration (#1277)
lauzadis Apr 28, 2025
1c490f0
chore: release 1.4.16
aws-sdk-kotlin-ci Apr 28, 2025
b6a032c
chore: bump snapshot version to 1.4.17-SNAPSHOT
aws-sdk-kotlin-ci Apr 28, 2025
eea5086
feat: add analytic to smithy kotlin api ref docs (#1278)
xinsong-cui May 6, 2025
378e30e
misc: downgrade "response headers didn't contain a valid checksum" to…
lauzadis May 8, 2025
60f5536
style: properly indent the dependencies in the gradle file (#1280)
sugmanue May 9, 2025
2fe1397
misc: remove erroneous changelog (#1283)
lauzadis May 14, 2025
8ac05ee
misc: deprecate private networks service (#1288)
0marperez May 21, 2025
e099cdd
misc: add release readiness to contributing.md (#1286)
0marperez May 21, 2025
d3089e6
misc: repo tools version bump (#1289)
0marperez May 22, 2025
bcad3b4
fix: add import references when needed (#1281)
sugmanue May 22, 2025
3c0da29
chore: add unit test for protocol selection behavior (#1290)
ianbotsf Jun 3, 2025
747dafb
misc: repo tools version bump (#1291)
0marperez Jun 4, 2025
aa36e75
chore: release 1.4.17
aws-sdk-kotlin-ci Jun 11, 2025
da208cd
chore: bump snapshot version to 1.4.18-SNAPSHOT
aws-sdk-kotlin-ci Jun 11, 2025
af7e5c5
misc: upgrade to Dokka 2.0.0 (#1284)
lauzadis Jun 13, 2025
729f1eb
chore: release 1.4.18
aws-sdk-kotlin-ci Jun 13, 2025
2ea3152
chore: bump snapshot version to 1.4.19-SNAPSHOT
aws-sdk-kotlin-ci Jun 13, 2025
c616efe
fix: preserve Dokka v1 module paths (#1298)
lauzadis Jun 19, 2025
98414ec
chore: release 1.4.19
aws-sdk-kotlin-ci Jun 19, 2025
c6b2074
chore: bump snapshot version to 1.4.20-SNAPSHOT
aws-sdk-kotlin-ci Jun 19, 2025
3f6fcde
misc: simplify configuration of `modulePath` (#1299)
lauzadis Jun 20, 2025
fff09ff
fix: Add `-Xjdk-release=1.8` everywhere we set `jvmTarget` (#1297)
lauzadis Jun 20, 2025
8c990fa
fix: add `explicitReceiver` parameter to `ShapeValueGenerator` (#1301)
lauzadis Jun 20, 2025
aee6ce6
chore: release 1.4.20
aws-sdk-kotlin-ci Jun 20, 2025
6b8e791
chore: bump snapshot version to 1.4.21-SNAPSHOT
aws-sdk-kotlin-ci Jun 20, 2025
31a7c82
misc: validate changelog entries (#1303)
lauzadis Jun 25, 2025
efbbddf
misc: update Gradle wrapper to 8.14.2 (#1304)
lauzadis Jun 26, 2025
44bf693
chore: upgrade to Smithy 1.60.2 (#1307)
ianbotsf Jun 27, 2025
e86d816
chore: release 1.4.21
aws-sdk-kotlin-ci Jun 27, 2025
4390455
chore: bump snapshot version to 1.4.22-SNAPSHOT
aws-sdk-kotlin-ci Jun 27, 2025
e479b3d
chore: bump aws-kotlin-repo-tools version (#1309)
ianbotsf Jul 1, 2025
a2c37d5
chore: release 1.4.22
aws-sdk-kotlin-ci Jul 2, 2025
444ff8a
chore: bump snapshot version to 1.4.23-SNAPSHOT
aws-sdk-kotlin-ci Jul 2, 2025
f6de03d
feat: add support for bedrock api key auth (#1317)
xinsong-cui Jul 15, 2025
1cae2de
chore: release 1.4.23
aws-sdk-kotlin-ci Jul 15, 2025
8e00fc6
chore: bump snapshot version to 1.4.24-SNAPSHOT
aws-sdk-kotlin-ci Jul 15, 2025
287b408
chore: v1.5-main merge (#1328)
ianbotsf Jul 17, 2025
0019542
chore: release 1.5.0
aws-sdk-kotlin-ci Jul 17, 2025
238b479
chore: bump snapshot version to 1.5.1-SNAPSHOT
aws-sdk-kotlin-ci Jul 17, 2025
93649e1
fix: correct the Brazil mapping for aws-crt-kotlin 0.10.* (#1334)
ianbotsf Jul 17, 2025
3dfc9b3
chore: release 1.5.1
aws-sdk-kotlin-ci Jul 17, 2025
b5d177c
chore: bump snapshot version to 1.5.2-SNAPSHOT
aws-sdk-kotlin-ci Jul 17, 2025
9362fa1
misc: add documentation for OkHttp4Engine when using Android with R8 …
lauzadis Jul 23, 2025
c980f10
fix typo: OkHttpEngine4 -> OkHttp4Engine (#1341)
lauzadis Jul 24, 2025
ee5f426
feat: migrate to jreleaser (#1322)
0marperez Jul 24, 2025
5fe9106
chore: release 1.5.2
aws-sdk-kotlin-ci Jul 24, 2025
503817c
chore: bump snapshot version to 1.5.3-SNAPSHOT
aws-sdk-kotlin-ci Jul 24, 2025
252bdad
feat: add support for call timeout and attempt timeout (#1343)
ianbotsf Jul 28, 2025
a35e445
misc: repo tools v0.4.35 (#1344)
0marperez Jul 28, 2025
0e0662b
chore: release 1.5.3
aws-sdk-kotlin-ci Jul 28, 2025
74772d9
chore: bump snapshot version to 1.5.4-SNAPSHOT
aws-sdk-kotlin-ci Jul 28, 2025
57fdb54
fix: skip unnecessary null checks in `equals()` methods for generated…
ianbotsf Jul 30, 2025
673e586
chore: add config for enabling Dependabot version updates (#1347)
ianbotsf Jul 31, 2025
de43b9a
chore: migrate to pull_request_target for some workflows that require…
ianbotsf Aug 4, 2025
5da39c2
chore: skip changelog verification for Dependabot PRs (#1355)
ianbotsf Aug 4, 2025
95958f1
chore(deps): bump dev.zacsweers.kctfork:core from 0.7.0 to 0.8.0 (#1353)
dependabot[bot] Aug 4, 2025
d18bd8b
chore(deps): bump io.micrometer:micrometer-core from 1.14.2 to 1.15.2…
dependabot[bot] Aug 4, 2025
1fdd38b
chore(deps): bump ktor-version from 3.1.1 to 3.2.3 (#1349)
dependabot[bot] Aug 4, 2025
7e72b40
chore(deps): bump org.jetbrains.kotlinx.binary-compatibility-validato…
dependabot[bot] Aug 4, 2025
d66d251
chore(deps): bump kotlinx-benchmark-version from 0.4.12 to 0.4.14 (#1…
dependabot[bot] Aug 4, 2025
718be05
chore(deps): bump smithy-version from 1.60.2 to 1.61.0 (#1360)
dependabot[bot] Aug 5, 2025
81fd139
chore(deps): bump junit-version from 5.13.2 to 5.13.4 (#1359)
dependabot[bot] Aug 5, 2025
d61d2dc
chore: remove manual resolution of transitive Docker dependencies (#1…
ianbotsf Aug 5, 2025
6a8e67d
chore(deps): bump com.squareup.okio:okio from 3.15.0 to 3.16.0 (#1356)
dependabot[bot] Aug 5, 2025
5af711e
chore(deps): bump com.fasterxml.jackson:jackson-bom from 2.15.3 to 2.…
dependabot[bot] Aug 5, 2025
2be96f0
chore(deps): bump org.jsoup:jsoup from 1.19.1 to 1.21.1 (#1365)
dependabot[bot] Aug 6, 2025
1192dd8
Upgrade to latest version of aws-kotlin-repo-tools
lauzadis Aug 6, 2025
5327e94
Merge branch 'main' of github.com:smithy-lang/smithy-kotlin into kn-m…
lauzadis Aug 6, 2025
a747307
apiDump
lauzadis Aug 6, 2025
404b631
Upgrade to latest aws-kotlin-repo-tools version
lauzadis Aug 6, 2025
cab5978
CI
lauzadis Aug 6, 2025
5da18c7
CI
lauzadis Aug 6, 2025
28a7018
Fix syntax error
lauzadis Aug 6, 2025
d20a38f
Add working directory
lauzadis Aug 6, 2025
f0d45ca
Fix working directory
lauzadis Aug 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .brazil.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@

"com.squareup.okhttp3:okhttp-coroutines:5.*": "OkHttp3Coroutines-5.x",
"com.squareup.okhttp3:okhttp:5.*": "OkHttp3-5.x",
"com.squareup.okhttp3:okhttp-jvm:5.*": "OkHttp3-5.x",
"com.squareup.okio:okio-jvm:3.*": "OkioJvm-3.x",
"io.opentelemetry:opentelemetry-api:1.*": "Maven-io-opentelemetry_opentelemetry-api-1.x",
"io.opentelemetry:opentelemetry-extension-kotlin:1.*": "Maven-io-opentelemetry_opentelemetry-extension-kotlin-1.x",
"org.slf4j:slf4j-api:2.*": "Maven-org-slf4j_slf4j-api-2.x",
"aws.sdk.kotlin.crt:aws-crt-kotlin:0.10.*": "AwsCrtKotlin-0.10.x",
"aws.sdk.kotlin.crt:aws-crt-kotlin:0.9.*": "AwsCrtKotlin-0.9.x",
"aws.sdk.kotlin.crt:aws-crt-kotlin:0.8.*": "AwsCrtKotlin-0.8.x",
"com.squareup.okhttp3:okhttp:4.*": "OkHttp3-4.x",
Expand Down
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: gradle
directory: /
schedule:
interval: daily # means every _weekday_ (Monday through Friday)
8 changes: 4 additions & 4 deletions .github/workflows/artifact-size-metrics.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Artifact Size Metrics
on:
pull_request:
pull_request_target:
types: [ opened, synchronize, reopened, labeled, unlabeled ]
branches:
- main
Expand Down Expand Up @@ -40,7 +40,7 @@ jobs:
- name: Put Artifact Size Metrics in CloudWatch
run: ./gradlew putArtifactSizeMetricsInCloudWatch -Prelease=${{ github.event.release.tag_name }}
size-check:
if: github.event_name == 'pull_request'
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
steps:
- name: Checkout Sources
Expand Down Expand Up @@ -70,10 +70,10 @@ jobs:
- name: Analyze Artifact Size Metrics
run: ./gradlew analyzeArtifactSizeMetrics
working-directory: smithy-kotlin

- name: Show Results
uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/show-results@main
with:
working-directory: smithy-kotlin

- name: Evaluate
if: ${{ !contains(github.event.pull_request.labels.*.name, 'acknowledge-artifact-size-increase') }}
working-directory: smithy-kotlin
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/changelog-verification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ permissions:
id-token: write

on:
pull_request:
pull_request_target:
types: [ opened, synchronize, reopened, labeled, unlabeled ]
branches:
- main
Expand All @@ -13,6 +13,7 @@ on:
jobs:
changelog-verification:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login != 'dependabot[bot]' # no changelogs for Dependabot version bumps
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ jobs:
distribution: 'corretto'
java-version: 17
cache: 'gradle'
- name: Configure Gradle
uses: awslabs/aws-kotlin-repo-tools/.github/actions/configure-gradle@main
with:
working-directory: 'smithy-kotlin'

- name: Build and Test on JVM
working-directory: ./smithy-kotlin
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/kat-transform.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Kat Transform

on:
pull_request:
pull_request_target:
types: [ opened, synchronize, reopened, labeled, unlabeled ]
branches:
- main
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/merge-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ jobs:
uses: awslabs/aws-kotlin-repo-tools/.github/actions/merge-main@main
with:
ci-user-pat: ${{ secrets.CI_USER_PAT }}
exempt-branches: # Add any if required
exempt-branches: # Add any if required
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Changelog

## [1.5.3] - 07/28/2025

### Features
* [#1320](https://github.com/smithy-lang/smithy-kotlin/issues/1320) Enable configuration of timeouts for calls and attempt

## [1.5.2] - 07/24/2025

### Miscellaneous
* [#1339](https://github.com/smithy-lang/smithy-kotlin/issues/1339) Add documentation for OkHttp4Engine when using Android with R8 / ProGuard

## [1.5.1] - 07/17/2025

## [1.5.0] - 07/17/2025

### Features
* Upgrade to Kotlin 2.2.0
* [#1413](https://github.com/awslabs/aws-sdk-kotlin/issues/1413) ⚠️ **IMPORTANT**: Refactor endpoint discoverer classes into interfaces so custom implementations may be provided

### Fixes
* [#1311](https://github.com/smithy-lang/smithy-kotlin/issues/1311) Reimplement idle connection monitoring using `okhttp3.EventListener` instead of now-internal `okhttp3.ConnectionListener`
* [#1608](https://github.com/awslabs/aws-sdk-kotlin/issues/1608) Switch to always serialize defaults in requests. Previously fields were not serialized in requests if they weren't `@required` and hadn't been changed from the default value.
* [#1413](https://github.com/awslabs/aws-sdk-kotlin/issues/1413) Favor `endpointUrl` instead of endpoint discovery if both are provided

### Miscellaneous
* Add telemetry provider configuration to `DefaultAwsSigner`

## [1.4.23] - 07/15/2025

## [1.4.22] - 07/02/2025
Expand Down
10 changes: 8 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import aws.sdk.kotlin.gradle.dsl.configureJReleaser
import aws.sdk.kotlin.gradle.dsl.configureLinting
import aws.sdk.kotlin.gradle.dsl.configureNexus
import aws.sdk.kotlin.gradle.util.typedProp

buildscript {
Expand All @@ -14,6 +14,12 @@ buildscript {
classpath(libs.kotlinx.atomicfu.plugin)
// Add our custom gradle build logic to buildscript classpath
classpath(libs.aws.kotlin.repo.tools.build.support)
/*
Enforce jackson to a version supported both by dokka and jreleaser:
https://github.com/Kotlin/dokka/issues/3472#issuecomment-1929712374
https://github.com/Kotlin/dokka/issues/3194#issuecomment-1929382630
*/
classpath(enforcedPlatform("com.fasterxml.jackson:jackson-bom:2.19.2"))
}
}

Expand Down Expand Up @@ -79,7 +85,7 @@ dependencies {
}

// Publishing
configureNexus()
configureJReleaser()

// Code Style
val lintPaths = listOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,27 @@ class RegionSupport : KotlinIntegration {
name = "region"
symbol = KotlinTypes.String.toBuilder().nullable().build()
documentation = """
The region to sign with and make requests to.
The AWS region to sign with and make requests to. When specified, this static region configuration
takes precedence over other region resolution methods.

The region resolution order is:
1. Static region (if specified)
2. Custom region provider (if configured)
3. Default region provider chain
""".trimIndent()
}

val RegionProviderProp: ConfigProperty = ConfigProperty {
name = "regionProvider"
symbol = RuntimeTypes.SmithyClient.Region.RegionProvider
documentation = """
An optional region provider that determines the AWS region for client operations. When specified, this provider
takes precedence over the default region provider chain, unless a static region is explicitly configured.

The region resolution order is:
1. Static region (if specified)
2. Custom region provider (if configured)
3. Default region provider chain
""".trimIndent()
}
}
Expand All @@ -57,7 +77,7 @@ class RegionSupport : KotlinIntegration {
return supportsSigv4 || hasRegionBuiltin || isAwsSdk
}

override fun additionalServiceConfigProps(ctx: CodegenContext): List<ConfigProperty> = listOf(RegionProp)
override fun additionalServiceConfigProps(ctx: CodegenContext): List<ConfigProperty> = listOf(RegionProp, RegionProviderProp)

override fun customizeEndpointResolution(ctx: ProtocolGenerator.GenerationContext): EndpointCustomization =
object : EndpointCustomization {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,23 @@ import software.amazon.smithy.kotlin.codegen.aws.protocols.core.AbstractQueryFor
import software.amazon.smithy.kotlin.codegen.aws.protocols.core.AwsHttpBindingProtocolGenerator
import software.amazon.smithy.kotlin.codegen.aws.protocols.core.QueryHttpBindingProtocolGenerator
import software.amazon.smithy.kotlin.codegen.aws.protocols.formurl.QuerySerdeFormUrlDescriptorGenerator
import software.amazon.smithy.kotlin.codegen.core.*
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
import software.amazon.smithy.kotlin.codegen.core.RenderingContext
import software.amazon.smithy.kotlin.codegen.core.RuntimeTypes
import software.amazon.smithy.kotlin.codegen.core.withBlock
import software.amazon.smithy.kotlin.codegen.lang.KotlinTypes
import software.amazon.smithy.kotlin.codegen.model.*
import software.amazon.smithy.kotlin.codegen.rendering.protocol.*
import software.amazon.smithy.kotlin.codegen.rendering.serde.*
import software.amazon.smithy.kotlin.codegen.model.buildSymbol
import software.amazon.smithy.kotlin.codegen.model.getTrait
import software.amazon.smithy.kotlin.codegen.model.hasTrait
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolGenerator
import software.amazon.smithy.kotlin.codegen.rendering.protocol.toRenderingContext
import software.amazon.smithy.kotlin.codegen.rendering.serde.FormUrlSerdeDescriptorGenerator
import software.amazon.smithy.kotlin.codegen.rendering.serde.StructuredDataParserGenerator
import software.amazon.smithy.kotlin.codegen.rendering.serde.StructuredDataSerializerGenerator
import software.amazon.smithy.kotlin.codegen.rendering.serde.XmlParserGenerator
import software.amazon.smithy.model.shapes.*
import software.amazon.smithy.model.traits.*
import software.amazon.smithy.model.traits.XmlFlattenedTrait
import software.amazon.smithy.model.traits.XmlNameTrait

/**
* Handles generating the aws.protocols#awsQuery protocol for services.
Expand Down Expand Up @@ -45,7 +55,7 @@ class AwsQuery : QueryHttpBindingProtocolGenerator() {
writer: KotlinWriter,
) {
writer.write("""checkNotNull(payload){ "unable to parse error from empty response" }""")
writer.write("#T(payload)", RuntimeTypes.AwsXmlProtocols.parseRestXmlErrorResponseNoSuspend)
writer.write("#T(payload)", RuntimeTypes.AwsXmlProtocols.parseRestXmlErrorResponse)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ import software.amazon.smithy.codegen.core.Symbol
import software.amazon.smithy.kotlin.codegen.aws.protocols.core.AbstractQueryFormUrlSerializerGenerator
import software.amazon.smithy.kotlin.codegen.aws.protocols.core.QueryHttpBindingProtocolGenerator
import software.amazon.smithy.kotlin.codegen.aws.protocols.formurl.QuerySerdeFormUrlDescriptorGenerator
import software.amazon.smithy.kotlin.codegen.core.*
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
import software.amazon.smithy.kotlin.codegen.core.RenderingContext
import software.amazon.smithy.kotlin.codegen.core.RuntimeTypes
import software.amazon.smithy.kotlin.codegen.core.withBlock
import software.amazon.smithy.kotlin.codegen.model.buildSymbol
import software.amazon.smithy.kotlin.codegen.model.getTrait
import software.amazon.smithy.kotlin.codegen.model.isNullable
Expand Down Expand Up @@ -39,7 +42,7 @@ class Ec2Query : QueryHttpBindingProtocolGenerator() {
writer: KotlinWriter,
) {
writer.write("""checkNotNull(payload){ "unable to parse error from empty response" }""")
writer.write("#T(payload)", RuntimeTypes.AwsXmlProtocols.parseEc2QueryErrorResponseNoSuspend)
writer.write("#T(payload)", RuntimeTypes.AwsXmlProtocols.parseEc2QueryErrorResponse)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ open class RestXml : AwsHttpBindingProtocolGenerator() {
writer: KotlinWriter,
) {
writer.write("""checkNotNull(payload){ "unable to parse error from empty response" }""")
writer.write("#T(payload)", RuntimeTypes.AwsXmlProtocols.parseRestXmlErrorResponseNoSuspend)
writer.write("#T(payload)", RuntimeTypes.AwsXmlProtocols.parseRestXmlErrorResponse)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package software.amazon.smithy.kotlin.codegen.aws.customization

import org.junit.jupiter.api.Test
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
import software.amazon.smithy.kotlin.codegen.model.expectShape
import software.amazon.smithy.kotlin.codegen.rendering.ServiceClientConfigGenerator
import software.amazon.smithy.kotlin.codegen.test.*
import software.amazon.smithy.model.shapes.ServiceShape

class RegionSupportTest {
@Test
fun testRegionSupportProperties() {
val model = """
namespace com.test

use aws.protocols#awsJson1_1
use aws.api#service
use aws.auth#sigv4

@service(sdkId: "service with overrides", endpointPrefix: "service-with-overrides")
@sigv4(name: "example")
@awsJson1_1
service Example {
version: "1.0.0",
operations: [GetFoo]
}

operation GetFoo {}
""".toSmithyModel()

val serviceShape = model.expectShape<ServiceShape>("com.test#Example")

val testCtx = model.newTestContext(serviceName = "Example")
val writer = KotlinWriter("com.test")

val renderingCtx = testCtx.toRenderingContext(writer, serviceShape)
.copy(integrations = listOf(RegionSupport()))

ServiceClientConfigGenerator(serviceShape, detectDefaultProps = false).render(renderingCtx, renderingCtx.writer)
val contents = writer.toString()

val expectedProps = """
public val region: String? = builder.region
public val regionProvider: RegionProvider? = builder.regionProvider
""".formatForTest()
contents.shouldContainOnlyOnceWithDiff(expectedProps)

val expectedImpl = """
/**
* The AWS region to sign with and make requests to. When specified, this static region configuration
* takes precedence over other region resolution methods.
*
* The region resolution order is:
* 1. Static region (if specified)
* 2. Custom region provider (if configured)
* 3. Default region provider chain
*/
public var region: String? = null

/**
* An optional region provider that determines the AWS region for client operations. When specified, this provider
* takes precedence over the default region provider chain, unless a static region is explicitly configured.
*
* The region resolution order is:
* 1. Static region (if specified)
* 2. Custom region provider (if configured)
* 3. Default region provider chain
*/
public var regionProvider: RegionProvider? = null
""".formatForTest(indent = " ")
contents.shouldContainOnlyOnceWithDiff(expectedImpl)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import software.amazon.smithy.build.MockManifest
import software.amazon.smithy.codegen.core.SymbolProvider
import software.amazon.smithy.kotlin.codegen.*
import software.amazon.smithy.kotlin.codegen.core.CodegenContext
import software.amazon.smithy.kotlin.codegen.core.GenerationContext
import software.amazon.smithy.kotlin.codegen.core.KotlinDelegator
import software.amazon.smithy.kotlin.codegen.integration.KotlinIntegration
import software.amazon.smithy.kotlin.codegen.model.OperationNormalizer
Expand Down Expand Up @@ -122,9 +123,11 @@ fun Model.newTestContext(
val manifest = MockManifest()
val provider: SymbolProvider = KotlinCodegenPlugin.createSymbolProvider(model = this, rootNamespace = packageName, serviceName = serviceName, settings = settings)
val service = this.getShape(ShapeId.from("$packageName#$serviceName")).get().asServiceShape().get()
val delegator = KotlinDelegator(settings, this, manifest, provider, integrations)

val ctx = ProtocolGenerator.GenerationContext(
val codegenCtx = GenerationContext(this, provider, settings, generator, integrations)
val delegator = KotlinDelegator(codegenCtx, manifest, integrations)

val generationCtx = ProtocolGenerator.GenerationContext(
settings,
this,
service,
Expand All @@ -133,7 +136,8 @@ fun Model.newTestContext(
generator.protocol,
delegator,
)
return TestContext(ctx, manifest, generator)

return TestContext(generationCtx, manifest, generator)
}

fun TestContext.toCodegenContext() = object : CodegenContext {
Expand Down Expand Up @@ -173,7 +177,7 @@ fun Model.defaultSettings(
sdkId: String = TestModelDefault.SDK_ID,
generateDefaultBuildFiles: Boolean = false,
nullabilityCheckMode: CheckMode = CheckMode.CLIENT_CAREFUL,
defaultValueSerializationMode: DefaultValueSerializationMode = DefaultValueSerializationMode.WHEN_DIFFERENT,
defaultValueSerializationMode: DefaultValueSerializationMode = DefaultValueSerializationMode.DEFAULT,
): KotlinSettings {
val serviceId = if (serviceName == null) {
this.inferService()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,12 @@ class CodegenVisitor(context: PluginContext) : ShapeVisitor.Default<Unit>() {
integration.decorateSymbolProvider(settings, model, provider)
}

writers = KotlinDelegator(settings, model, fileManifest, symbolProvider, integrations)

protocolGenerator = resolveProtocolGenerator(integrations, model, service, settings)
applicationProtocol = protocolGenerator?.applicationProtocol ?: ApplicationProtocol.createDefaultHttpApplicationProtocol()

baseGenerationContext = GenerationContext(model, symbolProvider, settings, protocolGenerator, integrations)

writers = KotlinDelegator(baseGenerationContext, fileManifest, integrations)

applicationProtocol = protocolGenerator?.applicationProtocol ?: ApplicationProtocol.createDefaultHttpApplicationProtocol()
}

private fun resolveProtocolGenerator(
Expand Down
Loading
Loading