Example usage for org.springframework.aop.framework ProxyConfig setExposeProxy

List of usage examples for org.springframework.aop.framework ProxyConfig setExposeProxy

Introduction

In this page you can find the example usage for org.springframework.aop.framework ProxyConfig setExposeProxy.

Prototype

public void setExposeProxy(boolean exposeProxy) 

Source Link

Document

Set whether the proxy should be exposed by the AOP framework as a ThreadLocal for retrieval via the AopContext class.

Usage

From source file:com.ryantenney.metrics.spring.config.AnnotationDrivenBeanDefinitionParser.java

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    final Object source = parserContext.extractSource(element);

    final CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(),
            source);//from  www  . ja v  a  2 s  .c o  m
    parserContext.pushContainingComponent(compDefinition);

    String metricsBeanName = element.getAttribute("metric-registry");
    if (!StringUtils.hasText(metricsBeanName)) {
        metricsBeanName = registerComponent(parserContext,
                build(MetricRegistry.class, source, ROLE_APPLICATION));
    }

    String healthCheckBeanName = element.getAttribute("health-check-registry");
    if (!StringUtils.hasText(healthCheckBeanName)) {
        healthCheckBeanName = registerComponent(parserContext,
                build(HealthCheckRegistry.class, source, ROLE_APPLICATION));
    }

    final ProxyConfig proxyConfig = new ProxyConfig();

    if (StringUtils.hasText(element.getAttribute("expose-proxy"))) {
        proxyConfig.setExposeProxy(Boolean.valueOf(element.getAttribute("expose-proxy")));
    }

    if (StringUtils.hasText(element.getAttribute("proxy-target-class"))) {
        proxyConfig.setProxyTargetClass(Boolean.valueOf(element.getAttribute("proxy-target-class")));
    }

    //@formatter:off

    registerComponent(parserContext,
            build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
                    .setFactoryMethod("exceptionMetered").addConstructorArgReference(metricsBeanName)
                    .addConstructorArgValue(proxyConfig));

    registerComponent(parserContext,
            build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
                    .setFactoryMethod("metered").addConstructorArgReference(metricsBeanName)
                    .addConstructorArgValue(proxyConfig));

    registerComponent(parserContext,
            build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE).setFactoryMethod("timed")
                    .addConstructorArgReference(metricsBeanName).addConstructorArgValue(proxyConfig));

    registerComponent(parserContext, build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
            .setFactoryMethod("gauge").addConstructorArgReference(metricsBeanName));

    registerComponent(parserContext, build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
            .setFactoryMethod("injectMetric").addConstructorArgReference(metricsBeanName));

    registerComponent(parserContext, build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
            .setFactoryMethod("healthCheck").addConstructorArgReference(healthCheckBeanName));

    //@formatter:on

    parserContext.popAndRegisterContainingComponent();

    return null;
}