Skip to content

Commit 6f573b9

Browse files
Fix bad request (#256)
1 parent 4805f8c commit 6f573b9

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

sdk-common/src/main/java/dev/restate/sdk/client/DefaultIngressClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ public <Req> CompletableFuture<String> sendAsync(
9797
public AwakeableHandle awakeableHandle(String id) {
9898
return new AwakeableHandle() {
9999
@Override
100-
public <T> CompletableFuture<Void> resolve(Serde<T> serde, @NonNull T payload) {
100+
public <T> CompletableFuture<Void> resolveAsync(Serde<T> serde, @NonNull T payload) {
101101
// Prepare request
102102
var reqBuilder =
103-
HttpRequest.newBuilder().uri(URI.create("/restate/awakeables/" + id + "/resolve"));
103+
HttpRequest.newBuilder().uri(baseUri.resolve("/restate/awakeables/" + id + "/resolve"));
104104

105105
// Add content-type
106106
if (serde.contentType() != null) {
@@ -132,11 +132,11 @@ public <T> CompletableFuture<Void> resolve(Serde<T> serde, @NonNull T payload) {
132132
}
133133

134134
@Override
135-
public CompletableFuture<Void> reject(String reason) {
135+
public CompletableFuture<Void> rejectAsync(String reason) {
136136
// Prepare request
137137
var reqBuilder =
138138
HttpRequest.newBuilder()
139-
.uri(URI.create("/restate/awakeables/" + id + "/reject"))
139+
.uri(baseUri.resolve("/restate/awakeables/" + id + "/reject"))
140140
.header("content-type", "text-plain");
141141

142142
// Add headers

sdk-common/src/main/java/dev/restate/sdk/client/IngressClient.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,44 @@ default <Req> String send(Target target, Serde<Req> reqSerde, Req req) throws In
8080
* ingress
8181
*/
8282
interface AwakeableHandle {
83+
/** Same as {@link #resolve(Serde, Object)} but async. */
84+
<T> CompletableFuture<Void> resolveAsync(Serde<T> serde, @NonNull T payload);
85+
8386
/**
8487
* Complete with success the Awakeable.
8588
*
8689
* @param serde used to serialize the Awakeable result payload.
8790
* @param payload the result payload. MUST NOT be null.
8891
*/
89-
<T> CompletableFuture<Void> resolve(Serde<T> serde, @NonNull T payload);
92+
default <T> void resolve(Serde<T> serde, @NonNull T payload) {
93+
try {
94+
resolveAsync(serde, payload).join();
95+
} catch (CompletionException e) {
96+
if (e.getCause() instanceof RuntimeException) {
97+
throw (RuntimeException) e.getCause();
98+
}
99+
throw new RuntimeException(e.getCause());
100+
}
101+
}
102+
103+
/** Same as {@link #reject(String)} but async. */
104+
CompletableFuture<Void> rejectAsync(String reason);
90105

91106
/**
92107
* Complete with failure the Awakeable.
93108
*
94109
* @param reason the rejection reason. MUST NOT be null.
95110
*/
96-
CompletableFuture<Void> reject(String reason);
111+
default void reject(String reason) {
112+
try {
113+
rejectAsync(reason).join();
114+
} catch (CompletionException e) {
115+
if (e.getCause() instanceof RuntimeException) {
116+
throw (RuntimeException) e.getCause();
117+
}
118+
throw new RuntimeException(e.getCause());
119+
}
120+
}
97121
}
98122

99123
static IngressClient defaultClient(String baseUri) {

0 commit comments

Comments
 (0)