blob: b2969feb2a72e669c3dea5859f7207147a8d1fd2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
@file:JvmName("Headers")
package org.onap.vid.logging
import org.onap.portalsdk.core.util.SystemProperties
import org.onap.vid.logging.RequestIdHeader.*
import javax.servlet.http.HttpServletRequest
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"
}
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) }
}
}
|