This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat-jakartaee-migration.git
The following commit(s) were added to refs/heads/master by this push: new a6b2607 Add ClassFileTransformer hook a6b2607 is described below commit a6b260792435f458b1b90d1bc70bb5c0ac266e0f Author: remm <r...@apache.org> AuthorDate: Thu Feb 11 17:00:48 2021 +0100 Add ClassFileTransformer hook For possible experimentations inside the WebappClassLoader. --- .../apache/tomcat/jakartaee/ClassConverter.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java b/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java index 1b15652..0173f71 100644 --- a/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java +++ b/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java @@ -16,9 +16,14 @@ */ package org.apache.tomcat.jakartaee; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.IllegalClassFormatException; +import java.security.ProtectionDomain; import java.util.logging.Level; import java.util.logging.Logger; @@ -27,7 +32,7 @@ import org.apache.bcel.classfile.Constant; import org.apache.bcel.classfile.ConstantUtf8; import org.apache.bcel.classfile.JavaClass; -public class ClassConverter implements Converter { +public class ClassConverter implements Converter, ClassFileTransformer { private static final Logger logger = Logger.getLogger(ClassConverter.class.getCanonicalName()); private static final StringManager sm = StringManager.getManager(ClassConverter.class); @@ -74,4 +79,20 @@ public class ClassConverter implements Converter { javaClass.dump(dest); } + + + @Override + public byte[] transform(ClassLoader loader, String className, + Class<?> classBeingRedefined, ProtectionDomain protectionDomain, + byte[] classfileBuffer) throws IllegalClassFormatException { + ByteArrayInputStream inputStream = new ByteArrayInputStream(classfileBuffer); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + try { + convert(className, inputStream, outputStream, EESpecProfile.TOMCAT); + } catch (IOException e) { + throw new IllegalClassFormatException(e.getLocalizedMessage()); + } + return outputStream.toByteArray(); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org