summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSenmori <thesenmori@gmail.com>2018-07-20 13:14:30 -0400
committermd_5 <git@md-5.net>2018-07-21 10:09:32 +1000
commit2ba30dddd4acb3bd789b4e487ed0647984576e8c (patch)
treeb1d651123bc949384500a6baf47c0e25ec217a86 /src
parentac92f0355a7bf319d51b78837f8e7a3889b6c549 (diff)
downloadbukkit-2ba30dddd4acb3bd789b4e487ed0647984576e8c.tar
bukkit-2ba30dddd4acb3bd789b4e487ed0647984576e8c.tar.gz
bukkit-2ba30dddd4acb3bd789b4e487ed0647984576e8c.tar.lz
bukkit-2ba30dddd4acb3bd789b4e487ed0647984576e8c.tar.xz
bukkit-2ba30dddd4acb3bd789b4e487ed0647984576e8c.zip
Clarify NamespacedKey error messages.
Add new tests for NamespacedKeys.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/NamespacedKey.java18
-rw-r--r--src/test/java/org/bukkit/NamespacedKeyTest.java10
2 files changed, 22 insertions, 6 deletions
diff --git a/src/main/java/org/bukkit/NamespacedKey.java b/src/main/java/org/bukkit/NamespacedKey.java
index 1ed8f7e4..43239f84 100644
--- a/src/main/java/org/bukkit/NamespacedKey.java
+++ b/src/main/java/org/bukkit/NamespacedKey.java
@@ -44,8 +44,8 @@ public final class NamespacedKey {
*/
@Deprecated
public NamespacedKey(String namespace, String key) {
- Preconditions.checkArgument(namespace != null && VALID_NAMESPACE.matcher(namespace).matches(), "namespace");
- Preconditions.checkArgument(key != null && VALID_KEY.matcher(key).matches(), "key");
+ Preconditions.checkArgument(namespace != null && VALID_NAMESPACE.matcher(namespace).matches(), "Invalid namespace. Must be [a-z0-9._-]: %s", namespace);
+ Preconditions.checkArgument(key != null && VALID_KEY.matcher(key).matches(), "Invalid key. Must be [a-z0-9/._-]: %s", key);
this.namespace = namespace;
this.key = key;
@@ -56,20 +56,26 @@ public final class NamespacedKey {
/**
* Create a key in the plugin's namespace.
+ * <p>
+ * Namespaces may only contain lowercase alphanumeric characters, periods,
+ * underscores, and hyphens.
+ * <p>
+ * Keys may only contain lowercase alphanumeric characters, periods,
+ * underscores, hyphens, and forward slashes.
*
* @param plugin the plugin to use for the namespace
* @param key the key to create
*/
public NamespacedKey(Plugin plugin, String key) {
- Preconditions.checkArgument(plugin != null, "plugin");
- Preconditions.checkArgument(key != null, "key");
+ Preconditions.checkArgument(plugin != null, "Plugin cannot be null");
+ Preconditions.checkArgument(key != null, "Key cannot be null");
this.namespace = plugin.getName().toLowerCase(Locale.ROOT);
this.key = key.toLowerCase().toLowerCase(Locale.ROOT);
// Check validity after normalization
- Preconditions.checkArgument(VALID_NAMESPACE.matcher(this.namespace).matches(), "namespace");
- Preconditions.checkArgument(VALID_KEY.matcher(this.key).matches(), "key");
+ Preconditions.checkArgument(VALID_NAMESPACE.matcher(this.namespace).matches(), "Invalid namespace. Must be [a-z0-9._-]: %s", this.namespace);
+ Preconditions.checkArgument(VALID_KEY.matcher(this.key).matches(), "Invalid key. Must be [a-z0-9/._-]: %s", this.key);
String string = toString();
Preconditions.checkArgument(string.length() < 256, "NamespacedKey must be less than 256 characters (%s)", string);
diff --git a/src/test/java/org/bukkit/NamespacedKeyTest.java b/src/test/java/org/bukkit/NamespacedKeyTest.java
index 7c71aabf..8c5e5ca7 100644
--- a/src/test/java/org/bukkit/NamespacedKeyTest.java
+++ b/src/test/java/org/bukkit/NamespacedKeyTest.java
@@ -30,6 +30,16 @@ public class NamespacedKeyTest {
}
@Test(expected = IllegalArgumentException.class)
+ public void testInvalidNamespaceCasing() {
+ new NamespacedKey("Minecraft", "foo").toString();
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testInvalidKeyCasing() {
+ new NamespacedKey("minecraft", "Foo").toString();
+ }
+
+ @Test(expected = IllegalArgumentException.class)
public void testInvalidKey() {
new NamespacedKey("minecraft", "foo!").toString();
}