Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit c7def69

Browse files
feat: Enable REST transport for most of Java and Go clients (#704)
* feat: Enable REST transport for most of Java and Go clients PiperOrigin-RevId: 456641589 Source-Link: googleapis/googleapis@8a251f5 Source-Link: https://github.com/googleapis/googleapis-gen/commit/4ca52a529cf01308d9714950edffbea3560cfbdb Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNGNhNTJhNTI5Y2YwMTMwOGQ5NzE0OTUwZWRmZmJlYTM1NjBjZmJkYiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * deps: adding gax-httpjson Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Tomo Suzuki <[email protected]>
1 parent a385b7b commit c7def69

13 files changed

+3409
-10
lines changed

google-cloud-bigqueryconnection/pom.xml

+16
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@
6666
<groupId>com.google.api</groupId>
6767
<artifactId>gax-grpc</artifactId>
6868
</dependency>
69+
<dependency>
70+
<groupId>com.google.api</groupId>
71+
<artifactId>gax-httpjson</artifactId>
72+
</dependency>
6973
<dependency>
7074
<groupId>org.threeten</groupId>
7175
<artifactId>threetenbp</artifactId>
@@ -99,12 +103,24 @@
99103
<scope>test</scope>
100104
</dependency>
101105
<!-- Need testing utility classes for generated gRPC clients tests -->
106+
<dependency>
107+
<groupId>com.google.api</groupId>
108+
<artifactId>gax</artifactId>
109+
<classifier>testlib</classifier>
110+
<scope>test</scope>
111+
</dependency>
102112
<dependency>
103113
<groupId>com.google.api</groupId>
104114
<artifactId>gax-grpc</artifactId>
105115
<classifier>testlib</classifier>
106116
<scope>test</scope>
107117
</dependency>
118+
<dependency>
119+
<groupId>com.google.api</groupId>
120+
<artifactId>gax-httpjson</artifactId>
121+
<classifier>testlib</classifier>
122+
<scope>test</scope>
123+
</dependency>
108124
</dependencies>
109125

110126
<build>

google-cloud-bigqueryconnection/src/main/java/com/google/cloud/bigquery/connection/v1beta1/ConnectionServiceClient.java

+15
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@
106106
* ConnectionServiceClient.create(connectionServiceSettings);
107107
* }</pre>
108108
*
109+
* <p>To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over
110+
* the wire:
111+
*
112+
* <pre>{@code
113+
* // This snippet has been automatically generated for illustrative purposes only.
114+
* // It may require modifications to work in your environment.
115+
* ConnectionServiceSettings connectionServiceSettings =
116+
* ConnectionServiceSettings.newBuilder()
117+
* .setTransportChannelProvider(
118+
* ConnectionServiceSettings.defaultHttpJsonTransportProviderBuilder().build())
119+
* .build();
120+
* ConnectionServiceClient connectionServiceClient =
121+
* ConnectionServiceClient.create(connectionServiceSettings);
122+
* }</pre>
123+
*
109124
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
110125
*/
111126
@BetaApi

google-cloud-bigqueryconnection/src/main/java/com/google/cloud/bigquery/connection/v1beta1/ConnectionServiceSettings.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.google.api.gax.core.GoogleCredentialsProvider;
2222
import com.google.api.gax.core.InstantiatingExecutorProvider;
2323
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
24+
import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
2425
import com.google.api.gax.rpc.ApiClientHeaderProvider;
2526
import com.google.api.gax.rpc.ClientContext;
2627
import com.google.api.gax.rpc.ClientSettings;
@@ -154,11 +155,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
154155
return ConnectionServiceStubSettings.defaultCredentialsProviderBuilder();
155156
}
156157

157-
/** Returns a builder for the default ChannelProvider for this service. */
158+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
158159
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
159160
return ConnectionServiceStubSettings.defaultGrpcTransportProviderBuilder();
160161
}
161162

163+
/** Returns a builder for the default REST ChannelProvider for this service. */
164+
@BetaApi
165+
public static InstantiatingHttpJsonChannelProvider.Builder
166+
defaultHttpJsonTransportProviderBuilder() {
167+
return ConnectionServiceStubSettings.defaultHttpJsonTransportProviderBuilder();
168+
}
169+
162170
public static TransportChannelProvider defaultTransportChannelProvider() {
163171
return ConnectionServiceStubSettings.defaultTransportChannelProvider();
164172
}
@@ -168,11 +176,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil
168176
return ConnectionServiceStubSettings.defaultApiClientHeaderProviderBuilder();
169177
}
170178

171-
/** Returns a new builder for this class. */
179+
/** Returns a new gRPC builder for this class. */
172180
public static Builder newBuilder() {
173181
return Builder.createDefault();
174182
}
175183

