From a46f5b6345622acd863ea41b61b607b847732151 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Wed, 15 Jan 2020 19:52:33 +0200 Subject: Async MSO error format: handle more cases Try better not to fallback to "Http Code:400, null" Notably, handle the case where "serviceException" is inside a "requestError" container. Issue-ID: VID-749 Change-Id: I3c7d609aed893bbbeb71ebe4b465289c71e5c32b Signed-off-by: Ittay Stern --- .../src/main/java/org/onap/vid/mso/MsoUtil.java | 45 +++++++++++++--------- 1 file changed, 27 insertions(+), 18 deletions(-) (limited to 'vid-app-common/src/main/java/org/onap/vid/mso') diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java index 626816f7f..8de534a8e 100644 --- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java +++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java @@ -21,15 +21,15 @@ package org.onap.vid.mso; +import static org.apache.commons.lang3.StringUtils.firstNonBlank; +import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER; -import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; import io.joshworks.restclient.http.HttpResponse; import java.io.IOException; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.onap.vid.exceptions.GenericUncheckedException; public class MsoUtil { @@ -76,22 +76,31 @@ public class MsoUtil { } public static String formatExceptionAdditionalInfo(int statusCode, String msoResponse) { - String errorMsg = "Http Code:" + statusCode; - if (!StringUtils.isEmpty(msoResponse)) { - String filteredJson; - try { - filteredJson = StringUtils.defaultIfEmpty( - JACKSON_OBJECT_MAPPER.readTree(msoResponse).path("serviceException").toString().replaceAll("[\\{\\}]","") , - msoResponse - ); - } catch (JsonParseException e) { - filteredJson = msoResponse; - } catch (IOException e) { - throw new GenericUncheckedException(e); - } + final String errorMsg = "Http Code:" + statusCode; + + if (isEmpty(msoResponse)) { + return errorMsg; + } + + try { + JsonNode jsonNode = JACKSON_OBJECT_MAPPER.readTree(msoResponse); - errorMsg = errorMsg + ", " + filteredJson; + return errorMsg + ", " + firstNonBlank( + removeBraces(jsonNode.get("serviceException")), + removeBraces(jsonNode.path("requestError").get("serviceException")), + msoResponse + ); + + } catch (Exception e) { + return errorMsg + ", " + msoResponse; } - return errorMsg; + } + + private static String removeBraces(JsonNode jsonNode) { + if (jsonNode == null || jsonNode.isMissingNode()) { + return null; + } + + return jsonNode.toString().replaceAll("[\\{\\}]", ""); } } -- cgit 1.2.3-korg