package org.handwerkszeug.riak.ease; import java.util.ArrayList; import java.util.List; import org.handwerkszeug.riak.RiakAction; import org.handwerkszeug.riak.RiakClient; import org.handwerkszeug.riak.ease.internal.AbstractRiakCommand; import org.handwerkszeug.riak.ease.internal.ResultHolder; import org.handwerkszeug.riak.model.KeyResponse; import org.handwerkszeug.riak.model.RiakContentsResponse; import org.handwerkszeug.riak.op.RiakOperations; /** * @author taichi * @param <OP> */ public class ListKeysCommand<OP extends RiakOperations> extends AbstractRiakCommand<List<String>, OP> { final String bucket; public ListKeysCommand(RiakClient<OP> client, ExceptionHandler handler, String bucket) { super(client, handler); this.bucket = bucket; } @Override public List<String> execute() { final ResultHolder<List<String>> holder = new ResultHolder<List<String>>(); final List<String> keys = new ArrayList<String>(); this.client.execute(new RiakAction<OP>() { @Override public void execute(OP operations) { operations.listKeys(ListKeysCommand.this.bucket, new EaseHandler<KeyResponse>(holder) { @Override public void handle( RiakContentsResponse<KeyResponse> response) throws Exception { KeyResponse kr = response.getContents(); if (kr.getDone()) { holder.setResult(keys); } else { keys.addAll(kr.getKeys()); } } }); } }); return holder.getResult(); } }