From 9be40f24c251c6939cd2a341481baeb831225039 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Mon, 18 Aug 2025 10:39:35 +0200 Subject: [PATCH] Support Submit with delay in workflow generated clients --- .../src/main/resources/templates/Client.hbs | 28 +++++++++++++++++++ .../src/main/resources/templates/Client.hbs | 4 +-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/sdk-api-gen/src/main/resources/templates/Client.hbs b/sdk-api-gen/src/main/resources/templates/Client.hbs index b71f0f9a..062f61bc 100644 --- a/sdk-api-gen/src/main/resources/templates/Client.hbs +++ b/sdk-api-gen/src/main/resources/templates/Client.hbs @@ -112,6 +112,12 @@ public class {{generatedClassSimpleName}} { ); } + public dev.restate.client.SendResponse<{{{boxedOutputFqcn}}}> submit({{^inputEmpty}}{{{inputFqcn}}} req, {{/inputEmpty}}Duration delay) { + return IngressClient.this.client.send( + {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key{{^inputEmpty}}, {{/inputEmpty}}{{/if}}{{^inputEmpty}}req{{/inputEmpty}}), delay + ); + } + public dev.restate.client.SendResponse<{{{boxedOutputFqcn}}}> submit({{^inputEmpty}}{{{inputFqcn}}} req, {{/inputEmpty}}Consumer> requestBuilderApplier) { var reqBuilder = {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key{{^inputEmpty}}, {{/inputEmpty}}{{/if}}{{^inputEmpty}}req{{/inputEmpty}}); if (requestBuilderApplier != null) { @@ -120,12 +126,26 @@ public class {{generatedClassSimpleName}} { return IngressClient.this.client.send(reqBuilder); } + public dev.restate.client.SendResponse<{{{boxedOutputFqcn}}}> submit({{^inputEmpty}}{{{inputFqcn}}} req, {{/inputEmpty}}Duration delay, Consumer> requestBuilderApplier) { + var reqBuilder = {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key{{^inputEmpty}}, {{/inputEmpty}}{{/if}}{{^inputEmpty}}req{{/inputEmpty}}); + if (requestBuilderApplier != null) { + requestBuilderApplier.accept(reqBuilder); + } + return IngressClient.this.client.send(reqBuilder, delay); + } + public java.util.concurrent.CompletableFuture> submitAsync({{^inputEmpty}}{{{inputFqcn}}} req{{/inputEmpty}}) { return IngressClient.this.client.sendAsync( {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key{{^inputEmpty}}, {{/inputEmpty}}{{/if}}{{^inputEmpty}}req{{/inputEmpty}}) ); } + public java.util.concurrent.CompletableFuture> submitAsync({{^inputEmpty}}{{{inputFqcn}}} req, {{/inputEmpty}} Duration delay) { + return IngressClient.this.client.sendAsync( + {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key{{^inputEmpty}}, {{/inputEmpty}}{{/if}}{{^inputEmpty}}req{{/inputEmpty}}), delay + ); + } + public java.util.concurrent.CompletableFuture> submitAsync({{^inputEmpty}}{{{inputFqcn}}} req, {{/inputEmpty}}Consumer> requestBuilderApplier) { var reqBuilder = {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key{{^inputEmpty}}, {{/inputEmpty}}{{/if}}{{^inputEmpty}}req{{/inputEmpty}}); if (requestBuilderApplier != null) { @@ -133,6 +153,14 @@ public class {{generatedClassSimpleName}} { } return IngressClient.this.client.sendAsync(reqBuilder); } + + public java.util.concurrent.CompletableFuture> submitAsync({{^inputEmpty}}{{{inputFqcn}}} req, {{/inputEmpty}}Duration delay, Consumer> requestBuilderApplier) { + var reqBuilder = {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key{{^inputEmpty}}, {{/inputEmpty}}{{/if}}{{^inputEmpty}}req{{/inputEmpty}}); + if (requestBuilderApplier != null) { + requestBuilderApplier.accept(reqBuilder); + } + return IngressClient.this.client.sendAsync(reqBuilder, delay); + } {{else}} public {{#if outputEmpty}}void{{else}}{{{outputFqcn}}}{{/if}} {{handlersClassMethodName}}({{^inputEmpty}}{{{inputFqcn}}} req{{/inputEmpty}}) { {{^outputEmpty}}return {{/outputEmpty}}this.client.call( diff --git a/sdk-api-kotlin-gen/src/main/resources/templates/Client.hbs b/sdk-api-kotlin-gen/src/main/resources/templates/Client.hbs index b2b145e8..d5597f1c 100644 --- a/sdk-api-kotlin-gen/src/main/resources/templates/Client.hbs +++ b/sdk-api-kotlin-gen/src/main/resources/templates/Client.hbs @@ -54,9 +54,9 @@ object {{generatedClassSimpleName}} { {{outputSerdeRef}}); } - suspend fun submit({{^inputEmpty}}req: {{{inputFqcn}}}, {{/inputEmpty}}init: dev.restate.common.RequestBuilder<{{{boxedInputFqcn}}}, {{{boxedOutputFqcn}}}>.() -> Unit = {}): dev.restate.client.SendResponse<{{{boxedOutputFqcn}}}> { + suspend fun submit({{^inputEmpty}}req: {{{inputFqcn}}}, {{/inputEmpty}}delay: Duration? = null, init: dev.restate.common.RequestBuilder<{{{boxedInputFqcn}}}, {{{boxedOutputFqcn}}}>.() -> Unit = {}): dev.restate.client.SendResponse<{{{boxedOutputFqcn}}}> { return this@IngressClient.client.sendSuspend( - {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key, {{/if}}{{^inputEmpty}}req, {{/inputEmpty}}init) + {{../handlersClass}}.{{handlersClassMethodName}}({{#if ../isKeyed}}this.key, {{/if}}{{^inputEmpty}}req, {{/inputEmpty}}init), delay ) } {{else}}