com.basho.riak.client
Class RiakObject

java.lang.Object
  extended by com.basho.riak.client.RiakObject

public class RiakObject
extends java.lang.Object

A Riak object.


Nested Class Summary
 class RiakObject.LinkBuilder
          Created by links() as a convenient way to build up link walking queries
 
Constructor Summary
RiakObject(RiakClient riak, java.lang.String bucket, java.lang.String key)
           
RiakObject(RiakClient riak, java.lang.String bucket, java.lang.String key, byte[] value)
           
RiakObject(RiakClient riak, java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType)
           
RiakObject(RiakClient riak, java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType, java.util.List<RiakLink> links)
           
RiakObject(RiakClient riak, java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType, java.util.List<RiakLink> links, java.util.Map<java.lang.String,java.lang.String> usermeta)
           
RiakObject(RiakClient riak, java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType, java.util.List<RiakLink> links, java.util.Map<java.lang.String,java.lang.String> usermeta, java.lang.String vclock, java.lang.String lastmod, java.lang.String vtag)
          Create an empty object.
RiakObject(java.lang.String bucket, java.lang.String key)
           
RiakObject(java.lang.String bucket, java.lang.String key, byte[] value)
           
RiakObject(java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType)
           
RiakObject(java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType, java.util.List<RiakLink> links)
           
RiakObject(java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType, java.util.List<RiakLink> links, java.util.Map<java.lang.String,java.lang.String> usermeta)
           
RiakObject(java.lang.String bucket, java.lang.String key, byte[] value, java.lang.String contentType, java.util.List<RiakLink> links, java.util.Map<java.lang.String,java.lang.String> usermeta, java.lang.String vclock, java.lang.String lastmod, java.lang.String vtag)
           
 
Method Summary
 RiakObject addLink(RiakLink link)
           
 RiakObject addUsermeta(java.lang.String key, java.lang.String value)
           
 void copyData(RiakObject object)
          Copy the metadata and value from object.
 HttpResponse delete()
           
 HttpResponse delete(RequestMeta meta)
          Convenience method for calling RiakClient.delete(String, String, RequestMeta).
 FetchResponse fetch()
           
 FetchResponse fetch(RequestMeta meta)
          Convenience method for calling RiakClient.fetch(String, String) followed by copyData(RiakObject)
 FetchResponse fetchMeta()
           
 FetchResponse fetchMeta(RequestMeta meta)
          Convenience method for calling RiakClient.fetchMeta(String, String, RequestMeta) followed by updateMeta(FetchResponse)
 java.lang.String getBucket()
          The object's bucket
 java.lang.String getContentType()
          The object's content type as a MIME type
 java.lang.String getKey()
          The object's key
 java.lang.String getLastmod()
          The modification date of the object determined by Riak
 java.util.Date getLastmodAsDate()
          Convenience method to get the last modified header parsed into a Date object.
 java.util.List<RiakLink> getLinks()
          The object's links -- may be empty, but never be null.
 RiakClient getRiakClient()
          A RiakObject can be loosely attached to the RiakClient from which retrieve it was retrieved.
 java.util.Map<java.lang.String,java.lang.String> getUsermeta()
          User-specified metadata for the object in the form of key-value pairs -- may be empty, but never be null.
 java.lang.String getValue()
          The object's value
 byte[] getValueAsBytes()
           
 java.io.InputStream getValueStream()
           
 java.lang.Long getValueStreamLength()
           
 java.lang.String getVclock()
          The object's opaque vclock assigned by Riak
 java.lang.String getVtag()
          An entity tag for the object assigned by Riak
 void setContentType(java.lang.String contentType)
           
 void setLinks(java.util.List<RiakLink> links)
           
 RiakObject setRiakClient(RiakClient client)
           
 void setUsermeta(java.util.Map<java.lang.String,java.lang.String> usermeta)
           
 void setValue(byte[] value)
           
 void setValue(java.lang.String value)
           
 void setValueStream(java.io.InputStream in)
           
 void setValueStream(java.io.InputStream in, java.lang.Long len)
          Set the object's value as a stream.
 void setValueStreamLength(java.lang.Long len)
           
 StoreResponse store()
           
 StoreResponse store(RequestMeta meta)
          Convenience method for calling RiakClient.store(RiakObject, RequestMeta) followed by updateMeta(StoreResponse)
 StoreResponse store(RiakClient riak, RequestMeta meta)
          Store this object to a different Riak instance.
 void updateMeta(FetchResponse response)
          Update the object's metadata from a fetch or fetchMeta operation
 void updateMeta(StoreResponse response)
          Update the object's metadata.
 RiakObject.LinkBuilder walk()
           
 RiakObject.LinkBuilder walk(boolean keep)
           
 RiakObject.LinkBuilder walk(java.lang.String bucket)
           
 RiakObject.LinkBuilder walk(java.lang.String bucket, boolean keep)
           
 RiakObject.LinkBuilder walk(java.lang.String bucket, java.lang.String tag)
           
 RiakObject.LinkBuilder walk(java.lang.String bucket, java.lang.String tag, boolean keep)
          Convenience methods for building a link walk specification starting from this object and calling RiakClient.walk(String, String, RiakWalkSpec)
 void writeToHttpMethod(org.apache.commons.httpclient.HttpMethod httpMethod)
          Serializes this object to an existing HttpMethod which can be sent as an HTTP request.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RiakObject

