Guido,

I’m sorry, there are not currently any docs available. Rest assured they are a 
work in progress. In the meantime, please feel free to check-out the current 
pre-release [1]. The pre-release covers the low level API we have built on top 
of the PB interface. There is a start to a friendlier API in the develop branch 
of riak-java-client [2].

If you would like to get started with the low level API to begin getting a feel 
for Riak datatypes, I have included a few snippets that will hopefully help. 
The counters (and the data structures in general) are implemented as two 
separate operations: Fetch and Update. Updating a counter that does not exist 
will create it and initialize it to the given value. Fetching a counter that 
has not had a value stored will return an empty value.

While the low level API does not have convenience methods for getAndIncrement 
and the like, they can all be easily accomplished given fetch and update. It 
would clearly be easy for us to provide methods for these typical access 
patterns and in fact, it is something we are planning on doing.

RiakCluster cluster = …
BinaryValue bucket = …
BinaryValue key = …
BinaryValue type = ...

fetch():

DtFetchOperation get = 
        new DtFetchOperation.Builder(bucket, key)
                .withBucketType(type)
                .build();

DtFetchOperation.Response response = cluster.execute(get).get();

long value;
CrdtElement element = response.getCrdtElement();
if (crdtElement.isCounter()) {
        value = element.getCounter().getValue();                
} else {
        ... 
}

update():

DtUpdateOperation update = 
        new DtUpdateOperation.Builder(bucket, key)
                .withBucketType(type)
                .withReturnBody(true)
                .withOp(new CounterOp(1)) // increment by 1
                .build();

DtUpdateOperation.Response response = cluster.execute(update).get();

long value;
CrdtElement element = response.getCrdtElement();
if (crdtElement.isCounter()) {
        value = element.getCounter().getValue();                
} else {
        ... 
}

getAndIncrement();

long value = fetch();
update(1);

incrementAndGet():

long value = update(1); // make sure withReturnBody == true

[1] https://github.com/basho/riak-java-client 
[2]https://github.com/basho/riak-java-client/tree/develop/src/main/java/com/basho/riak/client/operations

-- 
Dave Rusek
Basho Technologies
@davidjrusek

On January 24, 2014 at 8:41:07 AM, Guido Medina ([email protected]) 
wrote:

Hi,

Is there any small doc that could explain its usage a little bit:

From the Java perspective it would be nice if it point out its counter part 
methods with Atomic Integer like:
How to create it? Does incrementing a counter will just create it with zero as 
initial value and then increment it? What if you need to know its value and 
then increment it before it is created? (getAndIncrement)
get()
getAndIncrement()
incrementAndGet()
Regards,

Guido.
_______________________________________________  
riak-users mailing list  
[email protected]  
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com  
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to