Improve StandardMessenger exception messages

This commit is contained in:
Nassim Jahnke
2024-08-12 18:38:19 +02:00
parent f14d6e62da
commit 8769723fb3
2 changed files with 14 additions and 5 deletions

View File

@ -9,7 +9,9 @@ public class ChannelNameTooLongException extends RuntimeException {
super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars."); super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars.");
} }
public ChannelNameTooLongException(String channel) { // Paper start
super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars (attempted " + channel.length() + " - '" + channel + "."); public ChannelNameTooLongException(int length, String shortenedChannel) {
super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars (attempted " + length + " - '" + shortenedChannel + ".");
// Paper end
} }
} }

View File

@ -496,19 +496,26 @@ public class StandardMessenger implements Messenger {
if (channel.equals("bungeecord:main")) { if (channel.equals("bungeecord:main")) {
return "BungeeCord"; return "BungeeCord";
} }
// Paper start - improve error message
if (channel.length() > Messenger.MAX_CHANNEL_SIZE) { if (channel.length() > Messenger.MAX_CHANNEL_SIZE) {
throw new ChannelNameTooLongException(channel); throw new ChannelNameTooLongException(channel.length(), shortened(channel));
} }
if (channel.indexOf(':') == -1) { if (channel.indexOf(':') == -1) {
throw new IllegalArgumentException("Channel must contain : separator (attempted to use " + channel + ")"); throw new IllegalArgumentException("Channel must contain : separator (attempted to use " + shortened(channel) + ")");
} }
if (!channel.toLowerCase(Locale.ROOT).equals(channel)) { if (!channel.toLowerCase(Locale.ROOT).equals(channel)) {
// TODO: use NamespacedKey validation here // TODO: use NamespacedKey validation here
throw new IllegalArgumentException("Channel must be entirely lowercase (attempted to use " + channel + ")"); throw new IllegalArgumentException("Channel must be entirely lowercase (attempted to use " + shortened(channel) + ")");
} }
return channel; return channel;
} }
private static String shortened(String channel) {
channel = org.apache.commons.lang3.StringUtils.normalizeSpace(channel);
return channel.length() > 32 ? channel.substring(0, 32) + "..." : channel;
}
// Paper end - improve error message
/** /**
* Validates the input of a Plugin Message, ensuring the arguments are all * Validates the input of a Plugin Message, ensuring the arguments are all
* valid. * valid.