Skip to content

Commit 4a280ad

Browse files
committed
Add high-level client methods that accept RequestOptions (#31069)
With #30490 we have introduced a new way to provide request options whenever sending a request using the high-level REST client. Before you could provide headers as the last argument varargs of each API method, now you can provide `RequestOptions` that in the future will allow to provide more options which can be specified per request. This commit deprecates all of the client methods that accept a `Header` varargs argument in favour of new methods that accept `RequestOptions` instead. For some API we don't even go through deprecation given that they were not released since they were added, hence in that case we can just move them to the new method.
1 parent 67c2868 commit 4a280ad

27 files changed

+1677
-582
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/ClusterClient.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,23 +41,55 @@ public final class ClusterClient {
4141
}
4242

4343
/**
44-
* Updates cluster wide specific settings using the Cluster Update Settings API
44+
* Updates cluster wide specific settings using the Cluster Update Settings API.
45+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html"> Cluster Update Settings
46+
* API on elastic.co</a>
47+
* @param clusterUpdateSettingsRequest the request
48+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
49+
* @return the response
50+
* @throws IOException in case there is a problem sending the request or parsing back the response
51+
*/
52+
public ClusterUpdateSettingsResponse putSettings(ClusterUpdateSettingsRequest clusterUpdateSettingsRequest, RequestOptions options)
53+
throws IOException {
54+
return restHighLevelClient.performRequestAndParseEntity(clusterUpdateSettingsRequest, RequestConverters::clusterPutSettings,
55+
options, ClusterUpdateSettingsResponse::fromXContent, emptySet());
56+
}
57+
58+
/**
59+
* Updates cluster wide specific settings using the Cluster Update Settings API.
4560
* <p>
4661
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html"> Cluster Update Settings
4762
* API on elastic.co</a>
63+
* @deprecated Prefer {@link #putSettings(ClusterUpdateSettingsRequest, RequestOptions)}
4864
*/
65+
@Deprecated
4966
public ClusterUpdateSettingsResponse putSettings(ClusterUpdateSettingsRequest clusterUpdateSettingsRequest, Header... headers)
5067
throws IOException {
5168
return restHighLevelClient.performRequestAndParseEntity(clusterUpdateSettingsRequest, RequestConverters::clusterPutSettings,
5269
ClusterUpdateSettingsResponse::fromXContent, emptySet(), headers);
5370
}
5471

5572
/**
56-
* Asynchronously updates cluster wide specific settings using the Cluster Update Settings API
73+
* Asynchronously updates cluster wide specific settings using the Cluster Update Settings API.
74+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html"> Cluster Update Settings
75+
* API on elastic.co</a>
76+
* @param clusterUpdateSettingsRequest the request
77+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
78+
* @param listener the listener to be notified upon request completion
79+
*/
80+
public void putSettingsAsync(ClusterUpdateSettingsRequest clusterUpdateSettingsRequest, RequestOptions options,
81+
ActionListener<ClusterUpdateSettingsResponse> listener) {
82+
restHighLevelClient.performRequestAsyncAndParseEntity(clusterUpdateSettingsRequest, RequestConverters::clusterPutSettings,
83+
options, ClusterUpdateSettingsResponse::fromXContent, listener, emptySet());
84+
}
85+
/**
86+
* Asynchronously updates cluster wide specific settings using the Cluster Update Settings API.
5787
* <p>
5888
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html"> Cluster Update Settings
5989
* API on elastic.co</a>
90+
* @deprecated Prefer {@link #putSettingsAsync(ClusterUpdateSettingsRequest, RequestOptions, ActionListener)}
6091
*/
92+
@Deprecated
6193
public void putSettingsAsync(ClusterUpdateSettingsRequest clusterUpdateSettingsRequest,
6294
ActionListener<ClusterUpdateSettingsResponse> listener, Header... headers) {
6395
restHighLevelClient.performRequestAsyncAndParseEntity(clusterUpdateSettingsRequest, RequestConverters::clusterPutSettings,

client/rest-high-level/src/main/java/org/elasticsearch/client/IndicesClient.java

Lines changed: 614 additions & 84 deletions
Large diffs are not rendered by default.

client/rest-high-level/src/main/java/org/elasticsearch/client/IngestClient.java

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
package org.elasticsearch.client;
2121

22-
import org.apache.http.Header;
2322
import org.elasticsearch.action.ActionListener;
2423
import org.elasticsearch.action.ingest.DeletePipelineRequest;
2524
import org.elasticsearch.action.ingest.GetPipelineRequest;
@@ -45,70 +44,85 @@ public final class IngestClient {
4544
}
4645

4746
/**
48-
* Add a pipeline or update an existing pipeline
49-
* <p>
47+
* Add a pipeline or update an existing pipeline.
5048
* See
5149
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/put-pipeline-api.html"> Put Pipeline API on elastic.co</a>
50+
* @param request the request
51+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
52+
* @return the response
53+
* @throws IOException in case there is a problem sending the request or parsing back the response
5254
*/
53-
public WritePipelineResponse putPipeline(PutPipelineRequest request, Header... headers) throws IOException {
54-
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::putPipeline,
55-
WritePipelineResponse::fromXContent, emptySet(), headers);
55+
public WritePipelineResponse putPipeline(PutPipelineRequest request, RequestOptions options) throws IOException {
56+
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::putPipeline, options,
57+
WritePipelineResponse::fromXContent, emptySet());
5658
}
5759

5860
/**
59-
* Asynchronously add a pipeline or update an existing pipeline
60-
* <p>
61+
* Asynchronously add a pipeline or update an existing pipeline.
6162
* See
6263
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/put-pipeline-api.html"> Put Pipeline API on elastic.co</a>
64+
* @param request the request
65+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
66+
* @param listener the listener to be notified upon request completion
6367
*/
64-
public void putPipelineAsync(PutPipelineRequest request, ActionListener<WritePipelineResponse> listener, Header... headers) {
65-
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::putPipeline,
66-
WritePipelineResponse::fromXContent, listener, emptySet(), headers);
68+
public void putPipelineAsync(PutPipelineRequest request, RequestOptions options, ActionListener<WritePipelineResponse> listener) {
69+
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::putPipeline, options,
70+
WritePipelineResponse::fromXContent, listener, emptySet());
6771
}
6872

6973
/**
70-
* Get an existing pipeline
71-
* <p>
74+
* Get an existing pipeline.
7275
* See
7376
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-pipeline-api.html"> Get Pipeline API on elastic.co</a>
77+
* @param request the request
78+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
79+
* @return the response
80+
* @throws IOException in case there is a problem sending the request or parsing back the response
7481
*/
75-
public GetPipelineResponse getPipeline(GetPipelineRequest request, Header... headers) throws IOException {
76-
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::getPipeline,
77-
GetPipelineResponse::fromXContent, emptySet(), headers);
82+
public GetPipelineResponse getPipeline(GetPipelineRequest request, RequestOptions options) throws IOException {
83+
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::getPipeline, options,
84+
GetPipelineResponse::fromXContent, emptySet());
7885
}
7986

