package org.handwerkszeug.riak.transport.rest;
import java.util.List;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonMethod;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
import org.codehaus.jackson.map.annotate.JsonSerialize.Typing;
import org.handwerkszeug.riak.model.Bucket;
import org.handwerkszeug.riak.model.Erlang;
import org.handwerkszeug.riak.model.Function;
import org.handwerkszeug.riak.model.Quorum;
import org.handwerkszeug.riak.transport.rest.internal.FunctionJsonDeserializer;
import org.handwerkszeug.riak.transport.rest.internal.FunctionJsonSerializer;
import org.handwerkszeug.riak.transport.rest.internal.QuorumJsonDeserializer;
import org.handwerkszeug.riak.transport.rest.internal.QuorumJsonSerializer;
/**
* @author taichi
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(JsonMethod.NONE)
@JsonSerialize(include = Inclusion.NON_NULL)
public class JsonBucket implements Bucket {
@JsonProperty("name")
String name;
@JsonProperty("n_val")
int numberOfReplicas;
@JsonProperty("allow_mult")
boolean allowMulti;
@JsonProperty("last_write_wins")
boolean lastWriteWins;
@JsonSerialize(contentUsing = FunctionJsonSerializer.class, include = Inclusion.NON_NULL, contentAs = Function.class, typing = Typing.STATIC)
@JsonDeserialize(contentUsing = FunctionJsonDeserializer.class, contentAs = Function.class)
@JsonProperty("precommit")
List<Function> precommits;
@JsonSerialize(contentUsing = FunctionJsonSerializer.class, include = Inclusion.NON_NULL, contentAs = Erlang.class, typing = Typing.STATIC)
@JsonDeserialize(contentUsing = FunctionJsonDeserializer.class, contentAs = Erlang.class)
@JsonProperty("postcommit")
List<Erlang> postcommits;
@JsonSerialize(using = FunctionJsonSerializer.class, include = Inclusion.NON_NULL)
@JsonDeserialize(using = FunctionJsonDeserializer.class)
@JsonProperty("chash_keyfun")
Erlang keyHashFunction;
@JsonSerialize(using = FunctionJsonSerializer.class, include = Inclusion.NON_NULL)
@JsonDeserialize(using = FunctionJsonDeserializer.class)
@JsonProperty("linkfun")
Erlang linkFunction;
@JsonSerialize(using = QuorumJsonSerializer.class, include = Inclusion.NON_NULL)
@JsonDeserialize(using = QuorumJsonDeserializer.class)
@JsonProperty("r")
Quorum defaultReadQuorum;
@JsonSerialize(using = QuorumJsonSerializer.class, include = Inclusion.NON_NULL)
@JsonDeserialize(using = QuorumJsonDeserializer.class)
@JsonProperty("w")
Quorum defaultWriteQuorum;
@JsonSerialize(using = QuorumJsonSerializer.class, include = Inclusion.NON_NULL)
@JsonDeserialize(using = QuorumJsonDeserializer.class)
@JsonProperty("dw")
Quorum defaultDurableWriteQuorum;
@JsonSerialize(using = QuorumJsonSerializer.class, include = Inclusion.NON_NULL)
@JsonDeserialize(using = QuorumJsonDeserializer.class)
@JsonProperty("rw")
Quorum defaultReadWriteQuorum;
@JsonProperty("backend")
String backend;
public JsonBucket(@JsonProperty("name") String name) {
this.name = name;
}
@Override
public String getName() {
return this.name;
}
@Override
public int getNumberOfReplicas() {
return this.numberOfReplicas;
}
@Override
public void setNumberOfReplicas(int nval) {
this.numberOfReplicas = nval;
}
@Override
public boolean getAllowMulti() {
return this.allowMulti;
}
@Override
public void setAllowMulti(boolean allow) {
this.allowMulti = allow;
}
@Override
public boolean getLastWriteWins() {
return this.lastWriteWins;
}
@Override
public void setLastWriteWins(boolean is) {
this.lastWriteWins = is;
}
@Override
public List<Function> getPrecommits() {
return this.precommits;
}
@Override
public void setPrecommits(List<Function> functions) {
this.precommits = functions;
}
@Override
public List<Erlang> getPostcommits() {
return this.postcommits;
}
@Override
public void setPostcommits(List<Erlang> functions) {
this.postcommits = functions;
}
@Override
public Erlang getKeyHashFunction() {
return this.keyHashFunction;
}
@Override
public void setKeyHashFunction(Erlang erlang) {
this.keyHashFunction = erlang;
}
@Override
public Erlang getLinkFunction() {
return this.linkFunction;
}
@Override
public void setLinkFunction(Erlang erlang) {
this.linkFunction = erlang;
}
@Override
public Quorum getDefaultReadQuorum() {
return this.defaultReadQuorum;
}
@Override
public void setDefaultReadQuorum(Quorum quorum) {
this.defaultReadQuorum = quorum;
}
@Override
public Quorum getDefaultWriteQuorum() {
return this.defaultWriteQuorum;
}
@Override
public void setDefaultWriteQuorum(Quorum quorum) {
this.defaultWriteQuorum = quorum;
}
@Override
public Quorum getDefaultDurableWriteQuorum() {
return this.defaultDurableWriteQuorum;
}
@Override
public void setDefaultDurableWriteQuorum(Quorum quorum) {
this.defaultDurableWriteQuorum = quorum;
}
@Override
public Quorum getDefaultReadWriteQuorum() {
return this.defaultReadWriteQuorum;
}
@Override
public void setDefaultReadWriteQuorum(Quorum quorum) {
this.defaultReadWriteQuorum = quorum;
}
@Override
public String getBackend() {
return this.backend;
}
@Override
public void setBackend(String name) {
this.backend = name;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("JsonBucket [name=");
builder.append(this.name);
builder.append(", numberOfReplicas=");
builder.append(this.numberOfReplicas);
builder.append(", allowMulti=");
builder.append(this.allowMulti);
builder.append(", lastWriteWins=");
builder.append(this.lastWriteWins);
builder.append(", precommits=");
builder.append(this.precommits);
builder.append(", postcommits=");
builder.append(this.postcommits);
builder.append(", keyHashFunction=");
builder.append(this.keyHashFunction);
builder.append(", linkFunction=");
builder.append(this.linkFunction);
builder.append(", defaultReadQuorum=");
builder.append(this.defaultReadQuorum);
builder.append(", defaultWriteQuorum=");
builder.append(this.defaultWriteQuorum);
builder.append(", defaultDurableWriteQuorum=");
builder.append(this.defaultDurableWriteQuorum);
builder.append(", defaultReadWriteQuorum=");
builder.append(this.defaultReadWriteQuorum);
builder.append(", backend=");
builder.append(this.backend);
builder.append("]");
return builder.toString();
}
}