184+
/** Returns a new REST builder for this class. */
185+
@BetaApi
186+
public static Builder newHttpJsonBuilder() {
187+
return Builder.createHttpJsonDefault();
188+
}
189+
176190
/** Returns a new builder for this class. */
177191
public static Builder newBuilder(ClientContext clientContext) {
178192
return new Builder(clientContext);
@@ -210,6 +224,11 @@ private static Builder createDefault() {
210224
return new Builder(ConnectionServiceStubSettings.newBuilder());
211225
}
212226

227+
@BetaApi
228+
private static Builder createHttpJsonDefault() {
229+
return new Builder(ConnectionServiceStubSettings.newHttpJsonBuilder());
230+
}
231+
213232
public ConnectionServiceStubSettings.Builder getStubSettingsBuilder() {
214233
return ((ConnectionServiceStubSettings.Builder) getStubSettings());
215234
}

google-cloud-bigqueryconnection/src/main/java/com/google/cloud/bigquery/connection/v1beta1/stub/ConnectionServiceStubSettings.java

+50-3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import com.google.api.gax.grpc.GaxGrpcProperties;
2525
import com.google.api.gax.grpc.GrpcTransportChannel;
2626
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
27+
import com.google.api.gax.httpjson.GaxHttpJsonProperties;
28+
import com.google.api.gax.httpjson.HttpJsonTransportChannel;
29+
import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
2730
import com.google.api.gax.retrying.RetrySettings;
2831
import com.google.api.gax.rpc.ApiClientHeaderProvider;
2932
import com.google.api.gax.rpc.ClientContext;
@@ -172,6 +175,11 @@ public ConnectionServiceStub createStub() throws IOException {
172175
.equals(GrpcTransportChannel.getGrpcTransportName())) {
173176
return GrpcConnectionServiceStub.create(this);
174177
}
178+
if (getTransportChannelProvider()
179+
.getTransportName()
180+
.equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
181+
return HttpJsonConnectionServiceStub.create(this);
182+
}
175183
throw new UnsupportedOperationException(
176184
String.format(
177185
"Transport not supported: %s", getTransportChannelProvider().getTransportName()));
@@ -204,30 +212,56 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
204212
.setUseJwtAccessWithScope(true);
205213
}
206214

207-
/** Returns a builder for the default ChannelProvider for this service. */
215+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
208216
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
209217
return InstantiatingGrpcChannelProvider.newBuilder()
210218
.setMaxInboundMessageSize(Integer.MAX_VALUE);
211219
}
212220

221+
/** Returns a builder for the default REST ChannelProvider for this service. */
222+
@BetaApi
223+
public static InstantiatingHttpJsonChannelProvider.Builder
224+
defaultHttpJsonTransportProviderBuilder() {
225+
return InstantiatingHttpJsonChannelProvider.newBuilder();
226+
}
227+
213228
public static TransportChannelProvider defaultTransportChannelProvider() {
214229
return defaultGrpcTransportProviderBuilder().build();
215230
}
216231

217232
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
218-
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
233+
public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
219234
return ApiClientHeaderProvider.newBuilder()
220235
.setGeneratedLibToken(
221236
"gapic", GaxProperties.getLibraryVersion(ConnectionServiceStubSettings.class))
222237
.setTransportToken(
223238
GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
224239
}
225240

226-
/** Returns a new builder for this class. */
241+
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
242+
public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
243+
return ApiClientHeaderProvider.newBuilder()
244+
.setGeneratedLibToken(
245+
"gapic", GaxProperties.getLibraryVersion(ConnectionServiceStubSettings.class))
246+
.setTransportToken(
247+
GaxHttpJsonProperties.getHttpJsonTokenName(),
248+
GaxHttpJsonProperties.getHttpJsonVersion());
249+
}
250+
251+
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
252+
return ConnectionServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
253+
}
254+
255+
/** Returns a new gRPC builder for this class. */
227256
public static Builder newBuilder() {
228257
return Builder.createDefault();
229258
}
230259

