Skip to content

Commit 23302b8

Browse files
committed
Updates for boot 4, framework 7, jackson 3
1 parent 78cf5e6 commit 23302b8

26 files changed

+84
-68
lines changed

spring-cloud-openfeign-core/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,16 @@
154154
<artifactId>spring-boot-starter-test</artifactId>
155155
<scope>test</scope>
156156
</dependency>
157+
<dependency>
158+
<groupId>org.springframework.boot</groupId>
159+
<artifactId>spring-boot-resttestclient</artifactId>
160+
<scope>test</scope>
161+
</dependency>
162+
<dependency>
163+
<groupId>org.springframework.boot</groupId>
164+
<artifactId>spring-boot-webmvc-test</artifactId>
165+
<scope>test</scope>
166+
</dependency>
157167
<dependency>
158168
<groupId>org.springframework.cloud</groupId>
159169
<artifactId>spring-cloud-test-support</artifactId>

spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsConfiguration.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,14 @@
3434
import io.micrometer.core.instrument.MeterRegistry;
3535
import io.micrometer.observation.ObservationRegistry;
3636

37-
import org.springframework.beans.factory.ObjectFactory;
3837
import org.springframework.beans.factory.ObjectProvider;
3938
import org.springframework.beans.factory.annotation.Autowired;
4039
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
4140
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
4241
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
4342
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
4443
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45-
import org.springframework.boot.data.autoconfigure.web.SpringDataWebProperties;
46-
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters;
44+
import org.springframework.boot.data.autoconfigure.web.DataWebProperties;
4745
import org.springframework.cloud.client.circuitbreaker.CircuitBreaker;
4846
import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory;
4947
import org.springframework.cloud.openfeign.clientconfig.FeignClientConfigurer;
@@ -64,6 +62,7 @@
6462
import org.springframework.data.domain.Pageable;
6563
import org.springframework.format.support.DefaultFormattingConversionService;
6664
import org.springframework.format.support.FormattingConversionService;
65+
import org.springframework.http.converter.HttpMessageConverter;
6766

6867
import static feign.form.ContentType.MULTIPART;
6968

