feat: support AbstractTranslet packer

This commit is contained in:
ReaJason
2025-11-20 00:36:25 +08:00
parent 07b0de017d
commit 17a8f529a0
11 changed files with 219 additions and 1 deletions
@@ -0,0 +1,37 @@
package com.reajason.javaweb.asm;
import net.bytebuddy.ByteBuddy;
import org.junit.jupiter.api.Test;
import org.objectweb.asm.ClassReader;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
/**
* @author ReaJason
* @since 2025/11/19
*/
class ClassSuperClassUtilsTest {
@Test
void test() {
String superClassName = "com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet";
byte[] bytes = new ByteBuddy().redefine(EmptySuperClass.class).make().getBytes();
byte[] newBytes = ClassSuperClassUtils.addSuperClass(bytes, superClassName);
assertEquals("java/lang/Object", new ClassReader(bytes).getSuperName());
assertEquals(superClassName.replace(".", "/"), new ClassReader(newBytes).getSuperName());
}
@Test
void testException() {
String superClassName = "com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet";
byte[] bytes = new ByteBuddy().redefine(SuperClass.class).make().getBytes();
assertThrows(IllegalStateException.class, () -> ClassSuperClassUtils.addSuperClass(bytes, superClassName));
}
class EmptySuperClass {
}
class SuperClass extends EmptySuperClass {
}
}