private void writeAgentTrackRequestTelemetryMethod()

in agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/legacysdk/TelemetryClientClassFileTransformer.java [1017:1164]


    private void writeAgentTrackRequestTelemetryMethod() {
      MethodVisitor mv =
          cw.visitMethod(
              ACC_PRIVATE,
              "agent$trackRequestTelemetry",
              "(L" + unshadedPrefix + "/telemetry/RequestTelemetry;)V",
              null,
              null);
      mv.visitCode();
      Label label0 = new Label();
      Label label1 = new Label();
      Label label2 = new Label();
      mv.visitTryCatchBlock(label0, label1, label2, "java/net/MalformedURLException");
      mv.visitLabel(label0);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getId",
          "()Ljava/lang/String;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getName",
          "()Ljava/lang/String;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getUrl",
          "()Ljava/net/URL;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getTimestamp",
          "()Ljava/util/Date;",
          false);
      mv.visitVarInsn(ALOAD, 0);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getDuration",
          "()L" + unshadedPrefix + "/telemetry/Duration;",
          false);
      mv.visitMethodInsn(
          INVOKESPECIAL,
          unshadedPrefix + "/TelemetryClient",
          "agent$toMillis",
          "(L" + unshadedPrefix + "/telemetry/Duration;)Ljava/lang/Long;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      Label label3 = new Label();
      mv.visitLabel(label3);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getResponseCode",
          "()Ljava/lang/String;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL, unshadedPrefix + "/telemetry/RequestTelemetry", "isSuccess", "()Z", false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getSource",
          "()Ljava/lang/String;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getProperties",
          "()Ljava/util/Map;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getContext",
          "()L" + unshadedPrefix + "/telemetry/TelemetryContext;",
          false);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/TelemetryContext",
          "getTags",
          "()Ljava/util/concurrent/ConcurrentMap;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      Label label4 = new Label();
      mv.visitLabel(label4);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getMetrics",
          "()Ljava/util/concurrent/ConcurrentMap;",
          false);
      mv.visitVarInsn(ALOAD, 1);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/RequestTelemetry",
          "getContext",
          "()L" + unshadedPrefix + "/telemetry/TelemetryContext;",
          false);
      mv.visitMethodInsn(
          INVOKEVIRTUAL,
          unshadedPrefix + "/telemetry/TelemetryContext",
          "getInstrumentationKey",
          "()Ljava/lang/String;",
          false);
      Label label5 = new Label();
      mv.visitLabel(label5);
      mv.visitMethodInsn(
          INVOKESTATIC,
          BYTECODE_UTIL_INTERNAL_NAME,
          "trackRequest",
          "(Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/util/Date;Ljava/lang/Long;Ljava/lang/String;ZLjava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/String;)V",
          false);
      mv.visitLabel(label1);
      Label label6 = new Label();
      mv.visitJumpInsn(GOTO, label6);
      mv.visitLabel(label2);
      mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/net/MalformedURLException"});
      mv.visitVarInsn(ASTORE, 2);
      Label label7 = new Label();
      mv.visitLabel(label7);
      mv.visitVarInsn(ALOAD, 2);
      mv.visitMethodInsn(
          INVOKESTATIC,
          BYTECODE_UTIL_INTERNAL_NAME,
          "logErrorOnce",
          "(Ljava/lang/Throwable;)V",
          false);
      mv.visitLabel(label6);
      mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
      mv.visitInsn(RETURN);
      Label label8 = new Label();
      mv.visitLabel(label8);
      mv.visitMaxs(12, 3);
      mv.visitEnd();
    }