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
@@ -44,6 +44,10 @@ import com.reajason.javaweb.packer.spel.SpELPacker;
import com.reajason.javaweb.packer.spel.SpELScriptEnginePacker;
import com.reajason.javaweb.packer.spel.SpELSpringGzipJDK17Packer;
import com.reajason.javaweb.packer.spel.SpELSpringGzipPacker;
import com.reajason.javaweb.packer.translet.AbstractTransletPacker;
import com.reajason.javaweb.packer.translet.JDKAbstractTransletPacker;
import com.reajason.javaweb.packer.translet.OracleAbstractTransletPacker;
import com.reajason.javaweb.packer.translet.XalanAbstractTransletPacker;
import com.reajason.javaweb.packer.velocity.VelocityPacker;
import com.reajason.javaweb.packer.xmldecoder.XMLDecoderDefineClassPacker;
import com.reajason.javaweb.packer.xmldecoder.XMLDecoderPacker;
@@ -87,6 +91,11 @@ public enum Packers {
*/
BCEL(new BCELPacker()),
AbstractTranslet(new AbstractTransletPacker()),
JDKAbstractTransletPacker(new JDKAbstractTransletPacker(), AbstractTransletPacker.class),
XalanAbstractTransletPacker(new XalanAbstractTransletPacker(), AbstractTransletPacker.class),
OracleAbstractTransletPacker(new OracleAbstractTransletPacker(), AbstractTransletPacker.class),
/**
* 脚本引擎打包器
*/
@@ -94,6 +103,7 @@ public enum Packers {
DefaultScriptEngine(new DefaultScriptEnginePacker(), ScriptEnginePacker.class),
ScriptEngineNoSquareBrackets(new ScriptEngineNoSquareBracketsPacker(), ScriptEnginePacker.class),
ScriptEngineBigInteger(new ScriptEngineBigIntegerPacker(), ScriptEnginePacker.class),
Rhino(new RhinoPacker()),
/**
@@ -0,0 +1,10 @@
package com.reajason.javaweb.packer.translet;
import com.reajason.javaweb.packer.AggregatePacker;
/**
* @author ReaJason
* @since 2025/11/19
*/
public class AbstractTransletPacker implements AggregatePacker {
}
@@ -0,0 +1,22 @@
package com.reajason.javaweb.packer.translet;
import com.reajason.javaweb.asm.ClassSuperClassUtils;
import com.reajason.javaweb.packer.ClassPackerConfig;
import com.reajason.javaweb.packer.Packer;
import lombok.SneakyThrows;
import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
* @since 2025/11/19
*/
public class JDKAbstractTransletPacker implements Packer {
@Override
@SneakyThrows
public String pack(ClassPackerConfig config) {
String superClassName = "com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet";
byte[] bytes = Base64.decodeBase64(config.getClassBytesBase64Str());
byte[] newBytes = ClassSuperClassUtils.addSuperClass(bytes, superClassName);
return Base64.encodeBase64String(newBytes);
}
}
@@ -0,0 +1,22 @@
package com.reajason.javaweb.packer.translet;
import com.reajason.javaweb.asm.ClassSuperClassUtils;
import com.reajason.javaweb.packer.ClassPackerConfig;
import com.reajason.javaweb.packer.Packer;
import lombok.SneakyThrows;
import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
* @since 2025/11/19
*/
public class OracleAbstractTransletPacker implements Packer {
@Override
@SneakyThrows
public String pack(ClassPackerConfig config) {
String superClassName = "com.oracle.wls.shaded.org.apache.xalan.xsltc.runtime.AbstractTranslet";
byte[] bytes = Base64.decodeBase64(config.getClassBytesBase64Str());
byte[] newBytes = ClassSuperClassUtils.addSuperClass(bytes, superClassName);
return Base64.encodeBase64String(newBytes);
}
}
@@ -0,0 +1,22 @@
package com.reajason.javaweb.packer.translet;
import com.reajason.javaweb.asm.ClassSuperClassUtils;
import com.reajason.javaweb.packer.ClassPackerConfig;
import com.reajason.javaweb.packer.Packer;
import lombok.SneakyThrows;
import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
* @since 2025/11/19
*/
public class XalanAbstractTransletPacker implements Packer {
@Override
@SneakyThrows
public String pack(ClassPackerConfig config) {
String superClassName = "org.apache.xalan.xsltc.runtime.AbstractTranslet";
byte[] bytes = Base64.decodeBase64(config.getClassBytesBase64Str());
byte[] newBytes = ClassSuperClassUtils.addSuperClass(bytes, superClassName);
return Base64.encodeBase64String(newBytes);
}
}