/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ package org.opensearch.simpleschema.util import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger import org.opensearch.common.io.stream.StreamInput import org.opensearch.common.xcontent.DeprecationHandler import org.opensearch.common.xcontent.NamedXContentRegistry import org.opensearch.common.xcontent.ToXContent import org.opensearch.common.xcontent.ToXContentObject import org.opensearch.common.xcontent.XContentBuilder import org.opensearch.common.xcontent.XContentParser import org.opensearch.common.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils import org.opensearch.common.xcontent.XContentType import org.opensearch.rest.RestRequest internal fun StreamInput.createJsonParser(): XContentParser { return XContentType.JSON.xContent().createParser(NamedXContentRegistry.EMPTY, DeprecationHandler.IGNORE_DEPRECATIONS, this) } internal fun RestRequest.contentParserNextToken(): XContentParser { val parser = this.contentParser() parser.nextToken() return parser } internal fun XContentParser.stringList(): List { val retList: MutableList = mutableListOf() XContentParserUtils.ensureExpectedToken(Token.START_ARRAY, currentToken(), this) while (nextToken() != Token.END_ARRAY) { retList.add(text()) } return retList } internal fun logger(forClass: Class): Lazy { return lazy { LogManager.getLogger(forClass) } } internal fun XContentBuilder.fieldIfNotNull(name: String, value: Any?): XContentBuilder { if (value != null) { this.field(name, value) } return this } internal fun XContentBuilder.objectIfNotNull(name: String, xContentObject: ToXContentObject?): XContentBuilder { if (xContentObject != null) { this.field(name) xContentObject.toXContent(this, ToXContent.EMPTY_PARAMS) } return this }