| 
5 | 5 | 
 
  | 
6 | 6 | package io.opentelemetry.instrumentation.ratpack.v1_7.internal;  | 
7 | 7 | 
 
  | 
8 |  | -import static java.util.logging.Level.FINE;  | 
9 |  | - | 
10 | 8 | import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackClientTelemetryBuilder;  | 
11 | 9 | import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetryBuilder;  | 
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();  | 
 | 21 | +  private static BiConsumer<RatpackClientTelemetryBuilder, Boolean>  | 
 | 22 | +      setEmitExperimentalClientTelemetry;  | 
29 | 23 | 
 
  | 
30 | 24 |   @Nullable  | 
31 |  | -  private static final Method emitExperimentalServerTelemetryMethod =  | 
32 |  | -      getEmitExperimentalServerTelemetryMethod();  | 
 | 25 | +  private static BiConsumer<RatpackServerTelemetryBuilder, Boolean>  | 
 | 26 | +      setEmitExperimentalServerTelemetry;  | 
33 | 27 | 
 
  | 
34 | 28 |   public void setEmitExperimentalTelemetry(  | 
35 | 29 |       RatpackClientTelemetryBuilder builder, boolean emitExperimentalTelemetry) {  | 
36 |  | - | 
37 |  | -    if (emitExperimentalClientTelemetryMethod != null) {  | 
38 |  | -      try {  | 
39 |  | -        emitExperimentalClientTelemetryMethod.invoke(builder, emitExperimentalTelemetry);  | 
40 |  | -      } catch (IllegalAccessException | InvocationTargetException e) {  | 
41 |  | -        logger.log(FINE, e.getMessage(), e);  | 
42 |  | -      }  | 
 | 30 | +    if (setEmitExperimentalClientTelemetry != null) {  | 
 | 31 | +      setEmitExperimentalClientTelemetry.accept(builder, emitExperimentalTelemetry);  | 
43 | 32 |     }  | 
44 | 33 |   }  | 
45 | 34 | 
 
  | 
46 | 35 |   public void setEmitExperimentalTelemetry(  | 
47 | 36 |       RatpackServerTelemetryBuilder builder, boolean emitExperimentalTelemetry) {  | 
48 |  | - | 
49 |  | -    if (emitExperimentalServerTelemetryMethod != null) {  | 
50 |  | -      try {  | 
51 |  | -        emitExperimentalServerTelemetryMethod.invoke(builder, emitExperimentalTelemetry);  | 
52 |  | -      } catch (IllegalAccessException | InvocationTargetException e) {  | 
53 |  | -        logger.log(FINE, e.getMessage(), e);  | 
54 |  | -      }  | 
 | 37 | +    if (setEmitExperimentalServerTelemetry != null) {  | 
 | 38 | +      setEmitExperimentalServerTelemetry.accept(builder, emitExperimentalTelemetry);  | 
55 | 39 |     }  | 
56 | 40 |   }  | 
57 | 41 | 
 
  | 
58 |  | -  @Nullable  | 
59 |  | -  private static Method getEmitExperimentalClientTelemetryMethod() {  | 
60 |  | -    try {  | 
61 |  | -      Method method =  | 
62 |  | -          RatpackClientTelemetryBuilder.class.getDeclaredMethod(  | 
63 |  | -              "setEmitExperimentalHttpClientMetrics", boolean.class);  | 
64 |  | -      method.setAccessible(true);  | 
65 |  | -      return method;  | 
66 |  | -    } catch (NoSuchMethodException e) {  | 
67 |  | -      logger.log(FINE, e.getMessage(), e);  | 
68 |  | -      return null;  | 
69 |  | -    }  | 
 | 42 | +  public static void setSetEmitExperimentalClientTelemetry(  | 
 | 43 | +      BiConsumer<RatpackClientTelemetryBuilder, Boolean> setEmitExperimentalClientTelemetry) {  | 
 | 44 | +    Experimental.setEmitExperimentalClientTelemetry = setEmitExperimentalClientTelemetry;  | 
70 | 45 |   }  | 
71 | 46 | 
 
  | 
72 |  | -  @Nullable  | 
73 |  | -  private static Method getEmitExperimentalServerTelemetryMethod() {  | 
74 |  | -    try {  | 
75 |  | -      Method method =  | 
76 |  | -          RatpackServerTelemetryBuilder.class.getDeclaredMethod(  | 
77 |  | -              "setEmitExperimentalHttpServerMetrics", boolean.class);  | 
78 |  | -      method.setAccessible(true);  | 
79 |  | -      return method;  | 
80 |  | -    } catch (NoSuchMethodException e) {  | 
81 |  | -      logger.log(FINE, e.getMessage(), e);  | 
82 |  | -      return null;  | 
83 |  | -    }  | 
 | 47 | +  public static void setSetEmitExperimentalServerTelemetry(  | 
 | 48 | +      BiConsumer<RatpackServerTelemetryBuilder, Boolean> setEmitExperimentalServerTelemetry) {  | 
 | 49 | +    Experimental.setEmitExperimentalServerTelemetry = setEmitExperimentalServerTelemetry;  | 
84 | 50 |   }  | 
85 | 51 | }  | 
0 commit comments