@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)); } }
@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)); } }
AzureBlob blob = AzureBlob.class.cast(input); checkArgument(blob.getPayload().getContentMetadata().getContentLength() != null && blob.getPayload().getContentMetadata().getContentLength() >= 0, "size must be set"); String cacheControl = blob.getPayload().getContentMetadata().getCacheControl(); if (cacheControl != null) { headers.put(AzureStorageHeaders.CACHE_CONTROL, cacheControl); String contentDisposition = blob.getPayload().getContentMetadata().getContentDisposition(); if (contentDisposition != null) { headers.put("x-ms-blob-content-disposition", contentDisposition); 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;
@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)); } }
AzureBlob blob = AzureBlob.class.cast(input); checkArgument(blob.getPayload().getContentMetadata().getContentLength() != null && blob.getPayload().getContentMetadata().getContentLength() >= 0, "size must be set"); String cacheControl = blob.getPayload().getContentMetadata().getCacheControl(); if (cacheControl != null) { headers.put(AzureStorageHeaders.CACHE_CONTROL, cacheControl); String contentDisposition = blob.getPayload().getContentMetadata().getContentDisposition(); if (contentDisposition != null) { headers.put("x-ms-blob-content-disposition", contentDisposition); 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: checkNotNull(blob.getPayload().getContentMetadata().getContentLength(), "blob.getContentLength()") <= 256L * 1024 * 1024, "maximum size for put Blob is 256MB"); break;
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; } }
AzureBlob blob = AzureBlob.class.cast(input); checkArgument(blob.getPayload().getContentMetadata().getContentLength() != null && blob.getPayload().getContentMetadata().getContentLength() >= 0, "size must be set");
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; } }
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; } }
AzureBlob blob = AzureBlob.class.cast(input); checkArgument(blob.getPayload().getContentMetadata().getContentLength() != null && blob.getPayload().getContentMetadata().getContentLength() >= 0, "size must be set");
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; } }
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; } }
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), object.getProperties().setName("chunked-object"); object.setPayload(bais); object.getPayload().getContentMetadata().setContentLength(Long.valueOf(data.getBytes().length)); newEtag = getApi().putBlob(privateContainer, object); assertEquals(base16().lowerCase().encode(md5),
@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()); }
@Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) public void testCopyBlobIfUnmodifiedSince() throws Exception { ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024); // create blob AzureBlob object = getApi().newBlob(); object.getProperties().setName("from"); object.setPayload(byteSource.read()); String eTag = getApi().putBlob(privateContainer, object); long now = System.currentTimeMillis(); Date before = new Date(now - 1000 * 1000); Date after = new Date(now + 1000 * 1000); URI copySource = view.getSigner().signGetBlob(privateContainer, "from").getEndpoint(); // failure case try { getApi().copyBlob(copySource, privateContainer, "to-if-unmodifed-since", CopyBlobOptions.builder().ifUnmodifiedSince(before).build()); failBecauseExceptionWasNotThrown(AzureStorageResponseException.class); } catch (AzureStorageResponseException asre) { assertThat(asre.getResponse().getStatusCode()).as("status code").isEqualTo(412); } // success case getApi().copyBlob(copySource, privateContainer, "to-if-unmodifed-since", CopyBlobOptions.builder().ifUnmodifiedSince(after).build()); AzureBlob getBlob = getApi().getBlob(privateContainer, "to-if-unmodifed-since"); assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read()); }
assertEquals(Strings2.toStringAndClose(getBlob.getPayload().openStream()), data); assertEquals(getBlob.getProperties().getName(), object.getProperties().getName()); assertEquals(getBlob.getPayload().getContentMetadata().getContentLength(), Long.valueOf(data.length())); assertEquals(getBlob.getProperties().getContentMetadata().getContentType(), "text/plain"); assertEquals(base16().lowerCase().encode(md5), object.getProperties().setName("chunked-object"); object.setPayload(bais); object.getPayload().getContentMetadata().setContentLength(Long.valueOf(data.getBytes().length)); newEtag = getApi().putBlob(privateContainer, object); assertEquals(base16().lowerCase().encode(md5), assertEquals(Strings2.toStringAndClose(getBlob.getPayload().openStream()), data.substring(8));
@Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) public void testCopyBlobIfModifiedSince() throws Exception { ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024); // create blob AzureBlob object = getApi().newBlob(); object.getProperties().setName("from"); object.setPayload(byteSource.read()); String eTag = getApi().putBlob(privateContainer, object); long now = System.currentTimeMillis(); Date before = new Date(now - 1000 * 1000); Date after = new Date(now + 1000 * 1000); URI copySource = view.getSigner().signGetBlob(privateContainer, "from").getEndpoint(); // failure case try { getApi().copyBlob(copySource, privateContainer, "to-if-modified-since", CopyBlobOptions.builder().ifModifiedSince(after).build()); failBecauseExceptionWasNotThrown(AzureStorageResponseException.class); } catch (AzureStorageResponseException asre) { assertThat(asre.getResponse().getStatusCode()).as("status code").isEqualTo(412); } // success case getApi().copyBlob(copySource, privateContainer, "to-if-modified-since", CopyBlobOptions.builder().ifModifiedSince(before).build()); AzureBlob getBlob = getApi().getBlob(privateContainer, "to-if-modified-since"); assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read()); }
@Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) public void testCopyBlobReplaceMetadata() 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(); Map<String, String> newMetadata = ImmutableMap.of("foo", "bar"); getApi().copyBlob(copySource, privateContainer, "to", CopyBlobOptions.builder().overrideUserMetadata(newMetadata).build()); // ensure copied blob matches original AzureBlob getBlob = getApi().getBlob(privateContainer, "to"); assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read()); assertThat(getBlob.getProperties().getMetadata()).isEqualTo(newMetadata); }
@Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) public void testCopyBlobIfMatch() throws Exception { ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024); // create blob AzureBlob object = getApi().newBlob(); object.getProperties().setName("from"); object.setPayload(byteSource.read()); String eTag = getApi().putBlob(privateContainer, object); String fakeETag = "0x8CEB669D794AFE2"; URI copySource = view.getSigner().signGetBlob(privateContainer, "from").getEndpoint(); // failure case try { getApi().copyBlob(copySource, privateContainer, "to-if-match", CopyBlobOptions.builder().ifMatch(fakeETag).build()); failBecauseExceptionWasNotThrown(AzureStorageResponseException.class); } catch (AzureStorageResponseException asre) { assertThat(asre.getResponse().getStatusCode()).as("status code").isEqualTo(412); } // success case getApi().copyBlob(copySource, privateContainer, "to-if-match", CopyBlobOptions.builder().ifMatch(eTag).build()); AzureBlob getBlob = getApi().getBlob(privateContainer, "to-if-match"); assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read()); }
@Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) public void testCopyBlobIfNoneMatch() throws Exception { ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024); // create blob AzureBlob object = getApi().newBlob(); object.getProperties().setName("from"); object.setPayload(byteSource.read()); String eTag = getApi().putBlob(privateContainer, object); String fakeETag = "0x8CEB669D794AFE2"; URI copySource = view.getSigner().signGetBlob(privateContainer, "from").getEndpoint(); // failure case try { getApi().copyBlob(copySource, privateContainer, "to-if-none-match", CopyBlobOptions.builder().ifNoneMatch(eTag).build()); failBecauseExceptionWasNotThrown(AzureStorageResponseException.class); } catch (AzureStorageResponseException asre) { assertThat(asre.getResponse().getStatusCode()).as("status code").isEqualTo(412); } // success case getApi().copyBlob(copySource, privateContainer, "to-if-none-match", CopyBlobOptions.builder().ifNoneMatch(fakeETag).build()); AzureBlob getBlob = getApi().getBlob(privateContainer, "to-if-none-match"); assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read()); }