From 3f92ed5a07bef633de08ee82448fed5f4e1c0aaa Mon Sep 17 00:00:00 2001 From: Xylus Date: Thu, 26 Feb 2015 15:39:27 +0900 Subject: [PATCH] added API to check if a class exists in a given class loader's path --- .../bootstrap/instrument/ByteCodeInstrumentor.java | 2 ++ .../interceptor/bci/JavaAssistByteCodeInstrumentor.java | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/bootstrap/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/ByteCodeInstrumentor.java b/bootstrap/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/ByteCodeInstrumentor.java index f3cbea0eb..32df40b1b 100644 --- a/bootstrap/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/ByteCodeInstrumentor.java +++ b/bootstrap/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/ByteCodeInstrumentor.java @@ -26,6 +26,8 @@ import com.navercorp.pinpoint.bootstrap.interceptor.Interceptor; public interface ByteCodeInstrumentor { InstrumentClass getClass(ClassLoader classLoader, String jvmClassName, byte[] classFileBuffer) throws InstrumentException; + + boolean findClass(ClassLoader classLoader, String javassistClassName); Scope getScope(String scopeName); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/interceptor/bci/JavaAssistByteCodeInstrumentor.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/interceptor/bci/JavaAssistByteCodeInstrumentor.java index 3d1e20337..6d85919fb 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/interceptor/bci/JavaAssistByteCodeInstrumentor.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/interceptor/bci/JavaAssistByteCodeInstrumentor.java @@ -30,8 +30,8 @@ import com.navercorp.pinpoint.bootstrap.interceptor.TargetClassLoader; import com.navercorp.pinpoint.profiler.interceptor.GlobalInterceptorRegistryBinder; import com.navercorp.pinpoint.profiler.interceptor.InterceptorRegistryBinder; import com.navercorp.pinpoint.profiler.util.ScopePool; - import com.navercorp.pinpoint.profiler.util.ThreadLocalScopePool; + import javassist.*; import org.slf4j.Logger; @@ -262,6 +262,12 @@ public class JavaAssistByteCodeInstrumentor implements ByteCodeInstrumentor { return true; } + @Override + public boolean findClass(ClassLoader classLoader, String javassistClassName) { + ClassPool classPool = findClassPool(classLoader); + return findClass(javassistClassName, classPool); + } + @Override public Interceptor newInterceptor(ClassLoader classLoader, ProtectionDomain protectedDomain, String interceptorFQCN) throws InstrumentException { Class aClass = this.defineClass(classLoader, interceptorFQCN, protectedDomain);