Skip to content

Commit 9e483a6

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

16 files changed

+44
-60
lines changed

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

Lines changed: 4 additions & 5 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,8 @@
2121
import io.micrometer.common.KeyValues;
2222
import io.micrometer.observation.Observation;
2323
import io.micrometer.observation.ObservationConvention;
24-
import org.jetbrains.annotations.NotNull;
2524

26-
import org.springframework.lang.NonNull;
25+
import org.jspecify.annotations.NonNull;
2726

2827
/**
2928
* An {@link ObservationConvention} for translating authentications into
@@ -63,7 +62,7 @@ public String getContextualName(AuthenticationObservationContext context) {
6362
/**
6463
* {@inheritDoc}
6564
*/
66-
@NotNull
65+
@NonNull
6766
@Override
6867
public KeyValues getLowCardinalityKeyValues(@NonNull AuthenticationObservationContext context) {
6968
return KeyValues.of("authentication.request.type", getAuthenticationType(context))
@@ -104,7 +103,7 @@ private String getAuthenticationFailureType(AuthenticationObservationContext con
104103
* {@inheritDoc}
105104
*/
106105
@Override
107-
public boolean supportsContext(@NotNull Observation.Context context) {
106+
public boolean supportsContext(Observation.@NonNull Context context) {
108107
return context instanceof AuthenticationObservationContext;
109108
}
110109

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

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

25-
import org.springframework.lang.NonNull;
25+
import org.jspecify.annotations.NonNull;
2626
import org.springframework.util.Assert;
2727

2828
/**
@@ -41,8 +41,7 @@ public final class InMemoryOneTimeTokenService implements OneTimeTokenService {
4141
private Clock clock = Clock.systemUTC();
4242

4343
@Override
44-
@NonNull
45-
public OneTimeToken generate(GenerateOneTimeTokenRequest request) {
44+
@NonNull public OneTimeToken generate(GenerateOneTimeTokenRequest request) {
4645
String token = UUID.randomUUID().toString();
4746
Instant expiresAt = this.clock.instant().plus(request.getExpiresIn());
4847
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: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import java.util.function.Supplier;
2020

21-
import org.springframework.lang.Nullable;
21+
import org.jspecify.annotations.Nullable;
2222
import org.springframework.security.access.AccessDeniedException;
2323
import org.springframework.security.core.Authentication;
2424

@@ -53,7 +53,6 @@ default void verify(Supplier<Authentication> authentication, T object) {
5353
* @return an {@link AuthorizationResult}
5454
* @since 6.4
5555
*/
56-
@Nullable
57-
AuthorizationResult authorize(Supplier<Authentication> authentication, T object);
56+
@Nullable AuthorizationResult authorize(Supplier<Authentication> authentication, T object);
5857

5958
}

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

Lines changed: 3 additions & 5 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,8 @@
2121
import java.util.concurrent.ConcurrentHashMap;
2222

2323
import org.aopalliance.intercept.MethodInvocation;
24-
24+
import org.jspecify.annotations.NonNull;
2525
import org.springframework.core.MethodClassKey;
26-
import org.springframework.lang.NonNull;
2726
import org.springframework.security.authorization.AuthorizationManager;
2827

2928
/**
@@ -57,7 +56,6 @@ final AuthorizationManager<MethodInvocation> getManager(MethodInvocation methodI
5756
* @param targetClass the target class
5857
* @return the non-null {@link AuthorizationManager}
5958
*/
60-
@NonNull
61-
abstract AuthorizationManager<MethodInvocation> resolveManager(Method method, Class<?> targetClass);
59+
@NonNull abstract AuthorizationManager<MethodInvocation> resolveManager(Method method, Class<?> targetClass);
6260

6361
}

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

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

2323
import org.aopalliance.intercept.MethodInvocation;
24-
24+
import org.jspecify.annotations.NonNull;
2525
import org.springframework.core.MethodClassKey;
26-
import org.springframework.lang.NonNull;
2726
import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
2827
import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler;
2928
import org.springframework.security.core.annotation.AnnotationTemplateExpressionDefaults;
@@ -86,8 +85,7 @@ void setExpressionHandler(MethodSecurityExpressionHandler expressionHandler) {
8685
* @param targetClass the target class
8786
* @return the non-null {@link ExpressionAttribute}
8887
*/
89-
@NonNull
90-
abstract T resolveAttribute(Method method, Class<?> targetClass);
88+
@NonNull abstract T resolveAttribute(Method method, Class<?> targetClass);
9189

9290
Class<?> targetClass(Method method, Class<?> targetClass) {
9391
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
@@ -43,13 +43,13 @@
4343
import reactor.core.publisher.Flux;
4444
import reactor.core.publisher.Mono;
4545

46+
import org.jspecify.annotations.NonNull;
4647
import org.springframework.aop.Advisor;
4748
import org.springframework.aop.Pointcut;
4849
import org.springframework.aop.framework.AopInfrastructureBean;
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
@@ -29,7 +29,7 @@
2929
import jakarta.annotation.security.RolesAllowed;
3030
import org.aopalliance.intercept.MethodInvocation;
3131

32-
import org.springframework.lang.NonNull;
32+
import org.jspecify.annotations.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.
@@ -18,7 +18,7 @@
1818

1919
import org.aopalliance.intercept.MethodInvocation;
2020

21-
import org.springframework.lang.Nullable;
21+
import org.jspecify.annotations.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)