Brian/Russel, That makes sense, I see now why only strings are supported.
However, your example of converting byte[] to String does not work universally, one should always specify the charset when doing String/byte[] conversions because otherwise a platform-dependent default will be chosen, hence it's not portable. I found that ISO-8859-1 can handle arbitrary byte arrays, so I'll use that to convert. Thanks, Kaspar On Jul 16, 2012 3:51 PM, "Brian Roach" <ro...@basho.com> wrote: > > Kaspar - > > Russell and I got together and discussed this a little more this morning. > > The reason it's not exposed at the IRiakClient and RawClient interfaces is because the underlying original HTTP client API doesn't support a byte array as a key; it only uses String. Because of this, our IRiakObject default implementation only takes a String for a key, and our annotation processing only works with a String as well. It was all designed around being protocol neutral to sit on top of both of the old clients. > > That being said, what does work perfectly fine is creating a new String from the byte array. Java does the right thing and this works regardless of whether you are using the PB or HTTP client: > > IRiakClient client = RiakFactory.pbcClient(); // or .httpClient() > Bucket b = client.fetchBucket("this").execute(); > > byte[] foo = { 0, 5, 120, 1 }; > String key = new String(foo); > > b.store(key, "this is my value").execute(); > IRiakObject o = b.fetch(key).execute(); > System.out.println(o.getValueAsString()); > > client.shutdown(); > > Thanks! > Brian Roach > > On Jul 16, 2012, at 1:01 AM, Russell Brown wrote: > > > Hi Kaspar, > > > > Sorry for the slow reply. > > > > On 16 Jul 2012, at 07:49, Kaspar Thommen wrote: > > > >> Anyone please? > >> > >> On Jun 26, 2012 8:57 PM, "Kaspar Thommen" <kaspar.thom...@gmail.com> wrote: > >> Hi, > >> > >> The high-level API in the Java client library (IRiakClient) does not allow one to use byte[] arrays as keys, only Strings, whereas the underlying PBC and http APIs (e.g. com.basho.riak.pbc.RiakClient) do, via the fetch(ByteString, ...) methods. Any reason for this? > > > > Oversight or oversimplifying by me. > > > > > >> Is it planned to add byte array keys to IRiakClient as well at some point? > > > > We should. Please will you raise an issue for it on the RJC github repo[1] to ensure we get to it? > > > > Cheers > > > > Russell > > > > [1] Java client issues - https://github.com/basho/riak-java-client/issues?direction=desc&sort=created&state=open > > > >> > >> Thanks, > >> Kaspar > >> > >> > >> _______________________________________________ > >> riak-users mailing list > >> riak-users@lists.basho.com > >> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > > > > _______________________________________________ > > riak-users mailing list > > riak-users@lists.basho.com > > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com >
_______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com