Skip to content

Commit ed235a5

Browse files
committed
Merge remote-tracking branch 'elastic/master' into only-activate-xpack-if-all-nodes-x-pack
2 parents cec9704 + 30b004f commit ed235a5

File tree

173 files changed

+3869
-1132
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

173 files changed

+3869
-1132
lines changed

buildSrc/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
elasticsearch = 7.0.0-alpha1
2-
lucene = 7.4.0-snapshot-59f2b7aec2
2+
lucene = 7.4.0-snapshot-cc2ee23050
33

44
# optional dependencies
55
spatial4j = 0.7

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
import org.elasticsearch.action.ActionListener;
2727
import org.elasticsearch.action.ActionRequest;
2828
import org.elasticsearch.action.ActionRequestValidationException;
29-
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
30-
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
3129
import org.elasticsearch.action.bulk.BulkRequest;
3230
import org.elasticsearch.action.bulk.BulkResponse;
3331
import org.elasticsearch.action.delete.DeleteRequest;
@@ -592,7 +590,7 @@ protected final <Req extends ActionRequest, Resp> Resp performRequest(Req reques
592590
throw validationException;
593591
}
594592
Request req = requestConverter.apply(request);
595-
req.setHeaders(headers);
593+
addHeaders(req, headers);
596594
Response response;
597595
try {
598596
response = client.performRequest(req);
@@ -642,12 +640,19 @@ protected final <Req extends ActionRequest, Resp> void performRequestAsync(Req r
642640
listener.onFailure(e);
643641
return;
644642
}
645-
req.setHeaders(headers);
643+
addHeaders(req, headers);
646644

647645
ResponseListener responseListener = wrapResponseListener(responseConverter, listener, ignores);
648646
client.performRequestAsync(req, responseListener);
649647
}
650648

