All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.joshworks.snappy.extensions.dashboard.resource.ResourceMetricHolder Maven / Gradle / Ivy

There is a newer version: 0.5.2
Show newest version
package io.joshworks.snappy.extensions.dashboard.resource;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.function.Supplier;
import java.util.stream.Collectors;

/**
 * Created by Josh Gontijo on 7/9/17.
 */
public class ResourceMetricHolder {

    private boolean metricsEnabled = true;

    private final List registeredEndpoints = new ArrayList<>();
    private final List metricsHandlers = new ArrayList<>();

    public void add(String method, String url, RestMetricsHandler handler) {
        metricsHandlers.add(handler);
        handler.setEnabled(metricsEnabled);
        registeredEndpoints.add(new ResourceMetricItem(method, url, handler::getMetrics));
    }

    public List getMetrics() {
        return registeredEndpoints.stream()
                .map(re -> new RestMetric(re.id, re.url, re.method, re.metricsSupplier.get()))
                .collect(Collectors.toList());
    }

    public void setMetricsEnabled(boolean enabled) {
        metricsHandlers.forEach(rmh -> rmh.setEnabled(enabled));
    }

    public boolean isMetricsEnabled() {
        return metricsEnabled;
    }

    public static class ResourceMetricItem {
        public final String id;
        private final String method;
        private final String url;
        private final Supplier metricsSupplier;

        public ResourceMetricItem(String method, String url, Supplier metricsSupplier) {
            this.id = UUID.randomUUID().toString().substring(0, 8);
            this.method = method;
            this.url = url;
            this.metricsSupplier = metricsSupplier;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy