1 @file:JvmName("Headers")
3 package org.onap.vid.logging
5 import org.onap.portalsdk.core.util.SystemProperties
6 import org.onap.vid.logging.RequestIdHeader.*
8 import javax.servlet.http.HttpServletRequest
11 val headerName: String
12 fun stringEquals(header: String): Boolean = headerName.equals(header, true)
15 abstract class NamedHeader(override val headerName: String) : Header {
16 abstract fun getHeaderValue(): String
20 val PARTNER_NAME = object : NamedHeader("X-ONAP-PartnerName") {
21 override fun getHeaderValue() = "VID.VID"
25 val INVOCATION_ID = object : NamedHeader("X-InvocationID") {
26 override fun getHeaderValue() = UUID.randomUUID().toString()
29 enum class RequestIdHeader(override val headerName: String) : Header {
30 ONAP_ID("X-ONAP-RequestID"),
31 REQUEST_ID("X-RequestID"),
32 TRANSACTION_ID("X-TransactionID"),
33 ECOMP_ID(SystemProperties.ECOMP_REQUEST_ID),
36 fun getHeaderValue(request: HttpServletRequest): String? = request.getHeader(headerName)
39 fun prioritizedRequestIdHeaders() = listOf(
46 fun highestPriorityHeader(httpRequest: HttpServletRequest): RequestIdHeader? {
47 val headers = httpRequest.headerNames.asSequence().toSet()
48 return prioritizedRequestIdHeaders().firstOrNull {
49 requestIdHeader -> headers.any { requestIdHeader.stringEquals(it) }