in agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/legacysdk/TelemetryClientClassFileTransformer.java [176:425]
private void overwriteTrackMethod(MethodVisitor mv) {
mv.visitCode();
Label label0 = new Label();
Label label1 = new Label();
Label label2 = new Label();
mv.visitTryCatchBlock(label0, label1, label2, "java/lang/Throwable");
Label label3 = new Label();
mv.visitLabel(label3);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(
INVOKEVIRTUAL, unshadedPrefix + "/TelemetryClient", "isDisabled", "()Z", false);
Label label4 = new Label();
mv.visitJumpInsn(IFEQ, label4);
Label label5 = new Label();
mv.visitLabel(label5);
mv.visitInsn(RETURN);
mv.visitLabel(label4);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(
INVOKEINTERFACE,
unshadedPrefix + "/telemetry/Telemetry",
"getTimestamp",
"()Ljava/util/Date;",
true);
Label label6 = new Label();
mv.visitJumpInsn(IFNONNULL, label6);
Label label7 = new Label();
mv.visitLabel(label7);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(NEW, "java/util/Date");
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKESPECIAL, "java/util/Date", "<init>", "()V", false);
mv.visitMethodInsn(
INVOKEINTERFACE,
unshadedPrefix + "/telemetry/Telemetry",
"setTimestamp",
"(Ljava/util/Date;)V",
true);
mv.visitLabel(label6);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(
INVOKEVIRTUAL,
unshadedPrefix + "/TelemetryClient",
"getContext",
"()L" + unshadedPrefix + "/telemetry/TelemetryContext;",
false);
mv.visitMethodInsn(
INVOKEVIRTUAL,
unshadedPrefix + "/telemetry/TelemetryContext",
"getTags",
"()Ljava/util/concurrent/ConcurrentMap;",
false);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(
INVOKEINTERFACE,
unshadedPrefix + "/telemetry/Telemetry",
"getContext",
"()L" + unshadedPrefix + "/telemetry/TelemetryContext;",
true);
mv.visitMethodInsn(
INVOKEVIRTUAL,
unshadedPrefix + "/telemetry/TelemetryContext",
"getTags",
"()Ljava/util/concurrent/ConcurrentMap;",
false);
mv.visitLdcInsn("ai.cloud.");
mv.visitMethodInsn(
INVOKESTATIC,
BYTECODE_UTIL_INTERNAL_NAME,
"copy",
"(Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;)V",
false);
Label label8 = new Label();
mv.visitLabel(label8);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(
INVOKEVIRTUAL,
unshadedPrefix + "/TelemetryClient",
"getContext",
"()L" + unshadedPrefix + "/telemetry/TelemetryContext;",
false);
mv.visitMethodInsn(
INVOKEVIRTUAL,
unshadedPrefix + "/telemetry/TelemetryContext",
"getProperties",
"()Ljava/util/concurrent/ConcurrentMap;",
false);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(
INVOKEINTERFACE,
unshadedPrefix + "/telemetry/Telemetry",
"getContext",
"()L" + unshadedPrefix + "/telemetry/TelemetryContext;",
true);
mv.visitMethodInsn(
INVOKEVIRTUAL,
unshadedPrefix + "/telemetry/TelemetryContext",
"getProperties",
"()Ljava/util/concurrent/ConcurrentMap;",
false);
mv.visitInsn(ACONST_NULL);
mv.visitMethodInsn(
INVOKESTATIC,
BYTECODE_UTIL_INTERNAL_NAME,
"copy",
"(Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;)V",
false);
mv.visitLabel(label0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(INSTANCEOF, unshadedPrefix + "/telemetry/EventTelemetry");
Label label9 = new Label();
mv.visitJumpInsn(IFEQ, label9);
Label label10 = new Label();
mv.visitLabel(label10);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, unshadedPrefix + "/telemetry/EventTelemetry");
mv.visitMethodInsn(
INVOKESPECIAL,
unshadedPrefix + "/TelemetryClient",
"agent$trackEventTelemetry",
"(L" + unshadedPrefix + "/telemetry/EventTelemetry;)V",
false);
mv.visitLabel(label9);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(INSTANCEOF, unshadedPrefix + "/telemetry/MetricTelemetry");
Label label11 = new Label();
mv.visitJumpInsn(IFEQ, label11);
Label label12 = new Label();
mv.visitLabel(label12);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, unshadedPrefix + "/telemetry/MetricTelemetry");
mv.visitMethodInsn(
INVOKESPECIAL,
unshadedPrefix + "/TelemetryClient",
"agent$trackMetricTelemetry",
"(L" + unshadedPrefix + "/telemetry/MetricTelemetry;)V",
false);
mv.visitLabel(label11);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(INSTANCEOF, unshadedPrefix + "/telemetry/RemoteDependencyTelemetry");
Label label13 = new Label();
mv.visitJumpInsn(IFEQ, label13);
Label label14 = new Label();
mv.visitLabel(label14);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, unshadedPrefix + "/telemetry/RemoteDependencyTelemetry");
mv.visitMethodInsn(
INVOKESPECIAL,
unshadedPrefix + "/TelemetryClient",
"agent$trackRemoteDependencyTelemetry",
"(L" + unshadedPrefix + "/telemetry/RemoteDependencyTelemetry;)V",
false);
mv.visitLabel(label13);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(INSTANCEOF, unshadedPrefix + "/telemetry/PageViewTelemetry");
Label label15 = new Label();
mv.visitJumpInsn(IFEQ, label15);
Label label16 = new Label();
mv.visitLabel(label16);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, unshadedPrefix + "/telemetry/PageViewTelemetry");
mv.visitMethodInsn(
INVOKESPECIAL,
unshadedPrefix + "/TelemetryClient",
"agent$trackPageViewTelemetry",
"(L" + unshadedPrefix + "/telemetry/PageViewTelemetry;)V",
false);
mv.visitLabel(label15);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(INSTANCEOF, unshadedPrefix + "/telemetry/TraceTelemetry");
Label label17 = new Label();
mv.visitJumpInsn(IFEQ, label17);
Label label18 = new Label();
mv.visitLabel(label18);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, unshadedPrefix + "/telemetry/TraceTelemetry");
mv.visitMethodInsn(
INVOKESPECIAL,
unshadedPrefix + "/TelemetryClient",
"agent$trackTraceTelemetry",
"(L" + unshadedPrefix + "/telemetry/TraceTelemetry;)V",
false);
mv.visitLabel(label17);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(INSTANCEOF, unshadedPrefix + "/telemetry/RequestTelemetry");
Label label19 = new Label();
mv.visitJumpInsn(IFEQ, label19);
Label label20 = new Label();
mv.visitLabel(label20);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, unshadedPrefix + "/telemetry/RequestTelemetry");
mv.visitMethodInsn(
INVOKESPECIAL,
unshadedPrefix + "/TelemetryClient",
"agent$trackRequestTelemetry",
"(L" + unshadedPrefix + "/telemetry/RequestTelemetry;)V",
false);
mv.visitLabel(label19);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(INSTANCEOF, unshadedPrefix + "/telemetry/ExceptionTelemetry");
mv.visitJumpInsn(IFEQ, label1);
Label label21 = new Label();
mv.visitLabel(label21);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, unshadedPrefix + "/telemetry/ExceptionTelemetry");
mv.visitMethodInsn(
INVOKESPECIAL,
unshadedPrefix + "/TelemetryClient",
"agent$trackExceptionTelemetry",
"(L" + unshadedPrefix + "/telemetry/ExceptionTelemetry;)V",
false);
mv.visitLabel(label1);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
Label label22 = new Label();
mv.visitJumpInsn(GOTO, label22);
mv.visitLabel(label2);
mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/Throwable"});
mv.visitVarInsn(ASTORE, 2);
Label label23 = new Label();
mv.visitLabel(label23);
mv.visitVarInsn(ALOAD, 2);
mv.visitMethodInsn(
INVOKESTATIC,
BYTECODE_UTIL_INTERNAL_NAME,
"logErrorOnce",
"(Ljava/lang/Throwable;)V",
false);
mv.visitLabel(label22);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitInsn(RETURN);
Label label24 = new Label();
mv.visitLabel(label24);
mv.visitMaxs(3, 3);
mv.visitEnd();
}