diff --git a/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java b/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java index 490e686..818713f 100644 --- a/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java +++ b/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java @@ -353,7 +353,11 @@ public class SpringLoadedPreProcessor implements Constants { else { try { // TODO what happens across classloader boundaries? (for regular code and reflective calls) - if (needsClientSideRewriting(slashedClassName)) { + // Skipping the CallSiteClassLoader here because types from there will already have been dealt + // with due to GroovyPlugin class that intercepts define in that infrastructure + if (needsClientSideRewriting(slashedClassName) && + (classLoader == null || !classLoader.getClass().getName().equals( + "org.codehaus.groovy.runtime.callsite.CallSiteClassLoader"))) { bytes = typeRegistry.methodCallRewriteUseCacheIfAvailable(slashedClassName, bytes); } }