X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fpersistence%2Finmemory%2FShardedChatHome.java;h=ab3969f55b7adee91fa2c0aab976496a983a196b;hb=50dd5352df683aeff5f7aedbcd44266d8ebfc103;hp=6d2f07946cdde03b33eeba2bf5e0dae30cb3cd41;hpb=5c2cfba556815cf32950e8918f99e06299dee015;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/ShardedChatHome.java b/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/ShardedChatHome.java index 6d2f0794..ab3969f5 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/ShardedChatHome.java +++ b/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/ShardedChatHome.java @@ -1,5 +1,9 @@ -package de.juplo.kafka.chat.backend.domain; +package de.juplo.kafka.chat.backend.persistence.inmemory; +import de.juplo.kafka.chat.backend.domain.ChatHome; +import de.juplo.kafka.chat.backend.domain.ChatRoom; +import de.juplo.kafka.chat.backend.domain.ShardNotOwnedException; +import de.juplo.kafka.chat.backend.domain.UnknownChatroomException; import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -41,9 +45,13 @@ public class ShardedChatHome implements ChatHome public Mono getChatRoom(UUID id) { int shard = selectShard(id); - if (chatHomes[shard] == null) - throw new ShardNotOwnedException(shard); - return chatHomes[shard].getChatRoom(id); + return chatHomes[shard] == null + ? Mono.error(new ShardNotOwnedException(shard)) + : chatHomes[shard] + .getChatRoom(id) + .onErrorMap(throwable -> throwable instanceof UnknownChatroomException + ? Mono.error(new UnknownChatroomException(id, shard, ownedShards)) + : Mono.error(throwable)); } @Override