/*
   * (non-Javadoc)
   *
   * @see
   * com.basho.riak.client.raw.RawClient#fetchBucketKeys(java.lang.String)
   */
  public Iterable<String> listKeys(String bucketName) throws IOException {
    if (bucketName == null || bucketName.trim().equals("")) {
      throw new IllegalArgumentException("bucketName cannot be null, empty or all whitespace");
    }

    final KeySource keySource = client.listKeys(ByteString.copyFromUtf8(bucketName));
    final Iterator<String> i =
        new Iterator<String>() {

          private final Iterator<ByteString> delegate = keySource.iterator();

          public boolean hasNext() {
            return delegate.hasNext();
          }

          public String next() {
            return nullSafeToStringUtf8(delegate.next());
          }

          public void remove() {
            delegate.remove();
          }
        };

    return new Iterable<String>() {
      public Iterator<String> iterator() {
        return i;
      }
    };
  }