Skip to content

Commit 7db844d

Browse files
committed
Add Supplier Support
Issue gh-14597
1 parent 8088f3e commit 7db844d

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.SortedSet;
3535
import java.util.TreeMap;
3636
import java.util.TreeSet;
37+
import java.util.function.Supplier;
3738
import java.util.stream.Stream;
3839

3940
import reactor.core.publisher.Flux;
@@ -90,7 +91,7 @@ public final class AuthorizationAdvisorProxyFactory
9091
/**
9192
* The default {@link TargetVisitor}, which will proxy {@link Class} instances as well
9293
* as instances contained in reactive types (if reactor is present), collection types,
93-
* and other container types like {@link Optional}
94+
* and other container types like {@link Optional} and {@link Supplier}
9495
*/
9596
public static final TargetVisitor DEFAULT_VISITOR = isReactivePresent
9697
? new DelegateVisitor(new ClassVisitor(), new ReactiveTypeVisitor(), new ContainerTypeVisitor())
@@ -328,6 +329,9 @@ public Object visit(AuthorizationAdvisorProxyFactory proxyFactory, Object target
328329
if (target instanceof Optional<?> optional) {
329330
return proxyOptional(proxyFactory, optional);
330331
}
332+
if (target instanceof Supplier<?> supplier) {
333+
return proxySupplier(proxyFactory, supplier);
334+
}
331335
return null;
332336
}
333337

@@ -460,6 +464,10 @@ private Optional<?> proxyOptional(AuthorizationProxyFactory proxyFactory, Option
460464
return optional.map(proxyFactory::proxy);
461465
}
462466

467+
private Supplier<?> proxySupplier(AuthorizationProxyFactory proxyFactory, Supplier<?> supplier) {
468+
return () -> proxyFactory.proxy(supplier.get());
469+
}
470+
463471
}
464472

465473
private static class ReactiveTypeVisitor implements TargetVisitor {

0 commit comments

Comments
 (0)