Skip to content

Commit 67662df

Browse files
committed
Default to HttpJsonCallSettings TypeRegistry for server streaming to avoid NPE
1 parent c5b9924 commit 67662df

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallableFactory.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ ServerStreamingCallable<RequestT, ResponseT> createServerStreamingCallable(
206206
ClientContext clientContext) {
207207

208208
ServerStreamingCallable<RequestT, ResponseT> callable =
209-
new HttpJsonDirectServerStreamingCallable<>(httpJsoncallSettings.getMethodDescriptor());
209+
new HttpJsonDirectServerStreamingCallable<>(
210+
httpJsoncallSettings.getMethodDescriptor(), httpJsoncallSettings.getTypeRegistry());
210211

211212
if (httpJsoncallSettings.getParamsExtractor() != null) {
212213
callable =

gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCallImpl.java

+1
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ final class HttpJsonClientCallImpl<RequestT, ResponseT>
135135
HttpTransport httpTransport,
136136
Executor executor,
137137
ScheduledExecutorService deadlineCancellationExecutor) {
138+
Preconditions.checkNotNull(callOptions.getTypeRegistry());
138139
this.methodDescriptor = methodDescriptor;
139140
this.endpoint = endpoint;
140141
this.callOptions = callOptions;

gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectServerStreamingCallable.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.google.api.gax.rpc.ServerStreamingCallable;
3535
import com.google.api.gax.rpc.StreamController;
3636
import com.google.common.base.Preconditions;
37+
import com.google.protobuf.TypeRegistry;
3738

3839
/**
3940
* {@code HttpJsonDirectServerStreamingCallable} creates server-streaming REST calls.
@@ -49,17 +50,24 @@ class HttpJsonDirectServerStreamingCallable<RequestT, ResponseT>
4950
extends ServerStreamingCallable<RequestT, ResponseT> {
5051

5152
private final ApiMethodDescriptor<RequestT, ResponseT> descriptor;
53+
private final TypeRegistry typeRegistry;
5254

53-
HttpJsonDirectServerStreamingCallable(ApiMethodDescriptor<RequestT, ResponseT> descriptor) {
55+
HttpJsonDirectServerStreamingCallable(
56+
ApiMethodDescriptor<RequestT, ResponseT> descriptor, TypeRegistry typeRegistry) {
5457
this.descriptor = descriptor;
58+
this.typeRegistry = typeRegistry;
5559
}
5660

5761
@Override
5862
public void call(
59-
RequestT request, ResponseObserver<ResponseT> responseObserver, ApiCallContext context) {
60-
63+
RequestT request, ResponseObserver<ResponseT> responseObserver, ApiCallContext inputContext) {
6164
Preconditions.checkNotNull(request);
6265
Preconditions.checkNotNull(responseObserver);
66+
HttpJsonCallContext context = HttpJsonCallContext.createDefault().nullToSelf(inputContext);
67+
68+
context =
69+
context.withCallOptions(
70+
context.getCallOptions().toBuilder().setTypeRegistry(typeRegistry).build());
6371

6472
HttpJsonClientCall<RequestT, ResponseT> call = HttpJsonClientCalls.newCall(descriptor, context);
6573
HttpJsonDirectStreamController<RequestT, ResponseT> controller =

0 commit comments

Comments
 (0)