From 02cc37cc164e4cfce423bf311aa86154a92cb15f Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Wed, 28 Apr 2010 10:33:54 +0000 Subject: [PATCH] + sanitize class names (eliminate trailing .class for dot notation) --- .../tomcat/TomcatInstrumentableClassLoader.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/org.springframework.instrument.tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java b/org.springframework.instrument.tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java index f07c735b95..47d2a4ba29 100644 --- a/org.springframework.instrument.tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java +++ b/org.springframework.instrument.tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java @@ -22,7 +22,6 @@ import java.lang.reflect.Modifier; import org.apache.catalina.loader.ResourceEntry; import org.apache.catalina.loader.WebappClassLoader; - import org.springframework.instrument.classloading.WeavingTransformer; /** @@ -58,6 +57,7 @@ import org.springframework.instrument.classloading.WeavingTransformer; */ public class TomcatInstrumentableClassLoader extends WebappClassLoader { + private static final String CLASS_SUFFIX = ".class"; /** Use an internal WeavingTransformer */ private final WeavingTransformer weavingTransformer; @@ -112,8 +112,10 @@ public class TomcatInstrumentableClassLoader extends WebappClassLoader { protected ResourceEntry findResourceInternal(String name, String path) { ResourceEntry entry = super.findResourceInternal(name, path); // Postpone String parsing as much as possible (it is slow). - if (entry != null && entry.binaryContent != null && path.endsWith(".class")) { - byte[] transformed = this.weavingTransformer.transformIfNecessary(name, entry.binaryContent); + if (entry != null && entry.binaryContent != null && path.endsWith(CLASS_SUFFIX)) { + String className = (name.endsWith(CLASS_SUFFIX) ? name.substring(0, name.length() - CLASS_SUFFIX.length()) + : name); + byte[] transformed = this.weavingTransformer.transformIfNecessary(className, entry.binaryContent); entry.binaryContent = transformed; } return entry; @@ -128,7 +130,7 @@ public class TomcatInstrumentableClassLoader extends WebappClassLoader { } - // The code below is orginially taken from ReflectionUtils and optimized for + // The code below is originally taken from ReflectionUtils and optimized for // local usage. There is no dependency on ReflectionUtils to keep this class // self-contained (since it gets deployed into Tomcat's server class loader).