package org.handwerkszeug.riak.ease; import static org.handwerkszeug.riak.util.Validation.notNull; import org.handwerkszeug.riak.RiakAction; import org.handwerkszeug.riak.RiakClient; import org.handwerkszeug.riak._; import org.handwerkszeug.riak.ease.internal.AbstractRiakCommand; import org.handwerkszeug.riak.ease.internal.ResultHolder; import org.handwerkszeug.riak.model.Location; import org.handwerkszeug.riak.model.Quorum; import org.handwerkszeug.riak.op.RiakOperations; /** * @author taichi * @param <OP> */ public class DeleteCommand<OP extends RiakOperations> extends AbstractRiakCommand<_, OP> { protected final Location location; protected Quorum readWrite; public DeleteCommand(RiakClient<OP> client, ExceptionHandler handler, Location location) { super(client, handler); this.location = location; } public DeleteCommand<OP> readWrite(Quorum quorum) { notNull(quorum, "quorum"); this.readWrite = quorum; return this; } @Override public _ execute() { final ResultHolder<_> holder = new ResultHolder<_>(); this.client.execute(new RiakAction<OP>() { @Override public void execute(OP operations) { SimpleEaseHandler<_> eh = new SimpleEaseHandler<_>(holder); if (DeleteCommand.this.readWrite == null) { operations.delete(DeleteCommand.this.location, eh); } else { operations.delete(DeleteCommand.this.location, DeleteCommand.this.readWrite, eh); } } }); return holder.getResult(); } }