Refine search
@Override public Storage create(StorageOptions options) { return new StorageImpl(options); } }
private static Map<StorageRpc.Option, ?> optionMap( Long generation, Long metaGeneration, Iterable<? extends Option> options, boolean useAsSource) { Map<StorageRpc.Option, Object> temp = Maps.newEnumMap(StorageRpc.Option.class); for (Option option : options) { Object prev = temp.put(option.getRpcOption(), option.getValue()); checkArgument(prev == null, "Duplicate option %s", option); } Boolean value = (Boolean) temp.remove(DELIMITER); if (Boolean.TRUE.equals(value)) { temp.put(DELIMITER, PATH_DELIMITER); } if (useAsSource) { addToOptionMap(IF_GENERATION_MATCH, IF_SOURCE_GENERATION_MATCH, generation, temp); addToOptionMap(IF_GENERATION_NOT_MATCH, IF_SOURCE_GENERATION_NOT_MATCH, generation, temp); addToOptionMap(IF_METAGENERATION_MATCH, IF_SOURCE_METAGENERATION_MATCH, metaGeneration, temp); addToOptionMap( IF_METAGENERATION_NOT_MATCH, IF_SOURCE_METAGENERATION_NOT_MATCH, metaGeneration, temp); } else { addToOptionMap(IF_GENERATION_MATCH, generation, temp); addToOptionMap(IF_GENERATION_NOT_MATCH, generation, temp); addToOptionMap(IF_METAGENERATION_MATCH, metaGeneration, temp); addToOptionMap(IF_METAGENERATION_NOT_MATCH, metaGeneration, temp); } return ImmutableMap.copyOf(temp); }
@Override public Acl createAcl(String bucket, Acl acl) { return createAcl(bucket, acl, new BucketSourceOption[0]); }
@Override public Page<Bucket> list(BucketListOption... options) { return listBuckets(getOptions(), optionMap(options)); }
@Override public Page<Blob> list(final String bucket, BlobListOption... options) { return listBlobs(bucket, getOptions(), optionMap(options)); }
@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 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); } }
@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); }
if (credentials == null) { checkState( this.getOptions().getCredentials() instanceof ServiceAccountSigner, "Signing key was not provided and could not be derived"); credentials = (ServiceAccountSigner) this.getOptions().getCredentials(); getOptions().getClock().millisTime() + unit.toMillis(duration), TimeUnit.MILLISECONDS); SignatureInfo signatureInfo = buildSignatureInfo(optionMap, blobInfo, expiration, path); byte[] signatureBytes = credentials.sign(signatureInfo.constructUnsignedPayload().getBytes(UTF_8));
@Override public ReadChannel reader(BlobId blob, BlobSourceOption... options) { Map<StorageRpc.Option, ?> optionsMap = optionMap(blob, options); return new BlobReadChannel(getOptions(), blob, optionsMap); }
@Override public List<Boolean> delete(Iterable<BlobId> blobIds) { StorageBatch batch = batch(); final List<Boolean> results = Lists.newArrayList(); for (BlobId blob : blobIds) { batch .delete(blob) .notify( new BatchResult.Callback<Boolean, StorageException>() { @Override public void success(Boolean result) { results.add(result); } @Override public void error(StorageException exception) { results.add(Boolean.FALSE); } }); } batch.submit(); return Collections.unmodifiableList(results); }
@Override public boolean delete(BlobId blob) { return delete(blob, new BlobSourceOption[0]); }
@Override public Blob get(BlobId blob) { return get(blob, new BlobGetOption[0]); }
@Override public StorageBatch batch() { return new StorageBatch(this.getOptions()); }
@Override public Acl getAcl(final String bucket, final Entity entity) { return getAcl(bucket, entity, new BucketSourceOption[0]); }
@Override public boolean deleteAcl(final String bucket, final Entity entity) { return deleteAcl(bucket, entity, new BucketSourceOption[0]); }
private static <T> void addToOptionMap( StorageRpc.Option getOption, StorageRpc.Option putOption, T defaultValue, Map<StorageRpc.Option, Object> map) { if (map.containsKey(getOption)) { @SuppressWarnings("unchecked") T value = (T) map.remove(getOption); checkArgument( value != null || defaultValue != null, "Option " + getOption.value() + " is missing a value"); value = firstNonNull(value, defaultValue); map.put(putOption, value); } }
@Override public boolean deleteAcl( final String bucket, final Entity entity, BucketSourceOption... options) { try { final Map<StorageRpc.Option, ?> optionsMap = optionMap(options); return runWithRetries( new Callable<Boolean>() { @Override public Boolean call() { return storageRpc.deleteAcl(bucket, entity.toPb(), optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { throw StorageException.translateAndThrow(e); } }