Skip to content

Commit 45fc2d0

Browse files
Fix usage of IngressClient in code generated by kotlin gen
1 parent f2bc8ba commit 45fc2d0

File tree

2 files changed

+52
-7
lines changed
  • sdk-api-kotlin-gen/src/main/resources/templates
  • sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin

2 files changed

+52
-7
lines changed

sdk-api-kotlin-gen/src/main/resources/templates/Client.hbs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import dev.restate.sdk.common.StateKey
66
import dev.restate.sdk.common.Serde
77
import dev.restate.sdk.common.Target
88
import kotlin.time.Duration
9-
import kotlinx.coroutines.future.await
9+
import dev.restate.sdk.kotlin.callSuspend
10+
import dev.restate.sdk.kotlin.sendSuspend
1011

1112
object {{generatedClassSimpleName}} {
1213

@@ -59,12 +60,12 @@ object {{generatedClassSimpleName}} {
5960

6061
{{#handlers}}
6162
suspend fun {{name}}({{^inputEmpty}}req: {{{inputFqcn}}}, {{/inputEmpty}}requestOptions: dev.restate.sdk.client.RequestOptions = dev.restate.sdk.client.RequestOptions.DEFAULT): {{{boxedOutputFqcn}}} {
62-
return this.ingressClient.callAsync(
63+
return this.ingressClient.callSuspend(
6364
{{#if isObject}}Target.virtualObject(COMPONENT_NAME, this.key, "{{name}}"){{else}}Target.service(COMPONENT_NAME, "{{name}}"){{/if}},
6465
{{inputSerdeFieldName}},
6566
{{outputSerdeFieldName}},
66-
{{#if inputEmpty}}null{{else}}req{{/if}},
67-
requestOptions).await();
67+
{{#if inputEmpty}}Unit{{else}}req{{/if}},
68+
requestOptions);
6869
}{{/handlers}}
6970

7071
fun send(): Send {
@@ -74,11 +75,11 @@ object {{generatedClassSimpleName}} {
7475
inner class Send {
7576
{{#handlers}}
7677
suspend fun {{name}}({{^inputEmpty}}req: {{{inputFqcn}}}, {{/inputEmpty}}requestOptions: dev.restate.sdk.client.RequestOptions = dev.restate.sdk.client.RequestOptions.DEFAULT): String {
77-
return this@IngressClient.ingressClient.sendAsync(
78+
return this@IngressClient.ingressClient.sendSuspend(
7879
{{#if isObject}}Target.virtualObject(COMPONENT_NAME, this@IngressClient.key, "{{name}}"){{else}}Target.service(COMPONENT_NAME, "{{name}}"){{/if}},
7980
{{inputSerdeFieldName}},
80-
{{#if inputEmpty}}null{{else}}req{{/if}},
81-
requestOptions).await();
81+
{{#if inputEmpty}}Unit{{else}}req{{/if}},
82+
requestOptions);
8283
}{{/handlers}}
8384
}
8485
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Copyright (c) 2023 - Restate Software, Inc., Restate GmbH
2+
//
3+
// This file is part of the Restate Java SDK,
4+
// which is released under the MIT license.
5+
//
6+
// You can find a copy of the license in file LICENSE in the root
7+
// directory of this repository or package, or at
8+
// https://github.com/restatedev/sdk-java/blob/main/LICENSE
9+
package dev.restate.sdk.kotlin
10+
11+
import dev.restate.sdk.client.IngressClient
12+
import dev.restate.sdk.client.RequestOptions
13+
import dev.restate.sdk.common.Serde
14+
import dev.restate.sdk.common.Target
15+
import kotlinx.coroutines.future.await
16+
17+
// Extension methods for the IngressClient
18+
19+
suspend fun <Req, Res> IngressClient.callSuspend(
20+
target: Target,
21+
reqSerde: Serde<Req>,
22+
resSerde: Serde<Res>,
23+
req: Req,
24+
options: RequestOptions = RequestOptions.DEFAULT
25+
): Res {
26+
return this.callAsync(target, reqSerde, resSerde, req, options).await()
27+
}
28+
29+
suspend fun <Req> IngressClient.sendSuspend(
30+
target: Target,
31+
reqSerde: Serde<Req>,
32+
req: Req,
33+
options: RequestOptions = RequestOptions.DEFAULT
34+
): String {
35+
return this.sendAsync(target, reqSerde, req, options).await()
36+
}
37+
38+
suspend fun <T> IngressClient.AwakeableHandle.resolveSuspend(serde: Serde<T>, payload: T) {
39+
this.resolveAsync(serde, payload).await()
40+
}
41+
42+
suspend fun IngressClient.AwakeableHandle.rejectSuspend(reason: String) {
43+
this.rejectAsync(reason).await()
44+
}

0 commit comments

Comments
 (0)