8087
/**
81-
* Asynchronously get an existing pipeline
82-
* <p>
88+
* Asynchronously get an existing pipeline.
8389
* See
8490
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html"> Get Pipeline API on elastic.co</a>
91+
* @param request the request
92+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
93+
* @param listener the listener to be notified upon request completion
8594
*/
86-
public void getPipelineAsync(GetPipelineRequest request, ActionListener<GetPipelineResponse> listener, Header... headers) {
87-
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::getPipeline,
88-
GetPipelineResponse::fromXContent, listener, emptySet(), headers);
95+
public void getPipelineAsync(GetPipelineRequest request, RequestOptions options, ActionListener<GetPipelineResponse> listener) {
96+
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::getPipeline, options,
97+
GetPipelineResponse::fromXContent, listener, emptySet());
8998
}
9099

91100
/**
92-
* Delete an existing pipeline
93-
* <p>
101+
* Delete an existing pipeline.
94102
* See
95103
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-pipeline-api.html">
96104
* Delete Pipeline API on elastic.co</a>
105+
* @param request the request
106+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
107+
* @return the response
108+
* @throws IOException in case there is a problem sending the request or parsing back the response
97109
*/
98-
public WritePipelineResponse deletePipeline(DeletePipelineRequest request, Header... headers) throws IOException {
99-
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::deletePipeline,
100-
WritePipelineResponse::fromXContent, emptySet(), headers);
110+
public WritePipelineResponse deletePipeline(DeletePipelineRequest request, RequestOptions options) throws IOException {
111+
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::deletePipeline, options,
112+
WritePipelineResponse::fromXContent, emptySet());
101113
}
102114

103115
/**
104-
* Asynchronously delete an existing pipeline
105-
* <p>
116+
* Asynchronously delete an existing pipeline.
106117
* See
107118
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-pipeline-api.html">
108119
* Delete Pipeline API on elastic.co</a>
120+
* @param request the request
121+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
122+
* @param listener the listener to be notified upon request completion
109123
*/
110-
public void deletePipelineAsync(DeletePipelineRequest request, ActionListener<WritePipelineResponse> listener, Header... headers) {
111-
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::deletePipeline,
112-
WritePipelineResponse::fromXContent, listener, emptySet(), headers);
124+
public void deletePipelineAsync(DeletePipelineRequest request, RequestOptions options, ActionListener<WritePipelineResponse> listener) {
125+
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::deletePipeline, options,
126+
WritePipelineResponse::fromXContent, listener, emptySet());
113127
}
114128
}

client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ static Request rollover(RolloverRequest rolloverRequest) throws IOException {
721721
return request;
722722
}
723723

724-
static Request getSettings(GetSettingsRequest getSettingsRequest) throws IOException {
724+
static Request getSettings(GetSettingsRequest getSettingsRequest) {
725725
String[] indices = getSettingsRequest.indices() == null ? Strings.EMPTY_ARRAY : getSettingsRequest.indices();
726726
String[] names = getSettingsRequest.names() == null ? Strings.EMPTY_ARRAY : getSettingsRequest.names();
727727

0 commit comments

Comments
 (0)