Index: java/org/apache/catalina/loader/WebappClassLoaderBase.java =================================================================== --- java/org/apache/catalina/loader/WebappClassLoaderBase.java (revision 1822435) +++ java/org/apache/catalina/loader/WebappClassLoaderBase.java (working copy) @@ -3075,6 +3075,28 @@ if (entry.binaryContent == null) throw new ClassNotFoundException(name); + if (this.transformers.size() > 0) { + // If the resource is a class just being loaded, decorate it + // with any attached transformers + String className = name.endsWith(CLASS_FILE_SUFFIX) ? + name.substring(0, name.length() - CLASS_FILE_SUFFIX.length()) : name; + String internalName = className.replace(".", "/"); + + for (ClassFileTransformer transformer : this.transformers) { + try { + byte[] transformed = transformer.transform( + this, internalName, null, null, entry.binaryContent + ); + if (transformed != null) { + entry.binaryContent = transformed; + } + } catch (IllegalClassFormatException e) { + log.error(sm.getString("webappClassLoader.transformError", name), e); + return null; + } + } + } + // Looking up the package String packageName = null; int pos = name.lastIndexOf('.'); @@ -3478,29 +3500,6 @@ } } - if (isClassResource && entry.binaryContent != null && - this.transformers.size() > 0) { - // If the resource is a class just being loaded, decorate it - // with any attached transformers - String className = name.endsWith(CLASS_FILE_SUFFIX) ? - name.substring(0, name.length() - CLASS_FILE_SUFFIX.length()) : name; - String internalName = className.replace(".", "/"); - - for (ClassFileTransformer transformer : this.transformers) { - try { - byte[] transformed = transformer.transform( - this, internalName, null, null, entry.binaryContent - ); - if (transformed != null) { - entry.binaryContent = transformed; - } - } catch (IllegalClassFormatException e) { - log.error(sm.getString("webappClassLoader.transformError", name), e); - return null; - } - } - } - // Add the entry in the local resource repository synchronized (resourceEntries) { // Ensures that all the threads which may be in a race to load