private StorageRequest<CloudBlobClient, CloudBlobContainer, Void> releaseLeaseImpl( final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, Void> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, Void>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.leaseContainer(container.getTransformedAddress().getUri(this.getCurrentLocation()), options, context, accessCondition, LeaseAction.RELEASE, null, null, null); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, 0L, context); } @Override public Void preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_OK) { this.setNonExceptionedRetryableFailure(true); return null; } container.updatePropertiesFromResponse(this.getConnection()); return null; } }; return putRequest; }
private StorageRequest<CloudBlobClient, CloudBlobContainer, String> acquireLeaseImpl( final Integer leaseTimeInSeconds, final String proposedLeaseId, final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, String> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, String>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.leaseContainer(container.getTransformedAddress().getUri(this.getCurrentLocation()), options, context, accessCondition, LeaseAction.ACQUIRE, leaseTimeInSeconds, proposedLeaseId, null /* breakPeriodInSeconds */); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, 0L, context); } @Override public String preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_CREATED) { this.setNonExceptionedRetryableFailure(true); return null; } container.updatePropertiesFromResponse(this.getConnection()); return BlobResponse.getLeaseID(this.getConnection()); } }; return putRequest; }
private final StorageRequest<CloudBlobClient, CloudBlobContainer, Long> breakLeaseImpl( final Integer breakPeriodInSeconds, final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, Long> putCmd = new StorageRequest<CloudBlobClient, CloudBlobContainer, Long>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.leaseContainer(container.getTransformedAddress().getUri(this.getCurrentLocation()), options, context, accessCondition, LeaseAction.BREAK, null, null, breakPeriodInSeconds); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, 0L, context); } @Override public Long preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_ACCEPTED) { this.setNonExceptionedRetryableFailure(true); return -1L; } container.updatePropertiesFromResponse(this.getConnection()); final String leaseTime = BlobResponse.getLeaseTime(this.getConnection()); return Utility.isNullOrEmpty(leaseTime) ? -1L : Long.parseLong(leaseTime); } }; return putCmd; }
private StorageRequest<CloudBlobClient, CloudBlobContainer, Void> deleteImpl( final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, Void> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, Void>(options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest( CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.deleteContainer( container.getTransformedAddress().getPrimaryUri(), options, context, accessCondition); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, -1L, context); } @Override public Void preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_ACCEPTED) { this.setNonExceptionedRetryableFailure(true); } return null; } }; return putRequest; }
private final StorageRequest<CloudBlobClient, CloudBlobContainer, String> changeLeaseImpl( final String proposedLeaseId, final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, String> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, String>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.leaseContainer(container.getTransformedAddress().getUri(this.getCurrentLocation()), options, context, accessCondition, LeaseAction.CHANGE, null, proposedLeaseId, null); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, 0L, context); } @Override public String preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_OK) { this.setNonExceptionedRetryableFailure(true); return null; } container.updatePropertiesFromResponse(this.getConnection()); return BlobResponse.getLeaseID(this.getConnection()); } }; return putRequest; }
protected StorageRequest<ServiceClient, CloudBlobContainer, AccountInformation> downloadAccountInformationImpl( final RequestOptions options) { final StorageRequest<ServiceClient, CloudBlobContainer, AccountInformation> headRequest = new StorageRequest<ServiceClient, CloudBlobContainer, AccountInformation>( options, this.getStorageUri()) { @Override public void setRequestLocationMode() {
private StorageRequest<CloudBlobClient, CloudBlobContainer, Void> renewLeaseImpl( final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, Void> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, Void>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.leaseContainer(container.getTransformedAddress().getUri(this.getCurrentLocation()), options, context, accessCondition, LeaseAction.RENEW, null /* leaseTimeInSeconds */, null /* proposedLeaseId */, null /* breakPeriodInseconds */); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, 0L, context); } @Override public Void preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_OK) { this.setNonExceptionedRetryableFailure(true); return null; } container.updatePropertiesFromResponse(this.getConnection()); return null; } }; return putRequest; }
private final StorageRequest<CloudBlobClient, CloudBlobContainer, String> changeLeaseImpl( final String proposedLeaseId, final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, String> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, String>( options, this.getStorageUri()) {
private StorageRequest<CloudBlobClient, CloudBlobContainer, Void> releaseLeaseImpl( final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, Void> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, Void>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.leaseContainer(container.getTransformedAddress().getUri(this.getCurrentLocation()), options, context, accessCondition, LeaseAction.RELEASE, null, null, null); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, 0L, context); } @Override public Void preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_OK) { this.setNonExceptionedRetryableFailure(true); return null; } container.updatePropertiesFromResponse(this.getConnection()); return null; } }; return putRequest; }
private final StorageRequest<CloudBlobClient, CloudBlobContainer, Long> breakLeaseImpl( final Integer breakPeriodInSeconds, final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, Long> putCmd = new StorageRequest<CloudBlobClient, CloudBlobContainer, Long>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.leaseContainer(container.getTransformedAddress().getUri(this.getCurrentLocation()), options, context, accessCondition, LeaseAction.BREAK, null, null, breakPeriodInSeconds); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, 0L, context); } @Override public Long preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_ACCEPTED) { this.setNonExceptionedRetryableFailure(true); return -1L; } container.updatePropertiesFromResponse(this.getConnection()); final String leaseTime = BlobResponse.getLeaseTime(this.getConnection()); return Utility.isNullOrEmpty(leaseTime) ? -1L : Long.parseLong(leaseTime); } }; return putCmd; }
private StorageRequest<CloudBlobClient, CloudBlobContainer, Void> deleteImpl( final AccessCondition accessCondition, final BlobRequestOptions options) { final StorageRequest<CloudBlobClient, CloudBlobContainer, Void> putRequest = new StorageRequest<CloudBlobClient, CloudBlobContainer, Void>(options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest( CloudBlobClient client, CloudBlobContainer container, OperationContext context) throws Exception { return BlobRequest.deleteContainer( container.getTransformedAddress().getPrimaryUri(), options, context, accessCondition); } @Override public void signRequest(HttpURLConnection connection, CloudBlobClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, -1L, context); } @Override public Void preProcessResponse(CloudBlobContainer container, CloudBlobClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_ACCEPTED) { this.setNonExceptionedRetryableFailure(true); } return null; } }; return putRequest; }
CloudBlobContainer container = blobClient.getContainerReference("mycontainer"); // Get container properties BlobContainerProperties properties = container.getProperties(); System.out.println(container.getStorageUri().getPrimaryUri()); System.out.println(properties.getLastModified()); System.out.println(properties.getEtag()); // Get the container metadata HashMap<String, String> metaData = container.getMetadata(); for(String key: metaData.keySet()) { String value = metaData.get(key); System.out.println(key+":"+value); } // Using CloudBlobContainer.setMetadata(HashMap<String,String> metadata) for set metadata for container
/** * Creates an instance of the <code>CloudBlob</code> class using the specified type, name, snapshot ID, and * container. * * @param type * A {@link BlobType} value which represents the type of the blob. * @param blobName * Name of the blob. * @param snapshotID * A <code>String</code> that represents the snapshot version, if applicable. * @param container * The reference to the parent container. * @throws URISyntaxException * If the resource URI is invalid. */ protected CloudBlob(final BlobType type, String blobName, String snapshotID, CloudBlobContainer container) throws URISyntaxException { Utility.assertNotNullOrEmpty("blobName", blobName); Utility.assertNotNull("container", container); this.storageUri = PathUtility.appendPathToUri(container.getStorageUri(), blobName); this.name = blobName; this.blobServiceClient = container.getServiceClient(); this.container = container; this.snapshotID = snapshotID; this.properties = new BlobProperties(type); }
final boolean usePathStyleUris = Utility.determinePathStyleFromUri(this.storageUri.getPrimaryUri()); this.blobServiceClient = new CloudBlobClient(PathUtility.getServiceClientBaseAddress( this.getStorageUri(), usePathStyleUris), credentials != null ? credentials : parsedCredentials); this.name = PathUtility.getContainerNameFromUri(this.storageUri.getPrimaryUri(), usePathStyleUris);
/** * Returns the parent directory of this directory. * * @return A {@link CloudBlobDirectory} object that represents the parent of this directory. * * @throws StorageException * If a storage service error occurred. * @throws URISyntaxException * If the resource URI is invalid. */ @Override public CloudBlobDirectory getParent() throws URISyntaxException, StorageException { if (this.parent == null) { final String parentName = CloudBlob.getParentNameFromURI(this.getStorageUri(), this.blobServiceClient.getDirectoryDelimiter(), this.getContainer()); if (parentName != null) { StorageUri parentURI = PathUtility.appendPathToUri(this.container.getStorageUri(), parentName); this.parent = new CloudBlobDirectory(parentURI, parentName, this.blobServiceClient, this.getContainer()); } } return this.parent; }
/** * Returns the blob item's parent. * * @return A {@link CloudBlobDirectory} object that represents the parent directory for the blob. * * @throws StorageException * If a storage service error occurred. * @throws URISyntaxException * If the resource URI is invalid. */ @Override public final CloudBlobDirectory getParent() throws URISyntaxException, StorageException { if (this.parent == null) { final String parentName = getParentNameFromURI(this.getStorageUri(), this.blobServiceClient.getDirectoryDelimiter(), this.getContainer()); if (parentName != null) { StorageUri parentURI = PathUtility.appendPathToUri(this.container.getStorageUri(), parentName); this.parent = new CloudBlobDirectory(parentURI, parentName, this.blobServiceClient, this.getContainer()); } } return this.parent; }
/** * Validate container references * * @throws StorageException * @throws URISyntaxException */ @Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testCloudBlobContainerReference() throws StorageException, URISyntaxException{ CloudBlobClient client = BlobTestHelper.createCloudBlobClient(); CloudBlobContainer container = client.getContainerReference("container"); CloudBlockBlob blockBlob = container.getBlockBlobReference("directory1/blob1"); CloudPageBlob pageBlob = container.getPageBlobReference("directory2/blob2"); CloudBlobDirectory directory = container.getDirectoryReference("directory3"); CloudBlobDirectory directory2 = directory.getDirectoryReference("directory4"); assertEquals(container.getStorageUri().toString(), blockBlob.getContainer().getStorageUri().toString()); assertEquals(container.getStorageUri().toString(), pageBlob.getContainer().getStorageUri().toString()); assertEquals(container.getStorageUri().toString(), directory.getContainer().getStorageUri().toString()); assertEquals(container.getStorageUri().toString(), directory2.getContainer().getStorageUri().toString()); assertEquals(container.getStorageUri().toString(), directory2.getParent().getContainer().getStorageUri() .toString()); assertEquals(container.getStorageUri().toString(), blockBlob.getParent().getContainer().getStorageUri() .toString()); assertEquals(container.getStorageUri().toString(), blockBlob.getParent().getContainer().getStorageUri() .toString()); }
/** * Returns the parent directory of this directory. * * @return A {@link CloudBlobDirectory} object that represents the parent of this directory. * * @throws StorageException * If a storage service error occurred. * @throws URISyntaxException * If the resource URI is invalid. */ @Override public CloudBlobDirectory getParent() throws URISyntaxException, StorageException { if (this.parent == null) { final String parentName = CloudBlob.getParentNameFromURI(this.getStorageUri(), this.blobServiceClient.getDirectoryDelimiter(), this.getContainer()); if (parentName != null) { StorageUri parentURI = PathUtility.appendPathToUri(this.container.getStorageUri(), parentName); this.parent = new CloudBlobDirectory(parentURI, parentName, this.blobServiceClient, this.getContainer()); } } return this.parent; }
/** * Returns the blob item's parent. * * @return A {@link CloudBlobDirectory} object that represents the parent directory for the blob. * * @throws StorageException * If a storage service error occurred. * @throws URISyntaxException * If the resource URI is invalid. */ @Override public final CloudBlobDirectory getParent() throws URISyntaxException, StorageException { if (this.parent == null) { final String parentName = getParentNameFromURI(this.getStorageUri(), this.blobServiceClient.getDirectoryDelimiter(), this.getContainer()); if (parentName != null) { StorageUri parentURI = PathUtility.appendPathToUri(this.container.getStorageUri(), parentName); this.parent = new CloudBlobDirectory(parentURI, parentName, this.blobServiceClient, this.getContainer()); } } return this.parent; }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testCloudBlobContainerReferenceFromServerSAS() throws StorageException, URISyntaxException, IOException, InvalidKeyException { this.container.create(); CloudBlob blob = BlobTestHelper.uploadNewBlob(this.container, BlobType.BLOCK_BLOB, null, 1024, null); SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy(); Calendar now = Calendar.getInstance(); now.add(Calendar.MINUTE, 10); policy.setSharedAccessExpiryTime(now.getTime()); policy.setPermissions(EnumSet.of(SharedAccessBlobPermissions.READ)); String token = this.container.generateSharedAccessSignature(policy, null); CloudBlobContainer containerSAS = new CloudBlobContainer(this.container.getStorageUri(), new StorageCredentialsSharedAccessSignature(token)); CloudBlob blobRef = containerSAS.getBlobReferenceFromServer(blob.getName()); assertEquals(blob.getClass(), blobRef.getClass()); assertEquals(blob.getUri(), blobRef.getUri()); }