package org.jboss.as.quickstarts.datagrid.spring.rest;
import org.jboss.as.quickstarts.datagrid.spring.core.client.CachedClientGetter;
import org.jboss.as.quickstarts.datagrid.spring.core.client.Client;
import org.jboss.as.quickstarts.datagrid.spring.core.client.ClientGetter;
import org.jboss.as.quickstarts.datagrid.spring.rest.model.Clients;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.lang.invoke.MethodHandles;
import java.util.List;
/**
* REST Cache endpoint.
*
* @author Sebastian Laskawiec
*/
@RequestMapping("clients")
public class ClientsRest {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final CachedClientGetter cachedClientGetter;
private final ClientGetter clientGetter;
public ClientsRest(CachedClientGetter cachedClientGetter, ClientGetter clientGetter) {
this.cachedClientGetter = cachedClientGetter;
this.clientGetter = clientGetter;
}
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody
Clients getClients(@RequestParam(value = "caching", defaultValue = "false") boolean caching) {
long startTime = System.currentTimeMillis();
List<Client> clients;
if(caching) {
clients = cachedClientGetter.getBestClients();
} else {
clients = clientGetter.getBestClients();
}
logger.info("Loading Clients took {} ms", System.currentTimeMillis() - startTime);
return new Clients(clients);
}
}