Skip to content

Commit 3b14a0b

Browse files
chore: defer creation of CRT engine
1 parent 05f34c2 commit 3b14a0b

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description=CodeArtifact settings plugin for Gradle
33
kotlin.code.style=official
44

55
group=io.cloudshiftdev.codeartifact
6-
version=2.1.1
6+
version=2.1.2
77

88
org.gradle.jvmargs=-Dfile.encoding\=UTF-8
99
org.gradle.vfs.watch=true

src/main/kotlin/io/cloudshiftdev/gradle/codeartifact/service/CodeArtifactService.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProvider
1515
import aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProviderChain
1616
import aws.smithy.kotlin.runtime.collections.Attributes
1717
import aws.smithy.kotlin.runtime.content.asByteStream
18-
import aws.smithy.kotlin.runtime.http.engine.HttpClientEngine
1918
import aws.smithy.kotlin.runtime.http.engine.crt.CrtHttpEngine
2019
import aws.smithy.kotlin.runtime.time.toJvmInstant
2120
import io.cloudshiftdev.gradle.codeartifact.CodeArtifactEndpoint
@@ -40,8 +39,7 @@ internal interface CodeArtifactService {
4039

4140
internal class DefaultCodeArtifactService : CodeArtifactService {
4241
private val logger = Logging.getLogger(DefaultCodeArtifactService::class.java)
43-
private val httpClient by lazy { CrtHttpEngine() }
44-
private val clientFactory = CodeArtifactClientFactory({ httpClient })
42+
private val clientFactory = CodeArtifactClientFactory()
4543

4644
override fun getAuthorizationToken(endpoint: CodeArtifactEndpoint): CodeArtifactToken {
4745
val codeArtifact = clientFactory.create(endpoint)
@@ -113,24 +111,27 @@ internal class DefaultCodeArtifactService : CodeArtifactService {
113111
}
114112
}
115113

116-
private class CodeArtifactClientFactory(private val httpClientFactory: () -> HttpClientEngine) {
114+
private class CodeArtifactClientFactory() {
117115
private val logger = Logging.getLogger(CodeArtifactClientFactory::class.java)
118116
private val systemVarResolver = DefaultSystemVarResolver()
119117

120118
private val clientCache = ConcurrentHashMap<String, CodeartifactClient>()
121119

122120
fun create(endpoint: CodeArtifactEndpoint): CodeartifactClient {
123121
return clientCache.computeIfAbsent(endpoint.cacheKey) {
122+
val httpEnginex = CrtHttpEngine()
124123
CodeartifactClient {
125124
region = endpoint.region
126-
credentialsProvider = buildCredentialsProvider(endpoint.url.queryParameters())
127-
this.httpClient = this@CodeArtifactClientFactory.httpClientFactory()
125+
credentialsProvider =
126+
buildCredentialsProvider(endpoint.url.queryParameters(), httpEnginex)
127+
this.httpClient = httpEnginex
128128
}
129129
}
130130
}
131131

132132
private fun buildCredentialsProvider(
133-
queryParameters: Map<String, String>
133+
queryParameters: Map<String, String>,
134+
httpEnginex: CrtHttpEngine,
134135
): CredentialsProvider {
135136
fun mask(value: String?): String? =
136137
when {
@@ -181,7 +182,7 @@ private class CodeArtifactClientFactory(private val httpClientFactory: () -> Htt
181182
assumeRoleArn?.let { roleArn ->
182183
StsAssumeRoleCredentialsProvider(
183184
bootstrapCredentialsProvider = bootstrapProviders,
184-
httpClient = this@CodeArtifactClientFactory.httpClientFactory(),
185+
httpClient = httpEnginex,
185186
assumeRoleParameters =
186187
AssumeRoleParameters(
187188
roleArn = roleArn,

0 commit comments

Comments
 (0)