Skip to content

Commit 863ac2f

Browse files
committed
Polishing.
1 parent 929d97f commit 863ac2f

15 files changed

+386
-351
lines changed

Diff for: src/main/java/org/springframework/data/elasticsearch/client/reactive/DefaultReactiveElasticsearchClient.java

+15-15
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,18 @@
1515
*/
1616
package org.springframework.data.elasticsearch.client.reactive;
1717

18+
import io.netty.channel.ChannelOption;
19+
import io.netty.handler.ssl.ApplicationProtocolConfig;
20+
import io.netty.handler.ssl.ClientAuth;
21+
import io.netty.handler.ssl.IdentityCipherSuiteFilter;
22+
import io.netty.handler.ssl.JdkSslContext;
23+
import io.netty.handler.timeout.ReadTimeoutHandler;
24+
import io.netty.handler.timeout.WriteTimeoutHandler;
25+
import reactor.core.publisher.Flux;
26+
import reactor.core.publisher.Mono;
27+
import reactor.netty.http.client.HttpClient;
28+
import reactor.netty.transport.ProxyProvider;
29+
1830
import java.io.IOException;
1931
import java.lang.reflect.Method;
2032
import java.net.ConnectException;
@@ -120,18 +132,6 @@
120132
import org.springframework.web.reactive.function.client.WebClient;
121133
import org.springframework.web.reactive.function.client.WebClient.RequestBodySpec;
122134

123-
import io.netty.channel.ChannelOption;
124-
import io.netty.handler.ssl.ApplicationProtocolConfig;
125-
import io.netty.handler.ssl.ClientAuth;
126-
import io.netty.handler.ssl.IdentityCipherSuiteFilter;
127-
import io.netty.handler.ssl.JdkSslContext;
128-
import io.netty.handler.timeout.ReadTimeoutHandler;
129-
import io.netty.handler.timeout.WriteTimeoutHandler;
130-
import reactor.core.publisher.Flux;
131-
import reactor.core.publisher.Mono;
132-
import reactor.netty.http.client.HttpClient;
133-
import reactor.netty.transport.ProxyProvider;
134-
135135
/**
136136
* A {@link WebClient} based {@link ReactiveElasticsearchClient} that connects to an Elasticsearch cluster using HTTP.
137137
*
@@ -760,9 +760,9 @@ public Mono<Boolean> deleteTemplate(HttpHeaders headers, DeleteIndexTemplateRequ
760760
}
761761

762762
@Override
763-
public Mono<GetIndexResponse> getIndex(HttpHeaders headers, org.elasticsearch.client.indices.GetIndexRequest getIndexRequest) {
764-
return sendRequest(getIndexRequest, requestCreator.getIndex(), GetIndexResponse.class, headers)
765-
.next();
763+
public Mono<GetIndexResponse> getIndex(HttpHeaders headers,
764+
org.elasticsearch.client.indices.GetIndexRequest getIndexRequest) {
765+
return sendRequest(getIndexRequest, requestCreator.getIndex(), GetIndexResponse.class, headers).next();
766766
}
767767

768768
// endregion

Diff for: src/main/java/org/springframework/data/elasticsearch/client/reactive/ReactiveElasticsearchClient.java

+35-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package org.springframework.data.elasticsearch.client.reactive;
1717

18-
import org.elasticsearch.client.indices.GetIndexResponse;
1918
import reactor.core.publisher.Flux;
2019
import reactor.core.publisher.Mono;
2120

@@ -54,6 +53,7 @@
5453
import org.elasticsearch.client.GetAliasesResponse;
5554
import org.elasticsearch.client.indices.GetFieldMappingsRequest;
5655
import org.elasticsearch.client.indices.GetFieldMappingsResponse;
56+
import org.elasticsearch.client.indices.GetIndexResponse;
5757
import org.elasticsearch.client.indices.GetIndexTemplatesRequest;
5858
import org.elasticsearch.client.indices.GetIndexTemplatesResponse;
5959
import org.elasticsearch.client.indices.IndexTemplatesExistRequest;
@@ -1458,6 +1458,39 @@ default Mono<Boolean> deleteTemplate(DeleteIndexTemplateRequest deleteIndexTempl
14581458
*/
14591459
Mono<Boolean> deleteTemplate(HttpHeaders headers, DeleteIndexTemplateRequest deleteIndexTemplateRequest);
14601460

