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

org.elasticsearch.xpack.core.watcher.support.xcontent.WatcherParams Maven / Gradle / Ivy

/*
 * 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; you may not use this file except in compliance with the Elastic License
 * 2.0.
 */
package org.elasticsearch.xpack.core.watcher.support.xcontent;

import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.xpack.core.watcher.watch.Watch;

import java.util.HashMap;
import java.util.Map;

import static java.util.Collections.emptyMap;
import static java.util.Collections.unmodifiableMap;

public class WatcherParams extends ToXContent.DelegatingMapParams {

    public static final WatcherParams HIDE_SECRETS = WatcherParams.builder().hideSecrets(true).build();

    private static final String HIDE_SECRETS_KEY = "hide_secrets";
    private static final String HIDE_HEADERS = "hide_headers";
    private static final String DEBUG_KEY = "debug";

    public static boolean hideSecrets(ToXContent.Params params) {
        return wrap(params).hideSecrets();
    }

    public static boolean debug(ToXContent.Params params) {
        return wrap(params).debug();
    }

    public static boolean hideHeaders(ToXContent.Params params) {
        return wrap(params).hideHeaders();
    }

    private WatcherParams(Map params, ToXContent.Params delegate) {
        super(params, delegate);
    }

    private boolean hideSecrets() {
        return paramAsBoolean(HIDE_SECRETS_KEY, true);
    }

    private boolean debug() {
        return paramAsBoolean(DEBUG_KEY, false);
    }

    private boolean hideHeaders() {
        return paramAsBoolean(HIDE_HEADERS, true);
    }

    public static WatcherParams wrap(ToXContent.Params params) {
        return params instanceof WatcherParams ?
                (WatcherParams) params :
                new WatcherParams(emptyMap(), params);
    }

    public static Builder builder() {
        return builder(ToXContent.EMPTY_PARAMS);
    }

    public static Builder builder(ToXContent.Params delegate) {
        return new Builder(delegate);
    }

    public static class Builder {

        private final ToXContent.Params delegate;
        private final Map params = new HashMap<>();

        private Builder(ToXContent.Params delegate) {
            this.delegate = delegate;
        }

        public Builder hideSecrets(boolean hideSecrets) {
            params.put(HIDE_SECRETS_KEY, String.valueOf(hideSecrets));
            return this;
        }

        public Builder hideHeaders(boolean hideHeaders) {
            params.put(HIDE_HEADERS, String.valueOf(hideHeaders));
            return this;
        }

        public Builder debug(boolean debug) {
            params.put(DEBUG_KEY, String.valueOf(debug));
            return this;
        }

        public Builder includeStatus(boolean includeStatus) {
            params.put(Watch.INCLUDE_STATUS_KEY, String.valueOf(includeStatus));
            return this;
        }

        public Builder put(String key, Object value) {
            params.put(key, String.valueOf(value));
            return this;
        }

        public WatcherParams build() {
            return new WatcherParams(unmodifiableMap(new HashMap<>(params)), delegate);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy