Skip to content

Commit b328f8e

Browse files
committed
Switch to JSpecify annotations
Closes gh-17534 Signed-off-by: DingHao <[email protected]>
1 parent dadf4c0 commit b328f8e

18 files changed

+57
-66
lines changed

core/src/main/java/org/springframework/security/authentication/AuthenticationObservationConvention.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2024 the original author or authors.
2+
* Copyright 2002-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -21,9 +21,7 @@
2121
import io.micrometer.common.KeyValues;
2222
import io.micrometer.observation.Observation;
2323
import io.micrometer.observation.ObservationConvention;
24-
import org.jetbrains.annotations.NotNull;
25-
26-
import org.springframework.lang.NonNull;
24+
import org.jspecify.annotations.NonNull;
2725

2826
/**
2927
* An {@link ObservationConvention} for translating authentications into
@@ -63,7 +61,7 @@ public String getContextualName(AuthenticationObservationContext context) {
6361
/**
6462
* {@inheritDoc}
6563
*/
66-
@NotNull
64+
@NonNull
6765
@Override
6866
public KeyValues getLowCardinalityKeyValues(@NonNull AuthenticationObservationContext context) {
6967
return KeyValues.of("authentication.request.type", getAuthenticationType(context))
@@ -104,7 +102,7 @@ private String getAuthenticationFailureType(AuthenticationObservationContext con
104102
* {@inheritDoc}
105103
*/
106104
@Override
107-
public boolean supportsContext(@NotNull Observation.Context context) {
105+
public boolean supportsContext(Observation.@NonNull Context context) {
108106
return context instanceof AuthenticationObservationContext;
109107
}
110108

core/src/main/java/org/springframework/security/authentication/ott/InMemoryOneTimeTokenService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
import java.util.UUID;
2323
import java.util.concurrent.ConcurrentHashMap;
2424

25-
import org.springframework.lang.NonNull;
25+
import org.jspecify.annotations.NonNull;
26+
2627
import org.springframework.util.Assert;
2728

2829
/**
@@ -41,8 +42,7 @@ public final class InMemoryOneTimeTokenService implements OneTimeTokenService {
4142
private Clock clock = Clock.systemUTC();
4243

4344
@Override
44-
@NonNull
45-
public OneTimeToken generate(GenerateOneTimeTokenRequest request) {
45+
@NonNull public OneTimeToken generate(GenerateOneTimeTokenRequest request) {
4646
String token = UUID.randomUUID().toString();
4747
Instant expiresAt = this.clock.instant().plus(request.getExpiresIn());
4848
OneTimeToken ott = new DefaultOneTimeToken(token, request.getUsername(), expiresAt);

core/src/main/java/org/springframework/security/authentication/ott/OneTimeTokenService.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2024 the original author or authors.
2+
* Copyright 2002-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,8 +16,8 @@
1616

1717
package org.springframework.security.authentication.ott;
1818

19-
import org.springframework.lang.NonNull;
20-
import org.springframework.lang.Nullable;
19+
import org.jspecify.annotations.NonNull;
20+
import org.jspecify.annotations.Nullable;
2121

2222
/**
2323
* Interface for generating and consuming one-time tokens.
@@ -33,16 +33,14 @@ public interface OneTimeTokenService {
3333
* generate the token
3434
* @return the generated {@link OneTimeToken}, never {@code null}.
3535
*/
36-
@NonNull
37-
OneTimeToken generate(GenerateOneTimeTokenRequest request);
36+
@NonNull OneTimeToken generate(GenerateOneTimeTokenRequest request);
3837

3938
/**
4039
* Consumes a one-time token based on the provided authentication token.
4140
* @param authenticationToken the authentication token containing the one-time token
4241
* value to be consumed
4342
* @return the consumed {@link OneTimeToken} or {@code null} if the token is invalid
4443
*/
45-
@Nullable
46-
OneTimeToken consume(OneTimeTokenAuthenticationToken authenticationToken);
44+
@Nullable OneTimeToken consume(OneTimeTokenAuthenticationToken authenticationToken);
4745

4846
}

core/src/main/java/org/springframework/security/authentication/password/CompromisedPasswordChecker.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2024 the original author or authors.
2+
* Copyright 2002-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
1616

1717
package org.springframework.security.authentication.password;
1818

19-
import org.springframework.lang.NonNull;
19+
import org.jspecify.annotations.NonNull;
2020

2121
/**
2222
* An API for checking if a password has been compromised.
@@ -31,7 +31,6 @@ public interface CompromisedPasswordChecker {
3131
* @param password the password to check
3232
* @return a non-null {@link CompromisedPasswordDecision}
3333
*/
34-
@NonNull
35-
CompromisedPasswordDecision check(String password);
34+
@NonNull CompromisedPasswordDecision check(String password);
3635

3736
}

core/src/main/java/org/springframework/security/authorization/AuthorizationManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818

1919
import java.util.function.Supplier;
2020

21-
import org.springframework.lang.Nullable;
21+
import org.jspecify.annotations.Nullable;
22+
2223
import org.springframework.security.access.AccessDeniedException;
2324
import org.springframework.security.core.Authentication;
2425

@@ -53,7 +54,6 @@ default void verify(Supplier<Authentication> authentication, T object) {
5354
* @return an {@link AuthorizationResult}
5455
* @since 6.4
5556
*/
56-
@Nullable
57-
AuthorizationResult authorize(Supplier<Authentication> authentication, T object);
57+
@Nullable AuthorizationResult authorize(Supplier<Authentication> authentication, T object);
5858

5959
}

core/src/main/java/org/springframework/security/authorization/method/AbstractAuthorizationManagerRegistry.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2021 the original author or authors.
2+
* Copyright 2002-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -21,9 +21,9 @@
2121
import java.util.concurrent.ConcurrentHashMap;
2222

2323
import org.aopalliance.intercept.MethodInvocation;
24+
import org.jspecify.annotations.NonNull;
2425

2526
import org.springframework.core.MethodClassKey;
26-
import org.springframework.lang.NonNull;
2727
import org.springframework.security.authorization.AuthorizationManager;
2828

2929
/**
@@ -57,7 +57,6 @@ final AuthorizationManager<MethodInvocation> getManager(MethodInvocation methodI
5757
* @param targetClass the target class
5858
* @return the non-null {@link AuthorizationManager}
5959
*/
60-
@NonNull
61-
abstract AuthorizationManager<MethodInvocation> resolveManager(Method method, Class<?> targetClass);
60+
@NonNull abstract AuthorizationManager<MethodInvocation> resolveManager(Method method, Class<?> targetClass);
6261

6362
}

