fun parse()

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