@Override
public InputStreamWithHints openNextWithHints() throws IOException
{
if (!iterator.hasNext()) {
return null;
}
final String key = iterator.next();
final GetObjectRequest request = new GetObjectRequest(bucket, key);
S3Object object = new DefaultRetryable<S3Object>(format("Getting object '%s'", request.getKey())) {
@Override
public S3Object call()
{
return client.getObject(request);
}
}.executeWithCheckedException(retryExec, IOException.class);
long objectSize = object.getObjectMetadata().getContentLength();
LOGGER.info("Open S3Object with bucket [{}], key [{}], with size [{}]", bucket, key, objectSize);
InputStream inputStream = new ResumableInputStream(object.getObjectContent(), new S3InputStreamReopener(client, request, objectSize, retryExec));
return new InputStreamWithHints(inputStream, String.format("s3://%s/%s", bucket, key));
}