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

com.ryantenney.metrics.spring.MetricsBeanPostProcessorFactory Maven / Gradle / Ivy

package com.ryantenney.metrics.spring;

import org.aopalliance.aop.Advice;
import org.springframework.aop.Pointcut;
import org.springframework.aop.framework.ProxyConfig;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;

public class MetricsBeanPostProcessorFactory {

	private MetricsBeanPostProcessorFactory() {
	}

	public static AdvisingBeanPostProcessor exceptionMetered(final MetricRegistry metricRegistry, final ProxyConfig proxyConfig) {
		final Pointcut pointcut = ExceptionMeteredMethodInterceptor.POINTCUT;
		final AdviceFactory adviceFactory = new AdviceFactory() {
			@Override
			public Advice getAdvice(Object bean, Class targetClass) {
				return new ExceptionMeteredMethodInterceptor(metricRegistry, targetClass);
			}
		};
		return new AdvisingBeanPostProcessor(pointcut, adviceFactory, proxyConfig);
	}

	public static AdvisingBeanPostProcessor metered(final MetricRegistry metricRegistry, final ProxyConfig proxyConfig) {
		final Pointcut pointcut = MeteredMethodInterceptor.POINTCUT;
		final AdviceFactory adviceFactory = new AdviceFactory() {
			@Override
			public Advice getAdvice(Object bean, Class targetClass) {
				return new MeteredMethodInterceptor(metricRegistry, targetClass);
			}
		};
		return new AdvisingBeanPostProcessor(pointcut, adviceFactory, proxyConfig);
	}

	public static AdvisingBeanPostProcessor timed(final MetricRegistry metricRegistry, final ProxyConfig proxyConfig) {
		final Pointcut pointcut = TimedMethodInterceptor.POINTCUT;
		final AdviceFactory adviceFactory = new AdviceFactory() {
			@Override
			public Advice getAdvice(Object bean, Class targetClass) {
				return new TimedMethodInterceptor(metricRegistry, targetClass);
			}
		};
		return new AdvisingBeanPostProcessor(pointcut, adviceFactory, proxyConfig);
	}

	public static GaugeAnnotationBeanPostProcessor gauge(final MetricRegistry metricRegistry) {
		return new GaugeAnnotationBeanPostProcessor(metricRegistry);
	}

	public static InjectMetricAnnotationBeanPostProcessor injectMetric(final MetricRegistry metricRegistry) {
		return new InjectMetricAnnotationBeanPostProcessor(metricRegistry);
	}

	public static HealthCheckBeanPostProcessor healthCheck(final HealthCheckRegistry healthRegistry) {
		return new HealthCheckBeanPostProcessor(healthRegistry);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy