in src/main/kotlin/org/opensearch/commons/notifications/model/EventSource.kt [75:113]
fun parse(parser: XContentParser): EventSource {
var title: String? = null
var referenceId: String? = null
var feature: String? = null
var severity: SeverityType = SeverityType.INFO
var tags: List<String> = emptyList()
XContentParserUtils.ensureExpectedToken(
XContentParser.Token.START_OBJECT,
parser.currentToken(),
parser
)
while (parser.nextToken() != XContentParser.Token.END_OBJECT) {
val fieldName = parser.currentName()
parser.nextToken()
when (fieldName) {
TITLE_TAG -> title = parser.text()
REFERENCE_ID_TAG -> referenceId = parser.text()
FEATURE_TAG -> feature = parser.text()
SEVERITY_TAG -> severity = SeverityType.fromTagOrDefault(parser.text())
TAGS_TAG -> tags = parser.stringList()
else -> {
parser.skipChildren()
log.info("Unexpected field: $fieldName, while parsing EventSource")
}
}
}
title ?: throw IllegalArgumentException("$TITLE_TAG field absent")
referenceId ?: throw IllegalArgumentException("$REFERENCE_ID_TAG field absent")
feature ?: throw IllegalArgumentException("$FEATURE_TAG field absent")
return EventSource(
title,
referenceId,
feature,
severity,
tags
)
}