Search in sources :

Example 1 with Scope

use of com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope in project pinpoint by naver.

the class ASMMethod method resolveScopeInfo.

private ScopeInfo resolveScopeInfo(String interceptorClassName, InterceptorScope scope, ExecutionPolicy policy) {
    final Class<? extends Interceptor> interceptorType = this.pluginContext.injectClass(this.declaringClass.getClassLoader(), interceptorClassName);
    if (scope == null) {
        Scope interceptorScope = interceptorType.getAnnotation(Scope.class);
        if (interceptorScope != null) {
            String scopeName = interceptorScope.value();
            scope = this.pluginContext.getInterceptorScope(scopeName);
            policy = interceptorScope.executionPolicy();
        }
    }
    if (scope == null) {
        policy = null;
    } else if (policy == null) {
        policy = ExecutionPolicy.BOUNDARY;
    }
    return new ScopeInfo(scope, policy);
}
Also used : InterceptorScope(com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScope) Scope(com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope)

Example 2 with Scope

use of com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope in project pinpoint by naver.

the class AnnotatedInterceptorFactory method getInterceptor.

@Override
public Interceptor getInterceptor(ClassLoader classLoader, String interceptorClassName, Object[] providedArguments, InterceptorScope scope, ExecutionPolicy policy, InstrumentClass target, InstrumentMethod targetMethod) {
    Class<? extends Interceptor> interceptorType = pluginContext.injectClass(classLoader, interceptorClassName);
    if (scope == null) {
        Scope interceptorScope = interceptorType.getAnnotation(Scope.class);
        if (interceptorScope != null) {
            String scopeName = interceptorScope.value();
            scope = pluginContext.getInterceptorScope(scopeName);
            policy = interceptorScope.executionPolicy();
        }
    }
    AutoBindingObjectFactory factory = new AutoBindingObjectFactory(profilerConfig, traceContext, pluginContext, classLoader);
    ObjectFactory objectFactory = ObjectFactory.byConstructor(interceptorClassName, providedArguments);
    InterceptorArgumentProvider interceptorArgumentProvider = new InterceptorArgumentProvider(dataSourceMonitorRegistry, apiMetaDataService, scope, target, targetMethod);
    Interceptor interceptor = (Interceptor) factory.createInstance(objectFactory, interceptorArgumentProvider);
    if (scope != null) {
        if (exceptionHandle) {
            interceptor = wrapByExceptionHandleScope(interceptor, scope, policy == null ? ExecutionPolicy.BOUNDARY : policy);
        } else {
            interceptor = wrapByScope(interceptor, scope, policy == null ? ExecutionPolicy.BOUNDARY : policy);
        }
    } else {
        if (exceptionHandle) {
            interceptor = wrapByExceptionHandle(interceptor);
        }
    }
    return interceptor;
}
Also used : AutoBindingObjectFactory(com.navercorp.pinpoint.profiler.objectfactory.AutoBindingObjectFactory) InterceptorScope(com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScope) Scope(com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope) ObjectFactory(com.navercorp.pinpoint.bootstrap.plugin.ObjectFactory) AutoBindingObjectFactory(com.navercorp.pinpoint.profiler.objectfactory.AutoBindingObjectFactory) InterceptorArgumentProvider(com.navercorp.pinpoint.profiler.objectfactory.InterceptorArgumentProvider) ExceptionHandleScopedStaticAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.scope.ExceptionHandleScopedStaticAroundInterceptor) ExceptionHandleScopedInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.scope.ExceptionHandleScopedInterceptor) ExceptionHandleAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.ExceptionHandleAroundInterceptor) Interceptor(com.navercorp.pinpoint.bootstrap.interceptor.Interceptor) ExceptionHandleStaticAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.ExceptionHandleStaticAroundInterceptor) ScopedInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.scope.ScopedInterceptor) StaticAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.StaticAroundInterceptor) ExceptionHandleScopedApiIdAwareAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.scope.ExceptionHandleScopedApiIdAwareAroundInterceptor) AroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.AroundInterceptor) ScopedApiIdAwareAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.scope.ScopedApiIdAwareAroundInterceptor) ApiIdAwareAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.ApiIdAwareAroundInterceptor) ScopedStaticAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.scope.ScopedStaticAroundInterceptor) ExceptionHandleApiIdAwareAroundInterceptor(com.navercorp.pinpoint.bootstrap.interceptor.ExceptionHandleApiIdAwareAroundInterceptor)

Example 3 with Scope

use of com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope in project pinpoint by naver.

the class JavassistMethod method resolveScopeInfo.

private ScopeInfo resolveScopeInfo(String interceptorClassName, InterceptorScope scope, ExecutionPolicy policy) {
    final Class<? extends Interceptor> interceptorType = pluginContext.injectClass(declaringClass.getClassLoader(), interceptorClassName);
    if (scope == null) {
        Scope interceptorScope = interceptorType.getAnnotation(Scope.class);
        if (interceptorScope != null) {
            String scopeName = interceptorScope.value();
            scope = pluginContext.getInterceptorScope(scopeName);
            policy = interceptorScope.executionPolicy();
        }
    }
    if (scope == null) {
        policy = null;
    } else if (policy == null) {
        policy = ExecutionPolicy.BOUNDARY;
    }
    return new ScopeInfo(scope, policy);
}
Also used : InterceptorScope(com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScope) Scope(com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope)

Aggregations

Scope (com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope)3 InterceptorScope (com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScope)3 ApiIdAwareAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.ApiIdAwareAroundInterceptor)1 AroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.AroundInterceptor)1 ExceptionHandleApiIdAwareAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.ExceptionHandleApiIdAwareAroundInterceptor)1 ExceptionHandleAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.ExceptionHandleAroundInterceptor)1 ExceptionHandleStaticAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.ExceptionHandleStaticAroundInterceptor)1 Interceptor (com.navercorp.pinpoint.bootstrap.interceptor.Interceptor)1 StaticAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.StaticAroundInterceptor)1 ExceptionHandleScopedApiIdAwareAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.scope.ExceptionHandleScopedApiIdAwareAroundInterceptor)1 ExceptionHandleScopedInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.scope.ExceptionHandleScopedInterceptor)1 ExceptionHandleScopedStaticAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.scope.ExceptionHandleScopedStaticAroundInterceptor)1 ScopedApiIdAwareAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.scope.ScopedApiIdAwareAroundInterceptor)1 ScopedInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.scope.ScopedInterceptor)1 ScopedStaticAroundInterceptor (com.navercorp.pinpoint.bootstrap.interceptor.scope.ScopedStaticAroundInterceptor)1 ObjectFactory (com.navercorp.pinpoint.bootstrap.plugin.ObjectFactory)1 AutoBindingObjectFactory (com.navercorp.pinpoint.profiler.objectfactory.AutoBindingObjectFactory)1 InterceptorArgumentProvider (com.navercorp.pinpoint.profiler.objectfactory.InterceptorArgumentProvider)1