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: [email protected]
For additional commands, e-mail: [email protected]