Merge branch '5.3.x'

# Conflicts:
#	build.gradle
#	spring-web/src/main/java/org/springframework/web/server/MediaTypeNotSupportedStatusException.java
#	spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java
#	spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java
This commit is contained in:
Juergen Hoeller 2021-12-03 22:42:05 +01:00
commit 7f43128a0e
11 changed files with 32 additions and 23 deletions

View File

@ -64,8 +64,8 @@ configure(allprojects) { project ->
entry 'groovy-xml' entry 'groovy-xml'
} }
dependency "io.reactivex.rxjava3:rxjava:3.1.2" dependency "io.reactivex.rxjava3:rxjava:3.1.3"
dependency "io.smallrye.reactive:mutiny:1.1.1" dependency "io.smallrye.reactive:mutiny:1.2.0"
dependency "io.projectreactor.tools:blockhound:1.0.6.RELEASE" dependency "io.projectreactor.tools:blockhound:1.0.6.RELEASE"
dependency "com.fasterxml:aalto-xml:1.3.0" dependency "com.fasterxml:aalto-xml:1.3.0"
@ -117,18 +117,18 @@ configure(allprojects) { project ->
dependency "org.webjars:webjars-locator-core:0.48" dependency "org.webjars:webjars-locator-core:0.48"
dependency "org.webjars:underscorejs:1.8.3" dependency "org.webjars:underscorejs:1.8.3"
dependencySet(group: 'org.apache.tomcat', version: '10.0.12') { dependencySet(group: 'org.apache.tomcat', version: '10.0.13') {
entry 'tomcat-util' entry 'tomcat-util'
entry('tomcat-websocket') { entry('tomcat-websocket') {
exclude group: "org.apache.tomcat", name: "tomcat-servlet-api" exclude group: "org.apache.tomcat", name: "tomcat-servlet-api"
exclude group: "org.apache.tomcat", name: "tomcat-websocket-api" exclude group: "org.apache.tomcat", name: "tomcat-websocket-api"
} }
} }
dependencySet(group: 'org.apache.tomcat.embed', version: '10.0.12') { dependencySet(group: 'org.apache.tomcat.embed', version: '10.0.13') {
entry 'tomcat-embed-core' entry 'tomcat-embed-core'
entry 'tomcat-embed-websocket' entry 'tomcat-embed-websocket'
} }
dependencySet(group: 'io.undertow', version: '2.2.12.Final') { dependencySet(group: 'io.undertow', version: '2.2.13.Final') {
entry 'undertow-core' entry 'undertow-core'
entry 'undertow-servlet-jakartaee9' entry 'undertow-servlet-jakartaee9'
entry 'undertow-websockets-jsr-jakartaee9' entry 'undertow-websockets-jsr-jakartaee9'
@ -148,7 +148,7 @@ configure(allprojects) { project ->
dependency 'org.apache.httpcomponents.core5:httpcore5-reactive:5.1.1' dependency 'org.apache.httpcomponents.core5:httpcore5-reactive:5.1.1'
dependency "org.eclipse.jetty:jetty-reactive-httpclient:3.0.4" dependency "org.eclipse.jetty:jetty-reactive-httpclient:3.0.4"
dependency "org.jruby:jruby:9.3.1.0" dependency "org.jruby:jruby:9.3.2.0"
dependency "org.python:jython-standalone:2.7.1" dependency "org.python:jython-standalone:2.7.1"
dependency "org.mozilla:rhino:1.7.11" dependency "org.mozilla:rhino:1.7.11"
@ -188,10 +188,10 @@ configure(allprojects) { project ->
} }
dependency "io.mockk:mockk:1.12.0" dependency "io.mockk:mockk:1.12.0"
dependency("net.sourceforge.htmlunit:htmlunit:2.54.0") { dependency("net.sourceforge.htmlunit:htmlunit:2.55.0") {
exclude group: "commons-logging", name: "commons-logging" exclude group: "commons-logging", name: "commons-logging"
} }
dependency("org.seleniumhq.selenium:htmlunit-driver:2.54.0") { dependency("org.seleniumhq.selenium:htmlunit-driver:2.55.0") {
exclude group: "commons-logging", name: "commons-logging" exclude group: "commons-logging", name: "commons-logging"
} }
dependency("org.seleniumhq.selenium:selenium-java:3.141.59") { dependency("org.seleniumhq.selenium:selenium-java:3.141.59") {
@ -302,7 +302,7 @@ configure([rootProject] + javaProjects) { project ->
} }
checkstyle { checkstyle {
toolVersion = "9.0" toolVersion = "9.2"
configDirectory.set(rootProject.file("src/checkstyle")) configDirectory.set(rootProject.file("src/checkstyle"))
} }

View File

@ -214,6 +214,7 @@ public interface BeanFactory {
/** /**
* Return a provider for the specified bean, allowing for lazy on-demand retrieval * Return a provider for the specified bean, allowing for lazy on-demand retrieval
* of instances, including availability and uniqueness options. * of instances, including availability and uniqueness options.
* <p>For matching a generic type, consider {@link #getBeanProvider(ResolvableType)}.
* @param requiredType type the bean must match; can be an interface or superclass * @param requiredType type the bean must match; can be an interface or superclass
* @return a corresponding provider handle * @return a corresponding provider handle
* @since 5.1 * @since 5.1
@ -223,13 +224,20 @@ public interface BeanFactory {
/** /**
* Return a provider for the specified bean, allowing for lazy on-demand retrieval * Return a provider for the specified bean, allowing for lazy on-demand retrieval
* of instances, including availability and uniqueness options. * of instances, including availability and uniqueness options. This variant allows
* @param requiredType type the bean must match; can be a generic type declaration. * for specifying a generic type to match, similar to reflective injection points
* Note that collection types are not supported here, in contrast to reflective * with generic type declarations in method/constructor parameters.
* <p>Note that collections of beans are not supported here, in contrast to reflective
* injection points. For programmatically retrieving a list of beans matching a * injection points. For programmatically retrieving a list of beans matching a
* specific type, specify the actual bean type as an argument here and subsequently * specific type, specify the actual bean type as an argument here and subsequently
* use {@link ObjectProvider#orderedStream()} or its lazy streaming/iteration options. * use {@link ObjectProvider#orderedStream()} or its lazy streaming/iteration options.
* <p>Also, generics matching is strict here, as per the Java assignment rules.
* For lenient fallback matching with unchecked semantics (similar to the ´unchecked´
* Java compiler warning), consider calling {@link #getBeanProvider(Class)} with the
* raw type as a second step if no full generic match is
* {@link ObjectProvider#getIfAvailable() available} with this variant.
* @return a corresponding provider handle * @return a corresponding provider handle
* @param requiredType type the bean must match; can be a generic type declaration
* @since 5.1 * @since 5.1
* @see ObjectProvider#iterator() * @see ObjectProvider#iterator()
* @see ObjectProvider#stream() * @see ObjectProvider#stream()

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-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.
@ -79,7 +79,7 @@ public abstract class AbstractFallbackJCacheOperationSource implements JCacheOpe
@Nullable @Nullable
private JCacheOperation<?> computeCacheOperation(Method method, @Nullable Class<?> targetClass) { private JCacheOperation<?> computeCacheOperation(Method method, @Nullable Class<?> targetClass) {
// Don't allow no-public methods as required. // Don't allow non-public methods, as configured.
if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) { if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) {
return null; return null;
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-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.
@ -124,7 +124,7 @@ public abstract class AbstractFallbackCacheOperationSource implements CacheOpera
@Nullable @Nullable
private Collection<CacheOperation> computeCacheOperations(Method method, @Nullable Class<?> targetClass) { private Collection<CacheOperation> computeCacheOperations(Method method, @Nullable Class<?> targetClass) {
// Don't allow no-public methods as required. // Don't allow non-public methods, as configured.
if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) { if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) {
return null; return null;
} }

View File

@ -26,9 +26,7 @@ import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
/** /**
@ -65,7 +63,7 @@ import org.springframework.lang.Nullable;
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
implements FactoryBean<ExecutorService>, InitializingBean, DisposableBean { implements FactoryBean<ExecutorService> {
private int corePoolSize = 1; private int corePoolSize = 1;

View File

@ -194,7 +194,7 @@ public class ClassReader {
this.b = classFileBuffer; this.b = classFileBuffer;
// Check the class' major_version. This field is after the magic and minor_version fields, which // Check the class' major_version. This field is after the magic and minor_version fields, which
// use 4 and 2 bytes respectively. // use 4 and 2 bytes respectively.
if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V18) { if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V19) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Unsupported class file major version " + readShort(classFileOffset + 6)); "Unsupported class file major version " + readShort(classFileOffset + 6));
} }

View File

@ -283,6 +283,7 @@ public interface Opcodes {
int V16 = 0 << 16 | 60; int V16 = 0 << 16 | 60;
int V17 = 0 << 16 | 61; int V17 = 0 << 16 | 61;
int V18 = 0 << 16 | 62; int V18 = 0 << 16 | 62;
int V19 = 0 << 16 | 63;
/** /**
* Version flag indicating that the class is using 'preview' features. * Version flag indicating that the class is using 'preview' features.

View File

@ -197,7 +197,7 @@ public class ContentRequestMatchers {
* <li>{@link Resource} - content from a file * <li>{@link Resource} - content from a file
* <li>{@code byte[]} - other raw content * <li>{@code byte[]} - other raw content
* </ul> * </ul>
* <p><strong>Note:</strong> This method uses the Apache Commons File Upload * <p><strong>Note:</strong> This method uses the Apache Commons FileUpload
* library to parse the multipart data and it must be on the test classpath. * library to parse the multipart data and it must be on the test classpath.
* @param expectedMap the expected multipart values * @param expectedMap the expected multipart values
* @since 5.3 * @since 5.3

View File

@ -162,7 +162,7 @@ public abstract class AbstractFallbackTransactionAttributeSource
*/ */
@Nullable @Nullable
protected TransactionAttribute computeTransactionAttribute(Method method, @Nullable Class<?> targetClass) { protected TransactionAttribute computeTransactionAttribute(Method method, @Nullable Class<?> targetClass) {
// Don't allow no-public methods as required. // Don't allow non-public methods, as configured.
if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) { if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) {
return null; return null;
} }

View File

@ -122,6 +122,7 @@ public class TomcatRequestUpgradeStrategy implements RequestUpgradeStrategy {
} }
@SuppressWarnings("deprecation") // for old doUpgrade variant in Tomcat 9.0.55
@Override @Override
public Mono<Void> upgrade(ServerWebExchange exchange, WebSocketHandler handler, public Mono<Void> upgrade(ServerWebExchange exchange, WebSocketHandler handler,
@Nullable String subProtocol, Supplier<HandshakeInfo> handshakeInfoFactory){ @Nullable String subProtocol, Supplier<HandshakeInfo> handshakeInfoFactory){

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2017 the original author or authors. * Copyright 2002-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.
@ -52,6 +52,7 @@ public class TomcatRequestUpgradeStrategy extends AbstractStandardUpgradeStrateg
return new String[] {"13"}; return new String[] {"13"};
} }
@SuppressWarnings("deprecation") // for old doUpgrade variant in Tomcat 9.0.55
@Override @Override
public void upgradeInternal(ServerHttpRequest request, ServerHttpResponse response, public void upgradeInternal(ServerHttpRequest request, ServerHttpResponse response,
@Nullable String selectedProtocol, List<Extension> selectedExtensions, Endpoint endpoint) @Nullable String selectedProtocol, List<Extension> selectedExtensions, Endpoint endpoint)