private void getNextBatch() { if (listing == null) { listing = time(new Function<ListObjectsResult>() { @Override public ListObjectsResult call() { ListObjectsRequest request = new ListObjectsRequest(config.getBucketName()); request.setPrefix("".equals(prefix) ? null : prefix); if (config.isUrlEncodeKeys()) request.setEncodingType(EncodingType.url); return s3.listObjects(request); } }, OPERATION_LIST_OBJECTS); } else { log.info("getting next page of objects [prefix: {}, marker: {}, nextMarker: {}, encodingType: {}, maxKeys: {}]", listing.getPrefix(), listing.getMarker(), listing.getNextMarker(), listing.getEncodingType(), listing.getMaxKeys()); listing = time(new Function<ListObjectsResult>() { @Override public ListObjectsResult call() { return s3.listMoreObjects(listing); } }, OPERATION_LIST_OBJECTS); } objectIterator = listing.getObjects().iterator(); } }