Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Bartel2015-04-13 04:37:17 +0000
committerJan Bartel2015-04-13 04:51:22 +0000
commit92a3f17532623812627c78725e15a23e4aa120f1 (patch)
tree34c2d135fdcc9fefd01defd3385aa462e21df9d2
parent4fbdafb9e9e914962d49d1c7784b336b41553956 (diff)
downloadorg.eclipse.jetty.project-92a3f17532623812627c78725e15a23e4aa120f1.tar.gz
org.eclipse.jetty.project-92a3f17532623812627c78725e15a23e4aa120f1.tar.xz
org.eclipse.jetty.project-92a3f17532623812627c78725e15a23e4aa120f1.zip
464438 ClassFileTransformer support in org.eclipse.jetty.webapp.WebAppClassLoader broken
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppClassLoader.java8
-rw-r--r--jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java17
2 files changed, 22 insertions, 3 deletions
diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppClassLoader.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppClassLoader.java
index 7538e81c2f..fa30de5e9e 100644
--- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppClassLoader.java
+++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppClassLoader.java
@@ -519,10 +519,14 @@ public class WebAppClassLoader extends URLClassLoader
try
{
content = url.openStream();
- byte[] bytes =IO.readBytes(content);
+ byte[] bytes = IO.readBytes(content);
for (ClassFileTransformer transformer : _transformers)
- bytes=transformer.transform(this,name,null,null,bytes);
+ {
+ byte[] tmp = transformer.transform(this,name,null,null,bytes);
+ if (tmp != null)
+ bytes = tmp;
+ }
clazz=defineClass(name,bytes,0,bytes.length);
}
diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java
index 3ec8e2bad3..49011ab0b7 100644
--- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java
+++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java
@@ -137,7 +137,22 @@ public class WebAppClassLoaderTest
assertEquals(_loader,iter.next());
assertEquals("org.acme.other.ClassInClassesC",iter.next());
assertFalse(iter.hasNext());
-
+ }
+
+ @Test
+ public void testNullClassFileTransformer () throws Exception
+ {
+ _loader.addTransformer(new ClassFileTransformer()
+ {
+ public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer)
+ throws IllegalClassFormatException
+ {
+ return null;
+ }
+ });
+
+
+ assertTrue(canLoadClass("org.acme.webapp.ClassInJarA"));
}
@Test

Back to the top