All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.elasticsearch.test.rest.TestResponseParsers Maven / Gradle / Ivy

There is a newer version: 9.0.2
Show newest version
/*
 * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
 * or more contributor license agreements. Licensed under the "Elastic License
 * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
 * Public License v 1"; you may not use this file except in compliance with, at
 * your election, the "Elastic License 2.0", the "GNU Affero General Public
 * License v3.0 only", or the "Server Side Public License, v 1".
 */

package org.elasticsearch.test.rest;

import org.elasticsearch.action.admin.cluster.settings.RestClusterGetSettingsResponse;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.support.master.ShardsAcknowledgedResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.xcontent.ConstructingObjectParser;
import org.elasticsearch.xcontent.ObjectParser;
import org.elasticsearch.xcontent.ParseField;
import org.elasticsearch.xcontent.XContentParser;

import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstructorArg;

public enum TestResponseParsers {
    ;

    private static final ConstructingObjectParser REST_SETTINGS_RESPONSE_PARSER =
        new ConstructingObjectParser<>("cluster_get_settings_response", true, a -> {
            Settings defaultSettings = a[2] == null ? Settings.EMPTY : (Settings) a[2];
            return new RestClusterGetSettingsResponse((Settings) a[0], (Settings) a[1], defaultSettings);
        });
    static {
        REST_SETTINGS_RESPONSE_PARSER.declareObject(
            constructorArg(),
            (p, c) -> Settings.fromXContent(p),
            new ParseField(RestClusterGetSettingsResponse.PERSISTENT_FIELD)
        );
        REST_SETTINGS_RESPONSE_PARSER.declareObject(
            constructorArg(),
            (p, c) -> Settings.fromXContent(p),
            new ParseField(RestClusterGetSettingsResponse.TRANSIENT_FIELD)
        );
        REST_SETTINGS_RESPONSE_PARSER.declareObject(
            optionalConstructorArg(),
            (p, c) -> Settings.fromXContent(p),
            new ParseField(RestClusterGetSettingsResponse.DEFAULTS_FIELD)
        );
    }

    public static RestClusterGetSettingsResponse parseClusterSettingsResponse(XContentParser parser) {
        return REST_SETTINGS_RESPONSE_PARSER.apply(parser, null);
    }

    private static final ParseField ACKNOWLEDGED_FIELD = new ParseField(AcknowledgedResponse.ACKNOWLEDGED_KEY);

    public static  void declareAcknowledgedField(ConstructingObjectParser objectParser) {
        objectParser.declareField(
            constructorArg(),
            (parser, context) -> parser.booleanValue(),
            ACKNOWLEDGED_FIELD,
            ObjectParser.ValueType.BOOLEAN
        );
    }

    public static  void declareAcknowledgedAndShardsAcknowledgedFields(
        ConstructingObjectParser objectParser
    ) {
        declareAcknowledgedField(objectParser);
        objectParser.declareField(
            constructorArg(),
            (parser, context) -> parser.booleanValue(),
            ShardsAcknowledgedResponse.SHARDS_ACKNOWLEDGED,
            ObjectParser.ValueType.BOOLEAN
        );
    }

    private static final ConstructingObjectParser CREATE_INDEX_RESPONSE_PARSER = new ConstructingObjectParser<>(
        "create_index",
        true,
        args -> new CreateIndexResponse((boolean) args[0], (boolean) args[1], (String) args[2])
    );

    static {
        declareAcknowledgedAndShardsAcknowledgedFields(CREATE_INDEX_RESPONSE_PARSER);
        CREATE_INDEX_RESPONSE_PARSER.declareField(
            constructorArg(),
            (parser, context) -> parser.textOrNull(),
            CreateIndexResponse.INDEX,
            ObjectParser.ValueType.STRING
        );
    }

    public static CreateIndexResponse parseCreateIndexResponse(XContentParser parser) {
        return CREATE_INDEX_RESPONSE_PARSER.apply(parser, null);
    }

    /**
     * A generic parser that simply parses the acknowledged flag
     */
    private static final ConstructingObjectParser ACKNOWLEDGED_FLAG_PARSER = new ConstructingObjectParser<>(
        "acknowledged_flag",
        true,
        args -> (Boolean) args[0]
    );

    static {
        ACKNOWLEDGED_FLAG_PARSER.declareField(
            constructorArg(),
            (parser, context) -> parser.booleanValue(),
            ACKNOWLEDGED_FIELD,
            ObjectParser.ValueType.BOOLEAN
        );
    }

    public static AcknowledgedResponse parseAcknowledgedResponse(XContentParser parser) {
        return AcknowledgedResponse.of(ACKNOWLEDGED_FLAG_PARSER.apply(parser, null));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy