Implant vid-app-common org.onap.vid.job (main and test)
[vid.git] / vid-app-common / src / main / java / org / onap / vid / mso / MsoUtil.java
index 6a1030c..fcc20fa 100644 (file)
@@ -2,8 +2,8 @@
  * ============LICENSE_START=======================================================
  * VID
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 - 2019 Nokia. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.vid.mso;
 
-import io.joshworks.restclient.http.HttpResponse;
+import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER;
 
-import java.util.Objects;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+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 {
 
+    static final ObjectMapper objectMapper = new ObjectMapper();
+
     private MsoUtil() {
     }
 
@@ -36,12 +45,38 @@ public class MsoUtil {
         return new MsoResponseWrapper(status, response);
     }
 
-    public static <T> MsoResponseWrapper wrapResponse(HttpResponse<T> httpResponse) {
+    public static <T> MsoResponseWrapper wrapResponse(HttpResponse<T> httpResponse)  {
         MsoResponseWrapper msoResponseWrapper = new MsoResponseWrapper();
         msoResponseWrapper.setStatus(httpResponse.getStatus());
         if (httpResponse.getRawBody() != null) {
-            msoResponseWrapper.setEntity(Objects.toString(httpResponse.getBody()));
+            try {
+                T body = httpResponse.getBody();
+                String entityStr = body instanceof String ? (String) body : objectMapper.writeValueAsString(httpResponse.getBody());
+                msoResponseWrapper.setEntity(entityStr);
+            } catch(JsonProcessingException e) {
+                ExceptionUtils.rethrow(e);
+            }
         }
         return msoResponseWrapper;
     }
+
+    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);
+            }
+
+            errorMsg = errorMsg + ", " + filteredJson;
+        }
+        return errorMsg;
+    }
 }