From 01092328a921345ac7ef3e3968534afea205c457 Mon Sep 17 00:00:00 2001 From: Ben Donnelly Date: Tue, 5 Sep 2023 17:25:38 +0100 Subject: [PATCH] fix(class): fix issue where getShortName would cause class loading --- .../com/intergral/deep/agent/tracepoint/inst/InstUtils.java | 3 ++- .../intergral/deep/agent/tracepoint/inst/SetClassScanner.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/InstUtils.java b/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/InstUtils.java index ea1f551..e417e98 100644 --- a/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/InstUtils.java +++ b/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/InstUtils.java @@ -99,7 +99,8 @@ public static String internalClass(final Class clazz) { /** * Get the short version of the class name. *

- * Sometimes {@link Class#getSimpleName()} doesn't return a name. So we need one that always returns a name. + * Sometimes {@link Class#getSimpleName()} doesn't return a name. So we need one that always returns a name. Also, it + * seems to cause class loading sometimes. * * @param className the class name * @return the name of the class without the package diff --git a/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/SetClassScanner.java b/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/SetClassScanner.java index 066d070..13aa4cf 100644 --- a/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/SetClassScanner.java +++ b/agent/src/main/java/com/intergral/deep/agent/tracepoint/inst/SetClassScanner.java @@ -36,7 +36,7 @@ public SetClassScanner(final Set classNames) { @Override public boolean scanClass(final Class allLoadedClass) { return this.classNames.contains(InstUtils.internalClass(allLoadedClass)) - || this.classNames.contains(allLoadedClass.getSimpleName()) + || this.classNames.contains(InstUtils.shortClassName(allLoadedClass.getName())) || allLoadedClass.getName().contains("$") && this.classNames.contains(InstUtils.internalClassStripInner(allLoadedClass)); }