From d1765c7c5ba2cefe99203f22b06bee1d2dd60751 Mon Sep 17 00:00:00 2001
From: Ajay Kannan Example usage of adding a row with associated id:
- * Example usage of adding a row without an associated id:
- * Example usage of a query request:
- * Example usage of a query response:
- *
* A typical capture usage:
- * When the type of the results is known the preferred usage would be:
- * When the type of the results is unknown you can use this approach:
- * A simple query that returns all entities for a specific kind
- * A simple key-only query of all entities for a specific kind
- * A less trivial example of a projection query that returns the first 10 results
* of "age" and "name" properties (sorted and grouped by "age") with an age greater than 18
- * This method has the same effect of doing:
- * Example usage of creating a row to insert:
- * Example usage of adding a row with associated id:
- * Example usage of adding a row without an associated id:
- * Example usage of a query request:
- * Example usage of a query response:
- * {@code
+ *
{@code
* InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId);
* List
{@code
+ *
{@code
* InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId);
* List
{@code
+ *
{@code
* // Substitute "field", "table" and "dataset" with real field, table and dataset identifiers
* QueryRequest request = QueryRequest.builder("SELECT field FROM table")
* .defaultDataset(DatasetId.of("dataset"))
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java
index 77386747754f..d9b61e9b1466 100644
--- a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java
@@ -29,7 +29,7 @@
* Query Request ({@link BigQuery#query(QueryRequest)}).
*
*
{@code
+ *
{@code
* QueryResponse response = bigquery.query(request);
* while (!response.jobCompleted()) {
* Thread.sleep(1000);
diff --git a/gcloud-java-core/src/main/java/com/google/gcloud/Restorable.java b/gcloud-java-core/src/main/java/com/google/gcloud/Restorable.java
index 90633c70046f..0b573522e370 100644
--- a/gcloud-java-core/src/main/java/com/google/gcloud/Restorable.java
+++ b/gcloud-java-core/src/main/java/com/google/gcloud/Restorable.java
@@ -21,14 +21,14 @@
*
*
{@code
+ *
{@code
* X restorableObj; // X instanceof Restorable
*
* A typical restore usage:
- * {@code
+ *
{@code
* RestorableState
{@code
- * Entity entity1 = datastore.get(key1);
- * Batch batch = datastore.newBatch();
- * Entity entity2 = Entity.builder(key2).set("name", "John").build();
- * entity1 = Entity.builder(entity1).clear().setNull("bla").build();
- * Entity entity3 = Entity.builder(key3).set("title", "title").build();
- * batch.update(entity1);
- * batch.add(entity2, entity3);
- * batch.submit();
+ * Entity entity1 = datastore.get(key1);
+ * Batch batch = datastore.newBatch();
+ * Entity entity2 = Entity.builder(key2).set("name", "John").build();
+ * entity1 = Entity.builder(entity1).clear().setNull("bla").build();
+ * Entity entity3 = Entity.builder(key3).set("title", "title").build();
+ * batch.update(entity1);
+ * batch.add(entity2, entity3);
+ * batch.submit();
* }
*/
public interface Batch extends DatastoreBatchWriter {
diff --git a/gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/GqlQuery.java b/gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/GqlQuery.java
index e6ae166dbf07..7c03b69d9f39 100644
--- a/gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/GqlQuery.java
+++ b/gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/GqlQuery.java
@@ -43,27 +43,27 @@
* A usage example:
*
* {@code
- * Query
{@code
+ * Query
*
* {@code
- * Query> query = Query.gqlQueryBuilder("select __key__ from kind").build();
- * QueryResults> results = datastore.run(query);
- * if (Key.class.isAssignableFrom(results.resultClass())) {
- * QueryResults
{@code
+ * Query> query = Query.gqlQueryBuilder("select __key__ from kind").build();
+ * QueryResults> results = datastore.run(query);
+ * if (Key.class.isAssignableFrom(results.resultClass())) {
+ * QueryResults
*
* @param A usage example:
*
* {@code
- * Query
{@code
+ * Query
*
* {@code
- * Query
{@code
+ * Query
*
* {@code
- * Query
{@code
+ * Query
*
* @param {@code
- * Transaction transaction = datastore.newTransaction();
- * try {
- * Entity entity = transaction.get(key);
- * if (!entity.contains("last_name") || entity.isNull("last_name")) {
- * String[] name = entity.getString("name").split(" ");
- * entity = Entity.builder(entity).remove("name").set("first_name", name[0])
- * .set("last_name", name[1]).build();
- * transaction.update(entity);
- * transaction.commit();
- * }
- * } finally {
- * if (transaction.active()) {
- * transaction.rollback();
- * }
+ * Transaction transaction = datastore.newTransaction();
+ * try {
+ * Entity entity = transaction.get(key);
+ * if (!entity.contains("last_name") || entity.isNull("last_name")) {
+ * String[] name = entity.getString("name").split(" ");
+ * entity = Entity.builder(entity).remove("name").set("first_name", name[0])
+ * .set("last_name", name[1]).build();
+ * transaction.update(entity);
+ * transaction.commit();
* }
+ * } finally {
+ * if (transaction.active()) {
+ * transaction.rollback();
+ * }
+ * }
* }
*
* @see
diff --git a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java
index 1e5427a847d4..ee70df1e4cc7 100644
--- a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java
+++ b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java
@@ -57,7 +57,7 @@ public class CopyWriter implements Restorable {@code while (!copyWriter.isDone()) {
+ *
{@code while (!copyWriter.isDone()) {
* copyWriter.copyChunk();
* }}
*
diff --git a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java
index d1799daede3e..38795bea5e5b 100644
--- a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java
+++ b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java
@@ -1376,7 +1376,7 @@ private static void checkContentType(BlobInfo blobInfo) throws IllegalArgumentEx
* {@code BlobInfo blob = service.copy(copyRequest).result();}
*
* To explicitly issue chunk copy requests use {@link CopyWriter#copyChunk()} instead:
- * {@code CopyWriter copyWriter = service.copy(copyRequest);
+ *
{@code CopyWriter copyWriter = service.copy(copyRequest);
* while (!copyWriter.isDone()) {
* copyWriter.copyChunk();
* }
From 257e764c002f638c81cf9e3902ca0a5f167a896c Mon Sep 17 00:00:00 2001
From: Ajay Kannan
{@code
- * List
{@code
+ * List
*
* @see
@@ -177,16 +177,16 @@ public Builder addRow(RowToInsert rowToInsert) {
* Adds a row to be inserted with associated id.
*
* {@code
- * InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId);
- * List
{@code
+ * InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId);
+ * List
*/
public Builder addRow(String id, Map {@code
- * InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId);
- * List
{@code
+ * InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId);
+ * List
*/
public Builder addRow(Map {@code
- * // Substitute "field", "table" and "dataset" with real field, table and dataset identifiers
- * QueryRequest request = QueryRequest.builder("SELECT field FROM table")
- * .defaultDataset(DatasetId.of("dataset"))
- * .maxWaitTime(60000L)
- * .maxResults(1000L)
- * .build();
- * QueryResponse response = bigquery.query(request);
- * while (!response.jobCompleted()) {
- * Thread.sleep(1000);
- * response = bigquery.getQueryResults(response.jobId());
- * }
- * List
> rowIterator = result.iterateAll();
- * while(rowIterator.hasNext()) {
- * List
{@code
+ * // Substitute "field", "table" and "dataset" with real field, table and dataset identifiers
+ * QueryRequest request = QueryRequest.builder("SELECT field FROM table")
+ * .defaultDataset(DatasetId.of("dataset"))
+ * .maxWaitTime(60000L)
+ * .maxResults(1000L)
+ * .build();
+ * QueryResponse response = bigquery.query(request);
+ * while (!response.jobCompleted()) {
+ * Thread.sleep(1000);
+ * response = bigquery.getQueryResults(response.jobId());
+ * }
+ * List
*
* @see Query
diff --git a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java
index d9b61e9b1466..12000cc1cbd2 100644
--- a/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java
+++ b/gcloud-java-bigquery/src/main/java/com/google/gcloud/bigquery/QueryResponse.java
@@ -29,20 +29,20 @@
* Query Request ({@link BigQuery#query(QueryRequest)}).
*
* > rowIterator = result.iterateAll();
+ * while(rowIterator.hasNext()) {
+ * List
{@code
- * QueryResponse response = bigquery.query(request);
- * while (!response.jobCompleted()) {
- * Thread.sleep(1000);
- * response = bigquery.getQueryResults(response.jobId());
- * }
- * List
> rowIterator = result.iterateAll();
- * while(rowIterator.hasNext()) {
- * List
{@code
+ * QueryResponse response = bigquery.query(request);
+ * while (!response.jobCompleted()) {
+ * Thread.sleep(1000);
+ * response = bigquery.getQueryResults(response.jobId());
+ * }
+ * List
*
* @see Get Query
diff --git a/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java b/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java
index 0befeecd4b99..a91a7e0abc07 100644
--- a/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java
+++ b/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java
@@ -197,10 +197,9 @@ public static void afterClass() throws ExecutionException, InterruptedException
if (bigquery != null) {
RemoteBigQueryHelper.forceDelete(bigquery, DATASET);
}
- if (storage != null && !RemoteGcsHelper.forceDelete(storage, BUCKET, 10, TimeUnit.SECONDS)) {
- if (LOG.isLoggable(Level.WARNING)) {
- LOG.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET);
- }
+ if (storage != null && !RemoteGcsHelper.forceDelete(storage, BUCKET, 10, TimeUnit.SECONDS)
+ && LOG.isLoggable(Level.WARNING)) {
+ LOG.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET);
}
}
diff --git a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java
index ec8ab361328e..d89f80f1def3 100644
--- a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java
+++ b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java
@@ -351,8 +351,8 @@ public Blob reload(BlobSourceOption... options) {
* > rowIterator = result.iterateAll();
+ * while(rowIterator.hasNext()) {
+ * List
Example usage of replacing blob's metadata: - *
{@code blob.toBuilder().metadata(null).build().update();} - * {@code blob.toBuilder().metadata(newMetadata).build().update();} + *{@code blob.toBuilder().metadata(null).build().update();} + * {@code blob.toBuilder().metadata(newMetadata).build().update();} ** * @param options update options diff --git a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java index ee70df1e4cc7..7eb91d0910a2 100644 --- a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java +++ b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/CopyWriter.java @@ -57,9 +57,10 @@ public class CopyWriter implements Restorable{ * is {@code false} will block until all pending chunks are copied. * * This method has the same effect of doing: - *
{@code while (!copyWriter.isDone()) { - * copyWriter.copyChunk(); - * }} + *{@code + * while (!copyWriter.isDone()) { + * copyWriter.copyChunk(); + * }} ** * @throws StorageException upon failure diff --git a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java index 38795bea5e5b..b43d35da6f5f 100644 --- a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java +++ b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java @@ -1300,8 +1300,8 @@ private static void checkContentType(BlobInfo blobInfo) throws IllegalArgumentEx * can be done by setting the provided {@code blobInfo}'s metadata to {@code null}. * *Example usage of replacing blob's metadata: - *
{@code service.update(BlobInfo.builder("bucket", "name").metadata(null).build());} - * {@code service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build());} + *{@code service.update(BlobInfo.builder("bucket", "name").metadata(null).build());} + * {@code service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build());} ** * @return the updated blob @@ -1315,8 +1315,8 @@ private static void checkContentType(BlobInfo blobInfo) throws IllegalArgumentEx * can be done by setting the provided {@code blobInfo}'s metadata to {@code null}. * *Example usage of replacing blob's metadata: - *
{@code service.update(BlobInfo.builder("bucket", "name").metadata(null).build());} - * {@code service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build());} + *{@code service.update(BlobInfo.builder("bucket", "name").metadata(null).build());} + * {@code service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build());} ** * @return the updated blob @@ -1373,14 +1373,15 @@ private static void checkContentType(BlobInfo blobInfo) throws IllegalArgumentEx * might issue multiple RPC calls depending on blob's size. * *Example usage of copy: - *
{@code BlobInfo blob = service.copy(copyRequest).result();} + *{@code BlobInfo blob = service.copy(copyRequest).result();} ** To explicitly issue chunk copy requests use {@link CopyWriter#copyChunk()} instead: - *{@code CopyWriter copyWriter = service.copy(copyRequest); - * while (!copyWriter.isDone()) { - * copyWriter.copyChunk(); - * } - * BlobInfo blob = copyWriter.result(); + *{@code + * CopyWriter copyWriter = service.copy(copyRequest); + * while (!copyWriter.isDone()) { + * copyWriter.copyChunk(); + * } + * BlobInfo blob = copyWriter.result(); * } ** @@ -1462,8 +1463,8 @@ private static void checkContentType(BlobInfo blobInfo) throws IllegalArgumentEx * accessible blobs, but don't want to require users to explicitly log in. * *Example usage of creating a signed URL that is valid for 2 weeks: - *
{@code - * service.signUrl(BlobInfo.builder("bucket", "name").build(), 14, TimeUnit.DAYS); + *{@code + * service.signUrl(BlobInfo.builder("bucket", "name").build(), 14, TimeUnit.DAYS); * }* * @param blobInfo the blob associated with the signed URL diff --git a/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java b/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java index f185bdf8343e..0f560cbe173a 100644 --- a/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java +++ b/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java @@ -88,10 +88,9 @@ public static void beforeClass() { @AfterClass public static void afterClass() throws ExecutionException, InterruptedException { - if (storage != null && !RemoteGcsHelper.forceDelete(storage, BUCKET, 5, TimeUnit.SECONDS)) { - if (log.isLoggable(Level.WARNING)) { - log.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET); - } + if (storage != null && !RemoteGcsHelper.forceDelete(storage, BUCKET, 5, TimeUnit.SECONDS) + && log.isLoggable(Level.WARNING)) { + log.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET); } } @@ -442,7 +441,7 @@ public void testUpdateBlobFail() { @Test public void testDeleteNonExistingBlob() { String blobName = "test-delete-non-existing-blob"; - assertTrue(!storage.delete(BUCKET, blobName)); + assertFalse(storage.delete(BUCKET, blobName)); } @Test @@ -450,7 +449,7 @@ public void testDeleteBlobNonExistingGeneration() { String blobName = "test-delete-blob-non-existing-generation"; BlobInfo blob = BlobInfo.builder(BUCKET, blobName).build(); assertNotNull(storage.create(blob)); - assertTrue(!storage.delete(BlobId.of(BUCKET, blobName, -1L))); + assertFalse(storage.delete(BlobId.of(BUCKET, blobName, -1L))); } @Test @@ -966,7 +965,7 @@ public void testDeleteBlobsFail() { assertNotNull(storage.create(sourceBlob1)); ListdeleteStatus = storage.delete(sourceBlob1.blobId(), sourceBlob2.blobId()); assertTrue(deleteStatus.get(0)); - assertTrue(!deleteStatus.get(1)); + assertFalse(deleteStatus.get(1)); } @Test From bc66860a5283ae6e596245907739af56d904b590 Mon Sep 17 00:00:00 2001 From: Ajay Kannan Date: Thu, 11 Feb 2016 09:22:02 -0800 Subject: [PATCH 6/7] Minor fix in ITs --- .../com/google/gcloud/bigquery/it/ITBigQueryTest.java | 8 +++++--- .../java/com/google/gcloud/storage/it/ITStorageTest.java | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java b/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java index a91a7e0abc07..aa89ed89123e 100644 --- a/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java +++ b/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/it/ITBigQueryTest.java @@ -197,9 +197,11 @@ public static void afterClass() throws ExecutionException, InterruptedException if (bigquery != null) { RemoteBigQueryHelper.forceDelete(bigquery, DATASET); } - if (storage != null && !RemoteGcsHelper.forceDelete(storage, BUCKET, 10, TimeUnit.SECONDS) - && LOG.isLoggable(Level.WARNING)) { - LOG.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET); + if (storage != null) { + boolean wasDeleted = RemoteGcsHelper.forceDelete(storage, BUCKET, 10, TimeUnit.SECONDS); + if (!wasDeleted && LOG.isLoggable(Level.WARNING)) { + LOG.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET); + } } } diff --git a/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java b/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java index 0f560cbe173a..43c2cf6d372b 100644 --- a/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java +++ b/gcloud-java-storage/src/test/java/com/google/gcloud/storage/it/ITStorageTest.java @@ -88,9 +88,11 @@ public static void beforeClass() { @AfterClass public static void afterClass() throws ExecutionException, InterruptedException { - if (storage != null && !RemoteGcsHelper.forceDelete(storage, BUCKET, 5, TimeUnit.SECONDS) - && log.isLoggable(Level.WARNING)) { - log.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET); + if (storage != null) { + boolean wasDeleted = RemoteGcsHelper.forceDelete(storage, BUCKET, 5, TimeUnit.SECONDS); + if (!wasDeleted && log.isLoggable(Level.WARNING)) { + log.log(Level.WARNING, "Deletion of bucket {0} timed out, bucket is not empty", BUCKET); + } } } From deb228f0ae407b81b1bf5257755fd2b24da9777c Mon Sep 17 00:00:00 2001 From: Ajay Kannan Date: Thu, 11 Feb 2016 17:08:46 -0800 Subject: [PATCH 7/7] Fix double code tags --- .../main/java/com/google/gcloud/storage/Blob.java | 6 ++++-- .../main/java/com/google/gcloud/storage/Storage.java | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java index d89f80f1def3..aea424ca4063 100644 --- a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java +++ b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Blob.java @@ -351,8 +351,10 @@ public Blob reload(BlobSourceOption... options) { * * * Example usage of replacing blob's metadata: - *
{@code blob.toBuilder().metadata(null).build().update();} - * {@code blob.toBuilder().metadata(newMetadata).build().update();} + *{@code + * blob.toBuilder().metadata(null).build().update(); + * blob.toBuilder().metadata(newMetadata).build().update(); + * } ** * @param options update options diff --git a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java index b43d35da6f5f..0ebe013202b0 100644 --- a/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java +++ b/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java @@ -1300,8 +1300,10 @@ private static void checkContentType(BlobInfo blobInfo) throws IllegalArgumentEx * can be done by setting the provided {@code blobInfo}'s metadata to {@code null}. * *Example usage of replacing blob's metadata: - *
{@code service.update(BlobInfo.builder("bucket", "name").metadata(null).build());} - * {@code service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build());} + *{@code + * service.update(BlobInfo.builder("bucket", "name").metadata(null).build()); + * service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build()); + * } ** * @return the updated blob @@ -1315,8 +1317,10 @@ private static void checkContentType(BlobInfo blobInfo) throws IllegalArgumentEx * can be done by setting the provided {@code blobInfo}'s metadata to {@code null}. * *Example usage of replacing blob's metadata: - *
{@code service.update(BlobInfo.builder("bucket", "name").metadata(null).build());} - * {@code service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build());} + *{@code + * service.update(BlobInfo.builder("bucket", "name").metadata(null).build()); + * service.update(BlobInfo.builder("bucket", "name").metadata(newMetadata).build()); + * } ** * @return the updated blob