Improve StandardMessenger exception messages
This commit is contained in:
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user