From 1aba6b5c50b69493bd740353df3f821927a31cc2 Mon Sep 17 00:00:00 2001 From: Stefan Larsson Date: Thu, 22 Oct 2015 11:36:49 +0200 Subject: [PATCH 1/2] In RiakUserMetadata.containsKey(), use the charset method parameter when encoding the key. --- .../riak/client/core/query/UserMetadata/RiakUserMetadata.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadata.java b/src/main/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadata.java index de46a5a01..fbb10ea93 100644 --- a/src/main/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadata.java +++ b/src/main/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadata.java @@ -78,7 +78,7 @@ public boolean containsKey(String key) */ public boolean containsKey(String key, Charset charset) { - return meta.containsKey(BinaryValue.unsafeCreate(key.getBytes())); + return meta.containsKey(BinaryValue.unsafeCreate(key.getBytes(charset))); } /** From 3e306e875d5185db0efd1a5d268977b7cd9a2aad Mon Sep 17 00:00:00 2001 From: Alex Moore Date: Fri, 22 Jul 2016 00:28:00 -0400 Subject: [PATCH 2/2] Add a few tests for charset options in RiakUserMetadata --- .../UserMetadata/RiakUserMetadataTest.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/test/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadataTest.java diff --git a/src/test/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadataTest.java b/src/test/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadataTest.java new file mode 100644 index 000000000..b7f58b75e --- /dev/null +++ b/src/test/java/com/basho/riak/client/core/query/UserMetadata/RiakUserMetadataTest.java @@ -0,0 +1,53 @@ +package com.basho.riak.client.core.query.UserMetadata; + +import com.basho.riak.client.core.util.BinaryValue; +import org.junit.Test; + +import java.nio.charset.Charset; + +import static junit.framework.TestCase.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +public class RiakUserMetadataTest +{ + final Charset utf16 = Charset.forName("UTF-16"); + final String oddKey = "\uD834\uDD1E\uD835\uDD65"; + final String oddValue = "\uD835\uDFF6\uD840\uDC8A"; + final BinaryValue oddKeyBV = BinaryValue.create(oddKey, utf16); + final BinaryValue oddValueBV = BinaryValue.create(oddValue, utf16); + + @Test + public void getSetMetadata_string_altCharset() + { + RiakUserMetadata md = new RiakUserMetadata(); + md.put(oddKey, oddValue, utf16); + final String gotValue = md.get(oddKey, utf16); + + assertEquals(oddValue, gotValue); + assertNotEquals(gotValue, md.get(oddKey)); + } + + @Test + public void getSetMetadata_binaryValue_altCharset() + { + RiakUserMetadata md = new RiakUserMetadata(); + md.put(oddKeyBV, oddValueBV); + final BinaryValue gotValue = md.get(oddKeyBV); + + assertEquals(oddValueBV, gotValue); + assertNotEquals(gotValue, md.get(oddKey)); + } + + @Test + public void getSetMetadata_mixedInterfaces_altCharset() + { + RiakUserMetadata md = new RiakUserMetadata(); + md.put(oddKeyBV, oddValueBV); + + final String gotValue = md.get(oddKey, utf16); + + assertEquals(oddValue, gotValue); + } +}