649+
private static void addHeaders(Request request, Header... headers) {
650+
Objects.requireNonNull(headers, "headers cannot be null");
651+
for (Header header : headers) {
652+
request.addHeader(header.getName(), header.getValue());
653+
}
654+
}
655+
651656
final <Resp> ResponseListener wrapResponseListener(CheckedFunction<Response, Resp, IOException> responseConverter,
652657
ActionListener<Resp> actionListener, Set<Integer> ignores) {
653658
return new ResponseListener() {

client/rest-high-level/src/test/java/org/elasticsearch/client/CustomRestHighLevelClientTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ public void initClients() throws IOException {
7373
final RestClient restClient = mock(RestClient.class);
7474
restHighLevelClient = new CustomRestClient(restClient);
7575

76-
doAnswer(inv -> mockPerformRequest(((Request) inv.getArguments()[0]).getHeaders()[0]))
76+
doAnswer(inv -> mockPerformRequest(((Request) inv.getArguments()[0]).getHeaders().iterator().next()))
7777
.when(restClient)
7878
.performRequest(any(Request.class));
7979

8080
doAnswer(inv -> mockPerformRequestAsync(
81-
((Request) inv.getArguments()[0]).getHeaders()[0],
81+
((Request) inv.getArguments()[0]).getHeaders().iterator().next(),
8282
(ResponseListener) inv.getArguments()[1]))
8383
.when(restClient)
8484
.performRequestAsync(any(Request.class), any(ResponseListener.class));

client/rest/src/main/java/org/elasticsearch/client/Request.java

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,17 @@
1919

2020
package org.elasticsearch.client;
2121

22-
import org.apache.http.entity.ContentType;
2322
import org.apache.http.Header;
2423
import org.apache.http.HttpEntity;
24+
import org.apache.http.entity.ContentType;
25+
import org.apache.http.message.BasicHeader;
2526
import org.apache.http.nio.entity.NStringEntity;
2627
import org.apache.http.nio.protocol.HttpAsyncResponseConsumer;
2728

28-
import java.util.Arrays;
29+
import java.util.ArrayList;
30+
import java.util.Collections;
2931
import java.util.HashMap;
32+
import java.util.List;
3033
import java.util.Map;
3134
import java.util.Objects;
3235

@@ -36,13 +39,12 @@
3639
* HTTP Request to Elasticsearch.
3740
*/
3841
public final class Request {
39-
private static final Header[] NO_HEADERS = new Header[0];
4042
private final String method;
4143
private final String endpoint;
4244
private final Map<String, String> parameters = new HashMap<>();
45+
private final List<Header> headers = new ArrayList<>();
4346

4447
private HttpEntity entity;
45-
private Header[] headers = NO_HEADERS;
4648
private HttpAsyncResponseConsumerFactory httpAsyncResponseConsumerFactory =
4749
HttpAsyncResponseConsumerFactory.DEFAULT;
4850

@@ -125,21 +127,19 @@ public HttpEntity getEntity() {
125127
}
126128

127129
/**
128-
* Set the headers to attach to the request.
130+
* Add the provided header to the request.
129131
*/
130-
public void setHeaders(Header... headers) {
131-
Objects.requireNonNull(headers, "headers cannot be null");
132-
for (Header header : headers) {
133-
Objects.requireNonNull(header, "header cannot be null");
134-
}
135-
this.headers = headers;
132+
public void addHeader(String name, String value) {
133+
Objects.requireNonNull(name, "header name cannot be null");
134+
Objects.requireNonNull(value, "header value cannot be null");
135+
this.headers.add(new ReqHeader(name, value));
136136
}
137137

138138
/**
139139
* Headers to attach to the request.
140140
*/
141-
public Header[] getHeaders() {
142-
return headers;
141+
List<Header> getHeaders() {
142+
return Collections.unmodifiableList(headers);
143143
}
144144

145145
/**
@@ -175,13 +175,13 @@ public String toString() {
175175
if (entity != null) {
176176
b.append(", entity=").append(entity);
177177
}
178-
if (headers.length > 0) {
178+
if (headers.size() > 0) {
179179
b.append(", headers=");
180-
for (int h = 0; h < headers.length; h++) {
180+
for (int h = 0; h < headers.size(); h++) {
181181
if (h != 0) {
182182
b.append(',');
183183
}
184-
b.append(headers[h].toString());
184+
b.append(headers.get(h).toString());
185185
}
186186
}
187187
if (httpAsyncResponseConsumerFactory != HttpAsyncResponseConsumerFactory.DEFAULT) {
@@ -204,12 +204,40 @@ public boolean equals(Object obj) {
204204
&& endpoint.equals(other.endpoint)
205205
&& parameters.equals(other.parameters)
206206
&& Objects.equals(entity, other.entity)
207-
&& Arrays.equals(headers, other.headers)
207+
&& headers.equals(other.headers)
208208
&& httpAsyncResponseConsumerFactory.equals(other.httpAsyncResponseConsumerFactory);
209209
}
210210

211211
@Override
212212
public int hashCode() {
213-
return Objects.hash(method, endpoint, parameters, entity, Arrays.hashCode(headers), httpAsyncResponseConsumerFactory);
213+
return Objects.hash(method, endpoint, parameters, entity, headers.hashCode(), httpAsyncResponseConsumerFactory);
214+
}
215+
216+
/**
217+
* Custom implementation of {@link BasicHeader} that overrides equals and hashCode.
218+
*/
219+
static final class ReqHeader extends BasicHeader {
220+
221+
ReqHeader(String name, String value) {
222+
super(name, value);
223+
}
224+
225+
@Override
226+
public boolean equals(Object other) {
227+
if (this == other) {
228+
return true;
229+
}
230+
if (other instanceof ReqHeader) {
231+
Header otherHeader = (Header) other;
232+
return Objects.equals(getName(), otherHeader.getName()) &&
233+
Objects.equals(getValue(), otherHeader.getValue());
234+
}
235+
return false;
236+
}
237+
238+
@Override
239+
public int hashCode() {
240+
return Objects.hash(getName(), getValue());
241+
}
214242
}
215243
}

client/rest/src/main/java/org/elasticsearch/client/RestClient.java

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ public void performRequestAsync(Request request, ResponseListener responseListen
215215
@Deprecated
216216
public Response performRequest(String method, String endpoint, Header... headers) throws IOException {
217217
Request request = new Request(method, endpoint);
218-
request.setHeaders(headers);
218+
addHeaders(request, headers);
219219
return performRequest(request);
220220
}
221221

@@ -237,7 +237,7 @@ public Response performRequest(String method, String endpoint, Header... headers
237237
public Response performRequest(String method, String endpoint, Map<String, String> params, Header... headers) throws IOException {
238238
Request request = new Request(method, endpoint);
239239
addParameters(request, params);
240-
request.setHeaders(headers);
240+
addHeaders(request, headers);
241241
return performRequest(request);
242242
}
243243

@@ -264,7 +264,7 @@ public Response performRequest(String method, String endpoint, Map<String, Strin
264264
Request request = new Request(method, endpoint);
265265
addParameters(request, params);
266266
request.setEntity(entity);
267-
request.setHeaders(headers);
267+
addHeaders(request, headers);
268268
return performRequest(request);
269269
}
270270

@@ -305,7 +305,7 @@ public Response performRequest(String method, String endpoint, Map<String, Strin
305305
addParameters(request, params);
306306
request.setEntity(entity);
307307
request.setHttpAsyncResponseConsumerFactory(httpAsyncResponseConsumerFactory);
308-
request.setHeaders(headers);
308+
addHeaders(request, headers);
309309
return performRequest(request);
310310
}
311311

@@ -325,7 +325,7 @@ public void performRequestAsync(String method, String endpoint, ResponseListener
325325
Request request;
326326
try {
327327
request = new Request(method, endpoint);
328-
request.setHeaders(headers);
328+
addHeaders(request, headers);
329329
} catch (Exception e) {
330330
responseListener.onFailure(e);
331331
return;
@@ -352,7 +352,7 @@ public void performRequestAsync(String method, String endpoint, Map<String, Stri
352352
try {
353353
request = new Request(method, endpoint);
354354
addParameters(request, params);
355-
request.setHeaders(headers);
355+
addHeaders(request, headers);
356356
} catch (Exception e) {
357357
responseListener.onFailure(e);
358358
return;
@@ -383,7 +383,7 @@ public void performRequestAsync(String method, String endpoint, Map<String, Stri
383383
request = new Request(method, endpoint);
384384
addParameters(request, params);
385385
request.setEntity(entity);
386-
request.setHeaders(headers);
386+
addHeaders(request, headers);
387387
} catch (Exception e) {
388388
responseListener.onFailure(e);
389389
return;
@@ -420,7 +420,7 @@ public void performRequestAsync(String method, String endpoint, Map<String, Stri
420420
addParameters(request, params);
421421
request.setEntity(entity);
422422
request.setHttpAsyncResponseConsumerFactory(httpAsyncResponseConsumerFactory);
423-
request.setHeaders(headers);
423+
addHeaders(request, headers);
424424
} catch (Exception e) {
425425
responseListener.onFailure(e);
426426
return;
@@ -539,9 +539,9 @@ public void cancelled() {
539539
});
540540
}
541541

542-
private void setHeaders(HttpRequest httpRequest, Header[] requestHeaders) {
542+
private void setHeaders(HttpRequest httpRequest, Collection<Header> requestHeaders) {
543543
// request headers override default headers, so we don't add default headers if they exist as request headers
544-
final Set<String> requestNames = new HashSet<>(requestHeaders.length);
544+
final Set<String> requestNames = new HashSet<>(requestHeaders.size());
545545
for (Header requestHeader : requestHeaders) {
546546
httpRequest.addHeader(requestHeader);
547547
requestNames.add(requestHeader.getName());
@@ -877,10 +877,24 @@ private static class HostTuple<T> {
877877
}
878878
}
879879

880+
/**
881+
* Add all headers from the provided varargs argument to a {@link Request}. This only exists
882+
* to support methods that exist for backwards compatibility.
883+
*/
884+
@Deprecated
885+
private static void addHeaders(Request request, Header... headers) {
886+
Objects.requireNonNull(headers, "headers cannot be null");
887+
for (Header header : headers) {
888+
Objects.requireNonNull(header, "header cannot be null");
889+
request.addHeader(header.getName(), header.getValue());
890+
}
891+
}
892+
880893
/**
881894
* Add all parameters from a map to a {@link Request}. This only exists
882895
* to support methods that exist for backwards compatibility.
883896
*/
897+
@Deprecated
884898
private static void addParameters(Request request, Map<String, String> parameters) {
885899
Objects.requireNonNull(parameters, "parameters cannot be null");
886900
for (Map.Entry<String, String> entry : parameters.entrySet()) {

0 commit comments

Comments
 (0)