summaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/main')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java b/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java
index faaf55ae7..1c96819c8 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java
@@ -41,8 +41,10 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
+import org.onap.logging.ref.slf4j.ONAPLogConstants.MDCs;
import org.onap.vid.logging.Headers;
import org.onap.vid.logging.RequestIdHeader;
+import org.slf4j.MDC;
import org.springframework.web.filter.GenericFilterBean;
@WebFilter(urlPatterns = "/*")
@@ -82,12 +84,17 @@ public class PromiseRequestIdFilter extends GenericFilterBean {
if (isWrapNeeded(highestPriorityHeader, originalRequestId)) {
// Copy originalRequestId to the promised header value
- request = new PromiseRequestIdRequestWrapper(httpRequest, toUuidOrElse(originalRequestId, UUID::randomUUID));
+ request = new PromiseRequestIdRequestWrapper(httpRequest,
+ firstValidUuidOrElse(originalRequestId, requestIdFromMDC(), UUID::randomUUID));
}
return request;
}
+ private String requestIdFromMDC() {
+ return MDC.get(MDCs.REQUEST_ID);
+ }
+
private boolean verifyAndValidateUuid(String value) {
return isNotEmpty(value) && uuidRegex.matcher(value).matches();
}
@@ -99,6 +106,10 @@ public class PromiseRequestIdFilter extends GenericFilterBean {
return !headerExistsAndValid;
}
+ UUID firstValidUuidOrElse(String uuid1, String uuid2, Supplier<UUID> uuidSupplier) {
+ return toUuidOrElse(uuid1, () -> toUuidOrElse(uuid2, uuidSupplier));
+ }
+
UUID toUuidOrElse(String uuid, Supplier<UUID> uuidSupplier) {
if (verifyAndValidateUuid(uuid)) {
try {