Skip to content

Commit

Permalink
[#4208] Refactor DebugTransformerClassInjector
Browse files Browse the repository at this point in the history
 - legacy api cleanup
  • Loading branch information
emeroad committed Jun 12, 2018
1 parent 1580599 commit 433c40b
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 176 deletions.
Expand Up @@ -29,7 +29,7 @@ public class TestProfilerPluginClassLoader implements ClassInjector {
@Override
public <T> Class<? extends T> injectClass(ClassLoader targetClassLoader, String className) {
try {
return (Class<? extends T>) targetClassLoader.loadClass(className);
return (Class<? extends T>) Class.forName(className, false, targetClassLoader);
} catch (ClassNotFoundException e) {
throw new PinpointException("Cannot find class: " + className, e);
}
Expand Down
Expand Up @@ -61,7 +61,6 @@ public TestClassLoader(DefaultApplicationContext applicationContext) {
this.applicationContext = applicationContext;
this.classFileTransformerLoader = new ClassFileTransformerLoader(applicationContext.getProfilerConfig(), applicationContext.getDynamicTransformTrigger());

// ClassInjector classInjector = new LegacyProfilerPluginClassInjector(getClass().getClassLoader());
ClassInjector classInjector = new DebugTransformerClassInjector();
this.instrumentContext = new PluginInstrumentContext(applicationContext.getProfilerConfig(), applicationContext.getInstrumentEngine(),
applicationContext.getDynamicTransformTrigger(), classInjector, classFileTransformerLoader);
Expand Down
Expand Up @@ -24,7 +24,11 @@
*/
public class BootstrapPackage {

private static final List<String> BOOTSTRAP_PACKAGE_LIST = Arrays.asList("com.navercorp.pinpoint.bootstrap", "com.navercorp.pinpoint.common", "com.navercorp.pinpoint.exception");
private static final String[] BOOTSTRAP_PACKAGE_LIST = {
"com.navercorp.pinpoint.bootstrap",
"com.navercorp.pinpoint.common",
"com.navercorp.pinpoint.exception"
};

public boolean isBootstrapPackage(String className) {
for (String bootstrapPackage : BOOTSTRAP_PACKAGE_LIST) {
Expand Down
Expand Up @@ -33,13 +33,13 @@ public DebugTransformerClassInjector() {
@Override
@SuppressWarnings("unchecked")
public <T> Class<? extends T> injectClass(ClassLoader classLoader, String className) {

ClassLoader targetClassLoader = getClassLoader(classLoader);

targetClassLoader = filterBootstrapPackage(targetClassLoader, className);
ClassLoader targetClassLoader = classLoader;
if (bootstrapPackage.isBootstrapPackage(className)) {
targetClassLoader = Object.class.getClassLoader();
}

try {
return (Class<? extends T>) targetClassLoader.loadClass(className);
return (Class<? extends T>) Class.forName(className, false, targetClassLoader);
} catch (ClassNotFoundException e) {
throw new PinpointException("ClassNo class " + className + " with classLoader " + classLoader, e);
}
Expand Down

This file was deleted.

Expand Up @@ -23,7 +23,6 @@
import com.navercorp.pinpoint.profiler.instrument.InstrumentEngine;
import com.navercorp.pinpoint.profiler.instrument.classloading.ClassInjector;
import com.navercorp.pinpoint.profiler.instrument.classloading.DebugTransformerClassInjector;
import com.navercorp.pinpoint.profiler.instrument.classloading.LegacyProfilerPluginClassInjector;
import com.navercorp.pinpoint.profiler.instrument.classreading.InternalClassMetadata;
import com.navercorp.pinpoint.profiler.plugin.ClassFileTransformerLoader;
import com.navercorp.pinpoint.profiler.plugin.PluginInstrumentContext;
Expand All @@ -37,13 +36,6 @@
*/
public class DebugTransformerRegistry implements TransformerRegistry {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

// TODO remove next release
private static final String DEBUG_INJECTOR_TYPE = "profiler.debug.injector.type";
private static final String LEGACY = "legacy";
private static final String DEBUG = "debug";

private final Filter<String> debugTargetFilter;
private final DebugTransformer debugTransformer;

Expand All @@ -63,27 +55,14 @@ public DebugTransformerRegistry(ProfilerConfig profilerConfig, InstrumentEngine

private DebugTransformer newDebugTransformer(ProfilerConfig profilerConfig, InstrumentEngine instrumentEngine, DynamicTransformTrigger dynamicTransformTrigger) {

ClassInjector classInjector = newClassInjector(profilerConfig);
ClassInjector classInjector = new DebugTransformerClassInjector();

ClassFileTransformerLoader transformerRegistry = new ClassFileTransformerLoader(profilerConfig, dynamicTransformTrigger);
InstrumentContext debugContext = new PluginInstrumentContext(profilerConfig, instrumentEngine, dynamicTransformTrigger, classInjector, transformerRegistry);

return new DebugTransformer(instrumentEngine, debugContext);
}

private ClassInjector newClassInjector(ProfilerConfig profilerConfig) {
// TODO remove next release
// bug workaround for DebugTransformerClassInjector
final String debugInjectorType = profilerConfig.readString(DEBUG_INJECTOR_TYPE, DEBUG);
logger.info("{}:{}", DEBUG_INJECTOR_TYPE, debugInjectorType);
if (LEGACY.equals(debugInjectorType)) {
return new LegacyProfilerPluginClassInjector(getClass().getClassLoader());
}
logger.info("newDebugTransformerClassInjector()");
return new DebugTransformerClassInjector();

}

@Override
public ClassFileTransformer findTransformer(ClassLoader classLoader, String classInternalName, byte[] classFileBuffer) {
return findTransformer(classLoader, classInternalName, classFileBuffer, null);
Expand Down

0 comments on commit 433c40b

Please sign in to comment.