Skip to content

Instantly share code, notes, and snippets.

@KengoTODA
Created February 20, 2011 04:09
Show Gist options
  • Select an option

  • Save KengoTODA/835685 to your computer and use it in GitHub Desktop.

Select an option

Save KengoTODA/835685 to your computer and use it in GitHub Desktop.
package jp.skypencil;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Transaction;
/**
* sizeが5,000を超えるListを永続化すると
* java.lang.IllegalArgumentException: Too many indexed properties for entity
* が生じることを確認するためのコード。
*
* @author eller86
*/
public final class ListSizeTest extends HttpServlet {
private static final long serialVersionUID = 5847665302044277654L;
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
final int size = Integer.valueOf(req.getParameter("s"));
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Transaction tx = datastore.beginTransaction();
try {
Entity entity = createEntity(size);
datastore.put(entity);
tx.commit();
resp.getWriter().write(size + " is OK");
} catch (RuntimeException e) {
tx.rollback();
e.printStackTrace(resp.getWriter());
}
}
private Entity createEntity(int size) {
Entity entity = new Entity("TestKind", Integer.toString(size));
entity.setProperty("array", createList(size));
return entity;
}
private List<Integer> createList(int size) {
final List<Integer> result = new ArrayList<Integer>(size);
for (int i = 0; i < size; ++i) result.add(Integer.valueOf(Integer.MIN_VALUE + i));
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment