@Override public String completeMultipartUpload(final MultipartUpload mpu, final List<MultipartPart> parts) { long length = 0; for (MultipartPart part : parts) { length += part.partSize(); } byte[] array = Longs.toByteArray(length); ByteSourcePayload payload = new ByteSourcePayload( ByteSource.wrap(array)); super.abortMultipartUpload(mpu); MultipartPart part = delegate().uploadMultipartPart(mpu, 1, payload); return delegate().completeMultipartUpload(mpu, ImmutableList.of(part)); }
@Override @Nullable public Blob getBlob(String container, String name, GetOptions options) { Blob blob = super.getBlob(container, name, options); if (blob == null) { return null; } byte[] array; try (InputStream is = blob.getPayload().openStream()) { array = ByteStreams.toByteArray(is); } catch (IOException ioe) { throw new RuntimeException(ioe); } long length = Longs.fromByteArray(array); ByteSourcePayload payload = new ByteSourcePayload( new NullByteSource().slice(0, length)); payload.setContentMetadata(blob.getPayload().getContentMetadata()); payload.getContentMetadata().setContentLength(length); payload.getContentMetadata().setContentMD5((HashCode) null); blob.setPayload(payload); return blob; }
@Override public String putBlob(String containerName, Blob blob, PutOptions options) { long length; try (InputStream is = blob.getPayload().openStream()) { length = ByteStreams.copy(is, ByteStreams.nullOutputStream()); } catch (IOException ioe) { throw new RuntimeException(ioe); } byte[] array = Longs.toByteArray(length); ByteSourcePayload payload = new ByteSourcePayload( ByteSource.wrap(array)); payload.setContentMetadata(blob.getPayload().getContentMetadata()); payload.getContentMetadata().setContentLength((long) array.length); payload.getContentMetadata().setContentMD5((HashCode) null); blob.setPayload(payload); return super.putBlob(containerName, blob, options); }
@Override public MultipartPart uploadMultipartPart(MultipartUpload mpu, int partNumber, Payload payload) { long length; try (InputStream is = payload.openStream()) { length = ByteStreams.copy(is, ByteStreams.nullOutputStream()); } catch (IOException ioe) { throw new RuntimeException(ioe); } byte[] array = Longs.toByteArray(length); ByteSourcePayload newPayload = new ByteSourcePayload( ByteSource.wrap(array)); newPayload.setContentMetadata(payload.getContentMetadata()); newPayload.getContentMetadata().setContentLength((long) array.length); newPayload.getContentMetadata().setContentMD5((HashCode) null); MultipartPart part = super.uploadMultipartPart(mpu, partNumber, newPayload); return MultipartPart.create(part.partNumber(), length, part.partETag(), part.lastModified()); }
public static ByteSourcePayload newByteSourcePayload(ByteSource data) { return new ByteSourcePayload(checkNotNull(data, "data")); }
public static ByteSourcePayload newByteSourcePayload(ByteSource data) { return new ByteSourcePayload(checkNotNull(data, "data")); }
public static ByteSourcePayload newByteSourcePayload(ByteSource data) { return new ByteSourcePayload(checkNotNull(data, "data")); }
public static ByteSourcePayload newByteSourcePayload(ByteSource data) { return new ByteSourcePayload(checkNotNull(data, "data")); }
@Converter public static Payload toPayload(byte[] bytes) { return new ByteSourcePayload(ByteSource.wrap(bytes)); }
@Converter public static Payload toPayload(File file) { return new ByteSourcePayload(Files.asByteSource(file)); }
@Test public void testIterableSliceWithRepeatingByteSourceLargerPartSize() throws IOException { PayloadSlicer slicer = new BasePayloadSlicer(); ByteSource byteSource = ByteSource.wrap("aaaaaaaaaabbbbbbbbbbccccc".getBytes(Charsets.UTF_8)); /* 25 chars */ Payload payload = new ByteSourcePayload(byteSource); Iterator<Payload> iter = slicer.slice(payload, 50).iterator(); Payload part; assertTrue(iter.hasNext(), "Not enough results"); part = iter.next(); assertEquals(Strings2.toStringAndClose(part.getInput()), "aaaaaaaaaabbbbbbbbbbccccc"); assertEquals(part.getContentMetadata().getContentLength(), Long.valueOf(25)); assertFalse(iter.hasNext()); } }
@Override public String completeMultipartUpload(final MultipartUpload mpu, final List<MultipartPart> parts) { long length = 0; for (MultipartPart part : parts) { length += part.partSize(); } byte[] array = Longs.toByteArray(length); ByteSourcePayload payload = new ByteSourcePayload( ByteSource.wrap(array)); super.abortMultipartUpload(mpu); MultipartPart part = delegate().uploadMultipartPart(mpu, 1, payload); return delegate().completeMultipartUpload(mpu, ImmutableList.of(part)); }
@Test(groups = { "integration", "live" }) public void testPutByteSource() throws Exception { long length = 42; ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Payload payload = new ByteSourcePayload(byteSource); testPut(payload, null, payload, length, new PutOptions()); }
@Test(groups = { "integration", "live" }) public void testPutZeroLengthByteSource() throws Exception { long length = 0; // do not use ByteSource.empty() since it is backed by a // ByteArrayInputStream which supports reset ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Payload payload = new ByteSourcePayload(byteSource); testPut(payload, null, payload, length, new PutOptions()); }
@Override public String putBlob(String containerName, Blob blob, PutOptions options) { long length; try (InputStream is = blob.getPayload().openStream()) { length = ByteStreams.copy(is, ByteStreams.nullOutputStream()); } catch (IOException ioe) { throw new RuntimeException(ioe); } byte[] array = Longs.toByteArray(length); ByteSourcePayload payload = new ByteSourcePayload( ByteSource.wrap(array)); payload.setContentMetadata(blob.getPayload().getContentMetadata()); payload.getContentMetadata().setContentLength((long) array.length); payload.getContentMetadata().setContentMD5((HashCode) null); blob.setPayload(payload); return super.putBlob(containerName, blob, options); }
public void testExtractArchive() throws Exception { for (String regionId : regions) { Payload payload = new ByteSourcePayload(ByteSource.wrap(tarGz)); ExtractArchiveResponse extractResponse = getApi().getBulkApi(regionId) .extractArchive(containerName, payload, "tar.gz"); assertEquals(extractResponse.getCreated(), OBJECT_COUNT); assertTrue(extractResponse.getErrors().isEmpty()); assertEquals(getApi().getContainerApi(regionId).get(containerName).getObjectCount(), Long.valueOf(OBJECT_COUNT)); // repeat the command extractResponse = getApi().getBulkApi(regionId).extractArchive(containerName, payload, "tar.gz"); assertEquals(extractResponse.getCreated(), OBJECT_COUNT); assertTrue(extractResponse.getErrors().isEmpty()); } }
@Test(groups = { "integration", "live" }) public void testPutInputStream() throws Exception { long length = 42; ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Payload payload = new InputStreamPayload(byteSource.openStream()); testPut(payload, null, new ByteSourcePayload(byteSource), length, new PutOptions()); }
@Test(groups = { "integration", "live" }) public void testPutMultipartByteSource() throws Exception { long length = Math.max(getMinimumMultipartBlobSize(), MultipartUploadSlicingAlgorithm.DEFAULT_PART_SIZE + 1); BlobStore blobStore = view.getBlobStore(); MultipartUploadSlicingAlgorithm algorithm = new MultipartUploadSlicingAlgorithm( blobStore.getMinimumMultipartPartSize(), blobStore.getMaximumMultipartPartSize(), blobStore.getMaximumNumberOfParts()); // make sure that we are creating multiple parts assertThat(algorithm.calculateChunkSize(length)).isLessThan(length); ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Payload payload = new ByteSourcePayload(byteSource); HashCode hashCode = byteSource.hash(Hashing.md5()); testPut(payload, hashCode, payload, length, new PutOptions().multipart(true)); }
@Test(groups = { "integration", "live" }) public void testPutMultipartInputStream() throws Exception { long length = Math.max(getMinimumMultipartBlobSize(), MultipartUploadSlicingAlgorithm.DEFAULT_PART_SIZE + 1); BlobStore blobStore = view.getBlobStore(); MultipartUploadSlicingAlgorithm algorithm = new MultipartUploadSlicingAlgorithm( blobStore.getMinimumMultipartPartSize(), blobStore.getMaximumMultipartPartSize(), blobStore.getMaximumNumberOfParts()); // make sure that we are creating multiple parts assertThat(algorithm.calculateChunkSize(length)).isLessThan(length); ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Payload payload = new InputStreamPayload(byteSource.openStream()); testPut(payload, null, new ByteSourcePayload(byteSource), length, new PutOptions().multipart(true)); }
private void uploadByteSource(String container, String name, ByteSource byteSource) throws IOException { BlobStore blobStore = view.getBlobStore(); blobStore.putBlob(container, blobStore.blobBuilder(name) .payload(new ByteSourcePayload(byteSource)) .contentType("text/plain") .contentMD5(byteSource.hash(md5())) .contentLength(byteSource.size()) .build()); }