package app.event.metrics.com.aol.micro.server; import java.util.Map; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import cyclops.collections.MapX; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.aol.micro.server.auto.discovery.RestResource; import com.aol.micro.server.events.RequestEvents; import com.codahale.metrics.MetricRegistry; import com.google.common.eventbus.EventBus; @Component @Path("/status") public class EventStatusResource implements RestResource { private final EventBus bus; private final MetricRegistry metrics; @Autowired public EventStatusResource(EventBus bus, MetricRegistry metrics) { this.bus = bus; this.metrics = metrics; } @GET @Produces("text/plain") @Path("/ping") public String ping() { bus.post(RequestEvents.start("get", 1l)); try { return "ok"; } finally { bus.post(RequestEvents.finish("get", 1l)); } } @GET @Produces("application/json") @Path("/counters") public Map<String, Long> counters() { return (MapX) MapX.fromMap(metrics.getCounters()) .bimap(k -> k, v -> v.getCount()); } @GET @Produces("application/json") @Path("/meters") public Map<String, Long> meters() { return (MapX) MapX.fromMap(metrics.getMeters()) .bimap(k -> k, v -> v.getCount()); } }