diff --git a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-servlet/localeresolver.adoc b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-servlet/localeresolver.adoc index fca88d447790..67ebebd5515c 100644 --- a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-servlet/localeresolver.adoc +++ b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-servlet/localeresolver.adoc @@ -83,4 +83,4 @@ that contain a parameter named `siteLanguage` now changes the locale. So, for ex a request for the URL `https://domain.com/home.view?siteLanguage=nl` changes the site language to Dutch. The following example shows how to intercept the locale: -include-code::./WebConfiguration[tag=snippet,indent=0] +include-code::./WebConfiguration[tag=snippet,indent=0,chomp=-tags] diff --git a/framework-docs/package.json b/framework-docs/package.json index 455c96232d9c..63574c16a9d0 100644 --- a/framework-docs/package.json +++ b/framework-docs/package.json @@ -1,11 +1,11 @@ { "dependencies": { - "antora": "3.2.0-alpha.4", - "@antora/atlas-extension": "1.0.0-alpha.2", - "@antora/collector-extension": "1.0.0-alpha.3", + "antora": "3.2.0-alpha.11", + "@antora/atlas-extension": "1.0.0-alpha.5", + "@antora/collector-extension": "1.0.2", "@asciidoctor/tabs": "1.0.0-beta.6", "@springio/antora-extensions": "1.14.7", "fast-xml-parser": "4.5.2", - "@springio/asciidoctor-extensions": "1.0.0-alpha.10" + "@springio/asciidoctor-extensions": "1.0.0-alpha.17" } } diff --git a/framework-docs/src/main/kotlin/org/springframework/docs/web/webmvc/mvcservlet/mvclocaleresolverinterceptor/WebConfiguration.kt b/framework-docs/src/main/kotlin/org/springframework/docs/web/webmvc/mvcservlet/mvclocaleresolverinterceptor/WebConfiguration.kt index b3f7806e3ce4..f42488c03101 100644 --- a/framework-docs/src/main/kotlin/org/springframework/docs/web/webmvc/mvcservlet/mvclocaleresolverinterceptor/WebConfiguration.kt +++ b/framework-docs/src/main/kotlin/org/springframework/docs/web/webmvc/mvcservlet/mvclocaleresolverinterceptor/WebConfiguration.kt @@ -37,7 +37,7 @@ class WebConfiguration { setInterceptors(LocaleChangeInterceptor().apply { paramName = "siteLanguage" }) - /* @chomp:line urlMap = mapOf("/**/*.view" to "someController") */urlMap = mapOf("/**/*.view" to "someController") + urlMap = mapOf("/**/*.view" to "someController") } } // end::snippet[] diff --git a/spring-core/src/main/java/org/springframework/core/ResolvableType.java b/spring-core/src/main/java/org/springframework/core/ResolvableType.java index cc4566002c53..04c628eef906 100644 --- a/spring-core/src/main/java/org/springframework/core/ResolvableType.java +++ b/spring-core/src/main/java/org/springframework/core/ResolvableType.java @@ -1479,11 +1479,8 @@ public static ResolvableType forType(@Nullable Type type) { * @see #forType(Type) */ public static ResolvableType forType(@Nullable Type type, @Nullable ResolvableType owner) { - VariableResolver variableResolver = null; - if (owner != null) { - variableResolver = owner.asVariableResolver(); - } - return forType(type, variableResolver); + return (owner == null ? forType(type, null, null) : + forType(type, owner.typeProvider, owner.asVariableResolver())); } /** diff --git a/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java b/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java index 104e059ceecd..8a688fd3e17b 100644 --- a/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java +++ b/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java @@ -1346,6 +1346,7 @@ void narrow() throws Exception { ResolvableType type = ResolvableType.forField(Fields.class.getField("stringList")); ResolvableType narrow = ResolvableType.forType(ArrayList.class, type); assertThat(narrow.getGeneric().resolve()).isEqualTo(String.class); + assertThat(type.getSource()).isSameAs(narrow.getSource()); } @Test diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java index 68c129a5dbde..d684c1a6d557 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java @@ -252,10 +252,10 @@ else if (targetClass != null && converter.canRead(targetClass, contentType)) { protected ResolvableType getNestedTypeIfNeeded(ResolvableType type) { ResolvableType genericType = type; if (Optional.class.isAssignableFrom(genericType.toClass())) { - genericType = genericType.getNested(2); + genericType = ResolvableType.forType(genericType.getNested(2).getType(), type); } if (HttpEntity.class.isAssignableFrom(genericType.toClass())) { - genericType = genericType.getNested(2); + genericType = ResolvableType.forType(genericType.getNested(2).getType(), type); } return genericType; } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorTests.java index 24129f821c68..f8db0789b9f0 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorTests.java @@ -30,7 +30,6 @@ import jakarta.servlet.http.HttpServletResponse; import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.core.MethodParameter; @@ -152,7 +151,6 @@ void resolveGenericArgument() throws Exception { } @Test - @Disabled("Determine why this fails with JacksonJsonHttpMessageConverter but passes with MappingJackson2HttpMessageConverter") void resolveArgumentTypeVariable() throws Exception { Method method = MySimpleParameterizedController.class.getMethod("handleDto", HttpEntity.class); HandlerMethod handlerMethod = new HandlerMethod(new MySimpleParameterizedController(), method);