|
20 | 20 | import java.util.Collections; |
21 | 21 | import java.util.List; |
22 | 22 | import java.util.Optional; |
| 23 | +import java.util.function.Predicate; |
23 | 24 | import java.util.stream.Collectors; |
24 | 25 | import java.util.stream.Stream; |
25 | 26 |
|
@@ -93,43 +94,50 @@ public class Registry { |
93 | 94 | this.servicesRegistry = servicesRegistry; |
94 | 95 | } |
95 | 96 |
|
96 | | - public AuthorizedMethod anyMethod() { |
97 | | - ServiceDescriptor[] allServices = servicesRegistry.getBeanNameToServiceBeanMap() |
98 | | - .values() |
99 | | - .stream() |
100 | | - .map(BindableService::bindService) |
101 | | - .map(ServerServiceDefinition::getServiceDescriptor) |
102 | | - .toArray(ServiceDescriptor[]::new); |
103 | | - return new AuthorizedMethod(allServices); |
104 | | - |
105 | | - } |
106 | | - |
107 | 97 | public GrpcSecurity withoutSecuredAnnotation() { |
108 | 98 | return withSecuredAnnotation(false); |
109 | 99 | } |
110 | 100 |
|
| 101 | + public AuthorizedMethod anyMethod() { |
| 102 | + return anyMethodExcluding(s->false); |
| 103 | + } |
| 104 | + |
111 | 105 | public AuthorizedMethod anyMethodExcluding(MethodDescriptor<?, ?>... methodDescriptor) { |
112 | | - List<MethodDescriptor> excludedMethods = Arrays.asList(methodDescriptor); |
113 | | - MethodDescriptor[] allMethods = servicesRegistry.getBeanNameToServiceBeanMap() |
| 106 | + List<MethodDescriptor<?,?>> excludedMethods = Arrays.asList(methodDescriptor); |
| 107 | + return anyMethodExcluding(excludedMethods::contains); |
| 108 | + |
| 109 | + } |
| 110 | + |
| 111 | + |
| 112 | + public AuthorizedMethod anyMethodExcluding(Predicate<MethodDescriptor<?, ?>> excludePredicate) { |
| 113 | + MethodDescriptor<?,?>[] allMethods = servicesRegistry.getBeanNameToServiceBeanMap() |
114 | 114 | .values() |
115 | 115 | .stream() |
116 | 116 | .map(BindableService::bindService) |
117 | 117 | .map(ServerServiceDefinition::getServiceDescriptor) |
118 | 118 | .map(ServiceDescriptor::getMethods) |
119 | 119 | .flatMap(Collection::stream) |
120 | | - .filter(method -> !excludedMethods.contains(method)) |
| 120 | + .filter(excludePredicate.negate()) |
121 | 121 | .toArray(MethodDescriptor[]::new); |
122 | 122 | return new AuthorizedMethod(allMethods); |
123 | 123 | } |
124 | 124 |
|
| 125 | + |
| 126 | + public AuthorizedMethod anyService() { |
| 127 | + return anyServiceExcluding(s-> false); |
| 128 | + } |
125 | 129 | public AuthorizedMethod anyServiceExcluding(ServiceDescriptor... serviceDescriptor) { |
126 | 130 | List<ServiceDescriptor> excludedServices = Arrays.asList(serviceDescriptor); |
| 131 | + return anyServiceExcluding(excludedServices::contains); |
| 132 | + } |
| 133 | + public AuthorizedMethod anyServiceExcluding(Predicate<ServiceDescriptor> excludePredicate) { |
| 134 | + |
127 | 135 | ServiceDescriptor[] allServices = servicesRegistry.getBeanNameToServiceBeanMap() |
128 | 136 | .values() |
129 | 137 | .stream() |
130 | 138 | .map(BindableService::bindService) |
131 | 139 | .map(ServerServiceDefinition::getServiceDescriptor) |
132 | | - .filter(service -> !excludedServices.contains(service)) |
| 140 | + .filter(excludePredicate.negate()) |
133 | 141 | .toArray(ServiceDescriptor[]::new); |
134 | 142 | return new AuthorizedMethod(allServices); |
135 | 143 | } |
|
0 commit comments