Fix NPE under MDCSetup for response code 422 55/121255/7
authorClaudio D. Gasparini <claudio.gasparini@intl.att.com>
Tue, 11 May 2021 12:44:24 +0000 (14:44 +0200)
committerClaudio D. Gasparini <claudio.gasparini@intl.att.com>
Wed, 12 May 2021 07:52:54 +0000 (09:52 +0200)
- Include all WebDAV http codes

Issue-ID: LOG-1241
Signed-off-by: Claudio D. Gasparini <claudio.gasparini@intl.att.com>
Change-Id: I10ece8eadd9172e893809f04c603f7d8621dbf8a

reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/CustomResponseStatus.java [new file with mode: 0644]
reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java

diff --git a/reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/CustomResponseStatus.java b/reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/CustomResponseStatus.java
new file mode 100644 (file)
index 0000000..91626bb
--- /dev/null
@@ -0,0 +1,62 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - Logging
+ * ================================================================================
+ * Copyright (C) 2021 AT&T Intellectual Property. 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.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.logging.filter.base;
+
+public enum CustomResponseStatus {
+    PROCESSING(102, "Processing"),
+    MULTI_STATUS(207, "Multi-Status"),
+    ALREADY_REPORTED(208, "Already Reported"),
+    UNPROCESSABLE_ENTITY(422, "Unprocessable Entity"),
+    LOCKED(423, "Locked"),
+    FAILED_DEPENDENCY(424, "Failed Dependency"),
+    INSUFFICIENT_STORAGE(508, "Insufficient Storage"),
+    LOOP_DETECTED(508, "Loop Detected");
+
+    private final int code;
+    private final String reason;
+
+    CustomResponseStatus(int statusCode, String reasonPhrase) {
+        this.code = statusCode;
+        this.reason = reasonPhrase;
+    }
+
+    public static CustomResponseStatus fromStatusCode(int statusCode) {
+        for (CustomResponseStatus s : values()) {
+            if (s.code == statusCode) {
+                return s;
+            }
+        }
+
+        return null;
+    }
+
+    public int getStatusCode() {
+        return this.code;
+    }
+
+    public String getReasonPhrase() {
+        return this.toString();
+    }
+
+    public String toString() {
+        return this.reason;
+    }
+}
index 1bcc6e3..a90f053 100644 (file)
@@ -211,7 +211,7 @@ public class MDCSetup {
         } else {
             statusCode = ONAPLogConstants.ResponseStatus.ERROR.toString();
             setErrorCode(code);
-            setErrorDesc(code);
+            setErrorDescription(code);
         }
         MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, statusCode);
     }
@@ -233,15 +233,27 @@ public class MDCSetup {
     }
 
     public void setResponseDescription(int statusCode) {
-        MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION, Response.Status.fromStatusCode(statusCode).toString());
+        MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION, extractDescription(statusCode));
+    }
+
+    private String extractDescription(int statusCode) {
+        Response.Status responseStatus = Response.Status.fromStatusCode(statusCode);
+        if (responseStatus != null) {
+            return responseStatus.toString();
+        }
+        CustomResponseStatus customResponseStatus = CustomResponseStatus.fromStatusCode(statusCode);
+        if (customResponseStatus != null) {
+            return customResponseStatus.toString();
+        }
+        return String.format("Unknown description for response code %d.", statusCode);
     }
 
     public void setErrorCode(int statusCode) {
         MDC.put(ONAPLogConstants.MDCs.ERROR_CODE, String.valueOf(statusCode));
     }
 
-    public void setErrorDesc(int statusCode) {
-        MDC.put(ONAPLogConstants.MDCs.ERROR_DESC, Response.Status.fromStatusCode(statusCode).toString());
+    public void setErrorDescription(int statusCode) {
+        MDC.put(ONAPLogConstants.MDCs.ERROR_DESC, extractDescription(statusCode));
     }
 
     public String getProperty(String property) {