package org.handwerkszeug.riak.transport.rest;
import java.util.List;
import org.codehaus.jackson.node.ObjectNode;
import org.handwerkszeug.riak.model.Location;
import org.handwerkszeug.riak.model.RiakFuture;
import org.handwerkszeug.riak.op.RiakOperations;
import org.handwerkszeug.riak.op.RiakResponseHandler;
/**
* <p>
* not support manual sibling.<br/>
* when you use http client and {@code get} operations,<br/>
* client set {@code Accept : multipart/mixed} all time.<br/>
* </p>
*
* @author taichi
* @see <a href="http://wiki.basho.com/REST-API.html">REST API</a>
* @see <a href
* ="https://github.com/basho/riak_kv/blob/master/src/riak_kv_wm_raw.erl"
* >Riak REST Server code</a>
*/
public interface HttpRiakOperations extends RiakOperations, LuwakSupport {
/**
* All requests should include the “X-Riak-ClientId” header, which can be
* any string that uniquely identifies the client, for purposes of tracing
* object modifications in the vector clock.<br/>
* if you set clientId null, don't send clientId.
*
* @param clientId
*/
void setClientId(String clientId);
String getClientId();
/**
* notify messages for every steps.
*
* @see <a href="http://wiki.basho.com/Links.html">Links</a>
* @see <a
* href="http://blog.basho.com/2010/02/24/link-walking-by-example/">Link
* Walking By Example </a>
* @see <a
* href="https://github.com/basho/riak_kv/blob/master/src/riak_kv_wm_link_walker.erl">riak_kv_wm_link_walker.erl</a>
*/
RiakFuture walk(Location walkbegin, List<LinkCondition> conditions,
RiakResponseHandler<LinkWalkingResponse> handler);
/**
* @see <a href="http://wiki.basho.com/REST-API.html#Other-operations">Other
* operations</a>
*/
RiakFuture getStats(RiakResponseHandler<ObjectNode> handler);
}