Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Commit 3e1b4e1

Browse files
committed
fix(gax): update resource name extraction across tests and goldens
1 parent fe50105 commit 3e1b4e1

3 files changed

Lines changed: 15 additions & 12 deletions

File tree

gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1505,6 +1505,10 @@ private static Predicate<String> shouldAutoPopulate(Message methodRequestMessage
15051505
.anyMatch(field -> field.name().equals(fieldName) && field.canBeAutoPopulated());
15061506
}
15071507

1508+
/**
1509+
* The Resource Name Extractor should only be generated if the request contains a field that has
1510+
* resource reference (see {@link Field#hasResourceReference()})
1511+
*/
15081512
@Nullable
15091513
protected static LambdaExpr createResourceNameExtractorClassInstance(
15101514
Method method, ImmutableMap<String, Message> messageTypes) {
@@ -1514,6 +1518,7 @@ protected static LambdaExpr createResourceNameExtractorClassInstance(
15141518
return null;
15151519
}
15161520

1521+
// Expected expression: request -> request.getField()
15171522
VariableExpr requestVarExpr = createRequestVarExpr(method);
15181523
List<Statement> bodyStatements = new ArrayList<>();
15191524
Expr returnExpr =
@@ -1531,6 +1536,7 @@ protected static LambdaExpr createResourceNameExtractorClassInstance(
15311536
.build();
15321537
}
15331538

1539+
// Find the first field that has resource reference in a request message
15341540
private static Field getDestinationResourceIdField(
15351541
Method method, ImmutableMap<String, Message> messageTypes) {
15361542
if (method.inputType().reference() == null
@@ -1544,7 +1550,8 @@ private static Field getDestinationResourceIdField(
15441550
}
15451551

15461552
return methodRequestMessage.fields().stream()
1547-
.filter(f -> f.resourceReference() != null && !f.isRepeated())
1553+
.filter(Field::hasResourceReference)
1554+
.filter(f -> !f.isRepeated())
15481555
.findFirst()
15491556
.orElse(null);
15501557
}

gax-java/gax/src/main/java/com/google/api/gax/tracing/TracedUnaryCallable.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,6 @@ public TracedUnaryCallable(
6767
this.resourceNameExtractor = null;
6868
}
6969

70-
public TracedUnaryCallable(
71-
UnaryCallable<RequestT, ResponseT> innerCallable,
72-
ApiTracerFactory tracerFactory,
73-
ApiTracerContext apiTracerContext) {
74-
this(innerCallable, tracerFactory, apiTracerContext, null);
75-
}
76-
7770
public TracedUnaryCallable(
7871
UnaryCallable<RequestT, ResponseT> innerCallable,
7972
ApiTracerFactory tracerFactory,

gax-java/gax/src/test/java/com/google/api/gax/tracing/TracedUnaryCallableTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ void init(boolean useContext) {
8080
if (useContext) {
8181
when(tracerFactory.newTracer(any(ApiTracer.class), any(ApiTracerContext.class)))
8282
.thenReturn(tracer);
83-
tracedUnaryCallable = new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT);
83+
tracedUnaryCallable =
84+
new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT, null);
8485
} else {
8586
when(tracerFactory.newTracer(
8687
any(ApiTracer.class), any(SpanName.class), eq(OperationType.Unary)))
@@ -111,12 +112,13 @@ void testTracerCreated(boolean useContext) {
111112
void testOperationTypeIsSet() {
112113
when(tracerFactory.newTracer(any(ApiTracer.class), any(ApiTracerContext.class)))
113114
.thenReturn(tracer);
114-
tracedUnaryCallable = new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT);
115+
tracedUnaryCallable =
116+
new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT, null);
115117
ApiTracerContext contextWithWrongType =
116118
TRACER_CONTEXT.toBuilder().setOperationType(OperationType.BidiStreaming).build();
117119

118120
tracedUnaryCallable =
119-
new TracedUnaryCallable<>(innerCallable, tracerFactory, contextWithWrongType);
121+
new TracedUnaryCallable<>(innerCallable, tracerFactory, contextWithWrongType, null);
120122

121123
innerResult = SettableApiFuture.create();
122124
when(innerCallable.futureCall(anyString(), any(ApiCallContext.class))).thenReturn(innerResult);
@@ -209,7 +211,8 @@ void testResourceNameExtractorUsed() {
209211

210212
@Test
211213
void testExtractResourceNameToApiTracerContext_nullExtractor() {
212-
tracedUnaryCallable = new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT);
214+
tracedUnaryCallable =
215+
new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT, null);
213216
ApiTracerContext context = tracedUnaryCallable.extractResourceNameToApiTracerContext("request");
214217
assertThat(context).isEqualTo(TRACER_CONTEXT);
215218
}

0 commit comments

Comments
 (0)