com.microsoft.windowsazure.services.table.client.EntityResolver Maven / Gradle / Ivy
Show all versions of microsoft-windowsazure-api Show documentation
/**
* 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.table.client;
import java.util.Date;
import java.util.HashMap;
import com.microsoft.windowsazure.services.core.storage.StorageException;
/**
* An interface to perform client side projection on a retrieved entity. An {@link EntityResolver} instance must
* implement a resolve
method projecting the entity data represented by the parameters passed in as a new
* instance of the type specified by the type parameter.
*
* This interface is useful for converting directly from table entity data to a client object type without requiring a
* separate table entity class type that deserializes every property individually. For example, a client can perform a
* client side projection of a Customer entity by simply returning the String
for the
* CustomerName property of each entity. The result of this projection will be a collection of
* String
s containing each customer name.
*
* @param
* The type of the object that the resolver produces.
*/
public interface EntityResolver {
/**
* Returns a reference to a new object instance of type T
containing a projection of the specified
* table entity data.
*
* @param partitionKey
* A String
containing the PartitionKey value for the entity.
* @param rowKey
* A String
containing the RowKey value for the entity.
* @param timeStamp
* A Date
containing the Timestamp value for the entity.
* @param properties
* The java.util.HashMap
of String
property names to {@link EntityProperty}
* data type and value pairs representing the table entity data.
* @param etag
* A String
containing the Etag for the entity.
* @return
* A reference to an object instance of type T
constructed as a projection of the table entity
* parameters.
* @throws StorageException
* if an error occurs during the operation.
*/
T resolve(String partitionKey, String rowKey, Date timeStamp, HashMap properties,
String etag) throws StorageException;
}