Search in sources :

Example 1 with ApiMetaDataService

use of com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService in project pinpoint by naver.

the class ObjectBinderFactory method newAnnotatedInterceptorFactory.

public AnnotatedInterceptorFactory newAnnotatedInterceptorFactory(InstrumentContext pluginContext, boolean exceptionHandle) {
    final TraceContext traceContext = this.traceContextProvider.get();
    ApiMetaDataService apiMetaDataService = this.apiMetaDataServiceProvider.get();
    return new AnnotatedInterceptorFactory(profilerConfig, traceContext, dataSourceMonitorRegistry, apiMetaDataService, pluginContext, exceptionHandle);
}
Also used : TraceContext(com.navercorp.pinpoint.bootstrap.context.TraceContext) ApiMetaDataService(com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService) AnnotatedInterceptorFactory(com.navercorp.pinpoint.profiler.interceptor.factory.AnnotatedInterceptorFactory)

Example 2 with ApiMetaDataService

use of com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService in project pinpoint by naver.

the class ASMEngine method getClass.

@Override
public InstrumentClass getClass(InstrumentContext instrumentContext, ClassLoader classLoader, String className, byte[] classFileBuffer) throws NotFoundInstrumentException {
    if (className == null) {
        throw new NullPointerException("class name must not be null.");
    }
    try {
        if (classFileBuffer == null) {
            ASMClassNodeAdapter classNode = ASMClassNodeAdapter.get(instrumentContext, classLoader, JavaAssistUtils.javaNameToJvmName(className));
            if (classNode == null) {
                return null;
            }
            ApiMetaDataService apiMetaDataService = this.apiMetaDataService.get();
            return new ASMClass(objectBinderFactory, instrumentContext, interceptorRegistryBinder, apiMetaDataService, classLoader, classNode);
        }
        // Use ASM tree api.
        final ClassReader classReader = new ClassReader(classFileBuffer);
        final ClassNode classNode = new ClassNode();
        classReader.accept(classNode, 0);
        ApiMetaDataService apiMetaDataService = this.apiMetaDataService.get();
        return new ASMClass(objectBinderFactory, instrumentContext, interceptorRegistryBinder, apiMetaDataService, classLoader, classNode);
    } catch (Exception e) {
        throw new NotFoundInstrumentException(e);
    }
}
Also used : ClassNode(org.objectweb.asm.tree.ClassNode) NotFoundInstrumentException(com.navercorp.pinpoint.bootstrap.instrument.NotFoundInstrumentException) ClassReader(org.objectweb.asm.ClassReader) ApiMetaDataService(com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService) NotFoundInstrumentException(com.navercorp.pinpoint.bootstrap.instrument.NotFoundInstrumentException)

Example 3 with ApiMetaDataService

use of com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService in project pinpoint by naver.

the class JavassistEngine method getClass.

@Override
public InstrumentClass getClass(InstrumentContext instrumentContext, ClassLoader classLoader, String jvmInternalClassName, byte[] classFileBuffer) throws NotFoundInstrumentException {
    if (jvmInternalClassName == null) {
        throw new NullPointerException("jvmInternalClassName must not be null");
    }
    if (isDebug) {
        logger.debug("Get javassist class {}", jvmInternalClassName);
    }
    final CtClass cc = getCtClass(instrumentContext, classLoader, jvmInternalClassName, classFileBuffer);
    final ApiMetaDataService apiMetaDataService = this.apiMetaDataService.get();
    return new JavassistClass(objectBinderFactory, instrumentContext, interceptorRegistryBinder, apiMetaDataService, classLoader, cc);
}
Also used : ApiMetaDataService(com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService)

Example 4 with ApiMetaDataService

use of com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService in project pinpoint by naver.

the class InvokeAfterCodeGeneratorTest method testGenerate_AroundInterceptor3_NoCatchClause.

