X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=vid-app-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fvid%2Flogging%2FHeaders.kt;h=e9f83ef22eae3a72f57081012a1fe8afcd3e1e77;hb=012975b2349ba5cc7c8434195b59459b8b0a0e89;hp=cc5ebf38cc8c42ca5a7ab37d44e26aa4a396abf6;hpb=94f5a7e46486024a3b59fcbcbbcf09a04a46c930;p=vid.git diff --git a/vid-app-common/src/main/java/org/onap/vid/logging/Headers.kt b/vid-app-common/src/main/java/org/onap/vid/logging/Headers.kt index cc5ebf38c..e9f83ef22 100644 --- a/vid-app-common/src/main/java/org/onap/vid/logging/Headers.kt +++ b/vid-app-common/src/main/java/org/onap/vid/logging/Headers.kt @@ -1,20 +1,51 @@ +@file:JvmName("Headers") + package org.onap.vid.logging -import org.onap.portalsdk.core.util.SystemProperties.ECOMP_REQUEST_ID -import org.springframework.stereotype.Component +import org.onap.portalsdk.core.util.SystemProperties +import org.onap.vid.logging.RequestIdHeader.* +import java.util.* import javax.servlet.http.HttpServletRequest -@Component -class Headers { - fun prioritizedRequestIdHeaders() = listOf( - "X-ONAP-RequestID", - "X-RequestID", - "X-TransactionID", - ECOMP_REQUEST_ID - ) - - fun highestPriorityHeader(httpRequest: HttpServletRequest): String? { - val headers = httpRequest.headerNames.asSequence().toSet().map { it.toUpperCase() } - return prioritizedRequestIdHeaders().firstOrNull { headers.contains(it.toUpperCase()) } +interface Header { + val headerName: String + fun stringEquals(header: String): Boolean = headerName.equals(header, true) +} + +abstract class NamedHeader(override val headerName: String) : Header { + abstract fun getHeaderValue(): String +} + +@JvmField +val PARTNER_NAME = object : NamedHeader("X-ONAP-PartnerName") { + override fun getHeaderValue() = "VID.VID" +} + +@JvmField +val INVOCATION_ID = object : NamedHeader("X-InvocationID") { + override fun getHeaderValue() = UUID.randomUUID().toString() +} + +enum class RequestIdHeader(override val headerName: String) : Header { + ONAP_ID("X-ONAP-RequestID"), + REQUEST_ID("X-RequestID"), + TRANSACTION_ID("X-TransactionID"), + ECOMP_ID(SystemProperties.ECOMP_REQUEST_ID), + ; + + fun getHeaderValue(request: HttpServletRequest): String? = request.getHeader(headerName) +} + +fun prioritizedRequestIdHeaders() = listOf( + ONAP_ID, + REQUEST_ID, + TRANSACTION_ID, + ECOMP_ID +) + +fun highestPriorityHeader(httpRequest: HttpServletRequest): RequestIdHeader? { + val headers = httpRequest.headerNames.asSequence().toSet() + return prioritizedRequestIdHeaders().firstOrNull { + requestIdHeader -> headers.any { requestIdHeader.stringEquals(it) } } }