class RestoreMetadataTask extends TaskSupport implements Cancelable {

  @Override
  protected Void execute() throws Exception {
    String blobStoreId = checkNotNull(getConfiguration().getString(BLOB_STORE_NAME_FIELD_ID));
    boolean dryRun = getConfiguration().getBoolean(DRY_RUN, false);
    boolean restoreBlobs = getConfiguration().getBoolean(RESTORE_BLOBS, false);
    boolean undeleteBlobs = getConfiguration().getBoolean(UNDELETE_BLOBS, false);
    boolean integrityCheck = getConfiguration().getBoolean(INTEGRITY_CHECK, false);

    restore(blobStoreId, restoreBlobs, undeleteBlobs, dryRun);

    blobStoreIntegrityCheck(integrityCheck, blobStoreId);

    return null;
  }

  @Inject public  RestoreMetadataTask(final BlobStoreManager blobStoreManager,
                             final RepositoryManager repositoryManager,
                             final Map<String, RestoreBlobStrategy> restoreBlobStrategies,
                             final BlobStoreUsageChecker blobStoreUsageChecker,
                             final DryRunPrefix dryRunPrefix,
                             final Map<String, IntegrityCheckStrategy> integrityCheckStrategies,
                             final BucketStore bucketStore,
                             final MaintenanceService maintenanceService);

}