All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.bytekit.asm.instrument.InstrumentConfig Maven / Gradle / Ivy

package com.alibaba.bytekit.asm.instrument;

import com.alibaba.bytekit.asm.matcher.ClassMatcher;
import com.alibaba.deps.org.objectweb.asm.tree.ClassNode;

/**
 * 
 * 1. 读properties文件,得到有哪些要增强的类 
 * 2. 解析到具体的配置,还有读取 byte[] 
 * 3. 增加一个Transformer,如果有触发,则用 运行时的 byte[] 替换。 这里是否有不同版本的问题?怎么处理? 
 * 4. 是否支持retransform
 * 
 * 一个 Inst ,对应一个 matcher,然后一个ClassLoader,可能读取出来有多个 Properties。 一个
 * Properties里可能有多个 Inst。然后它们是同一个 Transformer ? 有类进来,就先用 matcher来匹配,有匹上的,就处理
 * 
* * @author hengyunabc 2020-11-12 * */ public class InstrumentConfig { private boolean updateMajorVersion; private ClassNode instrumentClassNode; private ClassMatcher classMatcher; /** * 有的类在之前已经被加载到 JVM 里了,需要显式触发 Retransform ,增强的字节码才能生效 */ private boolean triggerRetransform = false; public InstrumentConfig(ClassNode instrumentClassNode, ClassMatcher classMatcher) { this(instrumentClassNode, classMatcher, false, false); } public InstrumentConfig(ClassNode instrumentClassNode, ClassMatcher classMatcher, boolean updateMajorVersion, boolean triggerRetransform) { super(); this.instrumentClassNode = instrumentClassNode; this.classMatcher = classMatcher; this.updateMajorVersion = updateMajorVersion; this.triggerRetransform = triggerRetransform; } public ClassNode getInstrumentClassNode() { return instrumentClassNode; } public void setInstrumentClassNode(ClassNode instrumentClassNode) { this.instrumentClassNode = instrumentClassNode; } public ClassMatcher getClassMatcher() { return classMatcher; } public void setClassMatcher(ClassMatcher classMatcher) { this.classMatcher = classMatcher; } public boolean isUpdateMajorVersion() { return updateMajorVersion; } public void setUpdateMajorVersion(boolean updateMajorVersion) { this.updateMajorVersion = updateMajorVersion; } public boolean isTriggerRetransform() { return triggerRetransform; } public void setTriggerRetransform(boolean triggerRetransform) { this.triggerRetransform = triggerRetransform; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy