diff options
Diffstat (limited to 'vid-app-common/src/main')
-rw-r--r-- | vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java | 13 |
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 { |