+ @Override
+ public List<SessionRecord> loadExistingSessions(final List<SignalProtocolAddress> addresses) throws NoSessionException {
+ final var keys = addresses.stream().map(this::getKey).collect(Collectors.toList());
+
+ synchronized (cachedSessions) {
+ final var sessions = keys.stream()
+ .map(this::loadSessionLocked)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+
+ if (sessions.size() != addresses.size()) {
+ String message = "Mismatch! Asked for "
+ + addresses.size()
+ + " sessions, but only found "
+ + sessions.size()
+ + "!";
+ logger.warn(message);
+ throw new NoSessionException(message);
+ }
+
+ return sessions;
+ }
+ }
+