@@ -80,7 +79,7 @@
8079
public class FeignClientsConfiguration {
8180

8281
@Autowired
83-
private ObjectFactory<HttpMessageConverters> messageConverters;
82+
private ObjectProvider<HttpMessageConverter<?>> messageConverters;
8483

8584
@Autowired(required = false)
8685
private List<AnnotatedParameterProcessor> parameterProcessors = new ArrayList<>();
@@ -146,7 +145,7 @@ public FeignClientConfigurer feignClientConfigurer() {
146145
}
147146

148147
private static Encoder springEncoder(ObjectProvider<AbstractFormWriter> formWriterProvider,
149-
ObjectFactory<HttpMessageConverters> messageConverters, FeignEncoderProperties encoderProperties,
148+
ObjectProvider<HttpMessageConverter<?>> messageConverters, FeignEncoderProperties encoderProperties,
150149
ObjectProvider<HttpMessageConverterCustomizer> customizers) {
151150
AbstractFormWriter formWriter = formWriterProvider.getIfAvailable();
152151

@@ -171,28 +170,28 @@ private static class SpringPojoFormEncoder extends SpringFormEncoder {
171170
}
172171

173172
@Configuration(proxyBeanMethods = false)
174-
@ConditionalOnClass({ Pageable.class, SpringDataWebProperties.class })
173+
@ConditionalOnClass({ Pageable.class, DataWebProperties.class })
175174
static class SpringDataConfiguration {
176175

177-
private final SpringDataWebProperties springDataWebProperties;
176+
private final DataWebProperties dataWebProperties;
178177

179-
SpringDataConfiguration(ObjectProvider<SpringDataWebProperties> springDataWebProperties) {
180-
this.springDataWebProperties = springDataWebProperties.getIfAvailable();
178+
SpringDataConfiguration(ObjectProvider<DataWebProperties> dataWebProperties) {
179+
this.dataWebProperties = dataWebProperties.getIfAvailable();
181180
}
182181

183182
@Bean
184183
@ConditionalOnMissingBean
185184
public Encoder feignEncoderPageable(ObjectProvider<AbstractFormWriter> formWriterProvider,
186-
ObjectFactory<HttpMessageConverters> messageConverters,
185+
ObjectProvider<HttpMessageConverter<?>> messageConverters,
187186
ObjectProvider<FeignEncoderProperties> encoderProperties,
188187
ObjectProvider<HttpMessageConverterCustomizer> customizers) {
189188
PageableSpringEncoder encoder = new PageableSpringEncoder(springEncoder(formWriterProvider,
190189
messageConverters, encoderProperties.getIfAvailable(), customizers));
191190

192-
if (springDataWebProperties != null) {
193-
encoder.setPageParameter(springDataWebProperties.getPageable().getPageParameter());
194-
encoder.setSizeParameter(springDataWebProperties.getPageable().getSizeParameter());
195-
encoder.setSortParameter(springDataWebProperties.getSort().getSortParameter());
191+
if (dataWebProperties != null) {
192+
encoder.setPageParameter(dataWebProperties.getPageable().getPageParameter());
193+
encoder.setSizeParameter(dataWebProperties.getPageable().getSizeParameter());
194+
encoder.setSortParameter(dataWebProperties.getSort().getSortParameter());
196195
}
197196
return encoder;
198197
}
@@ -201,10 +200,10 @@ public Encoder feignEncoderPageable(ObjectProvider<AbstractFormWriter> formWrite
201200
@ConditionalOnMissingBean
202201
public QueryMapEncoder feignQueryMapEncoderPageable() {
203202
PageableSpringQueryMapEncoder queryMapEncoder = new PageableSpringQueryMapEncoder();
204-
if (springDataWebProperties != null) {
205-
queryMapEncoder.setPageParameter(springDataWebProperties.getPageable().getPageParameter());
206-
queryMapEncoder.setSizeParameter(springDataWebProperties.getPageable().getSizeParameter());
207-
queryMapEncoder.setSortParameter(springDataWebProperties.getSort().getSortParameter());
203+
if (dataWebProperties != null) {
204+
queryMapEncoder.setPageParameter(dataWebProperties.getPageable().getPageParameter());
205+
queryMapEncoder.setSizeParameter(dataWebProperties.getPageable().getSizeParameter());
206+
queryMapEncoder.setSortParameter(dataWebProperties.getSort().getSortParameter());
208207
}
209208
return queryMapEncoder;
210209
}

spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/SpringDecoder.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
import feign.codec.DecodeException;
2929
import feign.codec.Decoder;
3030

31-
import org.springframework.beans.factory.ObjectFactory;
3231
import org.springframework.beans.factory.ObjectProvider;
33-
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters;
3432
import org.springframework.http.HttpHeaders;
3533
import org.springframework.http.HttpStatusCode;
3634
import org.springframework.http.client.ClientHttpResponse;
@@ -46,15 +44,15 @@
4644
*/
4745
public class SpringDecoder implements Decoder {
4846

49-
private final ObjectFactory<HttpMessageConverters> messageConverters;
47+
private final ObjectProvider<HttpMessageConverter<?>> messageConverters;
5048

5149
private final ObjectProvider<HttpMessageConverterCustomizer> customizers;
5250

53-
public SpringDecoder(ObjectFactory<HttpMessageConverters> messageConverters) {
51+
public SpringDecoder(ObjectProvider<HttpMessageConverter<?>> messageConverters) {
5452
this(messageConverters, new EmptyObjectProvider<>());
5553
}
5654

57-
public SpringDecoder(ObjectFactory<HttpMessageConverters> messageConverters,
55+
public SpringDecoder(ObjectProvider<HttpMessageConverter<?>> messageConverters,
5856
ObjectProvider<HttpMessageConverterCustomizer> customizers) {
5957
this.messageConverters = messageConverters;
6058
this.customizers = customizers;
@@ -63,7 +61,7 @@ public SpringDecoder(ObjectFactory<HttpMessageConverters> messageConverters,
6361
@Override
6462
public Object decode(final Response response, Type type) throws IOException, FeignException {
6563
if (type instanceof Class || type instanceof ParameterizedType || type instanceof WildcardType) {
66-
List<HttpMessageConverter<?>> converters = messageConverters.getObject().getConverters();
64+
List<HttpMessageConverter<?>> converters = messageConverters.orderedStream().toList();
6765
customizers.forEach(customizer -> customizer.accept(converters));
6866
@SuppressWarnings({ "unchecked", "rawtypes" })
6967
HttpMessageConverterExtractor<?> extractor = new HttpMessageConverterExtractor(type, converters);

spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/SpringEncoder.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@
3636
import org.apache.commons.logging.Log;
3737
import org.apache.commons.logging.LogFactory;
3838

39-
import org.springframework.beans.factory.ObjectFactory;
4039
import org.springframework.beans.factory.ObjectProvider;
41-
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters;
4240
import org.springframework.cloud.openfeign.encoding.HttpEncoding;
4341
import org.springframework.http.HttpHeaders;
4442
import org.springframework.http.HttpOutputMessage;
@@ -74,19 +72,19 @@ public class SpringEncoder implements Encoder {
7472

7573
private final SpringFormEncoder springFormEncoder;
7674

77-
private final ObjectFactory<HttpMessageConverters> messageConverters;
75+
private final ObjectProvider<HttpMessageConverter<?>> messageConverters;
7876

7977
private final FeignEncoderProperties encoderProperties;
8078

8179
private final ObjectProvider<HttpMessageConverterCustomizer> customizers;
8280

8381
private List<HttpMessageConverter<?>> converters;
8482

85-
public SpringEncoder(ObjectFactory<HttpMessageConverters> messageConverters) {
83+
public SpringEncoder(ObjectProvider<HttpMessageConverter<?>> messageConverters) {
8684
this(new SpringFormEncoder(), messageConverters, new FeignEncoderProperties(), new EmptyObjectProvider<>());
8785
}
8886

89-
public SpringEncoder(SpringFormEncoder springFormEncoder, ObjectFactory<HttpMessageConverters> messageConverters,
87+
public SpringEncoder(SpringFormEncoder springFormEncoder, ObjectProvider<HttpMessageConverter<?>> messageConverters,
9088
FeignEncoderProperties encoderProperties, ObjectProvider<HttpMessageConverterCustomizer> customizers) {
9189
this.springFormEncoder = springFormEncoder;
9290
this.messageConverters = messageConverters;
@@ -180,7 +178,7 @@ else if (shouldHaveNullCharset(messageConverter, outputMessage)) {
180178

181179
private void initConvertersIfRequired() {
182180
if (converters == null) {
183-
converters = messageConverters.getObject().getConverters();
181+
converters = messageConverters.orderedStream().toList();
184182
customizers.forEach(customizer -> customizer.accept(converters));
185183
}
186184
}

spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientFactoryBeanIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.springframework.beans.factory.annotation.Autowired;
2626
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2727
import org.springframework.boot.test.context.SpringBootTest;
28-
import org.springframework.boot.web.server.test.LocalServerPort;
28+
import org.springframework.boot.test.web.server.LocalServerPort;
2929
import org.springframework.cloud.client.DefaultServiceInstance;
3030
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
3131
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;

spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/SpringDecoderIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3030
import org.springframework.boot.test.context.SpringBootTest;
3131
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
32-
import org.springframework.boot.web.server.test.LocalServerPort;
32+
import org.springframework.boot.test.web.server.LocalServerPort;
3333
import org.springframework.cloud.openfeign.support.SpringDecoder;
3434
import org.springframework.cloud.openfeign.test.NoSecurityConfiguration;
3535
import org.springframework.context.annotation.Configuration;

spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/SpringDecoderTests.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
import org.junit.jupiter.api.BeforeEach;
2222
import org.junit.jupiter.api.Test;
2323

24-
import org.springframework.beans.factory.ObjectFactory;
24+
import org.springframework.beans.factory.ObjectProvider;
2525
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters;
2626
import org.springframework.cloud.openfeign.support.SpringDecoder;
27+
import org.springframework.http.converter.HttpMessageConverter;
2728

2829
import static org.assertj.core.api.Assertions.assertThatCode;
2930
import static org.mockito.Mockito.mock;
@@ -40,8 +41,8 @@ class SpringDecoderTests {
4041

4142
@BeforeEach
4243
void setUp() {
43-
ObjectFactory<HttpMessageConverters> factory = mock();
44-
when(factory.getObject()).thenReturn(new HttpMessageConverters());
44+
ObjectProvider<HttpMessageConverter<?>> factory = mock();
45+
when(factory.orderedStream()).thenReturn(new HttpMessageConverters().getConverters().stream());
4546
decoder = new SpringDecoder(factory);
4647
}
4748

spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/circuitbreaker/AsyncCircuitBreakerTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
import org.springframework.beans.factory.annotation.Autowired;
3333
import org.springframework.beans.factory.annotation.Qualifier;
3434
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
35-
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
3635
import org.springframework.boot.test.context.SpringBootTest;
36+
import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
3737
import org.springframework.cloud.client.circuitbreaker.CircuitBreaker;
3838
import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory;
3939
import org.springframework.cloud.client.circuitbreaker.ConfigBuilder;

spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/encoding/FeignAcceptEncodingTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.springframework.beans.factory.annotation.Autowired;
2424
import org.springframework.boot.autoconfigure.SpringBootApplication;
2525
import org.springframework.boot.test.context.SpringBootTest;
26-
import org.springframework.boot.web.server.test.LocalServerPort;
26+
import org.springframework.boot.test.web.server.LocalServerPort;
2727
import org.springframework.cloud.client.DefaultServiceInstance;
2828
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
2929
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;

spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/encoding/FeignContentEncodingTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.springframework.beans.factory.annotation.Autowired;
2424
import org.springframework.boot.autoconfigure.SpringBootApplication;
2525
import org.springframework.boot.test.context.SpringBootTest;
26-
import org.springframework.boot.web.server.test.LocalServerPort;
26+
import org.springframework.boot.test.web.server.LocalServerPort;
2727
import org.springframework.cloud.client.DefaultServiceInstance;
2828
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
2929
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;

0 commit comments

Comments
 (0)