io.scalecube.services.security.RegistryBasedAuthenticator Maven / Gradle / Ivy
package io.scalecube.services.security;
import io.scalecube.services.auth.Authenticator;
import java.util.Map;
import org.jctools.maps.NonBlockingHashMapLong;
import reactor.core.publisher.Mono;
/**
* Implementation of {@link Authenticator} which works on top of existing authenticator and
* internally maintains a map (registry) of auth data objects.
*
* @see #put(long, T)
* @see #get(long)
* @see #remove(long)
* @see #containsKey(long)
*/
public final class RegistryBasedAuthenticator implements Authenticator {
private final Authenticator authenticator;
private final Map registry = new NonBlockingHashMapLong<>();
public RegistryBasedAuthenticator(Authenticator authenticator) {
this.authenticator = authenticator;
}
@Override
public Mono apply(Map credentials) {
return authenticator.apply(credentials);
}
public void put(long id, T authData) {
registry.put(id, authData);
}
public T get(long id) {
return registry.get(id);
}
public void remove(long id) {
registry.remove(id);
}
public boolean containsKey(long id) {
return registry.containsKey(id);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy