diff options
Diffstat (limited to 'core/src/main/java/org/elasticsearch/client/support/AbstractClient.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/client/support/AbstractClient.java | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java b/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java index e5a465442b..5368102530 100644 --- a/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java +++ b/core/src/main/java/org/elasticsearch/client/support/AbstractClient.java @@ -317,12 +317,16 @@ import org.elasticsearch.client.AdminClient; import org.elasticsearch.client.Client; import org.elasticsearch.client.ClusterAdminClient; import org.elasticsearch.client.ElasticsearchClient; +import org.elasticsearch.client.FilterClient; import org.elasticsearch.client.IndicesAdminClient; import org.elasticsearch.common.Nullable; import org.elasticsearch.common.component.AbstractComponent; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.threadpool.ThreadPool; +import java.util.Map; + /** * */ @@ -330,24 +334,16 @@ public abstract class AbstractClient extends AbstractComponent implements Client private final ThreadPool threadPool; private final Admin admin; - - private final Headers headers; private final ThreadedActionListener.Wrapper threadedWrapper; - public AbstractClient(Settings settings, ThreadPool threadPool, Headers headers) { + public AbstractClient(Settings settings, ThreadPool threadPool) { super(settings); this.threadPool = threadPool; - this.headers = headers; this.admin = new Admin(this); this.threadedWrapper = new ThreadedActionListener.Wrapper(logger, settings, threadPool); } @Override - public Headers headers() { - return this.headers; - } - - @Override public final Settings settings() { return this.settings; } @@ -379,7 +375,6 @@ public abstract class AbstractClient extends AbstractComponent implements Client */ @Override public final <Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder>> void execute(Action<Request, Response, RequestBuilder> action, Request request, ActionListener<Response> listener) { - headers.applyTo(request); listener = threadedWrapper.wrap(listener); doExecute(action, request, listener); } @@ -1672,4 +1667,18 @@ public abstract class AbstractClient extends AbstractComponent implements Client execute(GetSettingsAction.INSTANCE, request, listener); } } + + @Override + public Client filterWithHeader(Map<String, String> headers) { + return new FilterClient(this) { + @Override + protected <Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder>> void doExecute(Action<Request, Response, RequestBuilder> action, Request request, ActionListener<Response> listener) { + ThreadContext threadContext = threadPool().getThreadContext(); + try (ThreadContext.StoredContext ctx = threadContext.stashContext()) { + threadContext.putHeader(headers); + super.doExecute(action, request, listener); + } + } + }; + } } |