Package org.platformlayer.metrics

Source Code of org.platformlayer.metrics.InstrumentedListener

package org.platformlayer.metrics;

import java.lang.reflect.Method;

import org.aopalliance.intercept.MethodInterceptor;

import com.google.inject.TypeLiteral;
import com.google.inject.matcher.Matchers;
import com.google.inject.spi.TypeEncounter;
import com.google.inject.spi.TypeListener;

public class InstrumentedListener implements TypeListener {
  final MetricRegistry metricsSystem;

  public InstrumentedListener(MetricRegistry metricsSystem) {
    this.metricsSystem = metricsSystem;
  }

  @Override
  public <T> void hear(TypeLiteral<T> literal, TypeEncounter<T> encounter) {
    Class<? super T> klass = literal.getRawType();

    do {
      for (Method method : klass.getDeclaredMethods()) {
        final MethodInterceptor interceptor = InstrumentedInterceptor.forMethod(metricsSystem, klass, method);
        if (interceptor != null) {
          encounter.bindInterceptor(Matchers.only(method).and(new NotSynthetic()), interceptor);
        }
      }
    } while ((klass = klass.getSuperclass()) != null);
  }
}
TOP

Related Classes of org.platformlayer.metrics.InstrumentedListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.