private static Map<StorageRpc.Option, ?> optionMap( Long generation, Long metaGeneration, Option... options) { return optionMap(generation, metaGeneration, Arrays.asList(options)); }
private static Map<StorageRpc.Option, ?> optionMap(Option... options) { return optionMap(null, null, Arrays.asList(options)); }
static Map<StorageRpc.Option, ?> optionMap(BlobId blobId, Option... options) { return optionMap(blobId.getGeneration(), null, options); } }
private static Map<StorageRpc.Option, ?> optionMap(BucketInfo bucketInfo, Option... options) { return optionMap(null, bucketInfo.getMetageneration(), options); }
@Override public ReadChannel reader(BlobId blob, BlobSourceOption... options) { Map<StorageRpc.Option, ?> optionsMap = optionMap(blob, options); return new BlobReadChannel(getOptions(), blob, optionsMap); }
@Override public Page<Bucket> list(BucketListOption... options) { return listBuckets(getOptions(), optionMap(options)); }
private BlobWriteChannel writer(BlobInfo blobInfo, BlobTargetOption... options) { final Map<StorageRpc.Option, ?> optionsMap = optionMap(blobInfo, options); return new BlobWriteChannel(getOptions(), blobInfo, optionsMap); }
@Override public Page<Blob> list(final String bucket, BlobListOption... options) { return listBlobs(bucket, getOptions(), optionMap(options)); }
static Map<StorageRpc.Option, ?> optionMap(BlobInfo blobInfo, Option... options) { return optionMap(blobInfo.getGeneration(), blobInfo.getMetageneration(), options); }
@Override public ReadChannel reader(String bucket, String blob, BlobSourceOption... options) { Map<StorageRpc.Option, ?> optionsMap = optionMap(options); return new BlobReadChannel(getOptions(), BlobId.of(bucket, blob), optionsMap); }
@Override @Deprecated public Blob create(BlobInfo blobInfo, InputStream content, BlobWriteOption... options) { Tuple<BlobInfo, BlobTargetOption[]> targetOptions = BlobTargetOption.convert(blobInfo, options); StorageObject blobPb = targetOptions.x().toPb(); Map<StorageRpc.Option, ?> optionsMap = optionMap(targetOptions.x(), targetOptions.y()); InputStream inputStreamParam = firstNonNull(content, new ByteArrayInputStream(EMPTY_BYTE_ARRAY)); // retries are not safe when the input is an InputStream, so we can't retry. return Blob.fromPb(this, storageRpc.create(blobPb, inputStreamParam, optionsMap)); }
/** * Adds a request representing the "delete blob" operation to this batch. Calling {@link * StorageBatchResult#get()} on the return value yields {@code true} upon successful deletion, * {@code false} if the blob was not found, or throws a {@link StorageException} if the operation * failed. */ public StorageBatchResult<Boolean> delete(BlobId blob, BlobSourceOption... options) { StorageBatchResult<Boolean> result = new StorageBatchResult<>(); RpcBatch.Callback<Void> callback = createDeleteCallback(result); Map<StorageRpc.Option, ?> optionMap = StorageImpl.optionMap(blob, options); batch.addDelete(blob.toPb(), callback, optionMap); return result; }
/** * Adds a request representing the "update blob" operation to this batch. The {@code options} can * be used in the same way as for {@link Storage#update(BlobInfo, BlobTargetOption...)}. Calling * {@link StorageBatchResult#get()} on the return value yields the updated {@link Blob} if * successful, or throws a {@link StorageException} if the operation failed. */ public StorageBatchResult<Blob> update(BlobInfo blobInfo, BlobTargetOption... options) { StorageBatchResult<Blob> result = new StorageBatchResult<>(); RpcBatch.Callback<StorageObject> callback = createUpdateCallback(this.options, result); Map<StorageRpc.Option, ?> optionMap = StorageImpl.optionMap(blobInfo, options); batch.addPatch(blobInfo.toPb(), callback, optionMap); return result; }
/** * Adds a request representing the "get blob" operation to this batch. The {@code options} can be * used in the same way as for {@link Storage#get(BlobId, BlobGetOption...)}. Calling {@link * StorageBatchResult#get()} on the return value yields the requested {@link Blob} if successful, * {@code null} if no such blob exists, or throws a {@link StorageException} if the operation * failed. */ public StorageBatchResult<Blob> get(BlobId blob, BlobGetOption... options) { StorageBatchResult<Blob> result = new StorageBatchResult<>(); RpcBatch.Callback<StorageObject> callback = createGetCallback(this.options, result); Map<StorageRpc.Option, ?> optionMap = StorageImpl.optionMap(blob, options); batch.addGet(blob.toPb(), callback, optionMap); return result; }
private Blob internalCreate(BlobInfo info, final byte[] content, BlobTargetOption... options) { Preconditions.checkNotNull(content); final StorageObject blobPb = info.toPb(); final Map<StorageRpc.Option, ?> optionsMap = optionMap(info, options); try { return Blob.fromPb( this, runWithRetries( new Callable<StorageObject>() { @Override public StorageObject call() { return storageRpc.create(blobPb, new ByteArrayInputStream(content), optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock())); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
@Override public Acl getAcl(final String bucket, final Entity entity, BucketSourceOption... options) { try { final Map<StorageRpc.Option, ?> optionsMap = optionMap(options); BucketAccessControl answer = runWithRetries( new Callable<BucketAccessControl>() { @Override public BucketAccessControl call() { return storageRpc.getAcl(bucket, entity.toPb(), optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock()); return answer == null ? null : Acl.fromPb(answer); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
@Override public Policy setIamPolicy( final String bucket, final Policy policy, BucketSourceOption... options) { try { final Map<StorageRpc.Option, ?> optionsMap = optionMap(options); return convertFromApiPolicy( runWithRetries( new Callable<com.google.api.services.storage.model.Policy>() { @Override public com.google.api.services.storage.model.Policy call() { return storageRpc.setIamPolicy(bucket, convertToApiPolicy(policy), optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock())); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
@Override public boolean delete(BlobId blob, BlobSourceOption... options) { final StorageObject storageObject = blob.toPb(); final Map<StorageRpc.Option, ?> optionsMap = optionMap(blob, options); try { return runWithRetries( new Callable<Boolean>() { @Override public Boolean call() { return storageRpc.delete(storageObject, optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
@Override public byte[] readAllBytes(BlobId blob, BlobSourceOption... options) { final StorageObject storageObject = blob.toPb(); final Map<StorageRpc.Option, ?> optionsMap = optionMap(blob, options); try { return runWithRetries( new Callable<byte[]>() { @Override public byte[] call() { return storageRpc.load(storageObject, optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }
@Override public boolean delete(String bucket, BucketSourceOption... options) { final com.google.api.services.storage.model.Bucket bucketPb = BucketInfo.of(bucket).toPb(); final Map<StorageRpc.Option, ?> optionsMap = optionMap(options); try { return runWithRetries( new Callable<Boolean>() { @Override public Boolean call() { return storageRpc.delete(bucketPb, optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }