com.amazonaws.services.s3.model.ListVersionsRequest Maven / Gradle / Ivy
Show all versions of aws-java-sdk-s3 Show documentation
/*
* Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file 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.amazonaws.services.s3.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.internal.Constants;
/**
* Provides options for returning
* a list of summary information about the versions in a specified
* bucket.
*
* Returned version summaries are ordered first by key and then by version.
* Keys are sorted lexicographically (i.e. alphabetically from a-Z) and versions
* are sorted from the most recent to the least recent.
* Versions with data and
* versions with delete markers are included in the results.
*
*
* Buckets can contain a virtually unlimited number of keys, and the complete
* results of a list query can be extremely large. To manage large result sets,
* Amazon S3 uses pagination to split them into multiple responses.
* Always check the {@link ObjectListing#isTruncated()} method to see
* if the returned listing is complete, or if callers need to make additional
* calls to get more results. Alternatively, use the
* {@link AmazonS3Client#listNextBatchOfVersions(VersionListing)} method as an
* easy way to get the next page of object listings.
*
*
* Objects created before versioning was enabled or when versioning is suspended
* will be given the default null
version ID (see
* {@link Constants#NULL_VERSION_ID}). Note that the
* null
version ID is a valid version ID and is not the same
* as not having a version ID.
*
*
* Calling {@link ListVersionsRequest#setDelimiter(String)}
* sets the delimiter, allowing groups of keys that share the
* delimiter-terminated prefix to be included
* in the returned listing. This allows applications to organize and browse
* their keys hierarchically, similar to how a file system organizes files
* into directories. These common prefixes can be retrieved
* through the {@link VersionListing#getCommonPrefixes()} method.
*
*
* For example, consider a bucket that contains the following keys:
*
* - "foo/bar/baz"
* - "foo/bar/bash"
* - "foo/bar/bang"
* - "foo/boo"
*
* If calling listVersions
with
* a prefix value of "foo/" and a delimiter value of "/"
* on this bucket, an VersionListing
is returned that contains one key
* ("foo/boo") and one entry in the common prefixes list ("foo/bar/").
* To see deeper into the virtual hierarchy, make another
* call to listVersions
setting the prefix parameter to any interesting
* common prefix to list the individual keys under that prefix.
*
*
* The total number of keys in a bucket doesn't substantially affect list performance,
* nor does the presence or absence of additional request parameters.
*
*
* For more information about enabling versioning for a bucket, see
* {@link AmazonS3#setBucketVersioningConfiguration(SetBucketVersioningConfigurationRequest)}.
*
*/
public class ListVersionsRequest extends AmazonWebServiceRequest implements Serializable, ExpectedBucketOwnerRequest {
/**
* The name of the Amazon S3 bucket whose versions are to be listed.
*
*
* When using this API with an access point, you must direct requests
* to the access point hostname. The access point hostname takes the form
* AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
*
*
* When using this operation using an access point through the Amazon Web Services SDKs, you provide
* the access point ARN in place of the bucket name. For more information about access point
* ARNs, see
* Using access points in the Amazon Simple Storage Service Developer Guide.
*
*/
private String bucketName;
/**
* Optional parameter restricting the response to keys which begin with the
* specified prefix. You can use prefixes to separate a bucket into
* different sets of keys in a way similar to how a file system uses
* folders.
*/
private String prefix;
/**
* Optional parameter indicating where in the sorted list of all versions in
* the specified bucket to begin returning results. Results are always
* ordered first lexicographically (i.e. alphabetically) and then from most
* recent version to least recent version. If a keyMarker is used without a
* versionIdMarker, results begin immediately after that key's last version.
* When a keyMarker is used with a versionIdMarker, results begin
* immediately after the version with the specified key and version ID.
*
* This enables pagination; to get the next page of results use the next key
* marker and next version ID marker (from
* {@link VersionListing#getNextKeyMarker()} and
* {@link VersionListing#getNextVersionIdMarker()}) as the markers for the
* next request to list versions. Or use the convenience method
* {@link AmazonS3#listNextBatchOfVersions(VersionListing)}
*/
private String keyMarker;
/**
* Optional parameter indicating where in the sorted list of all versions in
* the specified bucket to begin returning results. Results are always
* ordered first lexicographically (i.e. alphabetically) and then from most
* recent version to least recent version. A keyMarker must be specified
* when specifying a versionIdMarker. Results begin immediately after the
* version with the specified key and version ID.
*
* This enables pagination; to get the next page of results use the next key
* marker and next version ID marker (from
* {@link VersionListing#getNextKeyMarker()} and
* {@link VersionListing#getNextVersionIdMarker()}) as the markers for the
* next request to list versions. Or use the convenience method
* {@link AmazonS3#listNextBatchOfVersions(VersionListing)}
*/
private String versionIdMarker;
/**
* Optional parameter that causes keys that contain the same string between
* the prefix and the first occurrence of the delimiter to be rolled up into
* a single result element in the
* {@link VersionListing#getCommonPrefixes()} list. These rolled-up keys
* are not returned elsewhere in the response. The most commonly used
* delimiter is "/", which simulates a hierarchical organization similar to
* a file system directory structure.
*/
private String delimiter;
/**
* Optional parameter indicating the maximum number of results to include in
* the response. Amazon S3 might return fewer than this, but will not return
* more. Even if maxKeys is not specified, Amazon S3 will limit the number
* of results in the response.
*/
private Integer maxResults;
/**
* Optional parameter indicating the encoding method to be applied on the
* response. An object key can contain any Unicode character; however, XML
* 1.0 parser cannot parse some characters, such as characters with an ASCII
* value from 0 to 10. For characters that are not supported in XML 1.0, you
* can add this parameter to request that Amazon S3 encode the keys in the
* response.
*/
private String encodingType;
private String expectedBucketOwner;
/**
* If enabled, the requester is charged for conducting this operation from
* Requester Pays Buckets.
*/
private boolean isRequesterPays;
/**
* Optional parameter indicating to include some attributes of an object in
* the response.
*/
private List optionalObjectAttributes;
/**
* Constructs a new {@link ListVersionsRequest} object.
* The caller must populate
* the fields before the request is executed.
*
* @see ListVersionsRequest#ListVersionsRequest(String, String, String, String, String, Integer)
*/
public ListVersionsRequest() {}
/**
* Constructs a new {@link ListVersionsRequest} object and initializes all required
* and optional fields.
*
*
* When using this API with an access point, you must direct requests
* to the access point hostname. The access point hostname takes the form
* AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
*
*
* When using this operation using an access point through the Amazon Web Services SDKs, you provide
* the access point ARN in place of the bucket name. For more information about access point
* ARNs, see
* Using access points in the Amazon Simple Storage Service Developer Guide.
*
*
* @param bucketName
* The name of the bucket, or access point ARN, whose versions are to be listed.
* @param prefix
* The prefix restricting what keys will be listed.
* @param keyMarker
* The key marker indicating where results should begin.
* @param versionIdMarker
* The version ID marker indicating where results should begin.
* @param delimiter
* The delimiter for condensing common prefixes in returned
* results.
* @param maxResults
* The maximum number of results to return.
*
* @see ListVersionsRequest#ListVersionsRequest()
*/
public ListVersionsRequest(String bucketName, String prefix, String keyMarker, String versionIdMarker, String delimiter, Integer maxResults) {
setBucketName(bucketName);
setPrefix(prefix);
setKeyMarker(keyMarker);
setVersionIdMarker(versionIdMarker);
setDelimiter(delimiter);
setMaxResults(maxResults);
}
public String getExpectedBucketOwner() {
return expectedBucketOwner;
}
public ListVersionsRequest withExpectedBucketOwner(String expectedBucketOwner) {
this.expectedBucketOwner = expectedBucketOwner;
return this;
}
public void setExpectedBucketOwner(String expectedBucketOwner) {
withExpectedBucketOwner(expectedBucketOwner);
}
/**
* Gets the name of the Amazon S3 bucket whose versions are to be listed.
*
* @return The name of the Amazon S3 bucket whose versions are to be listed.
*
* @see ListVersionsRequest#setBucketName(String)
* @see ListVersionsRequest#withBucketName(String)
*/
public String getBucketName() {
return bucketName;
}
/**
* Sets the name of the Amazon S3 bucket whose versions are to be listed.
*
*
* When using this API with an access point, you must direct requests
* to the access point hostname. The access point hostname takes the form
* AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
*
*
* When using this operation using an access point through the Amazon Web Services SDKs, you provide
* the access point ARN in place of the bucket name. For more information about access point
* ARNs, see
* Using access points in the Amazon Simple Storage Service Developer Guide.
*
*
* @param bucketName
* The name of the Amazon S3 bucket, or access point ARN, whose versions are to be
* listed.
*
* @see ListVersionsRequest#getBucketName()
* @see ListVersionsRequest#withBucketName(String)
*/
public void setBucketName(String bucketName) {
this.bucketName = bucketName;
}
/**
* Sets the name of the Amazon S3 bucket whose versions are to be listed.
* Returns this {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
*
* When using this API with an access point, you must direct requests
* to the access point hostname. The access point hostname takes the form
* AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
*
*
* When using this operation using an access point through the Amazon Web Services SDKs, you provide
* the access point ARN in place of the bucket name. For more information about access point
* ARNs, see
* Using access points in the Amazon Simple Storage Service Developer Guide.
*
*
* @param bucketName
* The name of the Amazon S3 bucket, or access point ARN, whose versions are to be
* listed.
*
* @return This {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @see ListVersionsRequest#getBucketName()
* @see ListVersionsRequest#setBucketName(String)
*/
public ListVersionsRequest withBucketName(String bucketName) {
setBucketName(bucketName);
return this;
}
/**
* Gets the optional prefix parameter restricting the response to keys
* that begin with the specified prefix. Use prefixes to separate a
* bucket into different sets of keys, similar to how a file system organizes files
* into directories.
*
* @return The optional prefix parameter restricting the response to keys
* that begin with the specified prefix.
*
* @see ListVersionsRequest#setPrefix(String)
* @see ListVersionsRequest#withPrefix(String)
*/
public String getPrefix() {
return prefix;
}
/**
* Sets the optional prefix parameter restricting the response to keys that
* begin with the specified prefix.
*
* @param prefix
* The optional prefix parameter restricting the response to keys
* that begin with the specified prefix.
*
* @see ListVersionsRequest#getPrefix()
* @see ListVersionsRequest#withPrefix(String)
*/
public void setPrefix(String prefix) {
this.prefix = prefix;
}
/**
* Sets the optional prefix parameter restricting the response to keys that
* begin with the specified prefix.
* Returns this {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @param prefix
* The optional prefix parameter restricting the response to keys
* that begin with the specified prefix.
*
* @return This {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @see ListVersionsRequest#getPrefix()
* @see ListVersionsRequest#setPrefix(String)
*/
public ListVersionsRequest withPrefix(String prefix) {
setPrefix(prefix);
return this;
}
/**
* Gets the optional keyMarker
* parameter indicating where in the sorted
* list of all versions in the specified bucket to begin returning results.
* Results are always ordered first lexicographically (i.e. alphabetically)
* and then from most recent version to least recent version.
*
* If a keyMarker
* is used without a version ID marker, results begin immediately after that
* key's last version. When a keyMarker
is used with a version ID marker,
* results begin immediately after the version with the specified key and
* version ID.
*
*
* @return The optional keyMarker
parameter indicating where in the sorted
* list of all versions in the specified bucket to begin returning
* results.
*
* @see ListVersionsRequest#setKeyMarker(String)
* @see ListVersionsRequest#withKeyMarker(String)
*/
public String getKeyMarker() {
return keyMarker;
}
/**
* Sets the optional keyMarker
parameter indicating where in the sorted list
* of all versions in the specified bucket to begin returning results.
*
* @param keyMarker
* The optional keyMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin
* returning results.
*
* @see ListVersionsRequest#getKeyMarker()
* @see ListVersionsRequest#withKeyMarker(String)
*/
public void setKeyMarker(String keyMarker) {
this.keyMarker = keyMarker;
}
/**
* Sets the optional keyMarker
parameter indicating where in the sorted list
* of all versions in the specified bucket to begin returning results.
* Returns this {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @param keyMarker
* The optional keyMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin
* returning results.
*
* @return This {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @see ListVersionsRequest#getKeyMarker()
* @see ListVersionsRequest#setKeyMarker(String)
*/
public ListVersionsRequest withKeyMarker(String keyMarker) {
setKeyMarker(keyMarker);
return this;
}
/**
* Gets the optional versionIdMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin returning
* results. Results are always ordered first lexicographically (i.e.
* alphabetically) and then from most recent version to least recent
* version.
*
* A key marker must be specified when specifying a versionIdMarker
.
* Results begin immediately after the version with the specified key and
* version ID.
*
*
* @return The optional versionIdMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin
* returning results.
*
* @see ListVersionsRequest#setVersionIdMarker(String)
* @see ListVersionsRequest#withVersionIdMarker(String)
*/
public String getVersionIdMarker() {
return versionIdMarker;
}
/**
* Sets the optional versionIdMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin returning
* results.
*
* @param versionIdMarker
* The optional versionIdMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin
* returning results.
*
* @see ListVersionsRequest#getVersionIdMarker()
* @see ListVersionsRequest#withVersionIdMarker(String)
*/
public void setVersionIdMarker(String versionIdMarker) {
this.versionIdMarker = versionIdMarker;
}
/**
* Sets the optional versionIdMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin returning
* results.
* Returns this {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @param versionIdMarker
* The optional versionIdMarker
parameter indicating where in the
* sorted list of all versions in the specified bucket to begin
* returning results.
*
* @return This {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @see ListVersionsRequest#getVersionIdMarker()
* @see ListVersionsRequest#setVersionIdMarker(String)
*/
public ListVersionsRequest withVersionIdMarker(String versionIdMarker) {
setVersionIdMarker(versionIdMarker);
return this;
}
/**
* Gets the optional delimiter parameter that causes keys that contain
* the same string between the prefix and the first occurrence of the
* delimiter to be combined into a single result element in the
* {@link VersionListing#getCommonPrefixes()} list. These combined keys
* are not returned elsewhere in the response.
*
* The most commonly used
* delimiter is "/", which simulates a hierarchical organization similar to
* a file system directory structure.
*
*
* @return The optional delimiter parameter that causes keys that contain
* the same string between the prefix and the first occurrence of
* the delimiter to be combined into a single result element in the
* {@link VersionListing#getCommonPrefixes()} list.
*
* @see ListVersionsRequest#setDelimiter(String)
* @see ListVersionsRequest#withDelimiter(String)
*/
public String getDelimiter() {
return delimiter;
}
/**
* Sets the optional delimiter parameter that causes keys that contain the
* same string between the prefix and the first occurrence of the delimiter
* to be combined into a single result element in the
* {@link VersionListing#getCommonPrefixes()} list.
*
* @param delimiter
* The optional delimiter parameter that causes keys that contain
* the same string between the prefix and the first occurrence of
* the delimiter to be combined into a single result element in
* the {@link VersionListing#getCommonPrefixes()} list.
*
* @see ListVersionsRequest#getDelimiter()
* @see ListVersionsRequest#withDelimiter(String)
*/
public void setDelimiter(String delimiter) {
this.delimiter = delimiter;
}
/**
* Sets the optional delimiter parameter that causes keys that contain the
* same string between the prefix and the first occurrence of the delimiter
* to be combined into a single result element in the
* {@link VersionListing#getCommonPrefixes()} list.
* Returns this {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @param delimiter
* The optional delimiter parameter that causes keys that contain
* the same string between the prefix and the first occurrence of
* the delimiter to be combined into a single result element in
* the {@link VersionListing#getCommonPrefixes()} list.
*
* @return This {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @see ListVersionsRequest#getDelimiter()
* @see ListVersionsRequest#setDelimiter(String)
*/
public ListVersionsRequest withDelimiter(String delimiter) {
setDelimiter(delimiter);
return this;
}
/**
* Gets the optional maxResults
parameter indicating the maximum number of results
* to include in the response. Amazon S3 might return fewer than this, but
* will never return more. Even if maxResults
is not specified,
* Amazon S3 will
* limit the number of results in the response.
*
* @return The optional maxResults
parameter indicating the maximum number of results
*
* @see ListVersionsRequest#setMaxResults(Integer)
* @see ListVersionsRequest#withMaxResults(Integer)
*/
public Integer getMaxResults() {
return maxResults;
}
/**
* Sets the optional maxResults
parameter indicating the maximum number of results to
* include in the response.
*
* @param maxResults
* The optional maxResults
parameter indicating the maximum number of
* results to include in the response.
*
* @see ListVersionsRequest#getMaxResults()
* @see ListVersionsRequest#withMaxResults(Integer)
*/
public void setMaxResults(Integer maxResults) {
this.maxResults = maxResults;
}
/**
* Sets the optional maxResults
parameter indicating the maximum number of results to
* include in the response.
* Returns this {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @param maxResults
* The optional maxResults
parameter indicating the maximum number of
* results to include in the response.
*
* @return This {@link ListVersionsRequest}, enabling additional method
* calls to be chained together.
*
* @see ListVersionsRequest#getMaxResults()
* @see ListVersionsRequest#setMaxResults(Integer)
*/
public ListVersionsRequest withMaxResults(Integer maxResults) {
setMaxResults(maxResults);
return this;
}
/**
* Gets the optional encodingType
parameter indicating the
* encoding method to be applied on the response.
*
* @return The encoding method to be applied on the response.
*/
public String getEncodingType() {
return encodingType;
}
/**
* Sets the optional encodingType
parameter indicating the
* encoding method to be applied on the response. An object key can contain
* any Unicode character; however, XML 1.0 parser cannot parse some
* characters, such as characters with an ASCII value from 0 to 10. For
* characters that are not supported in XML 1.0, you can add this parameter
* to request that Amazon S3 encode the keys in the response.
*
* @param encodingType
* The encoding method to be applied on the response. Valid
* values: null (not encoded) or "url".
*/
public void setEncodingType(String encodingType) {
this.encodingType = encodingType;
}
/**
* Sets the optional encodingType
parameter indicating the
* encoding method to be applied on the response. An object key can contain
* any Unicode character; however, XML 1.0 parser cannot parse some
* characters, such as characters with an ASCII value from 0 to 10. For
* characters that are not supported in XML 1.0, you can add this parameter
* to request that Amazon S3 encode the keys in the response.
* Returns this {@link ListVersionsRequest}, enabling additional method calls
* to be chained together.
*
* @param encodingType
* The encoding method to be applied on the response. Valid
* values: null (not encoded) or "url".
*/
public ListVersionsRequest withEncodingType(String encodingType) {
setEncodingType(encodingType);
return this;
}
/**
* Returns whether the requester knows that they will be charged for the request.
*
* @return true if the user has enabled Requester Pays option for
* conducting this operation from Requester Pays Bucket.
*/
public boolean isRequesterPays() {
return isRequesterPays;
}
/**
* Confirms whether the requester knows that they will be charged for the request. Bucket owners need not specify this
* parameter in their requests.
*
* @param isRequesterPays if Requester Pays option is enabled for the operation.
*/
public void setRequesterPays(boolean isRequesterPays) {
this.isRequesterPays = isRequesterPays;
}
/**
* Confirms whether the requester knows that they will be charged for the request. Bucket owners need not specify this
* parameter in their requests.
*
* @param isRequesterPays if Requester Pays option is enabled for the operation.
*
* @return The updated ListVersionsRequest object.
*/
public ListVersionsRequest withRequesterPays(boolean isRequesterPays) {
setRequesterPays(isRequesterPays);
return this;
}
/**
* Gets the optional object attribute parameter indicating that customer also need
* some extra information about an object in the response like Restore Status.
*
* @return The optional parameter indicating that customer also need
* some extra information about an object on the response
*
* @see ListVersionsRequest#setOptionalObjectAttributes(List)
* @see ListVersionsRequest#withOptionalObjectAttributes(List)
*/
public List getOptionalObjectAttributes() {
if(optionalObjectAttributes != null) {
return Collections.unmodifiableList(optionalObjectAttributes);
}
return null;
}
/**
* Sets the optional object attribute parameter indicating that customer also need
* some extra information about an object in the response like Restore Status.
*
* @param optionalObjectAttributes
* The optional parameter indicating to include
* some extra object information in the response.
* Valid values: null or "RestoreStatus".
*
* @see ListVersionsRequest#getOptionalObjectAttributes()
* @see ListVersionsRequest#setOptionalObjectAttributes(List)
*
*/
public ListVersionsRequest withOptionalObjectAttributes(List optionalObjectAttributes) {
this.optionalObjectAttributes = optionalObjectAttributes != null ? new ArrayList(optionalObjectAttributes) : null;
return this;
}
/**
* Sets the optional object attribute parameter indicating that customer also need
* some extra information about an object in the response like Restore Status.
*
* @param optionalObjectAttributes
* The optional parameter indicating to include
* some extra object information in the response.
* Valid values: null or "RestoreStatus".
*
* @see ListVersionsRequest#getOptionalObjectAttributes()
* @see ListVersionsRequest#withOptionalObjectAttributes(List)
*/
public void setOptionalObjectAttributes(List optionalObjectAttributes) {
withOptionalObjectAttributes(optionalObjectAttributes);
}
}