package org.littlewings.hazelcast;
import java.util.concurrent.TimeUnit;
import javax.cache.Cache;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import fish.payara.cdi.jsr107.impl.NamedCache;
@Path("calc")
@RequestScoped
public class CalcResource {
@NamedCache(cacheName = "myCache")
@Inject
private Cache myCache;
// private Cache<String, Integer> myCache;
@GET
@Path("add")
@Produces(MediaType.TEXT_PLAIN)
public String add(@QueryParam("a") int a, @QueryParam("b") int b) throws Exception {
ClassLoader cl = this.getClass().getClassLoader();
while (cl != null) {
System.out.println("My ClassLoader = " + cl + ", class = " + cl.getClass().getName());
cl = cl.getParent();
}
String key = a + "+" + b;
if (myCache.containsKey(key)) {
return String.format("CacheName = %s, result = %d", myCache.getName(), myCache.get(key));
} else {
TimeUnit.SECONDS.sleep(3);
int result = a + b;
myCache.put(key, result);
return String.format("CacheName = %s, result = %d", myCache.getName(), result);
}
}
}