package org.karmaexchange.task; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import com.google.appengine.api.blobstore.BlobKey; import com.google.appengine.api.blobstore.BlobstoreServiceFactory; import com.google.appengine.api.taskqueue.Queue; import com.google.appengine.api.taskqueue.QueueFactory; import com.google.appengine.api.taskqueue.TaskOptions; @SuppressWarnings("serial") public class DeleteBlobServlet extends TaskQueueAdminTaskServlet { private static final Logger logger = Logger.getLogger(DeleteBlobServlet.class.getName()); private static final String PATH = "/task/delete_blob"; private static final String BLOB_KEY_PARAM = "blob_key"; @Override public void execute() throws IOException { String blobKeyStr = req.getParameter(BLOB_KEY_PARAM); if (blobKeyStr == null) { logger.warning("no blob key specified"); } else { BlobKey blobKey; try { blobKey = new BlobKey(blobKeyStr); } catch (IllegalArgumentException e) { logger.log(Level.WARNING, "unable to parse blob key: " + blobKeyStr, e); return; } BlobstoreServiceFactory.getBlobstoreService().delete(blobKey); } } public static void enqueueTask(BlobKey blobKey) { Queue queue = QueueFactory.getDefaultQueue(); queue.add(TaskOptions.Builder.withUrl(DeleteBlobServlet.PATH) .param(DeleteBlobServlet.BLOB_KEY_PARAM, blobKey.getKeyString())); } }