argumentsCount(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "argumentCount", "I"); createArgumentsClassArray(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "argumentsClasses", "[Ljava/lang/Class;"); createArgumentsArray(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "arguments", "[Ljava/lang/Object;"); returnType(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "returnType", AsmUtil.L_SIGNATURE_JAVA_LANG_CLASS); targetMethodName(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetMethodName", AsmUtil.L_SIGNATURE_JAVA_LANG_STRING); targetMethodDescription(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetMethodDescription", AsmUtil.L_SIGNATURE_JAVA_LANG_STRING); targetMethodSignature(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetMethodSignature", AsmUtil.L_SIGNATURE_JAVA_LANG_STRING); targetClass(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetClass", AsmUtil.L_SIGNATURE_JAVA_LANG_CLASS);
@Override public void visitVarInsn(final int opcode, final int var) { if (proxyInfoRequested) { proxyInfoRequested = false; if (opcode == ASTORE) { ProxyTargetReplacement.info(mv, methodInfo, var); } } super.visitVarInsn(opcode, var); }
/** * Visits replacement code for {@link ProxyTarget#targetMethodAnnotation(String, String)}. */ public static void targetMethodAnnotation(final MethodVisitor mv, final MethodInfo methodInfo, final String[] args) { AnnotationInfo[] anns = methodInfo.getAnnotations(); if (anns != null) { targetAnnotation(mv, anns, args); } }
ProxyTargetReplacement.createArgumentsArray(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.createArgumentsClassArray(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.argumentsCount(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetMethodName(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetMethodDescription(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetMethodSignature(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.returnType(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetClass(mv, methodInfo);
ProxyTargetReplacement.createArgumentsArray(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.createArgumentsClassArray(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.argumentsCount(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetMethodName(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetMethodDescription(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetMethodSignature(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.returnType(mv, methodInfo); wd.proxyApplied = true; return; ProxyTargetReplacement.targetClass(mv, methodInfo);
argumentsCount(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "argumentCount", "I"); createArgumentsClassArray(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "argumentsClasses", "[Ljava/lang/Class;"); createArgumentsArray(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "arguments", "[Ljava/lang/Object;"); returnType(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "returnType", AsmUtil.L_SIGNATURE_JAVA_LANG_CLASS); targetMethodName(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetMethodName", AsmUtil.L_SIGNATURE_JAVA_LANG_STRING); targetMethodDescription(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetMethodDescription", AsmUtil.L_SIGNATURE_JAVA_LANG_STRING); targetMethodSignature(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetMethodSignature", AsmUtil.L_SIGNATURE_JAVA_LANG_STRING); targetClass(mv, methodInfo); mv.visitFieldInsn(Opcodes.PUTFIELD, PROXY_TARGET_INFO, "targetClass", AsmUtil.L_SIGNATURE_JAVA_LANG_CLASS);
/** * Visits replacement code for {@link ProxyTarget#targetClassAnnotation(String, String)}. */ public static void targetClassAnnotation(final MethodVisitor mv, final ClassInfo classInfo, final String[] args) { AnnotationInfo[] anns = classInfo.getAnnotations(); if (anns != null) { targetAnnotation(mv, anns, args); } else { mv.visitInsn(Opcodes.ACONST_NULL); } }
@Override public void visitVarInsn(final int opcode, final int var) { if (proxyInfoRequested) { proxyInfoRequested = false; if (opcode == ASTORE) { ProxyTargetReplacement.info(mv, methodInfo, var); } } super.visitVarInsn(opcode, var); }
/** * Visits replacement code for {@link ProxyTarget#targetMethodAnnotation(String, String)}. */ public static void targetMethodAnnotation(final MethodVisitor mv, final MethodInfo methodInfo, final String[] args) { AnnotationInfo[] anns = methodInfo.getAnnotations(); if (anns != null) { targetAnnotation(mv, anns, args); } }
/** * Visits replacement code for {@link ProxyTarget#targetClassAnnotation(String, String)}. */ public static void targetClassAnnotation(final MethodVisitor mv, final ClassInfo classInfo, final String[] args) { AnnotationInfo[] anns = classInfo.getAnnotations(); if (anns != null) { targetAnnotation(mv, anns, args); } else { mv.visitInsn(Opcodes.ACONST_NULL); } }