| 
5 | 5 | 
 
  | 
6 | 6 | package io.opentelemetry.instrumentation.armeria.v1_3.internal;  | 
7 | 7 | 
 
  | 
8 |  | -import static java.util.logging.Level.FINE;  | 
9 |  | - | 
10 | 8 | import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaClientTelemetryBuilder;  | 
11 | 9 | import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaServerTelemetryBuilder;  | 
12 |  | -import java.lang.reflect.InvocationTargetException;  | 
13 |  | -import java.lang.reflect.Method;  | 
14 |  | -import java.util.logging.Logger;  | 
 | 10 | +import java.util.function.BiConsumer;  | 
15 | 11 | import javax.annotation.Nullable;  | 
16 | 12 | 
 
  | 
17 | 13 | /**  | 
 | 
21 | 17 |  */  | 
22 | 18 | public class Experimental {  | 
23 | 19 | 
 
  | 
24 |  | -  private static final Logger logger = Logger.getLogger(Experimental.class.getName());  | 
25 |  | - | 
26 | 20 |   @Nullable  | 
27 |  | -  private static final Method emitExperimentalClientTelemetryMethod =  | 
28 |  | -      getEmitExperimentalClientTelemetryMethod();  | 
29 |  | - | 
30 |  | -  @Nullable private static final Method clientPeerServiceMethod = getClientPeerServiceMethod();  | 
 | 21 | +  private static BiConsumer<ArmeriaClientTelemetryBuilder, Boolean>  | 
 | 22 | +      setEmitExperimentalClientTelemetry;  | 
31 | 23 | 
 
  | 
32 | 24 |   @Nullable  | 
33 |  | -  private static final Method emitExperimentalHttpServerMetricsMethod =  | 
34 |  | -      getEmitExperimentalHttpServerMetricsMethod();  | 
 | 25 | +  private static BiConsumer<ArmeriaServerTelemetryBuilder, Boolean>  | 
 | 26 | +      setEmitExperimentalServerTelemetry;  | 
35 | 27 | 
 
  | 
36 | 28 |   public void setEmitExperimentalTelemetry(  | 
37 | 29 |       ArmeriaClientTelemetryBuilder builder, boolean emitExperimentalTelemetry) {  | 
38 |  | - | 
39 |  | -    if (emitExperimentalClientTelemetryMethod != null) {  | 
40 |  | -      try {  | 
41 |  | -        emitExperimentalClientTelemetryMethod.invoke(builder, emitExperimentalTelemetry);  | 
42 |  | -      } catch (IllegalAccessException | InvocationTargetException e) {  | 
43 |  | -        logger.log(FINE, e.getMessage(), e);  | 
44 |  | -      }  | 
 | 30 | +    if (setEmitExperimentalClientTelemetry != null) {  | 
 | 31 | +      setEmitExperimentalClientTelemetry.accept(builder, emitExperimentalTelemetry);  | 
45 | 32 |     }  | 
46 | 33 |   }  | 
47 | 34 | 
 
  | 
48 | 35 |   public void setEmitExperimentalTelemetry(  | 
49 | 36 |       ArmeriaServerTelemetryBuilder builder, boolean emitExperimentalTelemetry) {  | 
50 |  | - | 
51 |  | -    if (emitExperimentalHttpServerMetricsMethod != null) {  | 
52 |  | -      try {  | 
53 |  | -        emitExperimentalHttpServerMetricsMethod.invoke(builder, emitExperimentalTelemetry);  | 
54 |  | -      } catch (IllegalAccessException | InvocationTargetException e) {  | 
55 |  | -        logger.log(FINE, e.getMessage(), e);  | 
56 |  | -      }  | 
 | 37 | +    if (setEmitExperimentalServerTelemetry != null) {  | 
 | 38 | +      setEmitExperimentalServerTelemetry.accept(builder, emitExperimentalTelemetry);  | 
57 | 39 |     }  | 
58 | 40 |   }  | 
59 | 41 | 
 
  | 
60 |  | -  public void setClientPeerService(ArmeriaClientTelemetryBuilder builder, String peerService) {  | 
61 |  | - | 
62 |  | -    if (clientPeerServiceMethod != null) {  | 
63 |  | -      try {  | 
64 |  | -        clientPeerServiceMethod.invoke(builder, peerService);  | 
65 |  | -      } catch (IllegalAccessException | InvocationTargetException e) {  | 
66 |  | -        logger.log(FINE, e.getMessage(), e);  | 
67 |  | -      }  | 
68 |  | -    }  | 
 | 42 | +  public static void setSetEmitExperimentalClientTelemetry(  | 
 | 43 | +      BiConsumer<ArmeriaClientTelemetryBuilder, Boolean> setEmitExperimentalClientTelemetry) {  | 
 | 44 | +    Experimental.setEmitExperimentalClientTelemetry = setEmitExperimentalClientTelemetry;  | 
69 | 45 |   }  | 
70 | 46 | 
 
  | 
71 |  | -  @Nullable  | 
72 |  | -  private static Method getEmitExperimentalClientTelemetryMethod() {  | 
73 |  | -    try {  | 
74 |  | -      Method method =  | 
75 |  | -          ArmeriaClientTelemetryBuilder.class.getDeclaredMethod(  | 
76 |  | -              "setEmitExperimentalHttpClientMetrics", boolean.class);  | 
77 |  | -      method.setAccessible(true);  | 
78 |  | -      return method;  | 
79 |  | -    } catch (NoSuchMethodException e) {  | 
80 |  | -      logger.log(FINE, e.getMessage(), e);  | 
81 |  | -      return null;  | 
82 |  | -    }  | 
83 |  | -  }  | 
84 |  | - | 
85 |  | -  @Nullable  | 
86 |  | -  private static Method getClientPeerServiceMethod() {  | 
87 |  | -    try {  | 
88 |  | -      Method method =  | 
89 |  | -          ArmeriaClientTelemetryBuilder.class.getDeclaredMethod("setPeerService", String.class);  | 
90 |  | -      method.setAccessible(true);  | 
91 |  | -      return method;  | 
92 |  | -    } catch (NoSuchMethodException e) {  | 
93 |  | -      logger.log(FINE, e.getMessage(), e);  | 
94 |  | -      return null;  | 
95 |  | -    }  | 
96 |  | -  }  | 
97 |  | - | 
98 |  | -  @Nullable  | 
99 |  | -  private static Method getEmitExperimentalHttpServerMetricsMethod() {  | 
100 |  | -    try {  | 
101 |  | -      return ArmeriaServerTelemetryBuilder.class.getMethod(  | 
102 |  | -          "setEmitExperimentalHttpServerMetrics", boolean.class);  | 
103 |  | -    } catch (NoSuchMethodException e) {  | 
104 |  | -      logger.log(FINE, e.getMessage(), e);  | 
105 |  | -      return null;  | 
106 |  | -    }  | 
 | 47 | +  public static void setSetEmitExperimentalServerTelemetry(  | 
 | 48 | +      BiConsumer<ArmeriaServerTelemetryBuilder, Boolean> setEmitExperimentalServerTelemetry) {  | 
 | 49 | +    Experimental.setEmitExperimentalServerTelemetry = setEmitExperimentalServerTelemetry;  | 
107 | 50 |   }  | 
108 | 51 | }  | 
0 commit comments