public RiakObject(RiakClient riak,
                  java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType,
                  java.util.List<RiakLink> links,
                  java.util.Map<java.lang.String,java.lang.String> usermeta,
                  java.lang.String vclock,
                  java.lang.String lastmod,
                  java.lang.String vtag)
Create an empty object. The content type defaults to application/octet-stream.

Parameters:
riak - Riak instance this object is associated with, which is used by the convenience methods in this class (e.g. store()).
bucket - The object's bucket
key - The object's key
value - The object's value
contentType - The object's content type which defaults to application/octet-stream if null.
links - Links to other objects
usermeta - Custom metadata key-value pairs for this object
vclock - An opaque vclock assigned by Riak
lastmod - The last time this object was modified according to Riak
vtag - This object's entity tag assigned by Riak

RiakObject

public RiakObject(RiakClient riak,
                  java.lang.String bucket,
                  java.lang.String key)

RiakObject

public RiakObject(RiakClient riak,
                  java.lang.String bucket,
                  java.lang.String key,
                  byte[] value)

RiakObject

public RiakObject(RiakClient riak,
                  java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType)

RiakObject

public RiakObject(RiakClient riak,
                  java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType,
                  java.util.List<RiakLink> links)

RiakObject

public RiakObject(RiakClient riak,
                  java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType,
                  java.util.List<RiakLink> links,
                  java.util.Map<java.lang.String,java.lang.String> usermeta)

RiakObject

public RiakObject(java.lang.String bucket,
                  java.lang.String key)

RiakObject

public RiakObject(java.lang.String bucket,
                  java.lang.String key,
                  byte[] value)

RiakObject

public RiakObject(java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType)

RiakObject

public RiakObject(java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType,
                  java.util.List<RiakLink> links)

RiakObject

public RiakObject(java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType,
                  java.util.List<RiakLink> links,
                  java.util.Map<java.lang.String,java.lang.String> usermeta)

RiakObject

public RiakObject(java.lang.String bucket,
                  java.lang.String key,
                  byte[] value,
                  java.lang.String contentType,
                  java.util.List<RiakLink> links,
                  java.util.Map<java.lang.String,java.lang.String> usermeta,
                  java.lang.String vclock,
                  java.lang.String lastmod,
                  java.lang.String vtag)
Method Detail

getRiakClient

public RiakClient getRiakClient()
A RiakObject can be loosely attached to the RiakClient from which retrieve it was retrieved. Calling convenience methods like store() will store this object use that client.


setRiakClient

public RiakObject setRiakClient(RiakClient client)

copyData

public void copyData(RiakObject object)
Copy the metadata and value from object. The bucket and key are not copied.

Parameters:
object - The source object to copy from

updateMeta

public void updateMeta(StoreResponse response)
Update the object's metadata. This usually happens when Riak returns updated metadata from a store operation.

Parameters:
response - Response from a store operation containing an updated vclock, last modified date, and vtag

updateMeta

public void updateMeta(FetchResponse response)
Update the object's metadata from a fetch or fetchMeta operation

Parameters:
response - Response from a fetch or fetchMeta operation containing a vclock, last modified date, and vtag

getBucket

public java.lang.String getBucket()
The object's bucket


getKey

public java.lang.String getKey()
The object's key


getValue

public java.lang.String getValue()
The object's value


getValueAsBytes

public byte[] getValueAsBytes()

setValue

public void setValue(java.lang.String value)

setValue

public void setValue(byte[] value)

setValueStream

public void setValueStream(java.io.InputStream in,
                           java.lang.Long len)
Set the object's value as a stream. A value set here is independent of and has precedent over any value set using setValue(): writeToHttpMethod(HttpMethod) will always write the value from getValueStream() if it is not null. Calling getValue() will always return values set via setValue(), and calling getValueStream() will always return the stream set via setValueStream.

Parameters:
in - Input stream representing the object's value
len - Length of the InputStream or null if unknown. If null, the value will be buffered in memory to determine its size before sending to the server.

