diff --git a/config/src/main/java/org/springframework/security/config/annotation/method/configuration/DeferringMethodInterceptor.java b/config/src/main/java/org/springframework/security/config/annotation/method/configuration/DeferringMethodInterceptor.java index e1914546f01..36af5a4edf5 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/method/configuration/DeferringMethodInterceptor.java +++ b/config/src/main/java/org/springframework/security/config/annotation/method/configuration/DeferringMethodInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 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. @@ -20,10 +20,10 @@ import org.aopalliance.aop.Advice; import org.aopalliance.intercept.MethodInvocation; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.springframework.aop.Pointcut; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import org.springframework.security.authorization.method.AuthorizationAdvisor; import org.springframework.util.function.SingletonSupplier; @@ -40,7 +40,7 @@ final class DeferringMethodInterceptor implement @Nullable @Override - public Object invoke(@NotNull MethodInvocation invocation) throws Throwable { + public Object invoke(@NonNull MethodInvocation invocation) throws Throwable { return this.delegate.get().invoke(invocation); } diff --git a/config/src/main/java/org/springframework/security/config/annotation/method/configuration/MethodSecurityAdvisorRegistrar.java b/config/src/main/java/org/springframework/security/config/annotation/method/configuration/MethodSecurityAdvisorRegistrar.java index ef8c9a1cd3b..15dd23c527c 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/method/configuration/MethodSecurityAdvisorRegistrar.java +++ b/config/src/main/java/org/springframework/security/config/annotation/method/configuration/MethodSecurityAdvisorRegistrar.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2025 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. @@ -19,8 +19,6 @@ import org.aopalliance.aop.Advice; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.springframework.aop.Advisor; import org.springframework.aop.Pointcut; @@ -33,6 +31,8 @@ import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.core.Ordered; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import org.springframework.security.authorization.method.AuthorizationAdvisor; class MethodSecurityAdvisorRegistrar implements ImportBeanDefinitionRegistrar { @@ -100,7 +100,7 @@ public int getOrder() { @Nullable @Override - public Object invoke(@NotNull MethodInvocation invocation) throws Throwable { + public Object invoke(@NonNull MethodInvocation invocation) throws Throwable { return this.advisor.invoke(invocation); } diff --git a/config/src/main/java/org/springframework/security/config/web/PathPatternRequestMatcherBuilderFactoryBean.java b/config/src/main/java/org/springframework/security/config/web/PathPatternRequestMatcherBuilderFactoryBean.java index 391b991747f..4c7d3b89a10 100644 --- a/config/src/main/java/org/springframework/security/config/web/PathPatternRequestMatcherBuilderFactoryBean.java +++ b/config/src/main/java/org/springframework/security/config/web/PathPatternRequestMatcherBuilderFactoryBean.java @@ -16,8 +16,6 @@ package org.springframework.security.config.web; -import reactor.util.annotation.NonNull; - import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; @@ -27,6 +25,7 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import org.springframework.lang.NonNull; import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer; import org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher; import org.springframework.web.util.pattern.PathPatternParser; diff --git a/config/src/main/java/org/springframework/security/config/web/server/OAuth2ErrorEncoder.java b/config/src/main/java/org/springframework/security/config/web/server/OAuth2ErrorEncoder.java index 784782344cf..a75b8156006 100644 --- a/config/src/main/java/org/springframework/security/config/web/server/OAuth2ErrorEncoder.java +++ b/config/src/main/java/org/springframework/security/config/web/server/OAuth2ErrorEncoder.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 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. @@ -21,7 +21,6 @@ import java.util.List; import java.util.Map; -import org.jetbrains.annotations.NotNull; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -34,6 +33,7 @@ import org.springframework.http.MediaType; import org.springframework.http.codec.HttpMessageEncoder; import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.lang.NonNull; import org.springframework.security.oauth2.core.OAuth2Error; import org.springframework.util.MimeType; @@ -41,7 +41,7 @@ class OAuth2ErrorEncoder implements HttpMessageEncoder { private final HttpMessageConverter messageConverter = HttpMessageConverters.getJsonMessageConverter(); - @NotNull + @NonNull @Override public List getStreamingMediaTypes() { return List.of(); @@ -52,7 +52,7 @@ public boolean canEncode(ResolvableType elementType, MimeType mimeType) { return getEncodableMimeTypes().contains(mimeType); } - @NotNull + @NonNull @Override public Flux encode(Publisher error, DataBufferFactory bufferFactory, ResolvableType elementType, MimeType mimeType, Map hints) { @@ -68,7 +68,7 @@ public Flux encode(Publisher error, DataBuffe }).map(bufferFactory::wrap).flux(); } - @NotNull + @NonNull @Override public List getEncodableMimeTypes() { return List.of(MediaType.APPLICATION_JSON); @@ -78,13 +78,13 @@ private static class ByteArrayHttpOutputMessage implements HttpOutputMessage { private final ByteArrayOutputStream body = new ByteArrayOutputStream(); - @NotNull + @NonNull @Override public ByteArrayOutputStream getBody() { return this.body; } - @NotNull + @NonNull @Override public HttpHeaders getHeaders() { return new HttpHeaders(); diff --git a/config/src/test/java/org/springframework/security/config/annotation/web/reactive/WebFluxSecurityConfigurationTests.java b/config/src/test/java/org/springframework/security/config/annotation/web/reactive/WebFluxSecurityConfigurationTests.java index 2bb526c963a..f0bd77b69e5 100644 --- a/config/src/test/java/org/springframework/security/config/annotation/web/reactive/WebFluxSecurityConfigurationTests.java +++ b/config/src/test/java/org/springframework/security/config/annotation/web/reactive/WebFluxSecurityConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 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. @@ -18,7 +18,6 @@ import java.util.Collections; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import reactor.core.publisher.Mono; @@ -26,6 +25,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; +import org.springframework.lang.NonNull; import org.springframework.mock.http.server.reactive.MockServerHttpRequest; import org.springframework.mock.web.server.MockServerWebExchange; import org.springframework.security.config.test.SpringTestContext; @@ -109,7 +109,7 @@ public void loadConfigWhenBeanProxyingEnabledAndSubclassThenWebFilterChainProxyE assertThat(webFilterChainProxy).isNotNull(); } - private static @NotNull DefaultWebFilterChain emptyChain() { + private static @NonNull DefaultWebFilterChain emptyChain() { return new DefaultWebFilterChain((webExchange) -> Mono.empty(), Collections.emptyList()); } diff --git a/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java b/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java index 10927906ea1..68664ddfcf7 100644 --- a/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java +++ b/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java @@ -45,7 +45,6 @@ import jakarta.servlet.http.HttpServletResponseWrapper; import org.apache.http.HttpStatus; import org.assertj.core.api.iterable.Extractor; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.stubbing.Answer; @@ -55,6 +54,7 @@ import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.parsing.BeanDefinitionParsingException; +import org.springframework.lang.NonNull; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockHttpSession; @@ -908,17 +908,17 @@ private List getFilters(String url) { return proxy.getFilters(url); } - @NotNull + @NonNull private static RequestPostProcessor userCredentials() { return httpBasic("user", "password"); } - @NotNull + @NonNull private static RequestPostProcessor adminCredentials() { return httpBasic("admin", "password"); } - @NotNull + @NonNull private static RequestPostProcessor postCredentials() { return httpBasic("poster", "password"); } diff --git a/config/src/test/java/org/springframework/security/config/method/MethodSecurityBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/method/MethodSecurityBeanDefinitionParserTests.java index 2628961622e..7cd2ba4fd79 100644 --- a/config/src/test/java/org/springframework/security/config/method/MethodSecurityBeanDefinitionParserTests.java +++ b/config/src/test/java/org/springframework/security/config/method/MethodSecurityBeanDefinitionParserTests.java @@ -24,12 +24,12 @@ import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.AnnotationConfigurationException; +import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.PermissionEvaluator; @@ -474,7 +474,7 @@ static class MyAdvice implements MethodInterceptor { @Nullable @Override - public Object invoke(@NotNull MethodInvocation invocation) { + public Object invoke(@NonNull MethodInvocation invocation) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if ("bob".equals(auth.getName())) { return "granted"; diff --git a/core/src/main/java/org/springframework/security/authentication/AuthenticationObservationConvention.java b/core/src/main/java/org/springframework/security/authentication/AuthenticationObservationConvention.java index 4d0b6c693da..54855a849f0 100644 --- a/core/src/main/java/org/springframework/security/authentication/AuthenticationObservationConvention.java +++ b/core/src/main/java/org/springframework/security/authentication/AuthenticationObservationConvention.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 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. @@ -21,7 +21,6 @@ import io.micrometer.common.KeyValues; import io.micrometer.observation.Observation; import io.micrometer.observation.ObservationConvention; -import org.jetbrains.annotations.NotNull; import org.springframework.lang.NonNull; @@ -63,7 +62,7 @@ public String getContextualName(AuthenticationObservationContext context) { /** * {@inheritDoc} */ - @NotNull + @NonNull @Override public KeyValues getLowCardinalityKeyValues(@NonNull AuthenticationObservationContext context) { return KeyValues.of("authentication.request.type", getAuthenticationType(context)) @@ -104,7 +103,7 @@ private String getAuthenticationFailureType(AuthenticationObservationContext con * {@inheritDoc} */ @Override - public boolean supportsContext(@NotNull Observation.Context context) { + public boolean supportsContext(@NonNull Observation.Context context) { return context instanceof AuthenticationObservationContext; } diff --git a/core/src/main/java/org/springframework/security/authorization/method/PostAuthorizeExpressionAttributeRegistry.java b/core/src/main/java/org/springframework/security/authorization/method/PostAuthorizeExpressionAttributeRegistry.java index 7dc96c106f7..58bbd6663fc 100644 --- a/core/src/main/java/org/springframework/security/authorization/method/PostAuthorizeExpressionAttributeRegistry.java +++ b/core/src/main/java/org/springframework/security/authorization/method/PostAuthorizeExpressionAttributeRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 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. @@ -20,10 +20,9 @@ import java.util.Arrays; import java.util.function.Function; -import reactor.util.annotation.NonNull; - import org.springframework.context.ApplicationContext; import org.springframework.expression.Expression; +import org.springframework.lang.NonNull; import org.springframework.security.access.prepost.PostAuthorize; import org.springframework.security.core.annotation.AnnotationTemplateExpressionDefaults; import org.springframework.security.core.annotation.SecurityAnnotationScanner; diff --git a/core/src/test/java/org/springframework/security/authorization/AuthorizationAdvisorProxyFactoryTests.java b/core/src/test/java/org/springframework/security/authorization/AuthorizationAdvisorProxyFactoryTests.java index 3babccf147d..b7211248ccb 100644 --- a/core/src/test/java/org/springframework/security/authorization/AuthorizationAdvisorProxyFactoryTests.java +++ b/core/src/test/java/org/springframework/security/authorization/AuthorizationAdvisorProxyFactoryTests.java @@ -36,11 +36,11 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; import org.springframework.aop.Pointcut; import org.springframework.core.annotation.AnnotationAwareOrderComparator; +import org.springframework.lang.NonNull; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.authentication.TestAuthentication; @@ -443,7 +443,7 @@ public String getLastName() { } @Override - public int compareTo(@NotNull User that) { + public int compareTo(@NonNull User that) { return this.id.compareTo(that.getId()); } @@ -453,7 +453,7 @@ static class UserRepository implements Iterable { List users = List.of(new User("1", "first", "last")); - @NotNull + @NonNull @Override public Iterator iterator() { return this.users.iterator(); diff --git a/core/src/test/java/org/springframework/security/authorization/ReactiveAuthorizationAdvisorProxyFactoryTests.java b/core/src/test/java/org/springframework/security/authorization/ReactiveAuthorizationAdvisorProxyFactoryTests.java index 901cae12519..d2e09cc9777 100644 --- a/core/src/test/java/org/springframework/security/authorization/ReactiveAuthorizationAdvisorProxyFactoryTests.java +++ b/core/src/test/java/org/springframework/security/authorization/ReactiveAuthorizationAdvisorProxyFactoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 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. @@ -19,13 +19,13 @@ import java.util.Iterator; import java.util.List; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import org.springframework.aop.Pointcut; +import org.springframework.lang.NonNull; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.authentication.TestAuthentication; @@ -193,7 +193,7 @@ public Mono getLastName() { } @Override - public int compareTo(@NotNull User that) { + public int compareTo(@NonNull User that) { return this.id.compareTo(that.getId()); } @@ -207,7 +207,7 @@ Flux findAll() { return Flux.fromIterable(this.users); } - @NotNull + @NonNull @Override public Iterator iterator() { return this.users.iterator(); diff --git a/etc/checkstyle/checkstyle.xml b/etc/checkstyle/checkstyle.xml index 297f8a84428..1ece40dc9d6 100644 --- a/etc/checkstyle/checkstyle.xml +++ b/etc/checkstyle/checkstyle.xml @@ -47,5 +47,10 @@ value="String.toUpperCase() should be String.toUpperCase(Locale.ROOT) or String.toUpperCase(Locale.ENGLISH)"/> + + + + + diff --git a/saml2/saml2-service-provider/src/opensaml4Test/java/org/springframework/security/saml2/provider/service/authentication/TestCustomOpenSaml4Objects.java b/saml2/saml2-service-provider/src/opensaml4Test/java/org/springframework/security/saml2/provider/service/authentication/TestCustomOpenSaml4Objects.java index 8c6a9bc6259..398a9349a06 100644 --- a/saml2/saml2-service-provider/src/opensaml4Test/java/org/springframework/security/saml2/provider/service/authentication/TestCustomOpenSaml4Objects.java +++ b/saml2/saml2-service-provider/src/opensaml4Test/java/org/springframework/security/saml2/provider/service/authentication/TestCustomOpenSaml4Objects.java @@ -19,7 +19,6 @@ import java.util.Collections; import java.util.List; -import javax.annotation.Nullable; import javax.xml.namespace.QName; import net.shibboleth.utilities.java.support.xml.ElementSupport; @@ -40,6 +39,7 @@ import org.w3c.dom.Element; import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import org.springframework.security.saml2.core.OpenSamlInitializationService; public final class TestCustomOpenSaml4Objects { diff --git a/saml2/saml2-service-provider/src/opensaml5Main/java/org/springframework/security/saml2/provider/service/authentication/OpenSaml5AuthenticationProvider.java b/saml2/saml2-service-provider/src/opensaml5Main/java/org/springframework/security/saml2/provider/service/authentication/OpenSaml5AuthenticationProvider.java index 6d49c6ef2f3..c7fda05a92b 100644 --- a/saml2/saml2-service-provider/src/opensaml5Main/java/org/springframework/security/saml2/provider/service/authentication/OpenSaml5AuthenticationProvider.java +++ b/saml2/saml2-service-provider/src/opensaml5Main/java/org/springframework/security/saml2/provider/service/authentication/OpenSaml5AuthenticationProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 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. @@ -25,8 +25,6 @@ import java.util.Map; import java.util.function.Consumer; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import javax.xml.namespace.QName; import org.opensaml.saml.common.assertion.AssertionValidationException; @@ -54,6 +52,7 @@ import org.springframework.core.convert.converter.Converter; import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import org.springframework.security.authentication.AbstractAuthenticationToken; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.core.Authentication; @@ -832,16 +831,16 @@ private ValidConditionValidator(QName name) { this.name = name; } - @Nonnull + @NonNull @Override public QName getServicedCondition() { return this.name; } - @Nonnull + @NonNull @Override - public ValidationResult validate(@Nonnull Condition condition, @Nonnull Assertion assertion, - @Nonnull ValidationContext context) { + public ValidationResult validate(@NonNull Condition condition, @NonNull Assertion assertion, + @NonNull ValidationContext context) { return ValidationResult.VALID; } @@ -859,9 +858,9 @@ private ValidSignatureAssertionValidator(@Nullable Collection