Skip to content

Commit 067b420

Browse files
committed
Start building against Spring Framework 7.0.0-M8 snapshots
See gh-46620
1 parent 5767b4e commit 067b420

File tree

5 files changed

+34
-25
lines changed

5 files changed

+34
-25
lines changed

core/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/PatternParseFailureAnalyzerTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class PatternParseFailureAnalyzerTests {
3737
void patternParseFailureQuotesPattern() {
3838
FailureAnalysis failureAnalysis = performAnalysis("/spring/**/framework");
3939
assertThat(failureAnalysis.getDescription())
40-
.contains("Invalid mapping pattern detected:\n" + "/spring/**/framework\n" + " ^");
40+
.contains("Invalid mapping pattern detected:\n" + "/spring/**/framework\n" + " ^");
4141
assertThat(failureAnalysis.getAction())
4242
.contains("Fix this pattern in your application or switch to the legacy parser"
4343
+ " implementation with 'spring.mvc.pathmatch.matching-strategy=ant_path_matcher'.");

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ mavenVersion=3.9.10
1919
mockitoVersion=5.18.0
2020
nativeBuildToolsVersion=0.11.0
2121
snakeYamlVersion=2.4
22-
springFrameworkVersion=7.0.0-M7
22+
springFrameworkVersion=7.0.0-SNAPSHOT
2323
springFramework60xVersion=6.0.23
2424
tomcatVersion=11.0.9
2525
nullabilityPluginVersion=0.0.2

module/spring-boot-http-converter/src/main/java/org/springframework/boot/http/converter/autoconfigure/HttpMessageConverters.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,16 @@
2020
import java.util.Arrays;
2121
import java.util.Collection;
2222
import java.util.Collections;
23-
import java.util.HashMap;
2423
import java.util.Iterator;
2524
import java.util.List;
26-
import java.util.Map;
2725

2826
import org.springframework.http.converter.HttpMessageConverter;
2927
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
3028
import org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter;
3129
import org.springframework.util.ClassUtils;
30+
import org.springframework.util.CollectionUtils;
31+
import org.springframework.util.LinkedMultiValueMap;
32+
import org.springframework.util.MultiValueMap;
3233
import org.springframework.web.client.RestTemplate;
3334
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
3435

@@ -64,13 +65,16 @@ public class HttpMessageConverters implements Iterable<HttpMessageConverter<?>>
6465
NON_REPLACING_CONVERTERS = Collections.unmodifiableList(nonReplacingConverters);
6566
}
6667

67-
private static final Map<Class<?>, Class<?>> EQUIVALENT_CONVERTERS;
68+
private static final MultiValueMap<Class<?>, Class<?>> EQUIVALENT_CONVERTERS;
6869

6970
static {
70-
Map<Class<?>, Class<?>> equivalentConverters = new HashMap<>();
71+
MultiValueMap<Class<?>, Class<?>> equivalentConverters = new LinkedMultiValueMap<>();
72+
putIfExists(equivalentConverters, "org.springframework.http.converter.json.JacksonJsonHttpMessageConverter",
73+
"org.springframework.http.converter.json.MappingJackson2HttpMessageConverter",
74+
"org.springframework.http.converter.json.GsonHttpMessageConverter");
7175
putIfExists(equivalentConverters, "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter",
7276
"org.springframework.http.converter.json.GsonHttpMessageConverter");
73-
EQUIVALENT_CONVERTERS = Collections.unmodifiableMap(equivalentConverters);
77+
EQUIVALENT_CONVERTERS = CollectionUtils.unmodifiableMultiValueMap(equivalentConverters);
7478
}
7579

7680
private final List<HttpMessageConverter<?>> converters;
@@ -146,8 +150,10 @@ private boolean isReplacement(HttpMessageConverter<?> defaultConverter, HttpMess
146150
if (ClassUtils.isAssignableValue(converterClass, candidate)) {
147151
return true;
148152
}
149-
Class<?> equivalentClass = EQUIVALENT_CONVERTERS.get(converterClass);
150-
return equivalentClass != null && ClassUtils.isAssignableValue(equivalentClass, candidate);
153+
List<Class<?>> equivalentClasses = EQUIVALENT_CONVERTERS.get(converterClass);
154+
return (equivalentClasses != null) && equivalentClasses.stream()
155+
.anyMatch((equivalentClass) -> equivalentClass != null
156+
&& ClassUtils.isAssignableValue(equivalentClass, candidate));
151157
}
152158

153159
private void configurePartConverters(AllEncompassingFormHttpMessageConverter formConverter,
@@ -236,12 +242,15 @@ private static void addClassIfExists(List<Class<?>> list, String className) {
236242
}
237243
}
238244

239-
private static void putIfExists(Map<Class<?>, Class<?>> map, String keyClassName, String valueClassName) {
240-
try {
241-
map.put(Class.forName(keyClassName), Class.forName(valueClassName));
242-
}
243-
catch (ClassNotFoundException | NoClassDefFoundError ex) {
244-
// Ignore
245+
private static void putIfExists(MultiValueMap<Class<?>, Class<?>> map, String keyClassName,
246+
String... valueClassNames) {
247+
for (String valueClassName : valueClassNames) {
248+
try {
249+
map.add(Class.forName(keyClassName), Class.forName(valueClassName));
250+
}
251+
catch (ClassNotFoundException | NoClassDefFoundError ex) {
252+
// Ignore
253+
}
245254
}
246255
}
247256

module/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/autoconfigure/WebFluxAutoConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -391,9 +391,9 @@ WebSessionManager webSessionManager(ObjectProvider<WebSessionIdResolver> webSess
391391
}
392392

393393
@Override
394-
@ConditionalOnMissingBean(name = "mvcApiVersionStrategy")
395-
public @Nullable ApiVersionStrategy mvcApiVersionStrategy() {
396-
return super.mvcApiVersionStrategy();
394+
@ConditionalOnMissingBean(name = "webFluxApiVersionStrategy")
395+
public @Nullable ApiVersionStrategy webFluxApiVersionStrategy() {
396+
return super.webFluxApiVersionStrategy();
397397
}
398398

399399
}

module/spring-boot-webflux/src/test/java/org/springframework/boot/webflux/autoconfigure/WebFluxAutoConfigurationTests.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,7 @@ void apiVersionPropertiesAreApplied() {
807807
"spring.webflux.apiversion.required=true", "spring.webflux.apiversion.supported=123,456",
808808
"spring.webflux.apiversion.detect-supported=false")
809809
.run((context) -> {
810-
DefaultApiVersionStrategy versionStrategy = context.getBean("mvcApiVersionStrategy",
810+
DefaultApiVersionStrategy versionStrategy = context.getBean("webFluxApiVersionStrategy",
811811
DefaultApiVersionStrategy.class);
812812
MockServerWebExchange request = MockServerWebExchange
813813
.from(MockServerHttpRequest.get("https://example.com"));
@@ -826,7 +826,7 @@ void apiVersionDefaultVersionPropertyIsApplied() {
826826
.withPropertyValues("spring.webflux.apiversion.use.header=version",
827827
"spring.webflux.apiversion.default=1.0.0")
828828
.run((context) -> {
829-
DefaultApiVersionStrategy versionStrategy = context.getBean("mvcApiVersionStrategy",
829+
DefaultApiVersionStrategy versionStrategy = context.getBean("webFluxApiVersionStrategy",
830830
DefaultApiVersionStrategy.class);
831831
MockServerWebExchange request = MockServerWebExchange
832832
.from(MockServerHttpRequest.get("https://example.com"));
@@ -841,7 +841,7 @@ void apiVersionDefaultVersionPropertyIsApplied() {
841841
@Test
842842
void apiVersionUseHeaderPropertyIsApplied() {
843843
this.contextRunner.withPropertyValues("spring.webflux.apiversion.use.header=hv").run((context) -> {
844-
DefaultApiVersionStrategy versionStrategy = context.getBean("mvcApiVersionStrategy",
844+
DefaultApiVersionStrategy versionStrategy = context.getBean("webFluxApiVersionStrategy",
845845
DefaultApiVersionStrategy.class);
846846
MockServerWebExchange request = MockServerWebExchange
847847
.from(MockServerHttpRequest.get("https://example.com").header("hv", "123"));
@@ -852,7 +852,7 @@ void apiVersionUseHeaderPropertyIsApplied() {
852852
@Test
853853
void apiVersionUseRequestParameterPropertyIsApplied() {
854854
this.contextRunner.withPropertyValues("spring.webflux.apiversion.use.request-parameter=rpv").run((context) -> {
855-
DefaultApiVersionStrategy versionStrategy = context.getBean("mvcApiVersionStrategy",
855+
DefaultApiVersionStrategy versionStrategy = context.getBean("webFluxApiVersionStrategy",
856856
DefaultApiVersionStrategy.class);
857857
MockServerWebExchange request = MockServerWebExchange
858858
.from(MockServerHttpRequest.get("https://example.com?rpv=123"));
@@ -863,7 +863,7 @@ void apiVersionUseRequestParameterPropertyIsApplied() {
863863
@Test
864864
void apiVersionUsePathSegmentPropertyIsApplied() {
865865
this.contextRunner.withPropertyValues("spring.webflux.apiversion.use.path-segment=1").run((context) -> {
866-
DefaultApiVersionStrategy versionStrategy = context.getBean("mvcApiVersionStrategy",
866+
DefaultApiVersionStrategy versionStrategy = context.getBean("webFluxApiVersionStrategy",
867867
DefaultApiVersionStrategy.class);
868868
MockServerWebExchange request = MockServerWebExchange
869869
.from(MockServerHttpRequest.get("https://example.com/test/123"));
@@ -876,7 +876,7 @@ void apiVersionUseMediaTypeParameterPropertyIsApplied() {
876876
this.contextRunner
877877
.withPropertyValues("spring.webflux.apiversion.use.media-type-parameter[application/json]=mtpv")
878878
.run((context) -> {
879-
DefaultApiVersionStrategy versionStrategy = context.getBean("mvcApiVersionStrategy",
879+
DefaultApiVersionStrategy versionStrategy = context.getBean("webFluxApiVersionStrategy",
880880
DefaultApiVersionStrategy.class);
881881
MockServerWebExchange request = MockServerWebExchange
882882
.from(MockServerHttpRequest.get("https://example.com")
@@ -888,7 +888,7 @@ void apiVersionUseMediaTypeParameterPropertyIsApplied() {
888888
@Test
889889
void apiVersionBeansAreInjected() {
890890
this.contextRunner.withUserConfiguration(ApiVersionConfiguration.class).run((context) -> {
891-
DefaultApiVersionStrategy versionStrategy = context.getBean("mvcApiVersionStrategy",
891+
DefaultApiVersionStrategy versionStrategy = context.getBean("webFluxApiVersionStrategy",
892892
DefaultApiVersionStrategy.class);
893893
assertThat(versionStrategy).extracting("versionResolvers")
894894
.asInstanceOf(InstanceOfAssertFactories.LIST)

0 commit comments

Comments
 (0)