prefixes = null; helper = new Gauge.LoaderHelper("true".equals(sce.getServletContext().getInitParameter("monitoring.discovery.exclude-parent")), //
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); } }
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); } } } }
@Override public void contextDestroyed(final ServletContextEvent sce) { if (helper != null) { helper.destroy(); } }