Author: rjung
Date: Wed Feb  7 11:54:45 2018
New Revision: 1823460

URL: http://svn.apache.org/viewvc?rev=1823460&view=rev
Log:
BZ58143: Fix calling classloading transformers broken in 7.0.70
by the fix for BZ59619. This was observed when using Spring
weaving.

Partial backport of r1730946, follow on to r1745608.

Modified:
    
tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java?rev=1823460&r1=1823459&r2=1823460&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java 
Wed Feb  7 11:54:45 2018
@@ -3075,6 +3075,28 @@ public abstract class WebappClassLoaderB
             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('.');
@@ -3477,29 +3499,6 @@ public abstract class WebappClassLoaderB
                 }
             }
         }
-
-        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) {

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1823460&r1=1823459&r2=1823460&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed Feb  7 11:54:45 2018
@@ -72,6 +72,11 @@
         (remm)
       </fix>
       <fix>
+        <bug>58143</bug>: Fix calling classloading transformers broken in 
7.0.70
+        by the fix for <bug>59619</bug>. This was observed when using Spring
+        weaving. (rjung)
+      </fix>
+      <fix>
         <bug>62000</bug>: When a JNDI reference cannot be resolved, ensure that
         the root cause exception is reported rather than swallowed. (markt)
       </fix>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to