From dfe4f4f9b979b080ccb7c29af78a1c108c3040f4 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sun, 26 Feb 2023 15:17:21 +0100 Subject: [PATCH] WIP:exception --- .../domain/ShardNotOwnedException.java | 68 +++++++++++++++++++ .../domain/UnknownChatroomException.java | 28 +++++++- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/juplo/kafka/chat/backend/domain/ShardNotOwnedException.java diff --git a/src/main/java/de/juplo/kafka/chat/backend/domain/ShardNotOwnedException.java b/src/main/java/de/juplo/kafka/chat/backend/domain/ShardNotOwnedException.java new file mode 100644 index 00000000..d467eabb --- /dev/null +++ b/src/main/java/de/juplo/kafka/chat/backend/domain/ShardNotOwnedException.java @@ -0,0 +1,68 @@ +package de.juplo.kafka.chat.backend.domain; + +import lombok.Getter; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.stream.Collectors; + + +public class ShardNotOwnedException extends IllegalStateException +{ + @Getter + private final ChatHomeService chatHomeService; + @Getter + private final ChatRoomInfo chatRoomInfo; + @Getter + private final int shard; + @Getter + private final int[] ownedShards; + + + public ShardNotOwnedException( + ChatHomeService chatHomeService, + ChatRoomInfo chatRoomInfo, + int shard, + Collection ownedShards) + { + this( + chatHomeService, + chatRoomInfo, + shard, + ShardNotOwnedException.toArray(ownedShards)); + } + + public ShardNotOwnedException( + ChatHomeService chatHomeService, + ChatRoomInfo chatRoomInfo, + int shard, + int[] ownedShards) + { + super( + chatHomeService + + " does not own the shard " + + shard + + " for ChatRoom " + + chatRoomInfo + + " owned shards: " + + Arrays + .stream(ownedShards) + .mapToObj(ownedShard -> Integer.toString(ownedShard)) + .collect(Collectors.joining(", "))); + this.chatHomeService = chatHomeService; + this.chatRoomInfo = chatRoomInfo; + this.shard = shard; + this.ownedShards = ownedShards; + } + + + private static int[] toArray(Collection collection) + { + int[] array = new int[collection.size()]; + Iterator iterator = collection.iterator(); + for (int i = 0; iterator.hasNext(); i++) + array[i] = iterator.next(); + return array; + } +} diff --git a/src/main/java/de/juplo/kafka/chat/backend/domain/UnknownChatroomException.java b/src/main/java/de/juplo/kafka/chat/backend/domain/UnknownChatroomException.java index 1f70f110..714c2207 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/domain/UnknownChatroomException.java +++ b/src/main/java/de/juplo/kafka/chat/backend/domain/UnknownChatroomException.java @@ -2,17 +2,43 @@ package de.juplo.kafka.chat.backend.domain; import lombok.Getter; +import java.util.Arrays; +import java.util.Optional; import java.util.UUID; +import java.util.stream.Collectors; -public class UnknownChatroomException extends RuntimeException +public class UnknownChatroomException extends IllegalStateException { @Getter private final UUID chatroomId; + @Getter + private final Optional shard; + @Getter + private final Optional ownedShards; public UnknownChatroomException(UUID chatroomId) { super("Chatroom does not exist: " + chatroomId); this.chatroomId = chatroomId; + this.shard = Optional.empty(); + this.ownedShards = Optional.empty(); + } + + public UnknownChatroomException(UUID chatroomId, int shard, int[] ownedShards) + { + super( + "Chatroom does not exist (here): " + + chatroomId + + " shard=" + + shard + + ", owned=" + + Arrays + .stream(ownedShards) + .mapToObj(ownedShard -> Integer.toString(ownedShard)) + .collect(Collectors.joining(","))); + this.chatroomId = chatroomId; + this.shard = Optional.of(shard); + this.ownedShards = Optional.of(ownedShards); } } -- 2.20.1