Skip to content

Commit fa6ce6c

Browse files
committed
Address review comments from copilot-pull-request-reviewer: require messaging operation name
1 parent 9dc5bef commit fa6ce6c

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractorBuilder.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
public final class MessagingAttributesExtractorBuilder<REQUEST, RESPONSE> {
2020

2121
final MessagingAttributesGetter<REQUEST, RESPONSE> getter;
22-
@Nullable MessagingOperationType operationType;
23-
@Nullable String operationName;
22+
@Nullable private final MessagingOperationType operationType;
23+
@Nullable private String operationName;
2424
private final boolean supportsStableSemconv;
2525
List<String> capturedHeaders = emptyList();
2626

@@ -63,6 +63,9 @@ public MessagingAttributesExtractorBuilder<REQUEST, RESPONSE> setCapturedHeaders
6363
* MessagingAttributesExtractorBuilder}.
6464
*/
6565
public AttributesExtractor<REQUEST, RESPONSE> build() {
66+
if (supportsStableSemconv) {
67+
requireNonNull(operationName, "operationName");
68+
}
6669
return new MessagingAttributesExtractor<>(
6770
getter, operationType, operationName, supportsStableSemconv, capturedHeaders);
6871
}

instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractorTest.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM;
2626
import static java.util.Collections.emptyMap;
2727
import static java.util.Collections.singletonMap;
28+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2829
import static org.assertj.core.api.Assertions.entry;
2930
import static org.junit.jupiter.params.provider.Arguments.argumentSet;
3031

@@ -227,11 +228,21 @@ void shouldExtractOperationNameWithoutOperationType() {
227228
assertThat(attributes.build()).isEqualTo(expected);
228229
}
229230

231+
@Test
232+
void shouldRequireOperationNameForStableSemconv() {
233+
assertThatThrownBy(
234+
() ->
235+
MessagingAttributesExtractor.builderForOperationType(TestGetter.INSTANCE, null)
236+
.build())
237+
.isInstanceOf(NullPointerException.class)
238+
.hasMessage("operationName");
239+
}
240+
230241
@Test
231242
void shouldExtractErrorTypeFromResponse() {
232-
MessagingOperationType operationType = null;
233243
AttributesExtractor<Map<String, String>, String> underTest =
234-
MessagingAttributesExtractor.createForOperationType(TestGetter.INSTANCE, operationType);
244+
MessagingAttributesExtractor.createForOperationType(
245+
TestGetter.INSTANCE, MessagingOperationType.RECEIVE);
235246

236247
AttributesBuilder attributes = Attributes.builder();
237248
underTest.onEnd(attributes, Context.root(), emptyMap(), "failure", null);

0 commit comments

Comments
 (0)