CacheHandler.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package hello;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.google.common.cache.LoadingCache;
  4. import io.undertow.server.HttpHandler;
  5. import io.undertow.server.HttpServerExchange;
  6. import io.undertow.util.Headers;
  7. import java.util.Objects;
  8. import static hello.HelloWebServer.JSON_UTF8;
  9. /**
  10. * Handles the cache access test.
  11. */
  12. final class CacheHandler implements HttpHandler {
  13. private final ObjectMapper objectMapper;
  14. private final LoadingCache<Integer, World> worldCache;
  15. CacheHandler(ObjectMapper objectMapper,
  16. LoadingCache<Integer, World> worldCache) {
  17. this.objectMapper = Objects.requireNonNull(objectMapper);
  18. this.worldCache = Objects.requireNonNull(worldCache);
  19. }
  20. @Override
  21. public void handleRequest(HttpServerExchange exchange) throws Exception {
  22. int queries = Helper.getQueries(exchange);
  23. World[] worlds = new World[queries];
  24. for (int i = 0; i < queries; i++) {
  25. worlds[i] = worldCache.get(Helper.randomWorld());
  26. }
  27. exchange.getResponseHeaders().put(
  28. Headers.CONTENT_TYPE, JSON_UTF8);
  29. exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
  30. }
  31. }