private void validateCloudMetadata(Map<String, CloudBlobMetadata> cloudBlobMetadataMap,
      EnumSet<StoreGetOptions> storeGetOptions, long currentTimestamp, List<? extends StoreKey> ids)
      throws StoreException {
    for (String key : cloudBlobMetadataMap.keySet()) {
      if (isBlobDeleted(cloudBlobMetadataMap.get(key)) && !storeGetOptions.contains(
          StoreGetOptions.Store_Include_Deleted)) {
        throw new StoreException("Id " + key + " has been deleted on the cloud", StoreErrorCodes.IDDeleted);
      }
      if (isBlobExpired(cloudBlobMetadataMap.get(key), currentTimestamp) && !storeGetOptions.contains(
          StoreGetOptions.Store_Include_Expired)) {
        throw new StoreException("Id " + key + " has expired on the cloud", StoreErrorCodes.TTLExpired);
      }
    }
    validateAccountAndContainer(cloudBlobMetadataMap, ids);
  }
Validate {@link CloudBlobMetadata} map to make sure it has metadata for all keys, and they meet the {@code storeGetOptions} requirements.
@param cloudBlobMetadataMap {@link CloudBlobMetadata} map.
@param storeGetOptions {@link StoreGetOptions} requirements.
@param currentTimestamp current time stamp.
@throws StoreException if the {@code CloudBlobMetadata} isnt valid
ambry-cloud/src/main/java/com/github/ambry/cloud/CloudBlobStore.java