package org.glassfish.flashlight.impl.client; import com.sun.logging.LogDomains; import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; import org.glassfish.flashlight.client.ProbeClientInvoker; import org.glassfish.flashlight.client.ProbeClientInvokerFactory; import org.glassfish.flashlight.provider.FlashlightProbe; import org.glassfish.flashlight.provider.ProbeProviderEventListener; import org.glassfish.flashlight.provider.ProbeProviderFactory; import org.glassfish.flashlight.provider.ProbeRegistry; import org.glassfish.internal.api.Init; import org.jvnet.hk2.annotations.Inject; import org.jvnet.hk2.annotations.Scoped; import org.jvnet.hk2.annotations.Service; import org.jvnet.hk2.component.PostConstruct; import org.jvnet.hk2.component.Singleton; @Service @Scoped(Singleton.class) public class XYZListener implements Init, PostConstruct, ProbeProviderEventListener { @Inject private ProbeProviderFactory probeProviderFactory; @Inject private ProbeRegistry probeRegistry; private static final Logger logger = LogDomains.getLogger(XYZListener.class, LogDomains.MONITORING_LOGGER); @Override public void postConstruct() { probeProviderFactory.addProbeProviderEventListener(this); } @Override public void probeProviderAdded(String moduleProviderName, String moduleName, String probeProviderName, String invokerId, Class providerClazz, T provider) { logger.log(Level.INFO, "added ProbeProvider: {0}, {1}, {2}, {3}", new Object[]{moduleProviderName, moduleName, probeProviderName, invokerId}); Collection probes = probeRegistry.getAllProbes(); // Add a XYZ invoker to all of the probes for this provider for (FlashlightProbe p : probes) { if (p.getProviderClazz() != providerClazz) continue; logger.log(Level.INFO, "adding invoker for probe: {0}", p.toString()); p.addInvoker(ProbeClientInvokerFactory.createXYZInvoker(p)); } } static public class XYZProbeClientInvoker implements ProbeClientInvoker { FlashlightProbe probe; int id; public XYZProbeClientInvoker(int id, FlashlightProbe fp) { this.id = id; probe = fp; } @Override public int getId() { return id; } @Override public void invoke(Object[] params) { logger.log(Level.INFO, "probe fired XYZ invoker: {0}", probe.toString()); } } }