in reports-scheduler/src/main/kotlin/org/opensearch/reportsscheduler/model/ReportDefinition.kt [95:129]
fun parse(parser: XContentParser): ReportDefinition {
var name: String? = null
var isEnabled = false
var source: Source? = null
var format: Format? = null
var trigger: Trigger? = null
var delivery: Delivery? = null
XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser)
while (XContentParser.Token.END_OBJECT != parser.nextToken()) {
val fieldName = parser.currentName()
parser.nextToken()
when (fieldName) {
NAME_TAG -> name = parser.text()
IS_ENABLED_TAG -> isEnabled = parser.booleanValue()
SOURCE_TAG -> source = Source.parse(parser)
FORMAT_TAG -> format = Format.parse(parser)
TRIGGER_TAG -> trigger = Trigger.parse(parser)
DELIVERY_TAG -> delivery = Delivery.parse(parser)
else -> {
parser.skipChildren()
log.info("$LOG_PREFIX:ReportDefinition Skipping Unknown field $fieldName")
}
}
}
name ?: throw IllegalArgumentException("$NAME_TAG field absent")
source ?: throw IllegalArgumentException("$SOURCE_TAG field absent")
format ?: throw IllegalArgumentException("$FORMAT_TAG field absent")
trigger ?: throw IllegalArgumentException("$TRIGGER_TAG field absent")
return ReportDefinition(name,
isEnabled,
source,
format,
trigger,
delivery)
}