mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-08 21:22:12 +00:00
ReactiveElasticsearchOperations indexName is encoded twice.
Original Pull Request #1666 Closes #1665 (cherry picked from commit 4829b07e53fcbea4b391a6688fd70a580f5a62ab)
This commit is contained in:
parent
e80e32eb97
commit
fc1f65f87d
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2018-2020 the original author or authors.
|
* Copyright 2018-2021 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -27,6 +27,7 @@ import org.springframework.lang.Nullable;
|
|||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.web.reactive.function.client.WebClient;
|
import org.springframework.web.reactive.function.client.WebClient;
|
||||||
import org.springframework.web.reactive.function.client.WebClient.Builder;
|
import org.springframework.web.reactive.function.client.WebClient.Builder;
|
||||||
|
import org.springframework.web.util.DefaultUriBuilderFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default {@link WebClientProvider} that uses cached {@link WebClient} instances per {@code hostAndPort}.
|
* Default {@link WebClientProvider} that uses cached {@link WebClient} instances per {@code hostAndPort}.
|
||||||
@ -156,7 +157,16 @@ class DefaultWebClientProvider implements WebClientProvider {
|
|||||||
|
|
||||||
String baseUrl = String.format("%s://%s:%d%s", this.scheme, socketAddress.getHostString(), socketAddress.getPort(),
|
String baseUrl = String.format("%s://%s:%d%s", this.scheme, socketAddress.getHostString(), socketAddress.getPort(),
|
||||||
pathPrefix == null ? "" : '/' + pathPrefix);
|
pathPrefix == null ? "" : '/' + pathPrefix);
|
||||||
WebClient webClient = builder.baseUrl(baseUrl).filter((request, next) -> next.exchange(request).doOnError(errorListener)).build();
|
|
||||||
|
DefaultUriBuilderFactory uriBuilderFactory = new DefaultUriBuilderFactory(baseUrl);
|
||||||
|
// the template will already be encoded by the RequestConverters methods
|
||||||
|
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
|
||||||
|
builder.uriBuilderFactory(uriBuilderFactory); //
|
||||||
|
|
||||||
|
WebClient webClient = builder //
|
||||||
|
.filter((request, next) -> next.exchange(request) //
|
||||||
|
.doOnError(errorListener)) //
|
||||||
|
.build(); //
|
||||||
return webClientConfigurer.apply(webClient);
|
return webClientConfigurer.apply(webClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,8 @@ import reactor.test.StepVerifier;
|
|||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.lang.Object;
|
import java.lang.Object;
|
||||||
import java.net.ConnectException;
|
import java.net.ConnectException;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
@ -49,7 +51,6 @@ import org.elasticsearch.search.sort.SortOrder;
|
|||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.dao.DataAccessResourceFailureException;
|
import org.springframework.dao.DataAccessResourceFailureException;
|
||||||
import org.springframework.dao.OptimisticLockingFailureException;
|
import org.springframework.dao.OptimisticLockingFailureException;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
@ -524,7 +525,8 @@ public class ReactiveElasticsearchTemplateTests {
|
|||||||
|
|
||||||
@Test // DATAES-567, DATAES-767
|
@Test // DATAES-567, DATAES-767
|
||||||
public void aggregateShouldErrorWhenIndexDoesNotExist() {
|
public void aggregateShouldErrorWhenIndexDoesNotExist() {
|
||||||
template.aggregate(new CriteriaQuery(Criteria.where("message").is("some message")), SampleEntity.class,
|
template
|
||||||
|
.aggregate(new CriteriaQuery(Criteria.where("message").is("some message")), SampleEntity.class,
|
||||||
IndexCoordinates.of("no-such-index")) //
|
IndexCoordinates.of("no-such-index")) //
|
||||||
.as(StepVerifier::create) //
|
.as(StepVerifier::create) //
|
||||||
.expectError(ElasticsearchStatusException.class);
|
.expectError(ElasticsearchStatusException.class);
|
||||||
@ -981,6 +983,28 @@ public class ReactiveElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// --> JUST some helpers
|
// --> JUST some helpers
|
||||||
|
|
||||||
|
@Test // #1665
|
||||||
|
void shouldBeAbleToProcessDateMathIndexNames() {
|
||||||
|
|
||||||
|
String indexName = "foo-" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy.MM"));
|
||||||
|
String dateMathIndexName = "<foo-{now/M{yyyy.MM}}>";
|
||||||
|
|
||||||
|
SampleEntity entity = randomEntity("foo");
|
||||||
|
|
||||||
|
template.save(entity, IndexCoordinates.of(dateMathIndexName)) //
|
||||||
|
.as(StepVerifier::create) //
|
||||||
|
.expectNext(entity) //
|
||||||
|
.verifyComplete(); //
|
||||||
|
|
||||||
|
template.get(entity.getId(), SampleEntity.class, IndexCoordinates.of(indexName)) //
|
||||||
|
.as(StepVerifier::create) //
|
||||||
|
.expectNext(entity) //
|
||||||
|
.verifyComplete(); //
|
||||||
|
|
||||||
|
}
|
||||||
|
// endregion
|
||||||
|
|
||||||
|
// region Helper functions
|
||||||
private SampleEntity randomEntity(String message) {
|
private SampleEntity randomEntity(String message) {
|
||||||
|
|
||||||
return SampleEntity.builder() //
|
return SampleEntity.builder() //
|
||||||
|
Loading…
x
Reference in New Issue
Block a user