From 0615946edc5c397478df6e0f4aea844339e07f41 Mon Sep 17 00:00:00 2001 From: rafal <63915083+rchomczyk@users.noreply.github.com> Date: Sat, 16 Nov 2024 12:01:30 +0100 Subject: [PATCH] Use more flexible implementation for message dispatchers --- honey-common/src/dev/shiza/honey/Honey.java | 2 +- .../src/dev/shiza/honey/HoneyImpl.java | 2 +- .../adventure/AdventureHoneyBuilder.java | 5 +- .../honey/adventure/AdventureHoneyImpl.java | 2 +- .../shiza/honey/adventure/ParsableValue.java | 8 --- .../compiler}/AdventureMessageCompiler.java | 5 +- .../AdventureMessageCompilerFactory.java | 4 +- .../AdventureMessageDispatcher.java | 18 ++++++ .../AdventureMessageDispatcherBatch.java | 30 ++++++++++ .../AdventureMessageDispatchers.java | 59 +++++++++++++++++++ .../message/dispatcher/MessageDispatcher.java | 10 ---- .../dispatcher/MessageDispatcherImpl.java | 31 ---------- .../dispatcher/MessageDispatchers.java | 29 --------- .../adventure/placeholder/ParsableValue.java | 14 +++++ .../shiza/honey/builder/HoneyBaseBuilder.java | 2 +- .../src/dev/shiza/honey/message/Message.java | 6 ++ .../{ => compiler}/MessageCompiler.java | 2 +- .../dispatcher/MessageBaseDispatcher.java | 51 ++++++++++++++++ .../message/dispatcher/MessageDispatcher.java | 12 ++++ .../dispatcher/MessageDispatcherBatch.java | 39 ++++++++++++ .../MessageDispatchingException.java | 12 ++++ 21 files changed, 254 insertions(+), 89 deletions(-) delete mode 100644 honey-common/src/dev/shiza/honey/adventure/ParsableValue.java rename honey-common/src/dev/shiza/honey/adventure/{ => message/compiler}/AdventureMessageCompiler.java (91%) rename honey-common/src/dev/shiza/honey/adventure/{ => message/compiler}/AdventureMessageCompilerFactory.java (83%) create mode 100644 honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcher.java create mode 100644 honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcherBatch.java create mode 100644 honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatchers.java delete mode 100644 honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcher.java delete mode 100644 honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcherImpl.java delete mode 100644 honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatchers.java create mode 100644 honey-common/src/dev/shiza/honey/adventure/placeholder/ParsableValue.java rename honey-common/src/dev/shiza/honey/message/{ => compiler}/MessageCompiler.java (84%) create mode 100644 honey-common/src/dev/shiza/honey/message/dispatcher/MessageBaseDispatcher.java create mode 100644 honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcher.java create mode 100644 honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcherBatch.java create mode 100644 honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatchingException.java diff --git a/honey-common/src/dev/shiza/honey/Honey.java b/honey-common/src/dev/shiza/honey/Honey.java index 3c1a95d..e7345b3 100644 --- a/honey-common/src/dev/shiza/honey/Honey.java +++ b/honey-common/src/dev/shiza/honey/Honey.java @@ -2,7 +2,7 @@ import dev.shiza.honey.conversion.ImplicitConversion; import dev.shiza.honey.message.Message; -import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.message.compiler.MessageCompiler; import dev.shiza.honey.placeholder.evaluator.PlaceholderContext; import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; import dev.shiza.honey.placeholder.resolver.PlaceholderResolver; diff --git a/honey-common/src/dev/shiza/honey/HoneyImpl.java b/honey-common/src/dev/shiza/honey/HoneyImpl.java index 6bb184c..91dd235 100644 --- a/honey-common/src/dev/shiza/honey/HoneyImpl.java +++ b/honey-common/src/dev/shiza/honey/HoneyImpl.java @@ -6,7 +6,7 @@ import dev.shiza.honey.conversion.ImplicitConversion; import dev.shiza.honey.message.Message; -import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.message.compiler.MessageCompiler; import dev.shiza.honey.placeholder.evaluator.EvaluatedPlaceholder; import dev.shiza.honey.placeholder.evaluator.PlaceholderContext; import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; diff --git a/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyBuilder.java b/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyBuilder.java index 696d917..4cdee30 100644 --- a/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyBuilder.java +++ b/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyBuilder.java @@ -1,12 +1,13 @@ package dev.shiza.honey.adventure; +import dev.shiza.honey.adventure.message.compiler.AdventureMessageCompilerFactory; import dev.shiza.honey.builder.HoneyBaseBuilder; import dev.shiza.honey.builder.HoneyBuilder; -import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.message.compiler.MessageCompiler; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; -final class AdventureHoneyBuilder extends HoneyBaseBuilder { +public final class AdventureHoneyBuilder extends HoneyBaseBuilder { private AdventureHoneyBuilder(final MessageCompiler messageCompiler) { super(messageCompiler); diff --git a/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyImpl.java b/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyImpl.java index ad9a66d..b5be424 100644 --- a/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyImpl.java +++ b/honey-common/src/dev/shiza/honey/adventure/AdventureHoneyImpl.java @@ -2,7 +2,7 @@ import dev.shiza.honey.HoneyImpl; import dev.shiza.honey.conversion.ImplicitConversion; -import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.message.compiler.MessageCompiler; import dev.shiza.honey.placeholder.evaluator.PlaceholderContext; import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; import dev.shiza.honey.placeholder.resolver.PlaceholderResolver; diff --git a/honey-common/src/dev/shiza/honey/adventure/ParsableValue.java b/honey-common/src/dev/shiza/honey/adventure/ParsableValue.java deleted file mode 100644 index 7509181..0000000 --- a/honey-common/src/dev/shiza/honey/adventure/ParsableValue.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.shiza.honey.adventure; - -public record ParsableValue(String value) { - - public static ParsableValue of(final String value) { - return new ParsableValue(value); - } -} diff --git a/honey-common/src/dev/shiza/honey/adventure/AdventureMessageCompiler.java b/honey-common/src/dev/shiza/honey/adventure/message/compiler/AdventureMessageCompiler.java similarity index 91% rename from honey-common/src/dev/shiza/honey/adventure/AdventureMessageCompiler.java rename to honey-common/src/dev/shiza/honey/adventure/message/compiler/AdventureMessageCompiler.java index 71bd0dd..53328c9 100644 --- a/honey-common/src/dev/shiza/honey/adventure/AdventureMessageCompiler.java +++ b/honey-common/src/dev/shiza/honey/adventure/message/compiler/AdventureMessageCompiler.java @@ -1,10 +1,11 @@ -package dev.shiza.honey.adventure; +package dev.shiza.honey.adventure.message.compiler; import static net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component; import static net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed; import static net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.unparsed; -import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.adventure.placeholder.ParsableValue; +import dev.shiza.honey.message.compiler.MessageCompiler; import dev.shiza.honey.placeholder.sanitizer.SanitizedPlaceholder; import java.util.List; import net.kyori.adventure.text.Component; diff --git a/honey-common/src/dev/shiza/honey/adventure/AdventureMessageCompilerFactory.java b/honey-common/src/dev/shiza/honey/adventure/message/compiler/AdventureMessageCompilerFactory.java similarity index 83% rename from honey-common/src/dev/shiza/honey/adventure/AdventureMessageCompilerFactory.java rename to honey-common/src/dev/shiza/honey/adventure/message/compiler/AdventureMessageCompilerFactory.java index c9d1f1c..bb285ad 100644 --- a/honey-common/src/dev/shiza/honey/adventure/AdventureMessageCompilerFactory.java +++ b/honey-common/src/dev/shiza/honey/adventure/message/compiler/AdventureMessageCompilerFactory.java @@ -1,8 +1,8 @@ -package dev.shiza.honey.adventure; +package dev.shiza.honey.adventure.message.compiler; import static net.kyori.adventure.text.minimessage.MiniMessage.miniMessage; -import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.message.compiler.MessageCompiler; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; diff --git a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcher.java b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcher.java new file mode 100644 index 0000000..b304055 --- /dev/null +++ b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcher.java @@ -0,0 +1,18 @@ +package dev.shiza.honey.adventure.message.dispatcher; + +import dev.shiza.honey.adventure.AdventureHoney; +import dev.shiza.honey.message.Message; +import dev.shiza.honey.message.dispatcher.MessageBaseDispatcher; +import java.util.function.BiConsumer; +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.text.Component; + +public final class AdventureMessageDispatcher extends MessageBaseDispatcher { + + AdventureMessageDispatcher( + final AdventureHoney honey, + final Message message, + final BiConsumer deliver) { + super(honey, message, deliver); + } +} diff --git a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcherBatch.java b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcherBatch.java new file mode 100644 index 0000000..f1ba6c2 --- /dev/null +++ b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatcherBatch.java @@ -0,0 +1,30 @@ +package dev.shiza.honey.adventure.message.dispatcher; + +import dev.shiza.honey.message.dispatcher.MessageDispatcherBatch; +import java.util.ArrayList; +import java.util.List; +import net.kyori.adventure.audience.Audience; + +public final class AdventureMessageDispatcherBatch + extends MessageDispatcherBatch { + + private AdventureMessageDispatcherBatch(final List dispatchers) { + super(dispatchers); + } + + public static AdventureMessageDispatcherBatch newBatch() { + return new AdventureMessageDispatcherBatch(new ArrayList<>()); + } + + @Override + public AdventureMessageDispatcherBatch append(final AdventureMessageDispatcher dispatcher) { + super.append(dispatcher); + return this; + } + + @Override + public AdventureMessageDispatcherBatch recipient(final Audience recipient) { + super.recipient(recipient); + return this; + } +} diff --git a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatchers.java b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatchers.java new file mode 100644 index 0000000..eda284b --- /dev/null +++ b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/AdventureMessageDispatchers.java @@ -0,0 +1,59 @@ +package dev.shiza.honey.adventure.message.dispatcher; + +import dev.shiza.honey.adventure.AdventureHoney; +import dev.shiza.honey.message.Message; +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.title.Title; +import net.kyori.adventure.title.Title.Times; +import net.kyori.adventure.title.TitlePart; + +public final class AdventureMessageDispatchers { + + private final AdventureHoney honey; + + public AdventureMessageDispatchers(final AdventureHoney honey) { + this.honey = honey; + } + + public AdventureMessageDispatcher chat(final Message message) { + return new AdventureMessageDispatcher(honey, message, Audience::sendMessage); + } + + public AdventureMessageDispatcher actionBar(final Message message) { + return new AdventureMessageDispatcher(honey, message, Audience::sendActionBar); + } + + public AdventureMessageDispatcherBatch title( + final Message titleMessage, final Message subtitleMessage, final Times times) { + return AdventureMessageDispatcherBatch.newBatch() + .append(times(times)) + .append(title(titleMessage)) + .append(subtitle(subtitleMessage)); + } + + public AdventureMessageDispatcherBatch title( + final Message titleMessage, final Message subtitleMessage) { + return title(titleMessage, subtitleMessage, Title.DEFAULT_TIMES); + } + + public AdventureMessageDispatcher title(final Message message) { + return new AdventureMessageDispatcher( + honey, + message, + (audience, component) -> audience.sendTitlePart(TitlePart.TITLE, component)); + } + + public AdventureMessageDispatcher subtitle(final Message message) { + return new AdventureMessageDispatcher( + honey, + message, + (audience, component) -> audience.sendTitlePart(TitlePart.SUBTITLE, component)); + } + + private AdventureMessageDispatcher times(final Times times) { + return new AdventureMessageDispatcher( + honey, + Message.blank(), + (audience, component) -> audience.sendTitlePart(TitlePart.TIMES, times)); + } +} diff --git a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcher.java b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcher.java deleted file mode 100644 index adbc955..0000000 --- a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcher.java +++ /dev/null @@ -1,10 +0,0 @@ -package dev.shiza.honey.adventure.message.dispatcher; - -import net.kyori.adventure.audience.Audience; - -public interface MessageDispatcher { - - MessageDispatcher viewers(final Audience... viewers); - - void dispatch(); -} diff --git a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcherImpl.java b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcherImpl.java deleted file mode 100644 index 4eafafd..0000000 --- a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatcherImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package dev.shiza.honey.adventure.message.dispatcher; - -import java.util.function.BiConsumer; -import java.util.stream.Stream; -import net.kyori.adventure.audience.Audience; -import net.kyori.adventure.text.Component; - -final class MessageDispatcherImpl implements MessageDispatcher { - - private final Component message; - private final BiConsumer deliver; - private Audience viewers; - - MessageDispatcherImpl(final Component message, final BiConsumer deliver) { - this.message = message; - this.deliver = deliver; - this.viewers = Audience.empty(); - } - - @Override - public MessageDispatcher viewers(final Audience... viewers) { - this.viewers = - Audience.audience(Stream.concat(Stream.of(this.viewers), Stream.of(viewers)).toList()); - return this; - } - - @Override - public void dispatch() { - deliver.accept(viewers, message); - } -} diff --git a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatchers.java b/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatchers.java deleted file mode 100644 index f8ca839..0000000 --- a/honey-common/src/dev/shiza/honey/adventure/message/dispatcher/MessageDispatchers.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.shiza.honey.adventure.message.dispatcher; - -import net.kyori.adventure.audience.Audience; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.title.Title; -import net.kyori.adventure.title.Title.Times; - -public final class MessageDispatchers { - - private MessageDispatchers() {} - - public static MessageDispatcher chat(final Component message) { - return new MessageDispatcherImpl(message, Audience::sendMessage); - } - - public static MessageDispatcher title(final Component title, final Component subtitle) { - return title(title, subtitle, Title.DEFAULT_TIMES); - } - - public static MessageDispatcher title( - final Component title, final Component subtitle, final Times times) { - return new MessageDispatcherImpl( - title, (audience, message) -> audience.showTitle(Title.title(title, subtitle, times))); - } - - public static MessageDispatcher actionBar(final Component message) { - return new MessageDispatcherImpl(message, Audience::sendActionBar); - } -} diff --git a/honey-common/src/dev/shiza/honey/adventure/placeholder/ParsableValue.java b/honey-common/src/dev/shiza/honey/adventure/placeholder/ParsableValue.java new file mode 100644 index 0000000..80753f2 --- /dev/null +++ b/honey-common/src/dev/shiza/honey/adventure/placeholder/ParsableValue.java @@ -0,0 +1,14 @@ +package dev.shiza.honey.adventure.placeholder; + +/** + * Represents a value that should be parsed by {@link + * net.kyori.adventure.text.minimessage.MiniMessage}. + * + * @param value the value to be parsed + */ +public record ParsableValue(String value) { + + public static ParsableValue of(final String value) { + return new ParsableValue(value); + } +} diff --git a/honey-common/src/dev/shiza/honey/builder/HoneyBaseBuilder.java b/honey-common/src/dev/shiza/honey/builder/HoneyBaseBuilder.java index c104aac..a2b4ea4 100644 --- a/honey-common/src/dev/shiza/honey/builder/HoneyBaseBuilder.java +++ b/honey-common/src/dev/shiza/honey/builder/HoneyBaseBuilder.java @@ -2,7 +2,7 @@ import dev.shiza.honey.Honey; import dev.shiza.honey.conversion.ImplicitConversion; -import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.message.compiler.MessageCompiler; import dev.shiza.honey.placeholder.evaluator.PlaceholderContext; import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; import dev.shiza.honey.placeholder.resolver.PlaceholderResolver; diff --git a/honey-common/src/dev/shiza/honey/message/Message.java b/honey-common/src/dev/shiza/honey/message/Message.java index f376a01..52b53e5 100644 --- a/honey-common/src/dev/shiza/honey/message/Message.java +++ b/honey-common/src/dev/shiza/honey/message/Message.java @@ -5,10 +5,16 @@ public record Message(String content, PlaceholderContext context) { + private static Message BLANK = new Message("", PlaceholderContext.create()); + public static Message of(final String content) { return new Message(content, PlaceholderContext.create()); } + public static Message blank() { + return BLANK; + } + public Message variable(final String name, final Object value) { context.withValue(name, value); return this; diff --git a/honey-common/src/dev/shiza/honey/message/MessageCompiler.java b/honey-common/src/dev/shiza/honey/message/compiler/MessageCompiler.java similarity index 84% rename from honey-common/src/dev/shiza/honey/message/MessageCompiler.java rename to honey-common/src/dev/shiza/honey/message/compiler/MessageCompiler.java index 366ccff..b0b79bf 100644 --- a/honey-common/src/dev/shiza/honey/message/MessageCompiler.java +++ b/honey-common/src/dev/shiza/honey/message/compiler/MessageCompiler.java @@ -1,4 +1,4 @@ -package dev.shiza.honey.message; +package dev.shiza.honey.message.compiler; import dev.shiza.honey.placeholder.sanitizer.SanitizedPlaceholder; import java.util.List; diff --git a/honey-common/src/dev/shiza/honey/message/dispatcher/MessageBaseDispatcher.java b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageBaseDispatcher.java new file mode 100644 index 0000000..2742471 --- /dev/null +++ b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageBaseDispatcher.java @@ -0,0 +1,51 @@ +package dev.shiza.honey.message.dispatcher; + +import dev.shiza.honey.Honey; +import dev.shiza.honey.message.Message; +import java.util.concurrent.CompletableFuture; +import java.util.function.BiConsumer; +import org.jetbrains.annotations.ApiStatus.Internal; + +@Internal +public abstract class MessageBaseDispatcher implements MessageDispatcher { + + private final Honey honey; + private final Message message; + private final BiConsumer deliver; + private T recipient; + + protected MessageBaseDispatcher( + final Honey honey, final Message message, final BiConsumer deliver) { + this.honey = honey; + this.message = message; + this.deliver = deliver; + } + + @Override + public MessageDispatcher recipient(final T recipient) { + this.recipient = recipient; + return this; + } + + @Override + public void dispatch() { + if (!message.context().getPromisedValues().isEmpty()) { + throw new MessageDispatchingException( + "Cannot dispatch a message with promised values synchronously"); + } + + deliver.accept(recipient, honey.compile(message)); + } + + @Override + public CompletableFuture dispatchAsync() { + return honey + .compileAsync(message) + .thenAccept(result -> deliver.accept(recipient, result)) + .exceptionally( + cause -> { + throw new MessageDispatchingException( + "Could not dispatch message, because of unexpected exception.", cause); + }); + } +} diff --git a/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcher.java b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcher.java new file mode 100644 index 0000000..2095a0d --- /dev/null +++ b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcher.java @@ -0,0 +1,12 @@ +package dev.shiza.honey.message.dispatcher; + +import java.util.concurrent.CompletableFuture; + +public interface MessageDispatcher { + + MessageDispatcher recipient(final T recipient); + + void dispatch(); + + CompletableFuture dispatchAsync(); +} diff --git a/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcherBatch.java b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcherBatch.java new file mode 100644 index 0000000..98a9cea --- /dev/null +++ b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatcherBatch.java @@ -0,0 +1,39 @@ +package dev.shiza.honey.message.dispatcher; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + +public abstract class MessageDispatcherBatch> { + + private final List dispatchers; + + protected MessageDispatcherBatch(final List dispatchers) { + this.dispatchers = dispatchers; + } + + public MessageDispatcherBatch append(final T dispatcher) { + dispatchers.add(dispatcher); + return this; + } + + public MessageDispatcherBatch recipient(final V recipient) { + dispatchers.forEach(dispatcher -> dispatcher.recipient(recipient)); + return this; + } + + public void dispatch() { + dispatchers.forEach(MessageDispatcher::dispatch); + } + + public CompletableFuture dispatchAsync() { + return CompletableFuture.allOf( + dispatchers.stream() + .map(MessageDispatcher::dispatchAsync) + .toArray(CompletableFuture[]::new)) + .exceptionally( + cause -> { + throw new MessageDispatchingException( + "Could not dispatch message, because of unexpected exception.", cause); + }); + } +} diff --git a/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatchingException.java b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatchingException.java new file mode 100644 index 0000000..8961d84 --- /dev/null +++ b/honey-common/src/dev/shiza/honey/message/dispatcher/MessageDispatchingException.java @@ -0,0 +1,12 @@ +package dev.shiza.honey.message.dispatcher; + +public class MessageDispatchingException extends IllegalStateException { + + public MessageDispatchingException(final String message) { + super(message); + } + + public MessageDispatchingException(final String message, final Throwable cause) { + super(message, cause); + } +}