
com.microsoft.azure.storage.table.TableRequestOptions 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.azure.storage.table; import com.microsoft.azure.storage.RequestOptions; import com.microsoft.azure.storage.core.Utility; /** * Represents a set of timeout, payload format, and retry policy options that may be specified for a table operation * request. */ public class TableRequestOptions extends RequestOptions { /** * The interface whose function is used to get the
*/ public TableRequestOptions() { super(); } /** * Creates an instance of thefor an entity property * given the partition key, row, key, and the property name, if the interface is implemented */ public interface PropertyResolver { /** * Given the partition key, row, key, and the property name, produces the EdmType * * @param pk * The partition key * @param rk * The row key * @param key * The property name * @param value * The property value * @return * EdmType of the property */ public EdmType propertyResolver(String pk, String rk, String key, String value); } /** * The interface whose function is used to get the for an entity property * given the partition key, row, key, and the property name, if the interface is implemented */ private PropertyResolver propertyResolver; /** * The TableRequestOptions RequestOptions
class by copying values from another *TableRequestOptions
instance. * * @param other * ATableRequestOptions
object that represents the request options to copy. */ public TableRequestOptions(final TableRequestOptions other) { super(other); if (other != null) { this.setTablePayloadFormat(other.getTablePayloadFormat()); this.setPropertyResolver(other.getPropertyResolver()); } } /** * Reserved for internal use. Initializes the values for thisTableRequestOptions
instance, if they are * currentlynull
, using the values specified in the {@link CloudTableClient} parameter. * * @param options * The input options to copy from when applying defaults * @param client * The {@link CloudTableClient} client object to copy the timeout and retry policy from. */ protected static final TableRequestOptions applyDefaults(final TableRequestOptions options, final CloudTableClient client) { TableRequestOptions modifiedOptions = new TableRequestOptions(options); TableRequestOptions.populateRequestOptions(modifiedOptions, client.getDefaultRequestOptions()); return TableRequestOptions.applyDefaultsInternal(modifiedOptions, client); } private static final TableRequestOptions applyDefaultsInternal(final TableRequestOptions modifiedOptions, CloudTableClient client) { Utility.assertNotNull("modifiedOptions", modifiedOptions); RequestOptions.applyBaseDefaultsInternal(modifiedOptions); if (modifiedOptions.getTablePayloadFormat() == null) { modifiedOptions.setTablePayloadFormat(TablePayloadFormat.Json); } return modifiedOptions; } /** * Populates any null fields in the first requestOptions object with values from the second requestOptions object. */ private static final RequestOptions populateRequestOptions(TableRequestOptions modifiedOptions, final TableRequestOptions clientOptions) { RequestOptions.populateRequestOptions(modifiedOptions, clientOptions, false); if (modifiedOptions.getTablePayloadFormat() == null) { modifiedOptions.setTablePayloadFormat(clientOptions.getTablePayloadFormat()); } if (modifiedOptions.getPropertyResolver() == null) { modifiedOptions.setPropertyResolver(clientOptions.getPropertyResolver()); } return modifiedOptions; } /** * Gets the {@link TablePayloadFormat} to be used. For more information about {@link TablePayloadFormat} defaults, * see {@link #setTablePayloadFormat(TablePayloadFormat)}. * * @return * The {@link TablePayloadFormat} used by this {@link TableRequest} */ public TablePayloadFormat getTablePayloadFormat() { return this.payloadFormat; } /** * Gets the interface that contains a function which is used to get thefor an entity property * given the partition key, row, key, and the property name. For more information about the {@link PropertyResolver} * defaults, see {@link #setPropertyResolver(PropertyResolver)}. * * @return * The property resolver in use */ public PropertyResolver getPropertyResolver() { return this.propertyResolver; } /** * Sets the {@link TablePayloadFormat} to be used. * * The default {@link TablePayloadFormat} is set in the client and is by default {@link TablePayloadFormat#Json}. * You can change the {@link TablePayloadFormat} on this request by setting this property. You can also change the * value on the {@link TableServiceClient#getDefaultRequestOptions()} object so that all subsequent requests made * via the service client will use that {@link TablePayloadFormat}. * * @param payloadFormat * The TablePayloadFormat to use. */ public void setTablePayloadFormat(TablePayloadFormat payloadFormat) { this.payloadFormat = payloadFormat; } /** * Sets the interface that contains a function which is used to get the
for an entity property * given the partition key, row, key, and the property name. * * The default {@link PropertyResolver} is set in the client and is by default null, indicating not to use a * property resolver. You can change the {@link PropertyResolver} on this request by setting this property. You can * also change the value on the {@link TableServiceClient#getDefaultRequestOptions()} object so that all subsequent * requests made via the service client will use that {@link PropertyResolver}. * * @param propertyResolver * The property resolver to use. */ public void setPropertyResolver(PropertyResolver propertyResolver) { this.propertyResolver = propertyResolver; } }