/** Returns the name of the containing bucket. */ public String getBucket() { return getBlobId().getBucket(); }
@Override public String toString() { return MoreObjects.toStringHelper(this) .add("bucket", getBucket()) .add("name", getName()) .add("generation", getGeneration()) .toString(); }
/** * Sets the ACL according to the provided {@code params}, using the {@code storage} service. If * {@code params.x()} returns a complete blob identity, the {@code params.y()} ACL is added to * the blob. If {@code params.x().name()} is empty, the {@code params.y()} ACL is added to the * bucket identified by {@code params.x().bucket()}. */ @Override public void run(Storage storage, Tuple<BlobId, Acl> params) { BlobId blobId = params.x(); Acl acl = params.y(); if (blobId.getName().isEmpty()) { Bucket bucket = storage.get(blobId.getBucket()); if (bucket == null) { System.out.printf("Bucket %s does not exist%n", blobId.getBucket()); return; } acl = bucket.createAcl(acl); System.out.printf("Added ACL %s to bucket %s%n", acl, blobId.getBucket()); } else { Blob blob = storage.get(blobId); if (blob == null) { System.out.printf("Blob %s does not exist%n", blobId); return; } acl = blob.createAcl(acl); System.out.printf("Added ACL %s to blob %s%n", acl, blobId); } } }
if (blobIds[0].getName().isEmpty()) { Bucket bucket = storage.get(blobIds[0].getBucket()); if (bucket == null) { System.out.println("No such bucket");
@Override public Object fileKey() { return info.getBlobId().getBucket() + info.getBlobId().getName() + info.getBlobId().getGeneration(); }
/** * Creates a copy request. Target blob information is copied from source. * * @param sourceBlobId a {@code BlobId} object for the source blob * @param targetBlob name of the target blob, in the same bucket of the source blob * @return a copy request */ public static CopyRequest of(BlobId sourceBlobId, String targetBlob) { return CopyRequest.newBuilder() .setSource(sourceBlobId) .setTarget(BlobId.of(sourceBlobId.getBucket(), targetBlob)) .build(); }
@Override public void run(Storage storage, Tuple<BlobId, Path> tuple) throws IOException { run(storage, tuple.x().getBucket(), tuple.x().getName(), tuple.y()); }
@Override public List<Acl> listAcls(final BlobId blob) { try { List<ObjectAccessControl> answer = runWithRetries( new Callable<List<ObjectAccessControl>>() { @Override public List<ObjectAccessControl> call() { return storageRpc.listAcls( blob.getBucket(), blob.getName(), blob.getGeneration()); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock()); return Lists.transform(answer, Acl.FROM_OBJECT_PB_FUNCTION); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
String.format("gs://%s/%s", file.getBucket(), file.getName()));
@Test public void testOf() { BlobId blobId = BlobId.of("b", "n"); assertEquals("b", blobId.getBucket()); assertEquals("n", blobId.getName()); }
@Override public Acl createAcl(final BlobId blob, final Acl acl) { final ObjectAccessControl aclPb = acl.toObjectPb() .setBucket(blob.getBucket()) .setObject(blob.getName()) .setGeneration(blob.getGeneration()); try { return Acl.fromPb( runWithRetries( new Callable<ObjectAccessControl>() { @Override public ObjectAccessControl call() { return storageRpc.createAcl(aclPb); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock())); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
@Override public Acl updateAcl(BlobId blob, Acl acl) { final ObjectAccessControl aclPb = acl.toObjectPb() .setBucket(blob.getBucket()) .setObject(blob.getName()) .setGeneration(blob.getGeneration()); try { return Acl.fromPb( runWithRetries( new Callable<ObjectAccessControl>() { @Override public ObjectAccessControl call() { return storageRpc.patchAcl(aclPb); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock())); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
"gs://" + cloudPath.getBlobId().getBucket() + "/" + cloudPath.getBlobId().getName());
blobInfo, Storage.BlobTargetOption.predefinedAcl((Storage.PredefinedAcl) getValue())); case IF_GENERATION_MATCH: blobId = BlobId.of(blobId.getBucket(), blobId.getName(), (Long) getValue()); return Tuple.of( blobInfo.toBuilder().setBlobId(blobId).build(), Storage.BlobTargetOption.generationMatch()); case IF_GENERATION_NOT_MATCH: blobId = BlobId.of(blobId.getBucket(), blobId.getName(), (Long) getValue()); return Tuple.of( blobInfo.toBuilder().setBlobId(blobId).build(),
blobInfo, Storage.BlobWriteOption.predefinedAcl((Storage.PredefinedAcl) value)); case IF_GENERATION_MATCH: blobId = BlobId.of(blobId.getBucket(), blobId.getName(), (Long) value); return Tuple.of( blobInfo.toBuilder().setBlobId(blobId).build(), Storage.BlobWriteOption.generationMatch()); case IF_GENERATION_NOT_MATCH: blobId = BlobId.of(blobId.getBucket(), blobId.getName(), (Long) value); return Tuple.of( blobInfo.toBuilder().setBlobId(blobId).build(),
@Test public void testGet() { EasyMock.reset(batchMock); Capture<RpcBatch.Callback<StorageObject>> callback = Capture.newInstance(); batchMock.addGet( EasyMock.eq(BLOB_INFO.toPb()), EasyMock.capture(callback), EasyMock.eq(ImmutableMap.<StorageRpc.Option, Object>of())); EasyMock.replay(batchMock); StorageBatchResult<Blob> batchResult = storageBatch.get(BLOB_ID.getBucket(), BLOB_ID.getName()); assertNotNull(callback.getValue()); try { batchResult.get(); fail("No result available yet."); } catch (IllegalStateException ex) { // expected } // testing error here, success is tested with options RpcBatch.Callback<StorageObject> capturedCallback = callback.getValue(); capturedCallback.onFailure(GOOGLE_JSON_ERROR); try { batchResult.get(); fail("Should throw a StorageExcetion on error."); } catch (StorageException ex) { // expected } }
@Test public void testDelete() { EasyMock.reset(batchMock); Capture<RpcBatch.Callback<Void>> callback = Capture.newInstance(); batchMock.addDelete( EasyMock.eq(BLOB_INFO.toPb()), EasyMock.capture(callback), EasyMock.eq(ImmutableMap.<StorageRpc.Option, Object>of())); EasyMock.replay(batchMock); StorageBatchResult<Boolean> batchResult = storageBatch.delete(BLOB_ID.getBucket(), BLOB_ID.getName()); assertNotNull(callback.getValue()); try { batchResult.get(); fail("No result available yet."); } catch (IllegalStateException ex) { // expected } // testing error here, success is tested with options RpcBatch.Callback<Void> capturedCallback = callback.getValue(); capturedCallback.onFailure(GOOGLE_JSON_ERROR); try { batchResult.get(); fail("Should throw a StorageExcetion on error."); } catch (StorageException ex) { // expected } }
@Override public String toString() { return MoreObjects.toStringHelper(this) .add("bucket", getBucket()) .add("name", getName()) .add("generation", getGeneration()) .toString(); }
@Override public boolean rename(String fromPath, String toPath) { final BlobId fromBlob = GcsBlob.of(fromPath).getBlobId(); final BlobId toBlob = GcsBlob.of(toPath).getBlobId(); storageProvider.getStorage().get(fromBlob).copyTo(toBlob); keyCache.invalidate(fromBlob.getBucket()); keyCache.invalidate(toBlob.getBucket()); return storageProvider.getStorage().delete(fromBlob); }