blob: c84edab33ba26e14f0e925d148de35e734c6bd33 [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.azure.storage.options;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import org.jclouds.http.options.BaseHttpRequestOptions;
import com.google.common.collect.ImmutableSet;
/**
* Options used to control paginated results (aka list commands).
*
* @see <a href="http://msdn.microsoft.com/en-us/library/dd179466.aspx" />
* @author Adrian Cole
*/
public class ListOptions extends BaseHttpRequestOptions {
public static final ListOptions NONE = new ListOptions();
/**
* Include this parameter to specify that the container's metadata be returned as part of the
* response body.
*
* Note that metadata requested with this parameter must be stored in accordance with the naming
* restrictions imposed by the 2009-09-19 version of the Blob service. Beginning with this
* version, all metadata names must adhere to the naming conventions for C# identifiers.
*/
public ListOptions includeMetadata() {
this.queryParameters.replaceValues("include", ImmutableSet.of("metadata"));
return this;
}
public boolean getIncludeMetadata() {
return getFirstQueryOrNull("include").equals("metadata");
}
/**
* Filters the results to return only objects whose name begins with the specified prefix.
*/
public ListOptions prefix(String prefix) {
this.queryParameters.put("prefix", checkNotNull(prefix, "prefix"));
return this;
}
public String getPrefix() {
return getFirstQueryOrNull("prefix");
}
/**
* A string value that identifies the portion of the list to be returned with the next list
* operation. The operation returns a marker value within the response body if the list returned
* was not complete. The marker value may then be used in a subsequent call to request the next
* set of list items.
* <p/>
* The marker value is opaque to the client.
*/
public ListOptions marker(String marker) {
this.queryParameters.put("marker", checkNotNull(marker, "marker"));
return this;
}
public String getMarker() {
return getFirstQueryOrNull("marker");
}
/**
* Specifies the maximum number of containers to return. If maxresults is not specified, the
* server will return up to 5,000 items. If the parameter is set to a value greater than 5,000,
* the server will return a Bad Request (400) error
*/
public ListOptions maxResults(int maxresults) {
checkState(maxresults >= 0, "maxresults must be >= 0");
checkState(maxresults <= 10000, "maxresults must be <= 5000");
queryParameters.put("maxresults", Integer.toString(maxresults));
return this;
}
public Integer getMaxResults() {
String maxresults = getFirstQueryOrNull("maxresults");
return (maxresults != null) ? new Integer(maxresults) : null;
}
public static class Builder {
/**
* @see ListOptions#includeMetadata()
*/
public static ListOptions includeMetadata() {
ListOptions options = new ListOptions();
return options.includeMetadata();
}
/**
* @see ListOptions#prefix(String)
*/
public static ListOptions prefix(String prefix) {
ListOptions options = new ListOptions();
return options.prefix(prefix);
}
/**
* @see ListOptions#marker(String)
*/
public static ListOptions marker(String marker) {
ListOptions options = new ListOptions();
return options.marker(marker);
}
/**
* @see ListOptions#maxResults(long)
*/
public static ListOptions maxResults(int maxKeys) {
ListOptions options = new ListOptions();
return options.maxResults(maxKeys);
}
}
}