setValueStream

public void setValueStream(java.io.InputStream in)

getValueStream

public java.io.InputStream getValueStream()

setValueStreamLength

public void setValueStreamLength(java.lang.Long len)

getValueStreamLength

public java.lang.Long getValueStreamLength()

getLinks

public java.util.List<RiakLink> getLinks()
The object's links -- may be empty, but never be null. New links can be added using addLink() or getLinks().add()


setLinks

public void setLinks(java.util.List<RiakLink> links)

addLink

public RiakObject addLink(RiakLink link)

getUsermeta

public java.util.Map<java.lang.String,java.lang.String> getUsermeta()
User-specified metadata for the object in the form of key-value pairs -- may be empty, but never be null. New key-value pairs can be added using addUsermeta() or getUsermeta().put()


setUsermeta

public void setUsermeta(java.util.Map<java.lang.String,java.lang.String> usermeta)

addUsermeta

public RiakObject addUsermeta(java.lang.String key,
                              java.lang.String value)

getContentType

public java.lang.String getContentType()
The object's content type as a MIME type


setContentType

public void setContentType(java.lang.String contentType)

getVclock

public java.lang.String getVclock()
The object's opaque vclock assigned by Riak


getLastmod

public java.lang.String getLastmod()
The modification date of the object determined by Riak


getLastmodAsDate

public java.util.Date getLastmodAsDate()
Convenience method to get the last modified header parsed into a Date object. Returns null if header is null, malformed, or cannot be parsed.


getVtag

public java.lang.String getVtag()
An entity tag for the object assigned by Riak


store

public StoreResponse store(RequestMeta meta)
Convenience method for calling RiakClient.store(RiakObject, RequestMeta) followed by updateMeta(StoreResponse)

Throws:
java.lang.IllegalStateException - if this object was not fetched from a Riak instance, so there is not associated server to store it with.

store

public StoreResponse store()

store

public StoreResponse store(RiakClient riak,
                           RequestMeta meta)
Store this object to a different Riak instance.

Parameters:
riak - Riak instance to store this object to
meta - Same as RiakClient.store(RiakObject, RequestMeta)
Throws:
java.lang.IllegalStateException - if this object was not fetched from a Riak instance, so there is not associated server to store it with.

fetch

public FetchResponse fetch(RequestMeta meta)
Convenience method for calling RiakClient.fetch(String, String) followed by copyData(RiakObject)

Parameters:
meta - Same as RiakClient.fetch(String, String, RequestMeta)
Throws:
java.lang.IllegalStateException - if this object was not fetched from a Riak instance, so there is not associated server to refetch it from.

fetch

public FetchResponse fetch()

fetchMeta

public FetchResponse fetchMeta(RequestMeta meta)
Convenience method for calling RiakClient.fetchMeta(String, String, RequestMeta) followed by updateMeta(FetchResponse)

Throws:
java.lang.IllegalStateException - if this object was not fetched from a Riak instance, so there is not associated server to refetch meta from.

fetchMeta

public FetchResponse fetchMeta()

delete

public HttpResponse delete(RequestMeta meta)
Convenience method for calling RiakClient.delete(String, String, RequestMeta).

Throws:
java.lang.IllegalStateException - if this object was not fetched from a Riak instance, so there is not associated server to delete from.

delete

public HttpResponse delete()

walk

public RiakObject.LinkBuilder walk(java.lang.String bucket,
                                   java.lang.String tag,
                                   boolean keep)
Convenience methods for building a link walk specification starting from this object and calling RiakClient.walk(String, String, RiakWalkSpec)

Parameters:
bucket - The bucket to follow object links to
tag - The link tags to follow from this object
keep - Whether to keep the output from this link walking step. If not specified, then the output is only kept from the last step.
Returns:
A RiakObject.LinkBuilder object to continue building the walk query or to run it.

walk

public RiakObject.LinkBuilder walk(java.lang.String bucket,
                                   java.lang.String tag)

walk

public RiakObject.LinkBuilder walk(java.lang.String bucket,
                                   boolean keep)

walk

public RiakObject.LinkBuilder walk(java.lang.String bucket)

walk

public RiakObject.LinkBuilder walk()

walk

public RiakObject.LinkBuilder walk(boolean keep)

writeToHttpMethod

public void writeToHttpMethod(org.apache.commons.httpclient.HttpMethod httpMethod)
Serializes this object to an existing HttpMethod which can be sent as an HTTP request. Specifically, sends the object's link, user-defined metadata and vclock as HTTP headers and the value as the body. Used by RiakClient to create PUT requests.



Copyright © 2010. All Rights Reserved.