diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockFilterConfig.java b/spring-test/src/main/java/org/springframework/mock/web/MockFilterConfig.java index 4755b516835..5557276184f 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockFilterConfig.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockFilterConfig.java @@ -97,6 +97,7 @@ public class MockFilterConfig implements FilterConfig { } @Override + @Nullable public String getInitParameter(String name) { Assert.notNull(name, "Parameter name must not be null"); return this.initParameters.get(name); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java index 3486f5acd03..9a6c18f63ce 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java @@ -383,6 +383,7 @@ public class MockHttpServletRequest implements HttpServletRequest { // --------------------------------------------------------------------- @Override + @Nullable public Object getAttribute(String name) { checkActive(); return this.attributes.get(name); @@ -637,6 +638,7 @@ public class MockHttpServletRequest implements HttpServletRequest { } @Override + @Nullable public String[] getParameterValues(String name) { Assert.notNull(name, "Parameter name must not be null"); return this.parameters.get(name); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java index 167128dee16..7b10ea96ae3 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java @@ -148,6 +148,7 @@ public class MockHttpSession implements HttpSession { } @Override + @Nullable public Object getAttribute(String name) { assertIsValid(); Assert.notNull(name, "Attribute name must not be null"); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockMultipartHttpServletRequest.java b/spring-test/src/main/java/org/springframework/mock/web/MockMultipartHttpServletRequest.java index aaf0299dd78..d6c1afa84ab 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockMultipartHttpServletRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockMultipartHttpServletRequest.java @@ -96,6 +96,7 @@ public class MockMultipartHttpServletRequest extends MockHttpServletRequest impl } @Override + @Nullable public MultipartFile getFile(String name) { return this.multipartFiles.getFirst(name); } @@ -117,6 +118,7 @@ public class MockMultipartHttpServletRequest extends MockHttpServletRequest impl } @Override + @Nullable public String getMultipartContentType(String paramOrFileName) { MultipartFile file = getFile(paramOrFileName); if (file != null) { @@ -154,6 +156,7 @@ public class MockMultipartHttpServletRequest extends MockHttpServletRequest impl } @Override + @Nullable public HttpHeaders getMultipartHeaders(String paramOrFileName) { MultipartFile file = getFile(paramOrFileName); if (file != null) { diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockServletConfig.java b/spring-test/src/main/java/org/springframework/mock/web/MockServletConfig.java index 08b7d4826a3..9c75c2916a8 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockServletConfig.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockServletConfig.java @@ -93,6 +93,7 @@ public class MockServletConfig implements ServletConfig { } @Override + @Nullable public String getInitParameter(String name) { Assert.notNull(name, "Parameter name must not be null"); return this.initParameters.get(name); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java index a1b659b23a3..ce74242b50d 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java @@ -224,6 +224,7 @@ public class MockServletContext implements ServletContext { } @Override + @Nullable public ServletContext getContext(String contextPath) { if (this.contextPath.equals(contextPath)) { return this; @@ -376,6 +377,7 @@ public class MockServletContext implements ServletContext { } @Override + @Nullable public RequestDispatcher getNamedDispatcher(String path) { return this.namedRequestDispatchers.get(path); } @@ -465,6 +467,7 @@ public class MockServletContext implements ServletContext { } @Override + @Nullable public String getInitParameter(String name) { Assert.notNull(name, "Parameter name must not be null"); return this.initParameters.get(name); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockSessionCookieConfig.java b/spring-test/src/main/java/org/springframework/mock/web/MockSessionCookieConfig.java index 66b98a3fe34..28c80b522b8 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockSessionCookieConfig.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockSessionCookieConfig.java @@ -136,6 +136,7 @@ public class MockSessionCookieConfig implements SessionCookieConfig { } @Override + @Nullable public String getAttribute(String name) { return this.attributes.get(name); } diff --git a/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java b/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java index 7e1cf1b8ea6..5461e403043 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java @@ -569,6 +569,7 @@ public final class MockServerRequest implements ServerRequest { } @Override + @Nullable public InetSocketAddress host() { return delegate().getHost(); } diff --git a/spring-test/src/main/java/org/springframework/test/context/ApplicationContextFailureProcessor.java b/spring-test/src/main/java/org/springframework/test/context/ApplicationContextFailureProcessor.java index c001d0b601f..2b22556d9ae 100644 --- a/spring-test/src/main/java/org/springframework/test/context/ApplicationContextFailureProcessor.java +++ b/spring-test/src/main/java/org/springframework/test/context/ApplicationContextFailureProcessor.java @@ -17,6 +17,7 @@ package org.springframework.test.context; import org.springframework.context.ApplicationContext; +import org.springframework.lang.Nullable; /** * Strategy for components that process failures related to application contexts @@ -41,6 +42,6 @@ public interface ApplicationContextFailureProcessor { * @param context the application context that did not load successfully * @param exception the exception thrown while loading the application context */ - void processLoadFailure(ApplicationContext context, Throwable exception); + void processLoadFailure(ApplicationContext context, @Nullable Throwable exception); } diff --git a/spring-test/src/main/java/org/springframework/test/context/SmartContextLoader.java b/spring-test/src/main/java/org/springframework/test/context/SmartContextLoader.java index ccec852ce0c..38ba50c4f40 100644 --- a/spring-test/src/main/java/org/springframework/test/context/SmartContextLoader.java +++ b/spring-test/src/main/java/org/springframework/test/context/SmartContextLoader.java @@ -17,7 +17,6 @@ package org.springframework.test.context; import org.springframework.context.ApplicationContext; -import org.springframework.lang.Nullable; /** * Strategy interface for loading an {@link ApplicationContext} for an integration @@ -157,7 +156,7 @@ public interface SmartContextLoader extends ContextLoader { */ @Override @SuppressWarnings("deprecation") - default String[] processLocations(Class clazz, @Nullable String... locations) { + default String[] processLocations(Class clazz, String... locations) { throw new UnsupportedOperationException(""" SmartContextLoader does not support the ContextLoader SPI. \ Call processContextConfiguration(ContextConfigurationAttributes) instead."""); diff --git a/spring-test/src/main/java/org/springframework/test/context/hint/TestContextRuntimeHints.java b/spring-test/src/main/java/org/springframework/test/context/hint/TestContextRuntimeHints.java index 01d320c7a84..db1ec279770 100644 --- a/spring-test/src/main/java/org/springframework/test/context/hint/TestContextRuntimeHints.java +++ b/spring-test/src/main/java/org/springframework/test/context/hint/TestContextRuntimeHints.java @@ -26,6 +26,7 @@ import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.aot.hint.TypeHint; import org.springframework.aot.hint.TypeReference; +import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; /** @@ -39,7 +40,7 @@ import org.springframework.util.ClassUtils; class TestContextRuntimeHints implements RuntimeHintsRegistrar { @Override - public void registerHints(RuntimeHints runtimeHints, ClassLoader classLoader) { + public void registerHints(RuntimeHints runtimeHints, @Nullable ClassLoader classLoader) { boolean servletPresent = ClassUtils.isPresent("jakarta.servlet.Servlet", classLoader); boolean groovyPresent = ClassUtils.isPresent("groovy.lang.Closure", classLoader); diff --git a/spring-test/src/main/java/org/springframework/test/context/support/DynamicValuesPropertySource.java b/spring-test/src/main/java/org/springframework/test/context/support/DynamicValuesPropertySource.java index 66420036131..b87662215f4 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/DynamicValuesPropertySource.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/DynamicValuesPropertySource.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.function.Supplier; import org.springframework.core.env.MapPropertySource; +import org.springframework.lang.Nullable; import org.springframework.util.function.SupplierUtils; /** @@ -38,6 +39,7 @@ class DynamicValuesPropertySource extends MapPropertySource { } @Override + @Nullable public Object getProperty(String name) { return SupplierUtils.resolve(super.getProperty(name)); } diff --git a/spring-test/src/main/java/org/springframework/test/context/support/TestPropertySourceUtils.java b/spring-test/src/main/java/org/springframework/test/context/support/TestPropertySourceUtils.java index 7cf10ab174b..2e1c9d83382 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/TestPropertySourceUtils.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/TestPropertySourceUtils.java @@ -459,6 +459,7 @@ public abstract class TestPropertySourceUtils { private final LinkedHashMap map = new LinkedHashMap<>(); @Override + @Nullable public Object put(Object key, Object value) { if (key instanceof String str) { return this.map.put(str, value); diff --git a/spring-test/src/main/java/org/springframework/test/context/testng/AbstractTestNGSpringContextTests.java b/spring-test/src/main/java/org/springframework/test/context/testng/AbstractTestNGSpringContextTests.java index aa334031f18..c328f59a96b 100644 --- a/spring-test/src/main/java/org/springframework/test/context/testng/AbstractTestNGSpringContextTests.java +++ b/spring-test/src/main/java/org/springframework/test/context/testng/AbstractTestNGSpringContextTests.java @@ -198,6 +198,7 @@ public abstract class AbstractTestNGSpringContextTests implements IHookable, App } + @Nullable private Throwable getTestResultException(ITestResult testResult) { Throwable testResultException = testResult.getThrowable(); if (testResultException instanceof InvocationTargetException) { diff --git a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java index 99a0a4ae559..0114800545e 100644 --- a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java @@ -155,6 +155,7 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis protected final TransactionAttributeSource attributeSource = new AnnotationTransactionAttributeSource(false) { @Override + @Nullable protected TransactionAttribute findTransactionAttribute(Class clazz) { // @Transactional present in inheritance hierarchy? TransactionAttribute result = super.findTransactionAttribute(clazz); diff --git a/spring-test/src/main/java/org/springframework/test/web/client/response/ExecutingResponseCreator.java b/spring-test/src/main/java/org/springframework/test/web/client/response/ExecutingResponseCreator.java index 6035f368f56..cbaa820b92f 100644 --- a/spring-test/src/main/java/org/springframework/test/web/client/response/ExecutingResponseCreator.java +++ b/spring-test/src/main/java/org/springframework/test/web/client/response/ExecutingResponseCreator.java @@ -21,6 +21,7 @@ import java.io.IOException; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.ClientHttpResponse; +import org.springframework.lang.Nullable; import org.springframework.mock.http.client.MockClientHttpRequest; import org.springframework.test.web.client.ResponseCreator; import org.springframework.util.Assert; @@ -59,7 +60,7 @@ public class ExecutingResponseCreator implements ResponseCreator { @Override - public ClientHttpResponse createResponse(ClientHttpRequest request) throws IOException { + public ClientHttpResponse createResponse(@Nullable ClientHttpRequest request) throws IOException { Assert.state(request instanceof MockClientHttpRequest, "Expected a MockClientHttpRequest"); MockClientHttpRequest mockRequest = (MockClientHttpRequest) request; ClientHttpRequest newRequest = this.requestFactory.createRequest(mockRequest.getURI(), mockRequest.getMethod()); diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java b/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java index 5a6f5853377..02db2d58fbf 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java @@ -127,7 +127,7 @@ class DefaultMvcResult implements MvcResult { return RequestContextUtils.getOutputFlashMap(this.mockRequest); } - public void setAsyncResult(Object asyncResult) { + public void setAsyncResult(@Nullable Object asyncResult) { this.asyncResult.set(asyncResult); } diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/TestDispatcherServlet.java b/spring-test/src/main/java/org/springframework/test/web/servlet/TestDispatcherServlet.java index 7956dae8a39..8b3b6d2d7b0 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/TestDispatcherServlet.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/TestDispatcherServlet.java @@ -98,7 +98,7 @@ final class TestDispatcherServlet extends DispatcherServlet { WebAsyncUtils.getAsyncManager(request).registerCallableInterceptor(KEY, new CallableProcessingInterceptor() { @Override - public void postProcess(NativeWebRequest r, Callable task, Object value) { + public void postProcess(NativeWebRequest r, Callable task, @Nullable Object value) { // We got the result, must also wait for the dispatch getMvcResult(request).setAsyncResult(value); } @@ -107,7 +107,7 @@ final class TestDispatcherServlet extends DispatcherServlet { WebAsyncUtils.getAsyncManager(request).registerDeferredResultInterceptor(KEY, new DeferredResultProcessingInterceptor() { @Override - public void postProcess(NativeWebRequest r, DeferredResult result, Object value) { + public void postProcess(NativeWebRequest r, DeferredResult result, @Nullable Object value) { getMvcResult(request).setAsyncResult(value); } }); @@ -118,6 +118,7 @@ final class TestDispatcherServlet extends DispatcherServlet { } @Override + @Nullable protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { HandlerExecutionChain chain = super.getHandler(request); if (chain != null) { @@ -138,6 +139,7 @@ final class TestDispatcherServlet extends DispatcherServlet { } @Override + @Nullable protected ModelAndView processHandlerException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) throws Exception { diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java index 3c3a7b68f10..4c370d5727b 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java @@ -451,6 +451,7 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable { } @Override + @Nullable public HttpSession getSession(boolean create) { HttpSession session = super.getSession(false); if (session == null && create) { diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StubWebApplicationContext.java b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StubWebApplicationContext.java index 183d7c0b192..8e8f6476b62 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StubWebApplicationContext.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/StubWebApplicationContext.java @@ -130,6 +130,7 @@ class StubWebApplicationContext implements WebApplicationContext { } @Override + @Nullable public ApplicationContext getParent() { return null; } @@ -218,11 +219,13 @@ class StubWebApplicationContext implements WebApplicationContext { } @Override + @Nullable public Class getType(String name) throws NoSuchBeanDefinitionException { return this.beanFactory.getType(name); } @Override + @Nullable public Class getType(String name, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException { return this.beanFactory.getType(name, allowFactoryBeanInit); } @@ -337,6 +340,7 @@ class StubWebApplicationContext implements WebApplicationContext { //--------------------------------------------------------------------- @Override + @Nullable public BeanFactory getParentBeanFactory() { return null; } @@ -352,6 +356,7 @@ class StubWebApplicationContext implements WebApplicationContext { //--------------------------------------------------------------------- @Override + @Nullable public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale) { return this.messageSource.getMessage(code, args, defaultMessage, locale); } diff --git a/spring-test/src/test/java/org/springframework/test/context/failures/TrackingApplicationContextFailureProcessor.java b/spring-test/src/test/java/org/springframework/test/context/failures/TrackingApplicationContextFailureProcessor.java index 09e729f2e72..9b97c17a4b1 100644 --- a/spring-test/src/test/java/org/springframework/test/context/failures/TrackingApplicationContextFailureProcessor.java +++ b/spring-test/src/test/java/org/springframework/test/context/failures/TrackingApplicationContextFailureProcessor.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.List; import org.springframework.context.ApplicationContext; +import org.springframework.lang.Nullable; import org.springframework.test.context.ApplicationContextFailureProcessor; /** @@ -37,10 +38,10 @@ public class TrackingApplicationContextFailureProcessor implements ApplicationCo @Override - public void processLoadFailure(ApplicationContext context, Throwable exception) { + public void processLoadFailure(ApplicationContext context, @Nullable Throwable exception) { loadFailures.add(new LoadFailure(context, exception)); } - public record LoadFailure(ApplicationContext context, Throwable exception) {} + public record LoadFailure(ApplicationContext context, @Nullable Throwable exception) {} }