![JAR search and dependency download from the Maven repository](/logo.png)
com.microsoft.windowsazure.services.blob.models.ContainerACL Maven / Gradle / Ivy
/**
* Copyright Microsoft Corporation
*
* 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.
*/
package com.microsoft.windowsazure.services.blob.models;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.microsoft.windowsazure.services.blob.BlobContract;
import com.microsoft.windowsazure.services.blob.implementation.ContainerACLDateAdapter;
/**
* Represents the public access properties and the container-level access policies of a container in the Blob storage
* service. This is returned by calls to implementations of {@link BlobContract#getContainerACL(String)} and
* {@link BlobContract#getContainerACL(String, BlobServiceOptions)}, and passed as a parameter to calls to
* implementations of {@link BlobContract#setContainerACL(String, ContainerACL)} and
* {@link BlobContract#setContainerACL(String, ContainerACL, BlobServiceOptions)}.
*
* See the Get Container ACL and the Set Container ACL documentation on MSDN
* for details of the underlying Blob Service REST API operations.
*/
public class ContainerACL {
private String etag;
private Date lastModified;
private PublicAccessType publicAccess;
private List signedIdentifiers = new ArrayList();
/**
* Gets the Etag value associated with this {@link ContainerACL} instance. This is the value
* returned for a container by a Blob service REST API Get Container ACL operation, or the value to set on a
* container with a Set Container ACL operation.
*
* @return
* A {@link String} containing the Etag value associated with this {@link ContainerACL}
* instance.
*/
public String getEtag() {
return etag;
}
/**
* Sets the Etag value to associate with this {@link ContainerACL} instance.
*
* This value is only set on a container when this {@link ContainerACL} instance is passed as a parameter to a call
* to an implementation of {@link BlobContract#setContainerACL(String, ContainerACL)} or
* {@link BlobContract#setContainerACL(String, ContainerACL, BlobServiceOptions)}.
*
* @param etag
* A {@link String} containing the Etag value to associate with this
* {@link ContainerACL} instance.
*
* @return
* A reference to this {@link ContainerACL} instance.
*/
public ContainerACL setEtag(String etag) {
this.etag = etag;
return this;
}
/**
* Gets the last modified time associated with this {@link ContainerACL} instance. This is the value
* returned for a container by a Blob service REST API Get Container ACL operation, or the value to set on a
* container with a Set Container ACL operation.
*
* @return
* A {@link Date} containing the last modified time associated with this {@link ContainerACL} instance.
*/
public Date getLastModified() {
return lastModified;
}
/**
* Sets the last modified time to associate with this {@link ContainerACL} instance.
*
* This value is only set on a container when this {@link ContainerACL} instance is passed as a parameter to a call
* to an implementation of {@link BlobContract#setContainerACL(String, ContainerACL)} or
* {@link BlobContract#setContainerACL(String, ContainerACL, BlobServiceOptions)}.
*
* @param lastModified
* A {@link java.util.Date} containing the last modified time to associate with this {@link ContainerACL} instance.
* @return
* A reference to this {@link ContainerACL} instance.
*/
public ContainerACL setLastModified(Date lastModified) {
this.lastModified = lastModified;
return this;
}
/**
* Gets the public access level associated with this {@link ContainerACL} instance. This is the value
* returned for a container by a Blob service REST API Get Container ACL operation, or the value to set on a
* container with a Set Container ACL operation.
*
* @return
* A {@link PublicAccessType} value representing the public access level associated with this
* {@link ContainerACL} instance.
*/
public PublicAccessType getPublicAccess() {
return publicAccess;
}
/**
* Sets the public access level to associate with this {@link ContainerACL} instance.
*
* This value is only set on a container when this {@link ContainerACL} instance is passed as a parameter to a call
* to an implementation of {@link BlobContract#setContainerACL(String, ContainerACL)} or
* {@link BlobContract#setContainerACL(String, ContainerACL, BlobServiceOptions)}.
*
* @param publicAccess
* A {@link PublicAccessType} value representing the public access level to associate with this
* {@link ContainerACL} instance.
* @return
* A reference to this {@link ContainerACL} instance.
*/
public ContainerACL setPublicAccess(PublicAccessType publicAccess) {
this.publicAccess = publicAccess;
return this;
}
/**
* Gets the list of container-level access policies associated with this {@link ContainerACL} instance. This is the
* value returned for a container by a Blob service REST API Get Container ACL operation, or the value to set on a
* container with a Set Container ACL operation.
*
* @return
* A {@link List} of {@link SignedIdentifier} instances containing up to five container-level access
* policies associated with this {@link ContainerACL} instance.
*/
public List getSignedIdentifiers() {
return signedIdentifiers;
}
/**
* Sets the list of container-level access policies to associate with this {@link ContainerACL} instance.
*
* This value is only set on a container when this {@link ContainerACL} instance is passed as a parameter to a call
* to an implementation of {@link BlobContract#setContainerACL(String, ContainerACL)} or
* {@link BlobContract#setContainerACL(String, ContainerACL, BlobServiceOptions)}.
*
* @param signedIdentifiers
* A {@link List} of {@link SignedIdentifier} instances containing up to five container-level access
* policies to associate with this {@link ContainerACL} instance.
* @return
* A reference to this {@link ContainerACL} instance.
*/
public ContainerACL setSignedIdentifiers(List signedIdentifiers) {
this.signedIdentifiers = signedIdentifiers;
return this;
}
/**
* Adds a container-level access policy to the list associated with this {@link ContainerACL} instance. A container
* may have up to five container-level access policies.
*
* Use the id parameter to specify a name for the access policy. The name may be up to 64 characters in
* length and must be unique within the container.
*
* Use the start parameter to specify the start time for valid access to a resource using the access
* policy. If this value is null
, the start time for any resource request using the access policy is
* assumed to be the time when the Blob service receives the request.
*
* Use the expiry parameter to specify the expiration time for valid access to a resource using the access
* policy. If this value is null
, the expiry time must be included in the Shared Access Signature for
* any resource request using the access policy.
*
* Use the permission parameter to specify the operations that can be performed on a blob that is accessed
* with the access policy. Supported permissions include read (r), write (w), delete (d), and list (l). Permissions
* may be grouped so as to allow multiple operations to be performed with the access policy. For example, to grant
* all permissions to a resource, specify "rwdl" for the parameter. To grant only read/write permissions, specify
* "rw" for the parameter.
*
* This value is only set on a container when this {@link ContainerACL} instance is passed as a parameter to a call
* to an implementation of {@link BlobContract#setContainerACL(String, ContainerACL)} or
* {@link BlobContract#setContainerACL(String, ContainerACL, BlobServiceOptions)}.
*
* @param id
* A {@link String} containing the name for the access policy.
* @param start
* A {@link Date} representing the start time for the access policy. If this value is null
,
* any Shared Access Signature that refers to this policy may specify the start time.
* @param expiry
* A {@link Date} representing the expiration time for the access policy. If this value is
* null
, any Shared Access Signature that refers to this policy must specify the expiry
* value. Resource access using a Shared Access Signature that refers to this policy after this time is
* not valid.
* @param permission
* A {@link String} containing the permissions specified for the access policy.
*/
public void addSignedIdentifier(String id, Date start, Date expiry, String permission) {
AccessPolicy accessPolicy = new AccessPolicy();
accessPolicy.setStart(start);
accessPolicy.setExpiry(expiry);
accessPolicy.setPermission(permission);
SignedIdentifier signedIdentifier = new SignedIdentifier();
signedIdentifier.setId(id);
signedIdentifier.setAccessPolicy(accessPolicy);
this.getSignedIdentifiers().add(signedIdentifier);
}
/**
* A static inner class representing a collection of container-level access policies. A container may have up to
* five container-level access policies, which may be associated with any number of Shared Access Signatures.
*/
@XmlRootElement(name = "SignedIdentifiers")
public static class SignedIdentifiers {
private List signedIdentifiers = new ArrayList();
/**
* Gets the list of container-level access policies associated with this {@link SignedIdentifiers} instance.
*
* @return
* A {@link List} of {@link SignedIdentifier} instances containing container-level access policies.
*/
@XmlElement(name = "SignedIdentifier")
public List getSignedIdentifiers() {
return signedIdentifiers;
}
/**
* Sets the list of container-level access policies associated with this {@link SignedIdentifiers} instance.
*
* @param signedIdentifiers
* A {@link List} of {@link SignedIdentifier} instances containing container-level access policies.
*/
public void setSignedIdentifiers(List signedIdentifiers) {
this.signedIdentifiers = signedIdentifiers;
}
}
/**
* A static inner class representing a container-level access policy with a unique name.
*/
public static class SignedIdentifier {
private String id;
private AccessPolicy accessPolicy;
/**
* Gets the name of the container-level access policy. The name may be up to 64 characters in
* length and must be unique within the container.
*
* @return
* A {@link String} containing the name for the access policy.
*/
@XmlElement(name = "Id")
public String getId() {
return id;
}
/**
* Sets the name of the container-level access policy. The name may be up to 64 characters in
* length and must be unique within the container.
*
* @param id
* A {@link String} containing the name for the access policy.
* @return
* A reference to this {@link SignedIdentifier} instance.
*/
public SignedIdentifier setId(String id) {
this.id = id;
return this;
}
/**
* Gets an {@link AccessPolicy} reference containing the start time, expiration time, and permissions associated
* with the container-level access policy.
*
* @return
* An {@link AccessPolicy} reference containing the start time, expiration time, and permissions
* associated with the access policy.
*/
@XmlElement(name = "AccessPolicy")
public AccessPolicy getAccessPolicy() {
return accessPolicy;
}
/**
* Sets an {@link AccessPolicy} reference containing the start time, expiration time, and permissions to
* associate with the container-level access policy.
*
* @param accessPolicy
* An {@link AccessPolicy} reference containing the start time, expiration time, and permissions
* to associate with the access policy.
* @return
* A reference to this {@link SignedIdentifier} instance.
*/
public SignedIdentifier setAccessPolicy(AccessPolicy accessPolicy) {
this.accessPolicy = accessPolicy;
return this;
}
}
/**
* An inner class representing the start time, expiration time, and permissions associated with an access policy.
*/
public static class AccessPolicy {
private Date start;
private Date expiry;
private String permission;
/**
* Gets the start time for valid access to a resource using the access policy. If this value is
* null
, the start time for any resource request using the access policy is assumed to be the time
* when the Blob service receives the request.
*
* @return
* A {@link Date} representing the start time for the access policy, or null
if none is
* specified.
*/
@XmlElement(name = "Start")
@XmlJavaTypeAdapter(ContainerACLDateAdapter.class)
public Date getStart() {
return start;
}
/**
* Sets the start time for valid access to a resource using the access policy. If this value is
* null
, the start time for any resource request using the access policy is assumed to be the time
* when the Blob service receives the request.
*
* @param start
* A {@link Date} representing the start time for the access policy, or null
to leave
* the time unspecified.
* @return
* A reference to this {@link AccessPolicy} instance.
*/
public AccessPolicy setStart(Date start) {
this.start = start;
return this;
}
/**
* Gets the expiration time for valid access to a resource using the access policy. If this value is
* null
, any Shared Access Signature that refers to this access policy must specify the expiry
* value.
*
* @return
* A {@link Date} representing the expiration time for the access policy, or null
if none
* is specified.
*/
@XmlElement(name = "Expiry")
@XmlJavaTypeAdapter(ContainerACLDateAdapter.class)
public Date getExpiry() {
return expiry;
}
/**
* Sets the expiration time for valid access to a resource using the access policy. If this value is
* null
, any Shared Access Signature that refers to this access policy must specify the expiry
* value.
*
* @param expiry
* A {@link Date} representing the expiration time for the access policy, or null
to
* leave the time unspecified.
* @return
* A reference to this {@link AccessPolicy} instance.
*/
public AccessPolicy setExpiry(Date expiry) {
this.expiry = expiry;
return this;
}
/**
* Gets the permissions for operations on resources specified by the access policy. Supported permissions
* include read (r), write (w), delete (d), and list (l). Permissions may be grouped so as to allow multiple
* operations to be performed with the access policy. For example, if all permissions to a resource are granted,
* the method returns "rwdl" as the result. If only read/write permissions are granted, the method returns "rw"
* as the result.
*
* @return
* A {@link String} containing the permissions specified for the access policy.
*/
@XmlElement(name = "Permission")
public String getPermission() {
return permission;
}
/**
* Sets the permissions for operations on resources specified by the access policy. Supported permissions
* include read (r), write (w), delete (d), and list (l). Permissions may be grouped so as to allow multiple
* operations to be performed with the access policy. For example, to grant all permissions to a resource,
* specify "rwdl" for the parameter. To grant only read/write permissions, specify "rw" for the parameter.
*
* @param permission
* A {@link String} containing the permissions specified for the access policy.
* @return
* A reference to this {@link AccessPolicy} instance.
*/
public AccessPolicy setPermission(String permission) {
this.permission = permission;
return this;
}
}
/**
* An enumeration type for the public access levels that can be set on a blob container.
*/
public static enum PublicAccessType {
/**
* Access to this container and its blobs is restricted to calls made with the storage account private key.
*/
NONE,
/**
* Anonymous public read-only access is allowed for individual blobs within the container, but it is not
* possible to enumerate the blobs within the container or to enumerate the containers in the storage account.
*/
BLOBS_ONLY,
/**
* Anonymous public read-only access is allowed for individual blobs within the container, and the blobs within
* the container can be enumerated, but it is not possible to enumerate the containers in the storage account.
*/
CONTAINER_AND_BLOBS,
}
}