@Override public void contextDestroyed(final ServletContextEvent sce) { if (helper != null) { helper.destroy(); } }
@Override public void addGauge(final Gauge gauge) { gauges.put(gauge.role(), gauge); }
public LoaderHelper(final boolean excludeParent, final Collection<? extends Gauge> manualGauges, final String... includedPrefixes) { final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); for (final Gauge g : manualGauges) { addGauge(g); } for (final Gauge g : SPI.INSTANCE.find(Gauge.class, classLoader)) { addGaugeIfNecessary(classLoader, g, excludeParent, includedPrefixes); } for (final GaugeFactory gf : SPI.INSTANCE.find(GaugeFactory.class, classLoader)) { final Gauge[] list = gf.gauges(); if (list != null) { for (final Gauge g : list) { addGaugeIfNecessary(classLoader, g, excludeParent, includedPrefixes); } } } }
protected Map<Role, Measure> snapshot() { final long ts = System.currentTimeMillis(); final Map<Role, Measure> snapshot = new HashMap<Role, Measure>(); for (final Gauge gauge : gauges.values()) { final Role role = gauge.role(); final double value = gauge.value(); addToGauge(role, ts, value); snapshot.put(role, new Measure(ts, value)); } return snapshot; }
private void addGaugeIfNecessary(final ClassLoader classLoader, final Gauge g, final boolean excludeParent, final String... prefixes) { final Class<? extends Gauge> gaugeClass = g.getClass(); if (!excludeParent || gaugeClass.getClassLoader() == classLoader) { if (prefixes != null && prefixes.length > 0) { boolean found = false; for (final String p : prefixes) { if (gaugeClass.getName().startsWith(p.trim())) { found = true; break; } } if (!found) { return; } } addGauge(g); } }
prefixes = null; helper = new Gauge.LoaderHelper("true".equals(sce.getServletContext().getInitParameter("monitoring.discovery.exclude-parent")), //