diff --git a/src/main/java/net/spy/memcached/MemcachedClient.java b/src/main/java/net/spy/memcached/MemcachedClient.java index d1f1b3507..8b86370f8 100644 --- a/src/main/java/net/spy/memcached/MemcachedClient.java +++ b/src/main/java/net/spy/memcached/MemcachedClient.java @@ -70,6 +70,7 @@ import net.spy.memcached.ops.TimedOutOperationStatus; import net.spy.memcached.transcoders.TranscodeService; import net.spy.memcached.transcoders.Transcoder; +import net.spy.memcached.util.StringUtils; /** * Client to a memcached server. @@ -258,25 +259,6 @@ public Transcoder getTranscoder() { return transcoder; } - private void validateKey(String key) { - byte[] keyBytes = KeyUtil.getKeyBytes(key); - if (keyBytes.length > MAX_KEY_LENGTH) { - throw new IllegalArgumentException("Key is too long (maxlen = " - + MAX_KEY_LENGTH + ")"); - } - if (keyBytes.length == 0) { - throw new IllegalArgumentException( - "Key must contain at least one character."); - } - // Validate the key - for (byte b : keyBytes) { - if (b == ' ' || b == '\n' || b == '\r' || b == 0) { - throw new IllegalArgumentException( - "Key contains invalid characters: ``" + key + "''"); - } - } - } - /** * (internal use) Add a raw operation to a numbered connection. This method is * exposed for testing. @@ -286,7 +268,7 @@ private void validateKey(String key) { * @return the Operation */ Operation addOp(final String key, final Operation op) { - validateKey(key); + StringUtils.validateKey(key); mconn.checkState(); mconn.addOperation(key, op); return op; @@ -1083,7 +1065,7 @@ public BulkFuture> asyncGetBulk(Collection keys, while (keyIter.hasNext() && tcIter.hasNext()) { String key = keyIter.next(); tcMap.put(key, tcIter.next()); - validateKey(key); + StringUtils.validateKey(key); final MemcachedNode primaryNode = locator.getPrimary(key); MemcachedNode node = null; if (primaryNode.isActive()) { diff --git a/src/main/java/net/spy/memcached/util/StringUtils.java b/src/main/java/net/spy/memcached/util/StringUtils.java index 2b1b3641a..ae2c0c562 100644 --- a/src/main/java/net/spy/memcached/util/StringUtils.java +++ b/src/main/java/net/spy/memcached/util/StringUtils.java @@ -24,6 +24,9 @@ import java.util.Collection; +import net.spy.memcached.KeyUtil; +import net.spy.memcached.MemcachedClientIF; + /** * Some String utilities. */ @@ -54,4 +57,23 @@ public static boolean isJsonObject(String s) { return false; } } + + public static void validateKey(String key) { + byte[] keyBytes = KeyUtil.getKeyBytes(key); + if (keyBytes.length > MemcachedClientIF.MAX_KEY_LENGTH) { + throw new IllegalArgumentException("Key is too long (maxlen = " + + MemcachedClientIF.MAX_KEY_LENGTH + ")"); + } + if (keyBytes.length == 0) { + throw new IllegalArgumentException( + "Key must contain at least one character."); + } + // Validate the key + for (byte b : keyBytes) { + if (b == ' ' || b == '\n' || b == '\r' || b == 0) { + throw new IllegalArgumentException( + "Key contains invalid characters: ``" + key + "''"); + } + } + } }