@Test
public void testGenerate_AroundInterceptor3_NoCatchClause() {
    final Class<AroundInterceptor3> aroundInterceptor3Class = AroundInterceptor3.class;
    final InterceptorDefinition interceptorDefinition = interceptorDefinitionFactory.createInterceptorDefinition(aroundInterceptor3Class);
    final InstrumentClass mockClass = mock(InstrumentClass.class);
    Mockito.when(mockClass.getName()).thenReturn("TestClass");
    final InstrumentMethod mockMethod = mock(InstrumentMethod.class);
    Mockito.when(mockMethod.getName()).thenReturn("TestMethod");
    Mockito.when(mockMethod.getParameterTypes()).thenReturn(new String[] { "java.lang.Object", "java.lang.Object", "java.lang.Object" });
    Mockito.when(mockMethod.getReturnType()).thenReturn("java.lang.Object");
    ApiMetaDataService apiMetaDataService = mock(ApiMetaDataService.class);
    final InvokeAfterCodeGenerator invokeAfterCodeGenerator = new InvokeAfterCodeGenerator(100, interceptorDefinition, mockClass, mockMethod, apiMetaDataService, false, false);
    final String generate = invokeAfterCodeGenerator.generate();
    logger.debug("testGenerate_AroundInterceptor3_NoCatchClause:{}", generate);
    Assert.assertTrue(generate.contains("($w)$1"));
    Assert.assertTrue(generate.contains("($w)$2"));
    Assert.assertTrue(generate.contains("($w)$3"));
    Assert.assertTrue(generate.contains("($w)$_"));
}
Also used : AroundInterceptor3(com.navercorp.pinpoint.bootstrap.interceptor.AroundInterceptor3) InstrumentClass(com.navercorp.pinpoint.bootstrap.instrument.InstrumentClass) InstrumentMethod(com.navercorp.pinpoint.bootstrap.instrument.InstrumentMethod) ApiMetaDataService(com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService) Test(org.junit.Test)

Example 5 with ApiMetaDataService

use of com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService in project pinpoint by naver.

the class JavassistClassTest method newJavassistEngine.

private InstrumentEngine newJavassistEngine() {
    Instrumentation instrumentation = mock(Instrumentation.class);
    ObjectBinderFactory objectBinderFactory = mock(ObjectBinderFactory.class);
    Provider<ApiMetaDataService> apiMetaDataService = Providers.of(mock(ApiMetaDataService.class));
    return new JavassistEngine(instrumentation, objectBinderFactory, new GlobalInterceptorRegistryBinder(), apiMetaDataService, null);
}
Also used : JavassistEngine(com.navercorp.pinpoint.profiler.instrument.JavassistEngine) Instrumentation(java.lang.instrument.Instrumentation) ObjectBinderFactory(com.navercorp.pinpoint.profiler.objectfactory.ObjectBinderFactory) ApiMetaDataService(com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService) GlobalInterceptorRegistryBinder(com.navercorp.pinpoint.profiler.interceptor.registry.GlobalInterceptorRegistryBinder)

Aggregations

ApiMetaDataService (com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService)12 InstrumentClass (com.navercorp.pinpoint.bootstrap.instrument.InstrumentClass)5 InstrumentMethod (com.navercorp.pinpoint.bootstrap.instrument.InstrumentMethod)5 Test (org.junit.Test)5 AroundInterceptor3 (com.navercorp.pinpoint.bootstrap.interceptor.AroundInterceptor3)4 TraceContext (com.navercorp.pinpoint.bootstrap.context.TraceContext)2 UriStatRecorderFactory (com.navercorp.pinpoint.bootstrap.plugin.uri.UriStatRecorderFactory)2 AnnotatedInterceptorFactory (com.navercorp.pinpoint.profiler.interceptor.factory.AnnotatedInterceptorFactory)2 ObjectBinderFactory (com.navercorp.pinpoint.profiler.objectfactory.ObjectBinderFactory)2 Instrumentation (java.lang.instrument.Instrumentation)2 NotFoundInstrumentException (com.navercorp.pinpoint.bootstrap.instrument.NotFoundInstrumentException)1 AroundInterceptor0 (com.navercorp.pinpoint.bootstrap.interceptor.AroundInterceptor0)1 JavassistEngine (com.navercorp.pinpoint.profiler.instrument.JavassistEngine)1 GlobalInterceptorRegistryBinder (com.navercorp.pinpoint.profiler.interceptor.registry.GlobalInterceptorRegistryBinder)1 InterceptorRegistryBinder (com.navercorp.pinpoint.profiler.interceptor.registry.InterceptorRegistryBinder)1 TestInterceptorRegistryBinder (com.navercorp.pinpoint.profiler.util.TestInterceptorRegistryBinder)1 ClassReader (org.objectweb.asm.ClassReader)1 ClassNode (org.objectweb.asm.tree.ClassNode)1