public Blob apply(AzureBlob from) { if (from == null) return null; Blob blob = blobFactory.create(blobPr2BlobMd.apply(from.getProperties())); blob.setPayload(checkNotNull(from.getPayload(), "payload: " + from)); blob.setAllHeaders(from.getAllHeaders()); return blob; } }
@Override public String completeMultipartUpload(MultipartUpload mpu, List<MultipartPart> parts) { AzureBlob azureBlob = sync.newBlob(); // fake values to satisfy BindAzureBlobMetadataToMultipartRequest azureBlob.setPayload(new byte[0]); azureBlob.getProperties().setContainer(mpu.containerName()); azureBlob.getProperties().setName(mpu.blobName()); azureBlob.getProperties().setContentMetadata((MutableContentMetadata) mpu.blobMetadata().getContentMetadata()); azureBlob.getProperties().setMetadata(mpu.blobMetadata().getUserMetadata()); ImmutableList.Builder<String> blocks = ImmutableList.builder(); for (MultipartPart part : parts) { String blockId = BaseEncoding.base64().encode(Ints.toByteArray(part.partNumber())); blocks.add(blockId); } return sync.putBlockList(mpu.containerName(), azureBlob, blocks.build()); }
public AzureBlob apply(Blob from) { if (from == null) return null; AzureBlob object = objectProvider.create(blob2ObjectMd.apply(from.getMetadata())); object.setPayload(checkNotNull(from.getPayload(), "payload: " + from)); object.setAllHeaders(from.getAllHeaders()); return object; } }
public AzureBlob apply(HttpResponse from) { MutableBlobProperties metadata = metadataParser.apply(from); AzureBlob blob = blobFactory.create(metadata); blob.getAllHeaders().putAll(from.getHeaders()); blob.setPayload(from.getPayload()); return blob; }
@Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) public void testCopyBlob() throws Exception { ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024); // create blob AzureBlob object = getApi().newBlob(); object.getProperties().setName("from"); object.setPayload(byteSource.read()); getApi().putBlob(privateContainer, object); // copy blob URI copySource = view.getSigner().signGetBlob(privateContainer, "from").getEndpoint(); getApi().copyBlob(copySource, privateContainer, "to", CopyBlobOptions.NONE); // ensure copied blob matches original AzureBlob getBlob = getApi().getBlob(privateContainer, "to"); assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read()); assertThat(getBlob.getProperties().getMetadata().isEmpty()); }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { checkArgument(checkNotNull(input, "input") instanceof AzureBlob, "this binder is only valid for AzureBlobs!"); checkNotNull(request, "request"); AzureBlob blob = AzureBlob.class.cast(input); checkArgument(blob.getPayload().getContentMetadata().getContentLength() != null && blob.getPayload().getContentMetadata().getContentLength() >= 0, "size must be set"); Builder<String, String> headers = ImmutableMap.builder(); headers.put("x-ms-blob-type", blob.getProperties().getType().toString()); switch (blob.getProperties().getType()) { case PAGE_BLOB: headers.put(HttpHeaders.CONTENT_LENGTH, "0"); headers.put("x-ms-blob-content-length", blob.getPayload().getContentMetadata().getContentLength().toString()); break; case BLOCK_BLOB: checkArgument( checkNotNull(blob.getPayload().getContentMetadata().getContentLength(), "blob.getContentLength()") <= 64l * 1024 * 1024, "maximum size for put Blob is 64MB"); break; } request = (R) request.toBuilder().replaceHeaders(Multimaps.forMap(headers.build())).build(); return blobBinder.bindToRequest(request, azureBlob2Blob.apply(blob)); } }
public String apply(Object from) { return ((AzureBlob) from).getProperties().getName(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNoNameIsBad() { AzureBlob blob = injector.getInstance(AzureBlob.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120000l); blob.setPayload(payload); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindAzureBlobMetadataToRequest binder = injector.getInstance(BindAzureBlobMetadataToRequest.class); binder.bindToRequest(request, blob); }
object.getProperties().setName("object"); object.setPayload(data); Payloads.calculateMD5(object); object.getProperties().getContentMetadata().setContentType("text/plain"); object.getProperties().getMetadata().put("mykey", "metadata-value"); byte[] md5 = object.getProperties().getContentMetadata().getContentMD5(); String newEtag = getApi().putBlob(privateContainer, object); assertEquals(base16().lowerCase().encode(md5), base16().lowerCase().encode(object.getProperties().getContentMetadata().getContentMD5())); BlobProperties metadata = getApi().getBlobProperties(privateContainer, object.getProperties().getName()); base16().lowerCase().encode(object.getProperties().getContentMetadata().getContentMD5())); assertEquals(metadata.getETag(), newEtag); assertEquals(metadata.getMetadata().entrySet().size(), 1); AzureBlob getBlob = getApi().getBlob(privateContainer, object.getProperties().getName()); assertEquals(Strings2.toString(getBlob.getPayload()), data); assertEquals(getBlob.getPayload().getContentMetadata().getContentLength(), Long.valueOf(data.length())); assertEquals(getBlob.getProperties().getContentMetadata().getContentType(), "text/plain"); assertEquals(base16().lowerCase().encode(md5), base16().lowerCase().encode(getBlob.getProperties().getContentMetadata().getContentMD5())); assertEquals(newEtag, getBlob.getProperties().getETag()); privateContainer, ListBlobsOptions.Builder .prefix(object.getProperties().getName().substring(0, object.getProperties().getName().length() - 1)) .maxResults(1).includeMetadata());
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { checkArgument(checkNotNull(input, "input") instanceof AzureBlob, "this binder is only valid for AzureBlobs!"); checkNotNull(request, "request"); AzureBlob blob = AzureBlob.class.cast(input); checkArgument(blob.getPayload().getContentMetadata().getContentLength() != null && blob.getPayload().getContentMetadata().getContentLength() >= 0, "size must be set"); Builder<String, String> headers = ImmutableMap.builder(); headers.put("x-ms-blob-type", blob.getProperties().getType().toString()); switch (blob.getProperties().getType()) { case PAGE_BLOB: headers.put(HttpHeaders.CONTENT_LENGTH, "0"); headers.put("x-ms-blob-content-length", blob.getPayload().getContentMetadata().getContentLength().toString()); break; case BLOCK_BLOB: checkArgument( checkNotNull(blob.getPayload().getContentMetadata().getContentLength(), "blob.getContentLength()") <= 64l * 1024 * 1024, "maximum size for put Blob is 64MB"); break; } request = (R) request.toBuilder().replaceHeaders(Multimaps.forMap(headers.build())).build(); return blobBinder.bindToRequest(request, azureBlob2Blob.apply(blob)); } }
public AzureBlob apply(HttpResponse from) { MutableBlobProperties metadata = metadataParser.apply(from); AzureBlob blob = blobFactory.create(metadata); blob.getAllHeaders().putAll(from.getHeaders()); blob.setPayload(from.getPayload()); return blob; }
public String apply(Object from) { return ((AzureBlob) from).getProperties().getName(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNoNameIsBad() { AzureBlob blob = injector.getInstance(AzureBlob.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120000L); blob.setPayload(payload); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindAzureBlobMetadataToRequest binder = injector.getInstance(BindAzureBlobMetadataToRequest.class); binder.bindToRequest(request, blob); }
object.getProperties().setName("object"); object.setPayload(data); object.getProperties().getContentMetadata().setContentMD5(Hashing.md5().hashString(data, Charsets.UTF_8).asBytes()); object.getProperties().getContentMetadata().setContentType("text/plain"); object.getProperties().getMetadata().put("mykey", "metadata-value"); byte[] md5 = object.getProperties().getContentMetadata().getContentMD5(); String newEtag = getApi().putBlob(privateContainer, object); assertEquals(base16().lowerCase().encode(md5), base16().lowerCase().encode(object.getProperties().getContentMetadata().getContentMD5())); BlobProperties metadata = getApi().getBlobProperties(privateContainer, object.getProperties().getName()); assertEquals(metadata.getName(), object.getProperties().getName()); assertEquals(metadata.getContentMetadata().getContentLength(), Long.valueOf(data.length())); assertEquals(metadata.getContentMetadata().getContentType(), "text/plain"); assertEquals(base16().lowerCase().encode(metadata.getContentMetadata().getContentMD5()), base16().lowerCase().encode(object.getProperties().getContentMetadata().getContentMD5())); assertEquals(metadata.getETag(), newEtag); assertEquals(metadata.getMetadata().entrySet().size(), 1); .put("new_metadata_2", "value-2") .build(); String eTag = getApi().setBlobMetadata(privateContainer, object.getProperties().getName(), userMetadata); assertThat(eTag).isNotNull(); String eTag2 = getApi().setBlobMetadata(privateContainer, object.getProperties().getName(), userMetadata); assertThat(eTag2).isNotNull().isNotEqualTo(eTag); AzureBlob getBlob = getApi().getBlob(privateContainer, object.getProperties().getName()); assertEquals(Strings2.toStringAndClose(getBlob.getPayload().openStream()), data);
@Override public String completeMultipartUpload(MultipartUpload mpu, List<MultipartPart> parts) { AzureBlob azureBlob = sync.newBlob(); // fake values to satisfy BindAzureBlobMetadataToMultipartRequest azureBlob.setPayload(new byte[0]); azureBlob.getProperties().setContainer(mpu.containerName()); azureBlob.getProperties().setName(mpu.blobName()); azureBlob.getProperties().setContentMetadata((MutableContentMetadata) mpu.blobMetadata().getContentMetadata()); azureBlob.getProperties().setMetadata(mpu.blobMetadata().getUserMetadata()); ImmutableList.Builder<String> blocks = ImmutableList.builder(); for (MultipartPart part : parts) { String blockId = BaseEncoding.base64().encode(Ints.toByteArray(part.partNumber())); blocks.add(blockId); } return sync.putBlockList(mpu.containerName(), azureBlob, blocks.build()); }
public Blob apply(AzureBlob from) { if (from == null) return null; Blob blob = blobFactory.create(blobPr2BlobMd.apply(from.getProperties())); blob.setPayload(checkNotNull(from.getPayload(), "payload: " + from)); blob.setAllHeaders(from.getAllHeaders()); return blob; } }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { checkArgument(checkNotNull(input, "input") instanceof AzureBlob, "this binder is only valid for AzureBlobs!"); checkNotNull(request, "request"); AzureBlob blob = AzureBlob.class.cast(input); checkArgument(blob.getPayload().getContentMetadata().getContentLength() != null && blob.getPayload().getContentMetadata().getContentLength() >= 0, "size must be set"); Builder<String, String> headers = ImmutableMap.builder(); headers.put("x-ms-blob-type", blob.getProperties().getType().toString()); switch (blob.getProperties().getType()) { case PAGE_BLOB: headers.put(HttpHeaders.CONTENT_LENGTH, "0"); headers.put("x-ms-blob-content-length", blob.getPayload().getContentMetadata().getContentLength().toString()); break; case BLOCK_BLOB: checkArgument( checkNotNull(blob.getPayload().getContentMetadata().getContentLength(), "blob.getContentLength()") <= 64l * 1024 * 1024, "maximum size for put Blob is 64MB"); break; } request = (R) request.toBuilder().replaceHeaders(Multimaps.forMap(headers.build())).build(); return blobBinder.bindToRequest(request, azureBlob2Blob.apply(blob)); } }
public AzureBlob apply(HttpResponse from) { MutableBlobProperties metadata = metadataParser.apply(from); AzureBlob blob = blobFactory.create(metadata); blob.getAllHeaders().putAll(from.getHeaders()); blob.setPayload(from.getPayload()); return blob; }
public AzureBlob apply(Blob from) { if (from == null) return null; AzureBlob object = objectProvider.create(blob2ObjectMd.apply(from.getMetadata())); object.setPayload(checkNotNull(from.getPayload(), "payload: " + from)); object.setAllHeaders(from.getAllHeaders()); return object; } }
public String apply(Object from) { return ((AzureBlob) from).getProperties().getName(); }