From 25dee9268ce16c8ef8909aefcdbf90a3f11d7ea2 Mon Sep 17 00:00:00 2001 From: box-sdk-build <94016436+box-sdk-build@users.noreply.github.com> Date: Thu, 16 Jan 2025 20:52:47 +0100 Subject: [PATCH] fix: Fix Java `NPE` in case of null body (box/box-codegen#645) (#149) --- .codegen.json | 2 +- .../com/box/sdkgen/box/errors/BoxAPIError.java | 15 +++++++++------ .../com/box/sdkgen/box/errors/ResponseInfo.java | 3 +++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.codegen.json b/.codegen.json index 35bd627a..42187d9d 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "b2c3124", "specHash": "0a89b2b", "version": "0.3.0" } +{ "engineHash": "458e7a8", "specHash": "0a89b2b", "version": "0.3.0" } diff --git a/src/main/java/com/box/sdkgen/box/errors/BoxAPIError.java b/src/main/java/com/box/sdkgen/box/errors/BoxAPIError.java index a987523b..2eeffb30 100644 --- a/src/main/java/com/box/sdkgen/box/errors/BoxAPIError.java +++ b/src/main/java/com/box/sdkgen/box/errors/BoxAPIError.java @@ -1,9 +1,9 @@ package com.box.sdkgen.box.errors; -import static java.lang.String.format; - import com.box.sdkgen.networking.fetchresponse.FetchResponse; +import com.fasterxml.jackson.databind.JsonNode; import java.time.LocalDateTime; +import java.util.Optional; import okhttp3.Request; public class BoxAPIError extends BoxSDKError { @@ -21,12 +21,15 @@ public BoxAPIError(String message, RequestInfo requestInfo, ResponseInfo respons public static BoxAPIError fromAPICall(Request request, FetchResponse fetchResponse) { RequestInfo requestInfo = RequestInfo.fromRequest(request); ResponseInfo responseInfo = ResponseInfo.fromResponse(fetchResponse); + String requestId = - responseInfo.getBody().get("request_id") != null - ? responseInfo.getBody().get("request_id").asText() - : ""; + Optional.ofNullable(responseInfo.getBody()) + .map(body -> body.get("request_id")) + .map(JsonNode::asText) + .orElse(""); + return new BoxAPIError.BoxAPIErrorBuilder( - format("Status %d; Request ID: %s", responseInfo.getStatusCode(), requestId), + String.format("Status %d; Request ID: %s", responseInfo.getStatusCode(), requestId), requestInfo, responseInfo) .timestamp(LocalDateTime.now().toString()) diff --git a/src/main/java/com/box/sdkgen/box/errors/ResponseInfo.java b/src/main/java/com/box/sdkgen/box/errors/ResponseInfo.java index cc4b0940..6f33b089 100644 --- a/src/main/java/com/box/sdkgen/box/errors/ResponseInfo.java +++ b/src/main/java/com/box/sdkgen/box/errors/ResponseInfo.java @@ -130,6 +130,9 @@ public ResponseInfo build() { public static ResponseInfo fromResponse(FetchResponse fetchResponse) { JsonNode body = fetchResponse.getData(); + if (body == null) { + return new ResponseInfo(fetchResponse.getStatus(), fetchResponse.getHeaders()); + } String rawBody = body.asText(); return new ResponseInfo.ResponseInfoBuilder(