blob: d7da77c382cff3bf63fffef047f837b504d96a51 [file] [log] [blame]
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you 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 org.jclouds.s3.options;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import org.jclouds.http.options.BaseHttpRequestOptions;
/**
* Contains options supported in the REST API for the GET bucket operation. <h2>
* Usage</h2> The recommended way to instantiate a GetBucketOptions object is to statically import
* GetBucketOptions.Builder.* and invoke a static creation method followed by an instance mutator
* (if needed):
* <p/>
* <code>
* import static org.jclouds.s3.commands.options.GetBucketOptions.Builder.*
* <p/>
* S3Client connection = // get connection
* Future<S3Bucket> bucket = connection.listBucket("bucketName",withPrefix("home/users").maxKeys(1000));
* <code>
*
* @author Adrian Cole
* @see <a
* href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTBucketGET.html?"
* />
*/
public class ListBucketOptions extends BaseHttpRequestOptions {
public static final ListBucketOptions NONE = new ListBucketOptions();
/**
* Limits the response to keys which begin with the indicated 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.
*
*/
public ListBucketOptions withPrefix(String prefix) {
queryParameters.put("prefix", checkNotNull(prefix, "prefix"));
return this;
}
public String getPrefix() {
return getFirstQueryOrNull("prefix");
}
/**
* Indicates where in the bucket to begin listing. The list will only include keys that occur
* lexicographically after marker. This is convenient for pagination: To get the next page of
* results use the last key of the current page as the marker.
*/
public ListBucketOptions afterMarker(String marker) {
queryParameters.put("marker", checkNotNull(marker, "marker"));
return this;
}
public String getMarker() {
return getFirstQueryOrNull("marker");
}
/**
* The maximum number of keys you'd like to see in the response body. The server might return
* fewer than this many keys, but will not return more.
*/
public ListBucketOptions maxResults(int maxKeys) {
checkState(maxKeys >= 0, "maxKeys must be >= 0");
queryParameters.put("max-keys", Long.toString(maxKeys));
return this;
}
public Integer getMaxResults() {
String returnVal = getFirstQueryOrNull("max-keys");
return (returnVal != null) ? new Integer(returnVal) : null;
}
/**
* 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 CommonPrefixes collection. These
* rolled-up keys are not returned elsewhere in the response.
*
*/
public ListBucketOptions delimiter(String delimiter) {
queryParameters.put("delimiter", checkNotNull(delimiter, "delimiter"));
return this;
}
public String getDelimiter() {
return getFirstQueryOrNull("delimiter");
}
public static class Builder {
/**
* @see ListBucketOptions#withPrefix(String)
*/
public static ListBucketOptions withPrefix(String prefix) {
ListBucketOptions options = new ListBucketOptions();
return options.withPrefix(prefix);
}
/**
* @see ListBucketOptions#afterMarker(String)
*/
public static ListBucketOptions afterMarker(String marker) {
ListBucketOptions options = new ListBucketOptions();
return options.afterMarker(marker);
}
/**
* @see ListBucketOptions#maxResults(int)
*/
public static ListBucketOptions maxResults(int maxKeys) {
ListBucketOptions options = new ListBucketOptions();
return options.maxResults(maxKeys);
}
/**
* @see ListBucketOptions#delimiter(String)
*/
public static ListBucketOptions delimiter(String delimiter) {
ListBucketOptions options = new ListBucketOptions();
return options.delimiter(delimiter);
}
}
}