-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add snippets to Blob's javadoc and BlobSnippets class to gcloud-java-…
…examples
- Loading branch information
Showing
2 changed files
with
291 additions
and
10 deletions.
There are no files selected for viewing
178 changes: 178 additions & 0 deletions
178
...-java-examples/src/main/java/com/google/cloud/examples/storage/snippets/BlobSnippets.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
/* | ||
* Copyright 2016 Google Inc. All Rights Reserved. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
/* | ||
* EDITING INSTRUCTIONS | ||
* This file is referenced in Blob's javadoc. Any change to this file should be reflected in Blob's | ||
* javadoc. | ||
*/ | ||
|
||
package com.google.cloud.examples.storage.snippets; | ||
|
||
import static java.nio.charset.StandardCharsets.UTF_8; | ||
|
||
import com.google.cloud.AuthCredentials; | ||
import com.google.cloud.ReadChannel; | ||
import com.google.cloud.ServiceAccountSigner; | ||
import com.google.cloud.WriteChannel; | ||
import com.google.cloud.storage.Blob; | ||
import com.google.cloud.storage.Blob.BlobSourceOption; | ||
import com.google.cloud.storage.BlobId; | ||
import com.google.cloud.storage.CopyWriter; | ||
import com.google.cloud.storage.Storage.SignUrlOption; | ||
import com.google.cloud.storage.StorageException; | ||
|
||
import java.io.FileInputStream; | ||
import java.io.IOException; | ||
import java.nio.ByteBuffer; | ||
import java.util.HashMap; | ||
import java.util.Map; | ||
import java.util.concurrent.TimeUnit; | ||
|
||
/** | ||
* This class contains a number of snippets for the {@link Blob} class. | ||
*/ | ||
public class BlobSnippets { | ||
|
||
private final Blob blob; | ||
|
||
public BlobSnippets(Blob blob) { | ||
this.blob = blob; | ||
} | ||
|
||
/** | ||
* Example of checking if the blob exists. | ||
*/ | ||
public void exists() { | ||
boolean exists = blob.exists(); | ||
if (exists) { | ||
// the blob exists | ||
} else { | ||
// the blob was not found | ||
} | ||
} | ||
|
||
/** | ||
* Example of reading all bytes of the blob, if its generation matches the | ||
* {@link Blob#generation()} value, otherwise a {@link StorageException} is thrown. | ||
*/ | ||
public void content() { | ||
byte[] content = blob.content(BlobSourceOption.generationMatch()); | ||
} | ||
|
||
/** | ||
* Example of getting the blob's latest information, if its generation does not match the | ||
* {@link Blob#generation()} value, otherwise a {@link StorageException} is thrown. | ||
*/ | ||
public void reload() { | ||
Blob latestBlob = blob.reload(BlobSourceOption.generationNotMatch()); | ||
if (latestBlob == null) { | ||
// the blob was not found | ||
} | ||
} | ||
|
||
/** | ||
* Example of replacing blob's metadata. | ||
*/ | ||
public void update() { | ||
Map<String, String> newMetadata = new HashMap<>(); | ||
newMetadata.put("key", "value"); | ||
blob.toBuilder().metadata(null).build().update(); | ||
blob.toBuilder().metadata(newMetadata).build().update(); | ||
} | ||
|
||
/** | ||
* Example of deleting the blob, if its generation matches the {@link Blob#generation()} value, | ||
* otherwise a {@link StorageException} is thrown. | ||
*/ | ||
public void delete() { | ||
boolean deleted = blob.delete(BlobSourceOption.generationMatch()); | ||
if (deleted) { | ||
// the blob was deleted | ||
} else { | ||
// the blob was not found | ||
} | ||
} | ||
|
||
/** | ||
* Example of copying the blob to a different bucket with a different name. | ||
*/ | ||
public void copyToId() { | ||
CopyWriter copyWriter = blob.copyTo(BlobId.of("my_other_unique_bucket", "copy_blob_name")); | ||
Blob copiedBlob = copyWriter.result(); | ||
} | ||
|
||
/** | ||
* Example of copying the blob to a different bucket, keeping the original name. | ||
*/ | ||
public void copyToBucket() { | ||
CopyWriter copyWriter = blob.copyTo("my_other_unique_bucket"); | ||
Blob copiedBlob = copyWriter.result(); | ||
} | ||
|
||
/** | ||
* Example of copying the blob to a different bucket with a different name. | ||
*/ | ||
public void copyToStrings() { | ||
CopyWriter copyWriter = blob.copyTo("my_other_unique_bucket", "copy_blob_name"); | ||
Blob copiedBlob = copyWriter.result(); | ||
} | ||
|
||
/** | ||
* Example of reading the blob's content through a reader. | ||
*/ | ||
public void reader() throws IOException { | ||
try (ReadChannel reader = blob.reader()) { | ||
ByteBuffer bytes = ByteBuffer.allocate(64 * 1024); | ||
while (reader.read(bytes) > 0) { | ||
bytes.flip(); | ||
// do something with bytes | ||
bytes.clear(); | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* Example of writing the blob's content through a writer. | ||
*/ | ||
public void writer() throws IOException { | ||
byte[] content = "Hello, World!".getBytes(UTF_8); | ||
try (WriteChannel writer = blob.writer()) { | ||
try { | ||
writer.write(ByteBuffer.wrap(content, 0, content.length)); | ||
} catch (Exception ex) { | ||
// handle exception | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* Example of creating a signed URL for the blob that is valid for 2 weeks, using the default | ||
* credentials for signing the URL. | ||
*/ | ||
public void signUrl() { | ||
blob.signUrl(14, TimeUnit.DAYS); | ||
} | ||
|
||
/** | ||
* Example of creating a signed URL for the blob passing the | ||
* {@link SignUrlOption#signWith(ServiceAccountSigner)} option, that will be used to sign the URL. | ||
*/ | ||
public void signUrlWithSigner() throws IOException { | ||
blob.signUrl(14, TimeUnit.DAYS, SignUrlOption.signWith( | ||
AuthCredentials.createForJson(new FileInputStream("/path/to/key.json")))); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters