SparkApplication.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package hello.web;
  2. import static spark.Spark.after;
  3. import static spark.Spark.get;
  4. import hello.domain.Message;
  5. import hello.domain.World;
  6. import java.util.Date;
  7. import java.util.Random;
  8. import java.util.concurrent.ThreadLocalRandom;
  9. import org.hibernate.Session;
  10. import spark.Filter;
  11. import spark.Request;
  12. import spark.Response;
  13. import spark.Route;
  14. public class SparkApplication implements spark.servlet.SparkApplication {
  15. private static final int DB_ROWS = 10000;
  16. private static final String MESSAGE = "Hello, World!";
  17. private static final String CONTENT_TYPE_TEXT = "text/plain";
  18. @Override
  19. public void init() {
  20. get(new JsonTransformer("/json") {
  21. @Override
  22. protected Object handleInternal(final Request request, final Response response) {
  23. return new Message();
  24. }
  25. });
  26. get(new JsonTransformer("/db") {
  27. @Override
  28. protected Object handleInternal(final Request request, final Response response) {
  29. final int queries = getQueries(request);
  30. final World[] worlds = new World[queries];
  31. final Session session = HibernateUtil.getSession();
  32. final Random random = ThreadLocalRandom.current();
  33. for (int i = 0; i < queries; i++) {
  34. worlds[i] = (World) session.byId(World.class).load(random.nextInt(DB_ROWS) + 1);
  35. }
  36. return worlds;
  37. }
  38. private int getQueries(final Request request) {
  39. String param = request.queryParams("queries");
  40. return (param == null ? 1 : Integer.parseInt(param));
  41. }
  42. });
  43. get(new Route("/plaintext") {
  44. @Override
  45. public Object handle(final Request request, final Response response) {
  46. response.type(CONTENT_TYPE_TEXT);
  47. return MESSAGE;
  48. }
  49. });
  50. after(new Filter("/db") {
  51. @Override
  52. public void handle(final Request request, final Response response) {
  53. HibernateUtil.closeSession();
  54. }
  55. });
  56. after(new Filter() {
  57. @Override
  58. public void handle(final Request request, final Response response) {
  59. response.raw().addDateHeader("Date", new Date().getTime());
  60. }
  61. });
  62. }
  63. public static void main(final String[] args) {
  64. System.setProperty("jndi", "false");
  65. new SparkApplication().init();
  66. }
  67. }