260+
/** Returns a new REST builder for this class. */
261+
public static Builder newHttpJsonBuilder() {
262+
return Builder.createHttpJsonDefault();
263+
}
264+
231265
/** Returns a new builder for this class. */
232266
public static Builder newBuilder(ClientContext clientContext) {
233267
return new Builder(clientContext);
@@ -390,6 +424,19 @@ private static Builder createDefault() {
390424
return initDefaults(builder);
391425
}
392426

427+
private static Builder createHttpJsonDefault() {
428+
Builder builder = new Builder(((ClientContext) null));
429+
430+
builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
431+
builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
432+
builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
433+
builder.setEndpoint(getDefaultEndpoint());
434+
builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
435+
builder.setSwitchToMtlsEndpointAllowed(true);
436+
437+
return initDefaults(builder);
438+
}
439+
393440
private static Builder initDefaults(Builder builder) {
394441
builder
395442
.createConnectionSettings()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
/*
2+
* Copyright 2022 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.cloud.bigquery.connection.v1beta1.stub;
18+
19+
import com.google.api.core.BetaApi;
20+
import com.google.api.gax.httpjson.HttpJsonCallSettings;
21+
import com.google.api.gax.httpjson.HttpJsonCallableFactory;
22+
import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable;
23+
import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
24+
import com.google.api.gax.httpjson.longrunning.stub.OperationsStub;
25+
import com.google.api.gax.rpc.BatchingCallSettings;
26+
import com.google.api.gax.rpc.ClientContext;
27+
import com.google.api.gax.rpc.OperationCallSettings;
28+
import com.google.api.gax.rpc.OperationCallable;
29+
import com.google.api.gax.rpc.PagedCallSettings;
30+
import com.google.api.gax.rpc.ServerStreamingCallSettings;
31+
import com.google.api.gax.rpc.ServerStreamingCallable;
32+
import com.google.api.gax.rpc.UnaryCallSettings;
33+
import com.google.api.gax.rpc.UnaryCallable;
34+
import com.google.longrunning.Operation;
35+
import javax.annotation.Generated;
36+
37+
// AUTO-GENERATED DOCUMENTATION AND CLASS.
38+
/**
39+
* REST callable factory implementation for the ConnectionService service API.
40+
*
41+
* <p>This class is for advanced usage.
42+
*/
43+
@BetaApi
44+
@Generated("by gapic-generator-java")
45+
public class HttpJsonConnectionServiceCallableFactory
46+
implements HttpJsonStubCallableFactory<Operation, OperationsStub> {
47+
48+
@Override
49+
public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable(
50+
HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings,
51+
UnaryCallSettings<RequestT, ResponseT> callSettings,
52+
ClientContext clientContext) {
53+
return HttpJsonCallableFactory.createUnaryCallable(
54+
httpJsonCallSettings, callSettings, clientContext);
55+
}
56+
57+
@Override
58+
public <RequestT, ResponseT, PagedListResponseT>
59+
UnaryCallable<RequestT, PagedListResponseT> createPagedCallable(
60+
HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings,
61+
PagedCallSettings<RequestT, ResponseT, PagedListResponseT> callSettings,
62+
ClientContext clientContext) {
63+
return HttpJsonCallableFactory.createPagedCallable(
64+
httpJsonCallSettings, callSettings, clientContext);
65+
}
66+
67+
@Override
68+
public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable(
69+
HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings,
70+
BatchingCallSettings<RequestT, ResponseT> callSettings,
71+
ClientContext clientContext) {
72+
return HttpJsonCallableFactory.createBatchingCallable(
73+
httpJsonCallSettings, callSettings, clientContext);
74+
}
75+
76+
@BetaApi(
77+
"The surface for long-running operations is not stable yet and may change in the future.")
78+
@Override
79+
public <RequestT, ResponseT, MetadataT>
80+
OperationCallable<RequestT, ResponseT, MetadataT> createOperationCallable(
81+
HttpJsonCallSettings<RequestT, Operation> httpJsonCallSettings,
82+
OperationCallSettings<RequestT, ResponseT, MetadataT> callSettings,
83+
ClientContext clientContext,
84+
OperationsStub operationsStub) {
85+
UnaryCallable<RequestT, Operation> innerCallable =
86+
HttpJsonCallableFactory.createBaseUnaryCallable(
87+
httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext);
88+
HttpJsonOperationSnapshotCallable<RequestT, Operation> initialCallable =
89+
new HttpJsonOperationSnapshotCallable<RequestT, Operation>(
90+
innerCallable,
91+
httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory());
92+
return HttpJsonCallableFactory.createOperationCallable(
93+
callSettings, clientContext, operationsStub.longRunningClient(), initialCallable);
94+
}
95+
96+
@Override
97+
public <RequestT, ResponseT>
98+
ServerStreamingCallable<RequestT, ResponseT> createServerStreamingCallable(
99+
HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings,
100+
ServerStreamingCallSettings<RequestT, ResponseT> callSettings,
101+
ClientContext clientContext) {
102+
return HttpJsonCallableFactory.createServerStreamingCallable(
103+
httpJsonCallSettings, callSettings, clientContext);
104+
}
105+
}

0 commit comments

Comments
 (0)