Skip to content

Commit 5f5fdb8

Browse files
committed
Replaced set by list
1 parent cf6b82a commit 5f5fdb8

File tree

3 files changed

+20
-25
lines changed

3 files changed

+20
-25
lines changed

ojdbc-provider-observability/src/main/java/oracle/jdbc/provider/observability/ObservabilityTraceEventListener.java

+11-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package oracle.jdbc.provider.observability;
22

3-
import java.util.EnumMap;
4-
53
import oracle.jdbc.TraceEventListener;
64
import oracle.jdbc.provider.observability.configuration.ObservabilityConfiguration;
75
import oracle.jdbc.provider.observability.tracers.JFRTracer;
@@ -28,21 +26,21 @@ public ObservabilityTracer getTracer() {
2826

2927
@Override
3028
public Object roundTrip(Sequence sequence, TraceContext traceContext, Object userContext) {
31-
EnumMap<Tracers, Object> currentUserContext = getCurrentUserContext(userContext);
29+
Object[] currentUserContext = getCurrentUserContext(userContext);
3230
for (Tracers tracer : ObservabilityConfiguration.getInstance().getEnabledTracersSet()) {
33-
Object newUserContext = tracer.getTracer().traceRoundtrip(sequence, traceContext, currentUserContext.get(tracer));
34-
currentUserContext.put(tracer, newUserContext);
31+
Object newUserContext = tracer.getTracer().traceRoundtrip(sequence, traceContext, currentUserContext[tracer.ordinal()]);
32+
currentUserContext[tracer.ordinal()] = newUserContext;
3533
}
3634
return currentUserContext;
3735
}
3836

3937

4038
@Override
4139
public Object onExecutionEventReceived(JdbcExecutionEvent event, Object userContext, Object... params) {
42-
EnumMap<Tracers, Object> currentUserContext = getCurrentUserContext(userContext);
40+
Object[] currentUserContext = getCurrentUserContext(userContext);
4341
for (Tracers tracer : ObservabilityConfiguration.getInstance().getEnabledTracersSet()) {
44-
Object newUserContext = tracer.getTracer().traceExecutionEvent(event, currentUserContext.get(tracer), params);
45-
currentUserContext.put(tracer, newUserContext);
42+
Object newUserContext = tracer.getTracer().traceExecutionEvent(event, currentUserContext[tracer.ordinal()], params);
43+
currentUserContext[tracer.ordinal()] = newUserContext;
4644
}
4745
return currentUserContext;
4846
}
@@ -54,12 +52,12 @@ public boolean isDesiredEvent(JdbcExecutionEvent event) {
5452
}
5553

5654
@SuppressWarnings("unchecked")
57-
private EnumMap<Tracers, Object> getCurrentUserContext(Object userContext) {
58-
EnumMap<Tracers, Object> currentUserContext;
59-
if (userContext != null && (userContext instanceof EnumMap<?,?>)) {
60-
currentUserContext = (EnumMap<Tracers, Object>) userContext;
55+
private Object[] getCurrentUserContext(Object userContext) {
56+
Object[] currentUserContext;
57+
if (userContext != null && (userContext instanceof Object[])) {
58+
currentUserContext = (Object[]) userContext;
6159
} else {
62-
currentUserContext = new EnumMap<Tracers, Object>(Tracers.class);
60+
currentUserContext = new Object[Tracers.values().length];
6361
}
6462
return currentUserContext;
6563
}

ojdbc-provider-observability/src/main/java/oracle/jdbc/provider/observability/configuration/ObservabilityConfiguration.java

+5-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package oracle.jdbc.provider.observability.configuration;
22

3-
import java.util.EnumSet;
3+
import java.util.ArrayList;
4+
import java.util.List;
45
import java.util.concurrent.locks.ReentrantLock;
56
import java.util.stream.Collectors;
67

@@ -23,7 +24,7 @@ private ObservabilityConfiguration() { }
2324
private boolean sensitiveDataEnabled;
2425
private String tracers;
2526

26-
private EnumSet<ObservabilityTraceEventListener.Tracers> enabledTracers = EnumSet.noneOf(ObservabilityTraceEventListener.Tracers.class);
27+
private List<ObservabilityTraceEventListener.Tracers> enabledTracers = new ArrayList<>();
2728

2829
@Override
2930
public String getEnabledTracers() {
@@ -67,12 +68,8 @@ public static ObservabilityConfiguration getInstance() {
6768
return INSTANCE;
6869
}
6970

70-
public EnumSet<ObservabilityTraceEventListener.Tracers> getEnabledTracersSet() {
71-
if (enabledTracers != null) {
72-
return enabledTracers.clone();
73-
} else {
74-
return null;
75-
}
71+
public List<ObservabilityTraceEventListener.Tracers> getEnabledTracersSet() {
72+
return enabledTracers;
7673
}
7774

7875
}

ojdbc-provider-observability/src/test/java/oracle/jdbc/provider/observability/ObservabilityTraceEventListenerTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.junit.jupiter.api.Assertions.assertNotNull;
55
import static org.junit.jupiter.api.Assertions.assertNull;
66
import static org.junit.jupiter.api.Assertions.fail;
7+
import static org.mockito.Mockito.atLeast;
78
import static org.mockito.Mockito.atLeastOnce;
89

910
import java.nio.file.Path;
@@ -12,8 +13,6 @@
1213
import java.sql.ResultSet;
1314
import java.sql.Statement;
1415

15-
import org.junit.jupiter.api.BeforeEach;
16-
import org.junit.jupiter.api.Test;
1716
import org.junit.jupiter.params.ParameterizedTest;
1817
import org.junit.jupiter.params.provider.ValueSource;
1918
import org.mockito.Mockito;
@@ -61,6 +60,7 @@ public class ObservabilityTraceEventListenerTest {
6160

6261
static {
6362
GlobalOpenTelemetry.set(openTelemetry);
63+
configureOTEL();
6464
}
6565

6666
@ParameterizedTest
@@ -137,7 +137,7 @@ public void JFRTraceTest(boolean sensitiveDataEnabled) throws Exception {
137137
@ParameterizedTest
138138
@ValueSource(booleans = {true, false})
139139
public void OTELTraceTest(boolean sensitiveDataEnabled) throws Exception {
140-
configureOTEL();
140+
Mockito.clearInvocations(tracer, spanBuilder);
141141
ObservabilityConfiguration.getInstance().setEnabledTracers("OTEL");
142142
ObservabilityConfiguration.getInstance().setSensitiveDataEnabled(sensitiveDataEnabled);
143143
try (Connection connection = DriverManager.getConnection(url, userName, password);
@@ -165,12 +165,12 @@ public void OTELTraceTest(boolean sensitiveDataEnabled) throws Exception {
165165
Mockito.verify(spanBuilder, Mockito.times(1)).setAttribute("Original SQL Text", "SELECT 'OK' FROM DUAL");
166166
Mockito.verify(spanBuilder, Mockito.times(1)).setAttribute("Actual SQL Text", "SELECT 'OK' FROM DUAL");
167167
}
168+
Mockito.verify(span, atLeast(4)).end(Mockito.any());
168169

169170

170171
}
171172

172173
private static void configureOTEL() {
173-
Mockito.reset(spanBuilder, tracer);
174174
Mockito.when(openTelemetry.getTracerProvider()).thenReturn(tracerProvider);
175175
Mockito.when(tracerProvider.get(Mockito.anyString())).thenReturn(tracer);
176176
Mockito.when(openTelemetry.meterBuilder(Mockito.anyString())).thenReturn(meterBuilder);

0 commit comments

Comments
 (0)