|
@@ -22,10 +22,8 @@ import org.hswebframework.web.authorization.simple.SimpleAuthentication;
|
|
|
import reactor.core.publisher.Flux;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
-import java.util.concurrent.locks.ReadWriteLock;
|
|
|
-import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|
|
+import java.util.concurrent.CopyOnWriteArrayList;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -45,15 +43,15 @@ import java.util.stream.Collectors;
|
|
|
* @since 4.0
|
|
|
*/
|
|
|
public final class ReactiveAuthenticationHolder {
|
|
|
- private static final List<ReactiveAuthenticationSupplier> suppliers = new ArrayList<>();
|
|
|
-
|
|
|
- private static final ReadWriteLock lock = new ReentrantReadWriteLock();
|
|
|
+ private static final List<ReactiveAuthenticationSupplier> suppliers = new CopyOnWriteArrayList<>();
|
|
|
|
|
|
private static Mono<Authentication> get(Function<ReactiveAuthenticationSupplier, Mono<Authentication>> function) {
|
|
|
|
|
|
- return Flux.concat(suppliers.stream()
|
|
|
- .map(function)
|
|
|
- .collect(Collectors.toList()))
|
|
|
+ return Flux
|
|
|
+ .concat(suppliers
|
|
|
+ .stream()
|
|
|
+ .map(function)
|
|
|
+ .collect(Collectors.toList()))
|
|
|
.reduceWith(SimpleAuthentication::new, Authentication::merge)
|
|
|
.filter(a -> a.getUser() != null);
|
|
|
}
|
|
@@ -82,22 +80,12 @@ public final class ReactiveAuthenticationHolder {
|
|
|
* @param supplier
|
|
|
*/
|
|
|
public static void addSupplier(ReactiveAuthenticationSupplier supplier) {
|
|
|
- lock.writeLock().lock();
|
|
|
- try {
|
|
|
- suppliers.add(supplier);
|
|
|
- } finally {
|
|
|
- lock.writeLock().unlock();
|
|
|
- }
|
|
|
+ suppliers.add(supplier);
|
|
|
}
|
|
|
|
|
|
- public static void setSupplier(ReactiveAuthenticationSupplier supplier){
|
|
|
- lock.writeLock().lock();
|
|
|
- try {
|
|
|
- suppliers.clear();
|
|
|
- suppliers.add(supplier);
|
|
|
- } finally {
|
|
|
- lock.writeLock().unlock();
|
|
|
- }
|
|
|
+ public static void setSupplier(ReactiveAuthenticationSupplier supplier) {
|
|
|
+ suppliers.clear();
|
|
|
+ suppliers.add(supplier);
|
|
|
}
|
|
|
|
|
|
}
|