Merge branch '6.1.x'

This commit is contained in:
Stéphane Nicoll 2024-03-09 16:03:04 +01:00
commit e53ed3e3c6
21 changed files with 54 additions and 108 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -44,9 +44,6 @@ public class LockMixin extends DelegatingIntroductionInterceptor implements Lock
this.locked = false;
}
/**
* @see test.mixin.AopProxyTests.Lockable#locked()
*/
@Override
public boolean locked() {
return this.locked;
@ -54,10 +51,8 @@ public class LockMixin extends DelegatingIntroductionInterceptor implements Lock
/**
* Note that we need to override around advice.
* If the method is a setter and we're locked, prevent execution.
* Otherwise let super.invoke() handle it, and do normal
* Lockable(this) then target behaviour.
* @see org.aopalliance.MethodInterceptor#invoke(org.aopalliance.MethodInvocation)
* If the method is a setter, and we're locked, prevent execution.
* Otherwise, let super.invoke() handle it.
*/
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,10 +16,12 @@
package org.springframework.beans.factory.support;
import java.lang.reflect.Method;
import org.springframework.util.ClassUtils;
/**
* Descriptor for a {@link java.lang.reflect.Method Method} which holds a
* Descriptor for a {@link Method Method} which holds a
* reference to the method's {@linkplain #declaringClass declaring class},
* {@linkplain #methodName name}, and {@linkplain #parameterTypes parameter types}.
*
@ -34,8 +36,7 @@ record MethodDescriptor(Class<?> declaringClass, String methodName, Class<?>...
/**
* Create a {@link MethodDescriptor} for the supplied bean class and method name.
* <p>The supplied {@code methodName} may be a {@linkplain Method#getName()
* simple method name} or a
* {@linkplain org.springframework.util.ClassUtils#getQualifiedMethodName(Method)
* simple method name} or a {@linkplain ClassUtils#getQualifiedMethodName(Method)
* qualified method name}.
* <p>If the method name is fully qualified, this utility will parse the
* method name and its declaring class from the qualified method name and then

View File

@ -554,7 +554,7 @@ class ExtendedBeanInfoTests {
* IntrospectionException regarding a "type mismatch between indexed and non-indexed
* methods" intermittently (approximately one out of every four times) under JDK 7
* due to non-deterministic results from {@link Class#getDeclaredMethods()}.
* See https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7023180
* @see <a href="https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7023180">JDK-7023180</a>
* @see #cornerSpr9702()
*/
@Test

View File

@ -266,8 +266,8 @@ public final class BridgeMethodResolver {
/**
* Compare the signatures of the bridge method and the method which it bridges. If
* the parameter and return types are the same, it is a 'visibility' bridge method
* introduced in Java 6 to fix https://bugs.openjdk.org/browse/JDK-6342411.
* See also https://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html
* introduced in Java 6 to fix <a href="https://bugs.openjdk.org/browse/JDK-6342411">
* JDK-6342411</a>.
* @return whether signatures match as described
*/
public static boolean isVisibilityBridgeMethodPair(Method bridgeMethod, Method bridgedMethod) {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -39,7 +39,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Sam Brannen
* @since 5.3.24
* @see https://github.com/spring-projects/spring-framework/issues/20279
*/
@SuppressWarnings("unused")
class NestedRepeatableAnnotationsTests {

View File

@ -163,8 +163,8 @@ public class FunctionReference extends SpelNodeImpl {
/**
* Execute a function represented as {@link MethodHandle}.
* <p>Method types that take no arguments (fully bound handles or static methods
* with no parameters) can use {@link MethodHandle#invoke()} which is the most
* efficient. Otherwise, {@link MethodHandle#invokeWithArguments()} is used.
* with no parameters) can use {@link MethodHandle#invoke(Object...)} which is the most
* efficient. Otherwise, {@link MethodHandle#invokeWithArguments(Object...)} is used.
* @param state the expression evaluation state
* @param methodHandle the method handle to invoke
* @return the return value of the invoked Java method

View File

@ -37,11 +37,11 @@ import org.springframework.expression.spel.support.StandardEvaluationContext;
import static org.assertj.core.api.Assertions.assertThat;
///CLOVER:OFF
/**
* Spring Security scenarios from https://docs.spring.io/spring-security/reference/servlet/authorization/expression-based.html
* SpEL expression tests for Spring Security scenarios.
*
* @author Andy Clement
* @see <a href="https://docs.spring.io/spring-security/reference/servlet/authorization/authorize-http-requests.html#authorization-expressions">Expressing Authorization with SpEL</a>
*/
class ScenariosForSpringSecurityExpressionTests extends AbstractExpressionTests {

View File

@ -43,12 +43,7 @@ class H2DatabasePopulatorTests extends AbstractDatabasePopulatorTests {
return EmbeddedDatabaseType.H2;
}
/**
* https://jira.spring.io/browse/SPR-15896
*
* @since 5.0
*/
@Test
@Test // SPR-15896
void scriptWithH2Alias() {
databasePopulator.addScript(usersSchema());
databasePopulator.addScript(resource("db-test-data-h2-alias.sql"));
@ -61,12 +56,7 @@ class H2DatabasePopulatorTests extends AbstractDatabasePopulatorTests {
assertThat(jdbcTemplate.queryForObject(sql, String.class)).isEqualTo("maS");
}
/**
* https://github.com/spring-projects/spring-framework/issues/27008
*
* @since 5.3.11
*/
@Test
@Test // gh-27008
void automaticallyCommitsIfAutoCommitIsDisabled() throws Exception {
EmbeddedDatabase database = null;
try {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -130,8 +130,8 @@ public class SimpMessagingTemplate extends AbstractMessageSendingTemplate<String
* SimpMessageHeaderAccessor#DESTINATION_HEADER} then the message is sent without
* further changes.
* <p>If a destination header is not already present ,the message is sent
* to the configured {@link #setDefaultDestination(Object) defaultDestination}
* or an exception an {@code IllegalStateException} is raised if that isn't
* to the configured {@link AbstractMessageSendingTemplate#setDefaultDestination(Object)
* defaultDestination} or an {@code IllegalStateException} is raised if that isn't
* configured.
* @param message the message to send (never {@code null})
*/

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -49,7 +49,7 @@ import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass
*
* @author Sam Brannen
* @since 5.3.17
* @see https://github.com/spring-projects/spring-framework/issues/27757
* @see <a href="https://github.com/spring-projects/spring-framework/issues/27757">gh-27757</a>
*/
class DirtiesContextEventPublishingTests {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -50,7 +50,6 @@ import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass
*
* @author Sam Brannen
* @since 5.3.17
* @see https://github.com/spring-projects/spring-framework/issues/27757
*/
class EagerTestExecutionEventPublishingTests {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -39,7 +39,7 @@ import static org.springframework.test.transaction.TransactionAssert.assertThatT
*
* @author Sam Brannen
* @since 4.3
* @see org.springframework.test.context.transaction.PrimaryTransactionManagerTests
* @see org.springframework.test.context.transaction.manager.PrimaryTransactionManagerTests
*/
@SpringJUnitConfig
@DirtiesContext

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -30,12 +30,12 @@ import org.springframework.context.annotation.Configuration;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Integration tests for an issue raised in https://jira.spring.io/browse/SPR-15927.
* Integration tests for {@code SPR-15927}.
*
* @author Sam Brannen
* @since 5.0
*/
public class AutowiredRuleTests {
public class AutowiredRuleSpr15927Tests {
@ClassRule
public static final SpringClassRule springClassRule = new SpringClassRule();

View File

@ -327,10 +327,7 @@ class ContextLoaderUtilsContextHierarchyTests extends AbstractContextConfigurati
assertContextConfigEntriesAreNotUnique(SingleTestClassWithMultiLevelContextHierarchyWithDuplicatedContextConfig.class);
}
/**
* Used to reproduce bug reported in https://jira.spring.io/browse/SPR-10997
*/
@Test
@Test // SPR-10997
void buildContextHierarchyMapForTestClassHierarchyWithMultiLevelContextHierarchiesAndOverriddenInitializers() {
Map<String, List<ContextConfigurationAttributes>> map = buildContextHierarchyMap(TestClass2WithMultiLevelContextHierarchyWithOverriddenInitializers.class);
@ -504,32 +501,24 @@ class ContextLoaderUtilsContextHierarchyTests extends AbstractContextConfigurati
private static class SingleTestClassWithMultiLevelContextHierarchyWithDuplicatedContextConfig {
}
/**
* Used to reproduce bug reported in https://jira.spring.io/browse/SPR-10997
*/
@ContextHierarchy({//
//
@ContextConfiguration(name = "alpha", locations = "1-A.xml"),//
@ContextConfiguration(name = "beta", locations = "1-B.xml") //
})
}) // SPR-10997
private static class TestClass1WithMultiLevelContextHierarchyWithUniqueContextConfig {
}
/**
* Used to reproduce bug reported in https://jira.spring.io/browse/SPR-10997
*/
@ContextHierarchy({//
//
@ContextConfiguration(name = "alpha", initializers = DummyApplicationContextInitializer.class),//
@ContextConfiguration(name = "beta", initializers = DummyApplicationContextInitializer.class) //
})
}) // SPR-10997
private static class TestClass2WithMultiLevelContextHierarchyWithOverriddenInitializers extends
TestClass1WithMultiLevelContextHierarchyWithUniqueContextConfig {
}
/**
* Used to reproduce bug reported in https://jira.spring.io/browse/SPR-10997
*/
// SPR-10997
private static class DummyApplicationContextInitializer implements
ApplicationContextInitializer<ConfigurableApplicationContext> {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2020 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,6 +16,7 @@
package org.springframework.web.bind;
import jakarta.servlet.ServletRequest;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
@ -26,7 +27,8 @@ import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
/**
* Benchmarks for extracting parameters from {@libnk ServletRequest}.
* Benchmarks for extracting parameters from {@link ServletRequest}.
*
* @author Brian Clozel
*/
@BenchmarkMode(Mode.Throughput)

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -69,8 +69,7 @@ public abstract class AbstractListenerWriteProcessor<T> implements Processor<T,
/**
* Indicates we're waiting for one last isReady-onWritePossible cycle
* after "onComplete" because some Servlet containers expect this to take
* place prior to calling AsyncContext.complete().
* See https://github.com/eclipse-ee4j/servlet-api/issues/273
* place prior to calling AsyncContext.complete(). See also gh-273.
*/
private volatile boolean readyToCompleteAfterLastWrite;

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -31,7 +31,7 @@ import org.springframework.util.Assert;
* HTML 4.0 standard.
*
* <p>A complete description of the HTML 4.0 character set can be found
* at https://www.w3.org/TR/html4/charset.html.
* at <a href="https://www.w3.org/TR/html4/charset.html">https://www.w3.org/TR/html4/charset.html</a>.
*
* @author Juergen Hoeller
* @author Martin Kersten

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -29,7 +29,7 @@ import org.springframework.util.ClassUtils;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Web-related tests for {@link BeanUtilsRuntimeHints}.
* Web-related tests for {@link org.springframework.beans.BeanUtilsRuntimeHints}.
*
* @author Sebastien Deleuze
* @since 6.0.10

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -170,9 +170,8 @@ class UrlFilenameViewControllerTests {
/**
* This is the expected behavior, and it now has a test to prove it.
* https://opensource.atlassian.com/projects/spring/browse/SPR-2789
*/
@PathPatternsParameterizedTest
@PathPatternsParameterizedTest // SPR-2789
void nestedPathisUsedAsViewName_InBreakingChangeFromSpring12Line(
Function<String, MockHttpServletRequest> requestFactory) throws Exception {

View File

@ -355,10 +355,7 @@ public class ErrorsTagTests extends AbstractFormTagTests {
assertThat(getPageContext().getAttribute(ErrorsTag.MESSAGES_ATTRIBUTE)).isEqualTo(existingAttribute);
}
/**
* https://jira.spring.io/browse/SPR-2788
*/
@Test
@Test // SPR-2788
void asBodyTagWithErrorsAndExistingMessagesAttributeInNonPageScopeAreNotClobbered() throws Exception {
String existingAttribute = "something";
getPageContext().setAttribute(ErrorsTag.MESSAGES_ATTRIBUTE, existingAttribute, PageContext.APPLICATION_SCOPE);
@ -379,42 +376,27 @@ public class ErrorsTagTests extends AbstractFormTagTests {
assertThat(getPageContext().getAttribute(ErrorsTag.MESSAGES_ATTRIBUTE, PageContext.APPLICATION_SCOPE)).isEqualTo(existingAttribute);
}
/**
* https://jira.spring.io/browse/SPR-2788
*/
@Test
@Test // SPR-2788
void asBodyTagWithNoErrorsAndExistingMessagesAttributeInApplicationScopeAreNotClobbered() throws Exception {
assertWhenNoErrorsExistingMessagesInScopeAreNotClobbered(PageContext.APPLICATION_SCOPE);
}
/**
* https://jira.spring.io/browse/SPR-2788
*/
@Test
@Test // SPR-2788
void asBodyTagWithNoErrorsAndExistingMessagesAttributeInSessionScopeAreNotClobbered() throws Exception {
assertWhenNoErrorsExistingMessagesInScopeAreNotClobbered(PageContext.SESSION_SCOPE);
}
/**
* https://jira.spring.io/browse/SPR-2788
*/
@Test
@Test // SPR-2788
void asBodyTagWithNoErrorsAndExistingMessagesAttributeInPageScopeAreNotClobbered() throws Exception {
assertWhenNoErrorsExistingMessagesInScopeAreNotClobbered(PageContext.PAGE_SCOPE);
}
/**
* https://jira.spring.io/browse/SPR-2788
*/
@Test
@Test // SPR-2788
void asBodyTagWithNoErrorsAndExistingMessagesAttributeInRequestScopeAreNotClobbered() throws Exception {
assertWhenNoErrorsExistingMessagesInScopeAreNotClobbered(PageContext.REQUEST_SCOPE);
}
/**
* https://jira.spring.io/browse/SPR-4005
*/
@Test
@Test // SPR-4005
void omittedPathMatchesObjectErrorsOnly() throws Exception {
this.tag.setPath(null);
Errors errors = new BeanPropertyBindingResult(new TestBean(), "COMMAND_NAME");

View File

@ -31,10 +31,7 @@ import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException
*/
class PasswordInputTagTests extends InputTagTests {
/**
* https://jira.spring.io/browse/SPR-2866
*/
@Test
@Test // SPR-2866
void passwordValueIsNotRenderedByDefault() throws Exception {
this.getTag().setPath("name");
@ -48,10 +45,7 @@ class PasswordInputTagTests extends InputTagTests {
assertValueAttribute(output, "");
}
/**
* https://jira.spring.io/browse/SPR-2866
*/
@Test
@Test // SPR-2866
void passwordValueIsRenderedIfShowPasswordAttributeIsSetToTrue() throws Exception {
this.getTag().setPath("name");
this.getPasswordTag().setShowPassword(true);
@ -66,10 +60,7 @@ class PasswordInputTagTests extends InputTagTests {
assertValueAttribute(output, "Rob");
}
/**
* https://jira.spring.io/browse/SPR-2866
*/
@Test
@Test // >SPR-2866
void passwordValueIsNotRenderedIfShowPasswordAttributeIsSetToFalse() throws Exception {
this.getTag().setPath("name");
this.getPasswordTag().setShowPassword(false);