core/src/main/java/org/springframework/security/authorization/method/AbstractExpressionAttributeRegistry.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
import java.util.concurrent.ConcurrentHashMap;
2222

2323
import org.aopalliance.intercept.MethodInvocation;
24+
import org.jspecify.annotations.NonNull;
2425

2526
import org.springframework.core.MethodClassKey;
26-
import org.springframework.lang.NonNull;
2727
import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
2828
import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler;
2929
import org.springframework.security.core.annotation.AnnotationTemplateExpressionDefaults;
@@ -86,8 +86,7 @@ void setExpressionHandler(MethodSecurityExpressionHandler expressionHandler) {
8686
* @param targetClass the target class
8787
* @return the non-null {@link ExpressionAttribute}
8888
*/
89-
@NonNull
90-
abstract T resolveAttribute(Method method, Class<?> targetClass);
89+
@NonNull abstract T resolveAttribute(Method method, Class<?> targetClass);
9190

9291
Class<?> targetClass(Method method, Class<?> targetClass) {
9392
return (targetClass != null) ? targetClass : method.getDeclaringClass();

core/src/main/java/org/springframework/security/authorization/method/AuthorizationAdvisorProxyFactory.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
import org.aopalliance.aop.Advice;
4242
import org.aopalliance.intercept.MethodInvocation;
43+
import org.jspecify.annotations.NonNull;
4344
import reactor.core.publisher.Flux;
4445
import reactor.core.publisher.Mono;
4546

@@ -49,7 +50,6 @@
4950
import org.springframework.aop.framework.ProxyFactory;
5051
import org.springframework.beans.factory.SmartInitializingSingleton;
5152
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
52-
import org.springframework.lang.NonNull;
5353
import org.springframework.security.authorization.AuthorizationProxyFactory;
5454
import org.springframework.util.Assert;
5555
import org.springframework.util.ClassUtils;
@@ -278,8 +278,7 @@ public void setTargetVisitor(TargetVisitor visitor) {
278278
}
279279

280280
@Override
281-
@NonNull
282-
public Iterator<AuthorizationAdvisor> iterator() {
281+
@NonNull public Iterator<AuthorizationAdvisor> iterator() {
283282
return this.advisors.iterator();
284283
}
285284

core/src/main/java/org/springframework/security/authorization/method/Jsr250AuthorizationManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
import jakarta.annotation.security.PermitAll;
2929
import jakarta.annotation.security.RolesAllowed;
3030
import org.aopalliance.intercept.MethodInvocation;
31+
import org.jspecify.annotations.NonNull;
3132

32-
import org.springframework.lang.NonNull;
3333
import org.springframework.security.authorization.AuthoritiesAuthorizationManager;
3434
import org.springframework.security.authorization.AuthorizationManager;
3535
import org.springframework.security.authorization.AuthorizationResult;

core/src/main/java/org/springframework/security/authorization/method/MethodAuthorizationDeniedHandler.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2024 the original author or authors.
2+
* Copyright 2002-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,8 +17,8 @@
1717
package org.springframework.security.authorization.method;
1818

1919
import org.aopalliance.intercept.MethodInvocation;
20+
import org.jspecify.annotations.Nullable;
2021

21-
import org.springframework.lang.Nullable;
2222
import org.springframework.security.authorization.AuthorizationResult;
2323

2424
/**
@@ -41,8 +41,7 @@ public interface MethodAuthorizationDeniedHandler {
4141
* @return a replacement result for the denied method invocation, or null, or a
4242
* {@link reactor.core.publisher.Mono} for reactive applications
4343
*/
44-
@Nullable
45-
Object handleDeniedInvocation(MethodInvocation methodInvocation, AuthorizationResult authorizationResult);
44+
@Nullable Object handleDeniedInvocation(MethodInvocation methodInvocation, AuthorizationResult authorizationResult);
4645

4746
/**
4847
* Handle denied method invocations, implementations might either throw an
@@ -56,8 +55,7 @@ public interface MethodAuthorizationDeniedHandler {
5655
* @return a replacement result for the denied method invocation, or null, or a
5756
* {@link reactor.core.publisher.Mono} for reactive applications
5857
*/
59-
@Nullable
60-
default Object handleDeniedInvocationResult(MethodInvocationResult methodInvocationResult,
58+
@Nullable default Object handleDeniedInvocationResult(MethodInvocationResult methodInvocationResult,
6159
AuthorizationResult authorizationResult) {
6260
return handleDeniedInvocation(methodInvocationResult.getMethodInvocation(), authorizationResult);
6361
}

0 commit comments

Comments
 (0)