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

com.jvmbytes.spy.event.BeforeEvent Maven / Gradle / Ivy

package com.jvmbytes.spy.event;

/**
 * 方法调用BEFORE事件
 *
 * @author luanjia
 */
public class BeforeEvent extends InvokeEvent {

    /**
     * 触发调用事件的ClassLoader
     */
    public final ClassLoader javaClassLoader;

    /**
     * 获取触发调用事件的类名称
     */
    public final String javaClassName;

    /**
     * 获取触发调用事件的方法名称
     */
    public final String javaMethodName;

    /**
     * 获取触发调用事件的方法签名
     */
    public final String javaMethodDesc;

    /**
     * 获取触发调用事件的对象
     */
    public final Object target;

    /**
     * 获取触发调用事件的方法参数
     */
    public final Object[] argumentArray;

    /**
     * 构造调用BEFORE事件
     *
     * @param processId       调用过程ID
     * @param invokeId        调用ID
     * @param javaClassLoader 触发调用事件的ClassLoader
     * @param javaClassName   触发调用事件的类名称
     * @param javaMethodName  触发调用事件的方法名称
     * @param javaMethodDesc  触发调用事件的方法签名
     * @param target          触发调用事件的对象(静态方法为null)
     * @param argumentArray   触发调用事件的方法参数
     */
    public BeforeEvent(final int processId,
                       final int invokeId,
                       final ClassLoader javaClassLoader,
                       final String javaClassName,
                       final String javaMethodName,
                       final String javaMethodDesc,
                       final Object target,
                       final Object[] argumentArray) {
        super(processId, invokeId, EventType.BEFORE);
        this.javaClassLoader = javaClassLoader;
        this.javaClassName = javaClassName;
        this.javaMethodName = javaMethodName;
        this.javaMethodDesc = javaMethodDesc;
        this.target = target;
        this.argumentArray = argumentArray;
    }

    /**
     * 改变方法入参
     *
     * @param index       方法入参编号(从0开始)
     * @param changeValue 改变的值
     * @return this
     */
    public BeforeEvent changeParameter(final int index,
                                       final Object changeValue) {
        argumentArray[index] = changeValue;
        return this;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy