X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=holmes-actions%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fholmes%2Fcommon%2Futils%2Ftransactionid%2FTransactionIdFilter.java;h=7c152407017cdea97cdc9d53767fbd1f0c2e0ff5;hb=288b8bc763d4c4e4bef01b293d3ee09b8f817bba;hp=3b1239949bda437d0b1f3dbf9940370c790f8bd7;hpb=c93746f09c38562d25e51b8274d6385eaaf07a00;p=holmes%2Fcommon.git diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/utils/transactionid/TransactionIdFilter.java b/holmes-actions/src/main/java/org/onap/holmes/common/utils/transactionid/TransactionIdFilter.java index 3b12399..7c15240 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/utils/transactionid/TransactionIdFilter.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/utils/transactionid/TransactionIdFilter.java @@ -1,12 +1,12 @@ /** - * Copyright 2018 ZTE Corporation. - * + * Copyright 2018-2022 ZTE Corporation. + *

* 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 - * + *

+ * 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. @@ -15,30 +15,28 @@ */ package org.onap.holmes.common.utils.transactionid; -import java.io.IOException; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.jvnet.hk2.annotations.Service; import org.slf4j.MDC; import org.slf4j.Marker; import org.slf4j.MarkerFactory; +import org.springframework.stereotype.Component; + +import jakarta.servlet.*; +import jakarta.servlet.annotation.WebFilter; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.UUID; -@Service @Slf4j +@Component +@WebFilter(urlPatterns = {"/*"}) public class TransactionIdFilter implements Filter { public static final Marker INVOKE_SYNCHRONOUS; - public static final Marker ENTRY = MarkerFactory.getMarker("ENTRY"); - public static final Marker EXIT = MarkerFactory.getMarker("EXIT"); + private static final String DEFAULT_REQUEST_ID = UUID.randomUUID().toString(); static { INVOKE_SYNCHRONOUS = MarkerFactory.getMarker("INVOKE"); @@ -46,33 +44,37 @@ public class TransactionIdFilter implements Filter { } @Override - public void init(FilterConfig filterConfig) throws ServletException { + public void init(FilterConfig filterConfig) { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, - FilterChain filterChain) throws IOException, ServletException { + FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; AddHeadersHttpServletRequestWrapper requestWithTransactionId = new AddHeadersHttpServletRequestWrapper( httpServletRequest); - log.warn(ENTRY, "Entering."); String requestID = ensureTransactionIdIsPresent(requestWithTransactionId); HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse; - httpServletResponse.setHeader(TransactionIdUtils.REQUEST_ID_HEADER, requestID); + String validatedRequestID = TransactionIdUtils.validate(requestID); + if (validatedRequestID != null) { + httpServletResponse.setHeader(TransactionIdUtils.REQUEST_ID_HEADER, validatedRequestID); + } else { + log.warn("A mal-formatted request ID has been detected: {}. It will be replaced by the default ID: {}", + requestID, DEFAULT_REQUEST_ID); + requestID = DEFAULT_REQUEST_ID; + } String invocationID = TransactionIdUtils.getUUID(); - httpServletResponse.setHeader(TransactionIdUtils.INVOCATIONIDID_HEADER,invocationID); + httpServletResponse.setHeader(TransactionIdUtils.INVOCATIONIDID_HEADER, invocationID); MDC.put("RequestID", requestID); MDC.put("InvocationID", invocationID); - log.warn(INVOKE_SYNCHRONOUS, "Invoking synchronously ... "); try { filterChain.doFilter(requestWithTransactionId, httpServletResponse); } finally { - log.debug(EXIT, "Exiting."); MDC.remove("RequestID"); MDC.remove("InvocationID"); } @@ -89,7 +91,6 @@ public class TransactionIdFilter implements Filter { if (StringUtils.isBlank(requestId)) { requestId = TransactionIdUtils.getUUID(); - log.info(INVOKE_SYNCHRONOUS, "This warning has a 'MY_MARKER' annotation."); log.info("Request ID ({} header) not exist. It was generated: {}", TransactionIdUtils.REQUEST_ID_HEADER, requestId); request.addHeader(TransactionIdUtils.REQUEST_ID_HEADER, requestId);