/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ package org.opensearch.commons.utils import org.opensearch.core.common.io.stream.StreamOutput import org.opensearch.core.common.io.stream.Writeable import org.opensearch.core.xcontent.XContentParser import org.opensearch.core.xcontent.XContentParserUtils import java.util.EnumSet inline fun > XContentParser.enumSet(enumParser: EnumParser): EnumSet { val retSet: EnumSet = EnumSet.noneOf(E::class.java) XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_ARRAY, currentToken(), this) while (nextToken() != XContentParser.Token.END_ARRAY) { retSet.add(enumParser.fromTagOrDefault(text())) } return retSet } inline fun > enumReader(enumClass: Class): Writeable.Reader { return Writeable.Reader { it.readEnum(enumClass) } } @Suppress("UnusedPrivateMember") inline fun > enumWriter(ignore: Class): Writeable.Writer { return Writeable.Writer { streamOutput: StreamOutput, value: E -> streamOutput.writeEnum(value) } }