Skip to content

Instantly share code, notes, and snippets.

@sinmetal
Created January 20, 2015 04:18
Show Gist options
  • Save sinmetal/d29215d9ebaaaaeeeec5 to your computer and use it in GitHub Desktop.
Save sinmetal/d29215d9ebaaaaeeeec5 to your computer and use it in GitHub Desktop.
Memcache.putIfUntouched
package org.sinmetal.controller;
import javax.servlet.http.HttpServletResponse;
import org.slim3.controller.Navigation;
import org.slim3.controller.SimpleController;
import com.google.appengine.api.memcache.MemcacheService;
import com.google.appengine.api.memcache.MemcacheService.IdentifiableValue;
import com.google.appengine.api.memcache.MemcacheServiceFactory;
public class MemcacheController extends SimpleController {
MemcacheService service = MemcacheServiceFactory.getMemcacheService();
final String KEY = "hogeKey";
@Override
protected Navigation run() throws Exception {
if ("POST".equals(request.getMethod().toUpperCase())) {
if (service.contains(KEY) == false) {
service.put(KEY, 1);
response.setStatus(HttpServletResponse.SC_CREATED);
return null;
}
} else if ("PUT".equals(request.getMethod().toUpperCase())) {
IdentifiableValue identifiable = service.getIdentifiable(KEY);
if (identifiable == null) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return null;
}
int value = Integer.parseInt(identifiable.getValue().toString());
value++;
boolean result = service.putIfUntouched(KEY, identifiable, value);
if (result) {
response.setStatus(HttpServletResponse.SC_OK);
return null;
} else {
response.sendError(HttpServletResponse.SC_CONFLICT);
return null;
}
} else if ("GET".equals(request.getMethod().toUpperCase())) {
Object value = service.get(KEY);
if (value == null) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return null;
} else {
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("text/plain");
response.getWriter().write(value.toString());
response.flushBuffer();
return null;
}
}
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment