HelloDbResponse.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package hellowicket;
  2. import java.io.IOException;
  3. import java.util.*;
  4. import java.util.concurrent.*;
  5. import org.apache.wicket.request.resource.AbstractResource;
  6. import com.fasterxml.jackson.databind.*;
  7. import org.hibernate.Session;
  8. import org.hibernate.Transaction;
  9. public class HelloDbResponse extends AbstractResource
  10. {
  11. private static final long serialVersionUID = 1L;
  12. private static final int DB_ROWS = 10000;
  13. private static final ObjectMapper mapper = new ObjectMapper();
  14. protected ResourceResponse newResourceResponse(Attributes attributes)
  15. {
  16. final int queries = attributes.getRequest().getQueryParameters().getParameterValue("queries").toInt(1);
  17. final World[] worlds = new World[queries];
  18. final Random random = ThreadLocalRandom.current();
  19. final ResourceResponse response = new ResourceResponse();
  20. response.setContentType("application/json");
  21. response.setWriteCallback(new WriteCallback() {
  22. public void writeData(Attributes attributes)
  23. {
  24. final Session session = HibernateUtil.getSessionFactory().openSession();
  25. for (int i = 0; i < queries; i++)
  26. {
  27. worlds[i] = (World)session.byId(World.class).load(random.nextInt(DB_ROWS) + 1);
  28. }
  29. session.close();
  30. try
  31. {
  32. attributes.getResponse().write(HelloDbResponse.mapper.writeValueAsString(worlds));
  33. }
  34. catch (IOException ex)
  35. {
  36. // do nothing
  37. }
  38. }
  39. });
  40. return response;
  41. }
  42. }