@@ -0,0 +1,1248 @@
+package com.google.sps.tool;%0A%0Aimport com.google.appengine.api.blobstore.BlobKey;%0Aimport com.google.appengine.api.blobstore.BlobstoreFailureException;%0Aimport com.google.appengine.api.blobstore.BlobstoreService;%0Aimport com.google.appengine.api.blobstore.BlobstoreServiceFactory;%0A%0Aimport com.google.appengine.api.taskqueue.Queue;%0Aimport com.google.appengine.api.taskqueue.QueueFactory;%0Aimport com.google.appengine.api.taskqueue.TaskOptions;%0Aimport java.io.IOException;%0A%0Apublic class BlobstoreUtil %7B%0A    %0A  public static void deleteBlobWithRetries(String blobKey) throws IOException %7B%0A    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();%0A    BlobKey key = new BlobKey(blobKey);%0A%0A    int retries = 5;%0A    while (retries != 0) %7B%0A      try %7B%0A        blobstoreService.delete(key);%0A        break;%0A      %7D catch (BlobstoreFailureException e) %7B%0A        if (retries == 0) %7B%0A          --retries;%0A        %7D%0A      %7D%0A    %7D%0A%0A    if (retries == 0) %7B%0A      addBlobstoreDeleteTaskToQueue(key.getKeyString());%0A    %7D%0A  %7D%0A%0A  public static void addBlobstoreDeleteTaskToQueue(String key) %7B%0A    Queue queue = QueueFactory.getDefaultQueue();%0A    queue.add(TaskOptions.Builder.withUrl(%22/blobstoreKeyDeletionWorker%22).param(%22key%22, key));%0A  %7D%0A%7D%0A

Add BlobstoreUtil class