package org.apereo.cas.support.events.dao;
import com.google.common.cache.LoadingCache;
import java.util.Collection;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* This is {@link InMemoryCasEventRepository}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public class InMemoryCasEventRepository extends AbstractCasEventRepository {
private final LoadingCache<String, CasEvent> cache;
public InMemoryCasEventRepository(final LoadingCache<String, CasEvent> cache) {
this.cache = cache;
}
@Override
public void save(final CasEvent event) {
cache.put(UUID.randomUUID().toString(), event);
}
@Override
public Collection<CasEvent> load() {
return cache.asMap().values();
}
@Override
public Collection<CasEvent> getEventsForPrincipal(final String id) {
return cache.asMap().values().stream().filter(e -> e.getPrincipalId().equalsIgnoreCase(id)).collect(Collectors.toSet());
}
}