in src/main/kotlin/org/opensearch/commons/notifications/model/EventStatus.kt [89:127]
fun parse(parser: XContentParser): EventStatus {
var configName: String? = null
var configId: String? = null
var configType: ConfigType? = null
var emailRecipientStatus: List<EmailRecipientStatus> = listOf()
var deliveryStatus: DeliveryStatus? = null
XContentParserUtils.ensureExpectedToken(
XContentParser.Token.START_OBJECT,
parser.currentToken(),
parser
)
while (parser.nextToken() != XContentParser.Token.END_OBJECT) {
val fieldName = parser.currentName()
parser.nextToken()
when (fieldName) {
CONFIG_NAME_TAG -> configName = parser.text()
CONFIG_ID_TAG -> configId = parser.text()
CONFIG_TYPE_TAG -> configType = ConfigType.fromTagOrDefault(parser.text())
EMAIL_RECIPIENT_STATUS_TAG -> emailRecipientStatus = parser.objectList { EmailRecipientStatus.parse(it) }
DELIVERY_STATUS_TAG -> deliveryStatus = DeliveryStatus.parse(parser)
else -> {
parser.skipChildren()
log.info("Unexpected field: $fieldName, while parsing EventStatus")
}
}
}
configName ?: throw IllegalArgumentException("$CONFIG_NAME_TAG field absent")
configId ?: throw IllegalArgumentException("$CONFIG_ID_TAG field absent")
configType ?: throw IllegalArgumentException("$CONFIG_TYPE_TAG field absent")
return EventStatus(
configId,
configName,
configType,
emailRecipientStatus,
deliveryStatus
)
}