Skip to content

Commit f9efe37

Browse files
committed
Revert "Allow null object for AuthorizationManagerFactory"
This reverts commit 223d1ce9a6f86ed208a0124b91b215187a62c40b.
1 parent b6f8e46 commit f9efe37

File tree

7 files changed

+15
-22
lines changed

7 files changed

+15
-22
lines changed

core/src/main/java/org/springframework/security/access/expression/SecurityExpressionRoot.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@
4040
* @author Steve Riesenberg
4141
* @since 3.0
4242
*/
43-
public abstract class SecurityExpressionRoot<T extends @Nullable Object> implements SecurityExpressionOperations {
43+
public abstract class SecurityExpressionRoot<T> implements SecurityExpressionOperations {
4444

4545
private static final AuthorizationManagerFactory<?> DEFAULT_AUTHORIZATION_MANAGER_FACTORY = new DefaultAuthorizationManagerFactory<>();
4646

4747
private final Supplier<Authentication> authentication;
4848

49-
private final T object;
49+
private final @Nullable T object;
5050

5151
private @Nullable DefaultAuthorizationManagerFactory<T> defaultAuthorizationManagerFactory;
5252

@@ -94,7 +94,12 @@ public SecurityExpressionRoot(Authentication authentication) {
9494
*/
9595
@Deprecated(since = "7.0")
9696
public SecurityExpressionRoot(Supplier<Authentication> authentication) {
97-
this(authentication, null);
97+
this.authentication = SingletonSupplier.of(() -> {
98+
Authentication value = authentication.get();
99+
Assert.notNull(value, "Authentication object cannot be null");
100+
return value;
101+
});
102+
this.object = null;
98103
}
99104

100105
/**
@@ -169,6 +174,7 @@ public final boolean isFullyAuthenticated() {
169174
return isGranted(this.authorizationManagerFactory.fullyAuthenticated());
170175
}
171176

177+
@SuppressWarnings("DataFlowIssue")
172178
private boolean isGranted(AuthorizationManager<T> authorizationManager) {
173179
AuthorizationResult authorizationResult = authorizationManager.authorize(this.authentication, this.object);
174180
return (authorizationResult != null && authorizationResult.isGranted());

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
import java.util.function.Supplier;
2020

21-
import org.jspecify.annotations.Nullable;
22-
2321
import org.springframework.security.authentication.AuthenticationTrustResolver;
2422
import org.springframework.security.authentication.AuthenticationTrustResolverImpl;
2523
import org.springframework.security.core.Authentication;
@@ -32,7 +30,7 @@
3230
* @author Evgeniy Cheban
3331
* @since 5.5
3432
*/
35-
public final class AuthenticatedAuthorizationManager<T extends @Nullable Object> implements AuthorizationManager<T> {
33+
public final class AuthenticatedAuthorizationManager<T> implements AuthorizationManager<T> {
3634

3735
private final AbstractAuthorizationStrategy authorizationStrategy;
3836

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import java.util.Set;
2020
import java.util.function.Supplier;
2121

22-
import org.jspecify.annotations.Nullable;
23-
2422
import org.springframework.security.access.hierarchicalroles.NullRoleHierarchy;
2523
import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
2624
import org.springframework.security.core.Authentication;
@@ -34,7 +32,7 @@
3432
* @author Evgeniy Cheban
3533
* @since 5.5
3634
*/
37-
public final class AuthorityAuthorizationManager<T extends @Nullable Object> implements AuthorizationManager<T> {
35+
public final class AuthorityAuthorizationManager<T> implements AuthorizationManager<T> {
3836

3937
private static final String ROLE_PREFIX = "ROLE_";
4038

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import java.util.function.Supplier;
2020

21-
import org.jspecify.annotations.NullUnmarked;
2221
import org.jspecify.annotations.Nullable;
2322

2423
import org.springframework.security.access.AccessDeniedException;
@@ -31,9 +30,8 @@
3130
* @param <T> the type of object that the authorization check is being done on.
3231
* @author Evgeniy Cheban
3332
*/
34-
@NullUnmarked
3533
@FunctionalInterface
36-
public interface AuthorizationManager<T> {
34+
public interface AuthorizationManager<@Nullable T> {
3735

3836
/**
3937
* Determines if access should be granted for a specific authentication and object.

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,14 @@
1616

1717
package org.springframework.security.authorization;
1818

19-
import org.jspecify.annotations.Nullable;
20-
2119
/**
2220
* A factory for creating different kinds of {@link AuthorizationManager} instances.
2321
*
2422
* @param <T> the type of object that the authorization check is being done on
2523
* @author Steve Riesenberg
2624
* @since 7.0
2725
*/
28-
public interface AuthorizationManagerFactory<T extends @Nullable Object> {
26+
public interface AuthorizationManagerFactory<T> {
2927

3028
/**
3129
* Create an {@link AuthorizationManager} that allows anyone.

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.springframework.security.authorization;
1818

19-
import org.jspecify.annotations.Nullable;
20-
2119
import org.springframework.security.access.hierarchicalroles.NullRoleHierarchy;
2220
import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
2321
import org.springframework.security.authentication.AuthenticationTrustResolver;
@@ -31,8 +29,7 @@
3129
* @author Steve Riesenberg
3230
* @since 7.0
3331
*/
34-
public final class DefaultAuthorizationManagerFactory<T extends @Nullable Object>
35-
implements AuthorizationManagerFactory<T> {
32+
public final class DefaultAuthorizationManagerFactory<T> implements AuthorizationManagerFactory<T> {
3633

3734
private AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
3835

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
import java.util.function.Supplier;
2020

21-
import org.jspecify.annotations.Nullable;
22-
2321
import org.springframework.security.core.Authentication;
2422
import org.springframework.util.Assert;
2523

@@ -30,7 +28,7 @@
3028
* @author Max Batischev
3129
* @since 6.5
3230
*/
33-
public final class SingleResultAuthorizationManager<C extends @Nullable Object> implements AuthorizationManager<C> {
31+
public final class SingleResultAuthorizationManager<C> implements AuthorizationManager<C> {
3432

3533
private static final SingleResultAuthorizationManager<?> DENY_MANAGER = new SingleResultAuthorizationManager<>(
3634
new AuthorizationDecision(false));

0 commit comments

Comments
 (0)