diff --git a/sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/HttpResponse.java b/sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/HttpResponse.java index 4d826ec676..bbbd498ab1 100644 --- a/sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/HttpResponse.java +++ b/sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/HttpResponse.java @@ -19,6 +19,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; +import java.io.IOException; + import static java.nio.charset.StandardCharsets.UTF_8; /** @@ -123,4 +125,15 @@ public static HttpResponse ok(byte[] body) { public static HttpResponse of(StatusCode.Success statusCode, String contentType, byte[] body) { return new HttpResponse(statusCode, contentType, body); } + + /** + * Parses an HTTP body to a specified JSON type using Jackson deserializer. + */ + public T bodyAsJson(Class clazz) { + try { + return JsonSupport.parseBytes(body, clazz); + } catch (IOException e) { + throw new RuntimeException(e); + } + } } \ No newline at end of file diff --git a/sdk/java-sdk-spring/src/it/java/com/example/wiring/SpringSdkIntegrationTest.java b/sdk/java-sdk-spring/src/it/java/com/example/wiring/SpringSdkIntegrationTest.java index f1642d0fac..e1c3009b47 100644 --- a/sdk/java-sdk-spring/src/it/java/com/example/wiring/SpringSdkIntegrationTest.java +++ b/sdk/java-sdk-spring/src/it/java/com/example/wiring/SpringSdkIntegrationTest.java @@ -188,6 +188,7 @@ public void shouldReturnJsonStringWithComponentClient() { assertThat(response.getStatusCode()).isEqualTo(OK); assertThat(response.getContentType()).contains("application/json"); assertThat(response.getBody()).contains("{\"text\": \"123\"}".getBytes()); + assertThat(response.bodyAsJson(Message.class)).isEqualTo(new Message("123")); } @Test