diff options
author | Jan Bartel | 2015-04-13 04:37:17 +0000 |
---|---|---|
committer | Jan Bartel | 2015-04-13 04:51:22 +0000 |
commit | 92a3f17532623812627c78725e15a23e4aa120f1 (patch) | |
tree | 34c2d135fdcc9fefd01defd3385aa462e21df9d2 | |
parent | 4fbdafb9e9e914962d49d1c7784b336b41553956 (diff) | |
download | org.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.java | 8 | ||||
-rw-r--r-- | jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java | 17 |
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 |