1461-
Mono<GetIndexResponse> getIndex(HttpHeaders headers, org.elasticsearch.client.indices.GetIndexRequest getIndexRequest);
1461+
/**
1462+
* Execute the given {@link GetIndexRequest} against the {@literal indices} API.
1463+
*
1464+
* @param consumer never {@literal null}.
1465+
* @return the {@link Mono} emitting the response
1466+
* @since 4.2
1467+
*/
1468+
default Mono<GetIndexResponse> getIndex(Consumer<org.elasticsearch.client.indices.GetIndexRequest> consumer) {
1469+
org.elasticsearch.client.indices.GetIndexRequest getIndexRequest = new org.elasticsearch.client.indices.GetIndexRequest();
1470+
consumer.accept(getIndexRequest);
1471+
return getIndex(getIndexRequest);
1472+
}
1473+
1474+
/**
1475+
* Execute the given {@link GetIndexRequest} against the {@literal indices} API.
1476+
*
1477+
* @param getIndexRequest must not be {@literal null}
1478+
* @return the {@link Mono} emitting the response
1479+
* @since 4.2
1480+
*/
1481+
default Mono<GetIndexResponse> getIndex(org.elasticsearch.client.indices.GetIndexRequest getIndexRequest) {
1482+
return getIndex(HttpHeaders.EMPTY, getIndexRequest);
1483+
}
1484+
1485+
/**
1486+
* Execute the given {@link GetIndexRequest} against the {@literal indices} API.
1487+
*
1488+
* @param headers Use {@link HttpHeaders} to provide eg. authentication data. Must not be {@literal null}.
1489+
* @param getIndexRequest must not be {@literal null}
1490+
* @return the {@link Mono} emitting the response
1491+
* @since 4.2
1492+
*/
1493+
Mono<GetIndexResponse> getIndex(HttpHeaders headers,
1494+
org.elasticsearch.client.indices.GetIndexRequest getIndexRequest);
14621495
}
14631496
}

Diff for: src/main/java/org/springframework/data/elasticsearch/client/reactive/RequestCreator.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ default Function<CountRequest, Request> count() {
150150
return RequestConverters::count;
151151
}
152152

153-
default Function<org.elasticsearch.client.indices.GetIndexRequest, Request> getIndex() { return RequestConverters::getIndex; }
154153
/**
155154
* @since 4.1
156155
*/
@@ -213,4 +212,11 @@ default Function<DeleteIndexTemplateRequest, Request> deleteTemplate() {
213212
default Function<GetFieldMappingsRequest, Request> getFieldMapping() {
214213
return RequestConverters::getFieldMapping;
215214
}
215+
216+
/**
217+
* @since 4.2
218+
*/
219+
default Function<org.elasticsearch.client.indices.GetIndexRequest, Request> getIndex() {
220+
return RequestConverters::getIndex;
221+
}
216222
}

Diff for: src/main/java/org/springframework/data/elasticsearch/core/AbstractDefaultIndexOperations.java

