package rocks.inspectit.agent.java.sensor.method.timer; import java.lang.management.ManagementFactory; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import rocks.inspectit.agent.java.config.IPropertyAccessor; import rocks.inspectit.agent.java.core.IPlatformManager; import rocks.inspectit.agent.java.hooking.IHook; import rocks.inspectit.agent.java.sensor.method.AbstractMethodSensor; import rocks.inspectit.agent.java.sensor.method.IMethodSensor; import rocks.inspectit.agent.java.util.Timer; /** * The timer sensor which initializes and returns the {@link TimerHook} class. * * @author Patrice Bouillet * */ public class TimerSensor extends AbstractMethodSensor implements IMethodSensor { /** * The timer used for accurate measuring. */ @Autowired private Timer timer; /** * The Platform manager. */ @Autowired private IPlatformManager platformManager; /** * The property accessor. */ @Autowired private IPropertyAccessor propertyAccessor; /** * The used timer hook. */ private TimerHook timerHook = null; /** * No-arg constructor needed for Spring. */ public TimerSensor() { } /** * The default constructor which needs 3 parameter for initialization. * * @param timer * The timer used for accurate measuring. * @param platformManager * The Platform manager. * @param propertyAccessor * The property accessor. */ public TimerSensor(Timer timer, IPlatformManager platformManager, IPropertyAccessor propertyAccessor) { this.timer = timer; this.platformManager = platformManager; this.propertyAccessor = propertyAccessor; } /** * {@inheritDoc} */ @Override public IHook getHook() { return timerHook; } /** * {@inheritDoc} */ @Override public void initHook(Map<String, Object> parameter) { timerHook = new TimerHook(timer, platformManager, propertyAccessor, parameter, ManagementFactory.getThreadMXBean()); } }