/** Example of replacing blob's metadata. */ // [TARGET update(BlobTargetOption...)] public Blob update() { // [START update] Map<String, String> newMetadata = new HashMap<>(); newMetadata.put("key", "value"); blob.toBuilder().setMetadata(null).build().update(); Blob updatedBlob = blob.toBuilder().setMetadata(newMetadata).build().update(); // [END update] return updatedBlob; }
private void run(Storage storage, BlobId blobId, Map<String, String> metadata) { Blob blob = storage.get(blobId); if (blob == null) { System.out.println("No such object"); return; } Blob updateBlob = blob.toBuilder().setMetadata(metadata).build().update(); System.out.printf("Updated %s%n", updateBlob); }
@Test public void testUpdate() throws Exception { initializeExpectedBlob(2); Blob expectedUpdatedBlob = expectedBlob.toBuilder().setCacheControl("c").build(); expect(storage.getOptions()).andReturn(mockOptions).times(2); expect(storage.update(eq(expectedUpdatedBlob), new Storage.BlobTargetOption[0])) .andReturn(expectedUpdatedBlob); replay(storage); initializeBlob(); Blob updatedBlob = new Blob(storage, new BlobInfo.BuilderImpl(expectedUpdatedBlob)); Blob actualUpdatedBlob = updatedBlob.update(); assertEquals(expectedUpdatedBlob, actualUpdatedBlob); }
@Test public void testUpdateBlobUnsetMetadata() { String blobName = "test-update-blob-unset-metadata"; ImmutableMap<String, String> metadata = ImmutableMap.of("k1", "a", "k2", "b"); Map<String, String> newMetadata = new HashMap<>(); newMetadata.put("k1", "a"); newMetadata.put("k2", null); ImmutableMap<String, String> expectedMetadata = ImmutableMap.of("k1", "a"); BlobInfo blob = BlobInfo.newBuilder(BUCKET, blobName) .setContentType(CONTENT_TYPE) .setMetadata(metadata) .build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); Blob updatedBlob = remoteBlob.toBuilder().setMetadata(newMetadata).build().update(); assertNotNull(updatedBlob); assertEquals(blob.getName(), updatedBlob.getName()); assertEquals(blob.getBucket(), updatedBlob.getBucket()); assertEquals(expectedMetadata, updatedBlob.getMetadata()); }
@Test public void testUpdateBlobMergeMetadata() { String blobName = "test-update-blob-merge-metadata"; ImmutableMap<String, String> metadata = ImmutableMap.of("k1", "a"); ImmutableMap<String, String> newMetadata = ImmutableMap.of("k2", "b"); ImmutableMap<String, String> expectedMetadata = ImmutableMap.of("k1", "a", "k2", "b"); BlobInfo blob = BlobInfo.newBuilder(BUCKET, blobName) .setContentType(CONTENT_TYPE) .setMetadata(metadata) .build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); Blob updatedBlob = remoteBlob.toBuilder().setMetadata(newMetadata).build().update(); assertNotNull(updatedBlob); assertEquals(blob.getName(), updatedBlob.getName()); assertEquals(blob.getBucket(), updatedBlob.getBucket()); assertEquals(expectedMetadata, updatedBlob.getMetadata()); }
@Test public void testUpdateBlobReplaceMetadata() { String blobName = "test-update-blob-replace-metadata"; ImmutableMap<String, String> metadata = ImmutableMap.of("k1", "a"); ImmutableMap<String, String> newMetadata = ImmutableMap.of("k2", "b"); BlobInfo blob = BlobInfo.newBuilder(BUCKET, blobName) .setContentType(CONTENT_TYPE) .setMetadata(metadata) .build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); Blob updatedBlob = remoteBlob.toBuilder().setMetadata(null).build().update(); assertNotNull(updatedBlob); assertNull(updatedBlob.getMetadata()); updatedBlob = remoteBlob.toBuilder().setMetadata(newMetadata).build().update(); assertEquals(blob.getName(), updatedBlob.getName()); assertEquals(blob.getBucket(), updatedBlob.getBucket()); assertEquals(newMetadata, updatedBlob.getMetadata()); }
@Test public void testAttemptDeletionObjectTemporaryHold() { String blobName = "test-create-with-temporary-hold"; BlobInfo blobInfo = BlobInfo.newBuilder(BUCKET, blobName).setTemporaryHold(true).build(); Blob remoteBlob = storage.create(blobInfo); assertTrue(remoteBlob.getTemporaryHold()); try { remoteBlob.delete(); fail("Expected failure on delete from temporaryHold"); } catch (StorageException ex) { // expected } finally { remoteBlob.toBuilder().setEventBasedHold(false).build().update(); } }
@Test public void testAttemptObjectDeleteWithEventBasedHold() { String blobName = "test-create-with-event-based-hold"; BlobInfo blobInfo = BlobInfo.newBuilder(BUCKET, blobName).setEventBasedHold(true).build(); Blob remoteBlob = storage.create(blobInfo); assertTrue(remoteBlob.getEventBasedHold()); try { remoteBlob.delete(); fail("Expected failure on delete from eventBasedHold"); } catch (StorageException ex) { // expected } finally { remoteBlob.toBuilder().setEventBasedHold(false).build().update(); } }
@Test public void testEnableDisableTemporaryHold() { String blobName = "test-create-with-temporary-hold"; BlobInfo blobInfo = BlobInfo.newBuilder(BUCKET, blobName).setTemporaryHold(true).build(); Blob remoteBlob = storage.create(blobInfo); assertTrue(remoteBlob.getTemporaryHold()); remoteBlob = storage.get(remoteBlob.getBlobId(), Storage.BlobGetOption.fields(BlobField.TEMPORARY_HOLD)); assertTrue(remoteBlob.getTemporaryHold()); remoteBlob = remoteBlob.toBuilder().setTemporaryHold(false).build().update(); assertFalse(remoteBlob.getTemporaryHold()); }
@Test public void testUpdateBlob() { String blobName = "test-update-blob"; BlobInfo blob = BlobInfo.newBuilder(BUCKET, blobName).build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); Blob updatedBlob = remoteBlob.toBuilder().setContentType(CONTENT_TYPE).build().update(); assertNotNull(updatedBlob); assertEquals(blob.getName(), updatedBlob.getName()); assertEquals(blob.getBucket(), updatedBlob.getBucket()); assertEquals(CONTENT_TYPE, updatedBlob.getContentType()); }
@Test public void testEnableDisableBucketDefaultEventBasedHold() throws ExecutionException, InterruptedException { String bucketName = RemoteStorageHelper.generateBucketName(); Bucket remoteBucket = storage.create(BucketInfo.newBuilder(bucketName).setDefaultEventBasedHold(true).build()); try { assertTrue(remoteBucket.getDefaultEventBasedHold()); remoteBucket = storage.get( bucketName, Storage.BucketGetOption.fields(BucketField.DEFAULT_EVENT_BASED_HOLD)); assertTrue(remoteBucket.getDefaultEventBasedHold()); String blobName = "test-create-with-event-based-hold"; BlobInfo blobInfo = BlobInfo.newBuilder(bucketName, blobName).build(); Blob remoteBlob = storage.create(blobInfo); assertTrue(remoteBlob.getEventBasedHold()); remoteBlob = storage.get( blobInfo.getBlobId(), Storage.BlobGetOption.fields(BlobField.EVENT_BASED_HOLD)); assertTrue(remoteBlob.getEventBasedHold()); remoteBlob = remoteBlob.toBuilder().setEventBasedHold(false).build().update(); assertFalse(remoteBlob.getEventBasedHold()); remoteBucket = remoteBucket.toBuilder().setDefaultEventBasedHold(false).build().update(); assertFalse(remoteBucket.getDefaultEventBasedHold()); } finally { RemoteStorageHelper.forceDelete(storage, bucketName, 5, TimeUnit.SECONDS); } }