-4
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,10 @@ abstract class AbstractDefaultIndexOperations implements IndexOperations {
5454

5555
protected final ElasticsearchConverter elasticsearchConverter;
5656
protected final RequestFactory requestFactory;
57-
protected final ResponseConverter responseConverter;
5857

5958
@Nullable protected final Class<?> boundClass;
6059
@Nullable private final IndexCoordinates boundIndex;
6160

62-
6361
public AbstractDefaultIndexOperations(ElasticsearchConverter elasticsearchConverter, Class<?> boundClass) {
6462

6563
Assert.notNull(boundClass, "boundClass may not be null");
@@ -68,7 +66,6 @@ public AbstractDefaultIndexOperations(ElasticsearchConverter elasticsearchConver
6866
requestFactory = new RequestFactory(elasticsearchConverter);
6967
this.boundClass = boundClass;
7068
this.boundIndex = null;
71-
this.responseConverter = new ResponseConverter();
7269
}
7370

7471
public AbstractDefaultIndexOperations(ElasticsearchConverter elasticsearchConverter, IndexCoordinates boundIndex) {
@@ -79,7 +76,6 @@ public AbstractDefaultIndexOperations(ElasticsearchConverter elasticsearchConver
7976
requestFactory = new RequestFactory(elasticsearchConverter);
8077
this.boundClass = null;
8178
this.boundIndex = boundIndex;
82-
this.responseConverter = new ResponseConverter();
8379
}
8480

8581
protected Class<?> checkForBoundClass() {

Diff for: src/main/java/org/springframework/data/elasticsearch/core/DefaultIndexOperations.java

+13-16
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,13 @@
5252
import org.springframework.data.elasticsearch.core.index.PutTemplateRequest;
5353
import org.springframework.data.elasticsearch.core.index.TemplateData;
5454
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
55-
import org.springframework.data.elasticsearch.core.mapping.IndexInformation;
5655
import org.springframework.data.elasticsearch.core.query.AliasQuery;
5756
import org.springframework.lang.Nullable;
5857
import org.springframework.util.Assert;
5958

6059
/**
6160
* {@link IndexOperations} implementation using the RestClient.
62-
*
61+
*
6362
* @author Peter-Josef Meisch
6463
* @author Sascha Woo
6564
* @author George Popides
@@ -178,8 +177,8 @@ protected Map<String, Set<AliasData>> doGetAliases(@Nullable String[] aliasNames
178177

179178
GetAliasesRequest getAliasesRequest = requestFactory.getAliasesRequest(aliasNames, indexNames);
180179

181-
return restTemplate.execute(client -> responseConverter
182-
.convertAliasesResponse(client.indices().getAlias(getAliasesRequest, RequestOptions.DEFAULT).getAliases()));
180+
return restTemplate.execute(client -> ResponseConverter
181+
.aliasDatas(client.indices().getAlias(getAliasesRequest, RequestOptions.DEFAULT).getAliases()));
183182
}
184183

185184
@Override
@@ -199,7 +198,7 @@ protected Map<String, Object> doGetSettings(IndexCoordinates index, boolean incl
199198
GetSettingsResponse response = restTemplate.execute(client -> client.indices() //
200199
.getSettings(getSettingsRequest, RequestOptions.DEFAULT));
201200

202-
return requestFactory.fromSettingsResponse(response, getSettingsRequest.indices()[0]);
201+
return ResponseConverter.fromSettingsResponse(response, getSettingsRequest.indices()[0]);
203202
}
204203

205204
@Override
@@ -234,7 +233,7 @@ public TemplateData getTemplate(GetTemplateRequest getTemplateRequest) {
234233
GetIndexTemplatesRequest getIndexTemplatesRequest = requestFactory.getIndexTemplatesRequest(getTemplateRequest);
235234
GetIndexTemplatesResponse getIndexTemplatesResponse = restTemplate
236235
.execute(client -> client.indices().getIndexTemplate(getIndexTemplatesRequest, RequestOptions.DEFAULT));
237-
return requestFactory.getTemplateData(getIndexTemplatesResponse, getTemplateRequest.getTemplateName());
236+
return ResponseConverter.getTemplateData(getIndexTemplatesResponse, getTemplateRequest.getTemplateName());
238237
}
239238

240239
@Override
@@ -260,17 +259,15 @@ public boolean deleteTemplate(DeleteTemplateRequest deleteTemplateRequest) {
260259
}
261260

262261
@Override
263-
public List<IndexInformation> getInformation() {
264-
IndexCoordinates indexCoordinates = getIndexCoordinates();
265-
GetIndexRequest request = requestFactory.getIndexRequest(indexCoordinates);
262+
public List<IndexInformation> getInformation(IndexCoordinates index) {
266263

267-
return restTemplate.execute(
268-
client -> {
269-
GetIndexResponse getIndexResponse = client.indices().get(request, RequestOptions.DEFAULT);
270-
return responseConverter.indexInformationCollection(getIndexResponse);
271-
});
272-
}
264+
Assert.notNull(index, "index must not be null");
273265

266+
GetIndexRequest request = requestFactory.getIndexRequest(index);
267+
return restTemplate.execute(client -> {
268+
GetIndexResponse getIndexResponse = client.indices().get(request, RequestOptions.DEFAULT);
269+
return ResponseConverter.getIndexInformations(getIndexResponse);
270+
});
271+
}
274272
// endregion
275-
276273
}

Diff for: src/main/java/org/springframework/data/elasticsearch/core/DefaultReactiveIndexOperations.java

+15-16
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import static org.elasticsearch.client.Requests.*;
1919
import static org.springframework.util.StringUtils.*;
2020

21+
import reactor.core.publisher.Flux;
22+
import reactor.core.publisher.Mono;
23+
2124
import java.util.Map;
2225
import java.util.Set;
2326

@@ -52,14 +55,9 @@
5255
import org.springframework.data.elasticsearch.core.index.TemplateData;
5356
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
5457
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
55-
import org.springframework.data.elasticsearch.core.mapping.IndexInformation;
56-
import org.springframework.http.HttpHeaders;
5758
import org.springframework.lang.Nullable;
5859
import org.springframework.util.Assert;
5960

60-
import reactor.core.publisher.Flux;
61-
import reactor.core.publisher.Mono;
62-
6361
/**
6462
* @author Peter-Josef Meisch
6563
* @author George Popides
@@ -74,7 +72,6 @@ class DefaultReactiveIndexOperations implements ReactiveIndexOperations {
7472
private final RequestFactory requestFactory;
7573
private final ReactiveElasticsearchOperations operations;
7674
private final ElasticsearchConverter converter;
77-
private final ResponseConverter responseConverter;
7875

7976
public DefaultReactiveIndexOperations(ReactiveElasticsearchOperations operations, IndexCoordinates index) {
8077

@@ -84,7 +81,6 @@ public DefaultReactiveIndexOperations(ReactiveElasticsearchOperations operations
8481
this.operations = operations;
8582
this.converter = operations.getElasticsearchConverter();
8683
this.requestFactory = new RequestFactory(operations.getElasticsearchConverter());
87-
this.responseConverter = new ResponseConverter();
8884
this.boundClass = null;
8985
this.boundIndex = index;
9086
}
@@ -97,7 +93,6 @@ public DefaultReactiveIndexOperations(ReactiveElasticsearchOperations operations
9793
this.operations = operations;
9894
this.converter = operations.getElasticsearchConverter();
9995
this.requestFactory = new RequestFactory(operations.getElasticsearchConverter());
100-
this.responseConverter = new ResponseConverter();
10196
this.boundClass = clazz;
10297
this.boundIndex = getIndexCoordinatesFor(clazz);
10398
}
@@ -223,7 +218,7 @@ public Mono<Document> getSettings(boolean includeDefaults) {
223218
GetSettingsRequest request = requestFactory.getSettingsRequest(indexName, includeDefaults);
224219

225220
return Mono.from(operations.executeWithIndicesClient(client -> client.getSettings(request)))
226-
.map(getSettingsResponse -> requestFactory.fromSettingsResponse(getSettingsResponse, indexName));
221+
.map(getSettingsResponse -> ResponseConverter.fromSettingsResponse(getSettingsResponse, indexName));
227222
}
228223

229224
// endregion
@@ -250,7 +245,7 @@ private Mono<Map<String, Set<AliasData>>> getAliases(@Nullable String[] aliasNam
250245

251246
GetAliasesRequest getAliasesRequest = requestFactory.getAliasesRequest(aliasNames, indexNames);
252247
return Mono.from(operations.executeWithIndicesClient(client -> client.getAliases(getAliasesRequest)))
253-
.map(GetAliasesResponse::getAliases).map(responseConverter::convertAliasesResponse);
248+
.map(GetAliasesResponse::getAliases).map(ResponseConverter::aliasDatas);
254249
}
255250
// endregion
256251

@@ -273,7 +268,8 @@ public Mono<TemplateData> getTemplate(GetTemplateRequest getTemplateRequest) {
273268
return Mono.from(operations.executeWithIndicesClient(client -> client.getTemplate(getIndexTemplatesRequest)))
274269
.flatMap(response -> {
275270
if (response != null) {
276-
TemplateData templateData = requestFactory.getTemplateData(response, getTemplateRequest.getTemplateName());
271+
TemplateData templateData = ResponseConverter.getTemplateData(response,
272+
getTemplateRequest.getTemplateName());
277273
if (templateData != null) {
278274
return Mono.just(templateData);
279275
}
@@ -311,12 +307,15 @@ public IndexCoordinates getIndexCoordinates() {
311307
}
312308

313309
@Override
314-
public Flux<IndexInformation> getInformation() {
315-
org.elasticsearch.client.indices.GetIndexRequest getIndexRequest = requestFactory.getIndexRequest(getIndexCoordinates());
310+
public Flux<IndexInformation> getInformation(IndexCoordinates index) {
311+
312+
Assert.notNull(index, "index must not be null");
316313

317-
return Mono.from(operations.executeWithIndicesClient(client ->
318-
client.getIndex(HttpHeaders.EMPTY, getIndexRequest).map(responseConverter::indexInformationCollection)))
319-
.flatMapMany(Flux::fromIterable);
314+
org.elasticsearch.client.indices.GetIndexRequest getIndexRequest = requestFactory.getIndexRequest(index);
315+
return Mono
316+
.from(operations.executeWithIndicesClient(
317+
client -> client.getIndex(getIndexRequest).map(ResponseConverter::getIndexInformations)))
318+
.flatMapMany(Flux::fromIterable);
320319
}
321320

322321
private IndexCoordinates getIndexCoordinatesFor(Class<?> clazz) {

Diff for: src/main/java/org/springframework/data/elasticsearch/core/DefaultTransportIndexOperations.java

+8-10
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
import org.springframework.data.elasticsearch.core.index.PutTemplateRequest;
6060
import org.springframework.data.elasticsearch.core.index.TemplateData;
6161
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
62-
import org.springframework.data.elasticsearch.core.mapping.IndexInformation;
6362
import org.springframework.data.elasticsearch.core.query.AliasQuery;
6463
import org.springframework.lang.Nullable;
6564
import org.springframework.util.Assert;
@@ -181,7 +180,7 @@ protected Map<String, Set<AliasData>> doGetAliases(@Nullable String[] aliasNames
181180

182181
Map<String, Set<AliasMetadata>> aliasesResponse = new LinkedHashMap<>();
183182
aliases.keysIt().forEachRemaining(index -> aliasesResponse.put(index, new HashSet<>(aliases.get(index))));
184-
return responseConverter.convertAliasesResponse(aliasesResponse);
183+
return ResponseConverter.aliasDatas(aliasesResponse);
185184
}
186185

187186
@Override
@@ -203,7 +202,7 @@ protected Map<String, Object> doGetSettings(IndexCoordinates index, boolean incl
203202
.getSettings(getSettingsRequest) //
204203
.actionGet();
205204

206-
return requestFactory.fromSettingsResponse(response, index.getIndexName());
205+
return ResponseConverter.fromSettingsResponse(response, index.getIndexName());
207206
}
208207

209208
@Override
@@ -247,7 +246,7 @@ public TemplateData getTemplate(GetTemplateRequest getTemplateRequest) {
247246
Iterator<String> keysItAliases = aliasesResponse.keysIt();
248247
while (keysItAliases.hasNext()) {
249248
String key = keysItAliases.next();
250-
aliases.put(key, responseConverter.convertAliasMetadata(aliasesResponse.get(key)));
249+
aliases.put(key, ResponseConverter.toAliasData(aliasesResponse.get(key)));
251250
}
252251

253252
Map<String, String> mappingsDoc = new LinkedHashMap<>();
@@ -302,14 +301,13 @@ public boolean deleteTemplate(DeleteTemplateRequest deleteTemplateRequest) {
302301
}
303302

304303
@Override
305-
public List<IndexInformation> getInformation() {
306-
GetIndexRequest getIndexRequest = new GetIndexRequest();
307-
IndexCoordinates index = getIndexCoordinates();
304+
public List<IndexInformation> getInformation(IndexCoordinates index) {
308305

309-
getIndexRequest.indices(index.getIndexNames());
306+
Assert.notNull(index, "index must not be null");
310307

308+
GetIndexRequest getIndexRequest = new GetIndexRequest();
309+
getIndexRequest.indices(index.getIndexNames());
311310
GetIndexResponse getIndexResponse = client.admin().indices().getIndex(getIndexRequest).actionGet();
312-
313-
return responseConverter.indexInformationCollection(getIndexResponse);
311+
return ResponseConverter.getIndexInformations(getIndexResponse);
314312
}
315313
}

0 commit comments

Comments
 (0)