fun parse()

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
            )
        }