package org.karmaexchange.task;
import static org.karmaexchange.util.OfyService.ofy;
import java.io.IOException;
import java.util.logging.Logger;
import org.karmaexchange.dao.BaseDao;
import org.karmaexchange.util.OfyUtil;
import com.google.appengine.api.taskqueue.Queue;
import com.google.appengine.api.taskqueue.QueueFactory;
import com.google.appengine.api.taskqueue.TaskOptions;
import com.googlecode.objectify.Key;
@SuppressWarnings("serial")
public class UpdateNamedKeysAdminTaskServlet extends TaskQueueAdminTaskServlet {
private static final Logger logger =
Logger.getLogger(UpdateNamedKeysAdminTaskServlet.class.getName());
private static final String PATH = "/task/update_named_keys";
private static final String KEY_PARAM = "key";
@Override
protected void execute() throws IOException {
String keyStr = req.getParameter(KEY_PARAM);
if (keyStr == null) {
logger.warning("missing 'key' param");
return;
}
Key<?> key = OfyUtil.createKey(keyStr);
BaseDao<?> baseDaoObj = (BaseDao<?>) ofy().load().key(key).now();
baseDaoObj.updateDependentNamedKeys();
}
public static <T extends BaseDao<T>> void enqueueTask(Key<T> key) {
Queue queue = QueueFactory.getDefaultQueue();
queue.add(TaskOptions.Builder.withUrl(PATH)
.param(KEY_PARAM, key.getString()));
}
}