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

Commit 499ea4c

Browse files
feat: Enable REST transport for most of Java and Go clients (#773)
- [ ] Regenerate this pull request now. PiperOrigin-RevId: 456641589 Source-Link: googleapis/googleapis@8a251f5 Source-Link: https://github.com/googleapis/googleapis-gen/commit/4ca52a529cf01308d9714950edffbea3560cfbdb Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNGNhNTJhNTI5Y2YwMTMwOGQ5NzE0OTUwZWRmZmJlYTM1NjBjZmJkYiJ9
1 parent 56819c7 commit 499ea4c

File tree

87 files changed

+6418
-10
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+6418
-10
lines changed

google-cloud-scheduler/pom.xml

+16
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@
6262
<groupId>com.google.api</groupId>
6363
<artifactId>gax-grpc</artifactId>
6464
</dependency>
65+
<dependency>
66+
<groupId>com.google.api</groupId>
67+
<artifactId>gax-httpjson</artifactId>
68+
</dependency>
6569
<dependency>
6670
<groupId>org.threeten</groupId>
6771
<artifactId>threetenbp</artifactId>
@@ -100,12 +104,24 @@
100104
</dependency>
101105

102106
<!-- Need testing utility classes for generated gRPC clients tests -->
107+
<dependency>
108+
<groupId>com.google.api</groupId>
109+
<artifactId>gax</artifactId>
110+
<classifier>testlib</classifier>
111+
<scope>test</scope>
112+
</dependency>
103113
<dependency>
104114
<groupId>com.google.api</groupId>
105115
<artifactId>gax-grpc</artifactId>
106116
<classifier>testlib</classifier>
107117
<scope>test</scope>
108118
</dependency>
119+
<dependency>
120+
<groupId>com.google.api</groupId>
121+
<artifactId>gax-httpjson</artifactId>
122+
<classifier>testlib</classifier>
123+
<scope>test</scope>
124+
</dependency>
109125
</dependencies>
110126

111127
<profiles>

google-cloud-scheduler/src/main/java/com/google/cloud/scheduler/v1/CloudSchedulerClient.java

+14
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,20 @@
9999
* CloudSchedulerClient cloudSchedulerClient = CloudSchedulerClient.create(cloudSchedulerSettings);
100100
* }</pre>
101101
*
102+
* <p>To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over
103+
* the wire:
104+
*
105+
* <pre>{@code
106+
* // This snippet has been automatically generated for illustrative purposes only.
107+
* // It may require modifications to work in your environment.
108+
* CloudSchedulerSettings cloudSchedulerSettings =
109+
* CloudSchedulerSettings.newBuilder()
110+
* .setTransportChannelProvider(
111+
* CloudSchedulerSettings.defaultHttpJsonTransportProviderBuilder().build())
112+
* .build();
113+
* CloudSchedulerClient cloudSchedulerClient = CloudSchedulerClient.create(cloudSchedulerSettings);
114+
* }</pre>
115+
*
102116
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
103117
*/
104118
@Generated("by gapic-generator-java")

google-cloud-scheduler/src/main/java/com/google/cloud/scheduler/v1/CloudSchedulerSettings.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.api.gax.core.GoogleCredentialsProvider;
2424
import com.google.api.gax.core.InstantiatingExecutorProvider;
2525
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
26+
import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
2627
import com.google.api.gax.rpc.ApiClientHeaderProvider;
2728
import com.google.api.gax.rpc.ClientContext;
2829
import com.google.api.gax.rpc.ClientSettings;
@@ -139,11 +140,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
139140
return CloudSchedulerStubSettings.defaultCredentialsProviderBuilder();
140141
}
141142

142-
/** Returns a builder for the default ChannelProvider for this service. */
143+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
143144
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
144145
return CloudSchedulerStubSettings.defaultGrpcTransportProviderBuilder();
145146
}
146147

148+
/** Returns a builder for the default REST ChannelProvider for this service. */
149+
@BetaApi
150+
public static InstantiatingHttpJsonChannelProvider.Builder
151+
defaultHttpJsonTransportProviderBuilder() {
152+
return CloudSchedulerStubSettings.defaultHttpJsonTransportProviderBuilder();
153+
}
154+
147155
public static TransportChannelProvider defaultTransportChannelProvider() {
148156
return CloudSchedulerStubSettings.defaultTransportChannelProvider();
149157
}
@@ -153,11 +161,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil
153161
return CloudSchedulerStubSettings.defaultApiClientHeaderProviderBuilder();
154162
}
155163

156-
/** Returns a new builder for this class. */
164+
/** Returns a new gRPC builder for this class. */
157165
public static Builder newBuilder() {
158166
return Builder.createDefault();
159167
}
160168

169+
/** Returns a new REST builder for this class. */
170+
@BetaApi
171+
public static Builder newHttpJsonBuilder() {
172+
return Builder.createHttpJsonDefault();
173+
}
174+
161175
/** Returns a new builder for this class. */
162176
public static Builder newBuilder(ClientContext clientContext) {
163177
return new Builder(clientContext);
@@ -195,6 +209,11 @@ private static Builder createDefault() {
195209
return new Builder(CloudSchedulerStubSettings.newBuilder());
196210
}
197211

212+
@BetaApi
213+
private static Builder createHttpJsonDefault() {
214+
return new Builder(CloudSchedulerStubSettings.newHttpJsonBuilder());
215+
}
216+
198217
public CloudSchedulerStubSettings.Builder getStubSettingsBuilder() {
199218
return ((CloudSchedulerStubSettings.Builder) getStubSettings());
200219
}

google-cloud-scheduler/src/main/java/com/google/cloud/scheduler/v1/stub/CloudSchedulerStubSettings.java

+50-3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
import com.google.api.gax.grpc.GaxGrpcProperties;
2828
import com.google.api.gax.grpc.GrpcTransportChannel;
2929
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
30+
import com.google.api.gax.httpjson.GaxHttpJsonProperties;
31+
import com.google.api.gax.httpjson.HttpJsonTransportChannel;
32+
import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
3033
import com.google.api.gax.retrying.RetrySettings;
3134
import com.google.api.gax.rpc.ApiCallContext;
3235
import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -210,6 +213,11 @@ public CloudSchedulerStub createStub() throws IOException {
210213
.equals(GrpcTransportChannel.getGrpcTransportName())) {
211214
return GrpcCloudSchedulerStub.create(this);
212215
}
216+
if (getTransportChannelProvider()
217+
.getTransportName()
218+
.equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
219+
return HttpJsonCloudSchedulerStub.create(this);
220+
}
213221
throw new UnsupportedOperationException(
214222
String.format(
215223
"Transport not supported: %s", getTransportChannelProvider().getTransportName()));
@@ -242,30 +250,56 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
242250
.setUseJwtAccessWithScope(true);
243251
}
244252

245-
/** Returns a builder for the default ChannelProvider for this service. */
253+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
246254
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
247255
return InstantiatingGrpcChannelProvider.newBuilder()
248256
.setMaxInboundMessageSize(Integer.MAX_VALUE);
249257
}
250258

259+
/** Returns a builder for the default REST ChannelProvider for this service. */
260+
@BetaApi
261+
public static InstantiatingHttpJsonChannelProvider.Builder
262+
defaultHttpJsonTransportProviderBuilder() {
263+
return InstantiatingHttpJsonChannelProvider.newBuilder();
264+
}
265+
251266
public static TransportChannelProvider defaultTransportChannelProvider() {
252267
return defaultGrpcTransportProviderBuilder().build();
253268
}
254269

255270
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
256-
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
271+
public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
257272
return ApiClientHeaderProvider.newBuilder()
258273
.setGeneratedLibToken(
259274
"gapic", GaxProperties.getLibraryVersion(CloudSchedulerStubSettings.class))
260275
.setTransportToken(
261276
GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
262277
}
263278

264-
/** Returns a new builder for this class. */
279+
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
280+
public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
281+
return ApiClientHeaderProvider.newBuilder()
282+
.setGeneratedLibToken(
283+
"gapic", GaxProperties.getLibraryVersion(CloudSchedulerStubSettings.class))
284+
.setTransportToken(
285+
GaxHttpJsonProperties.getHttpJsonTokenName(),
286+
GaxHttpJsonProperties.getHttpJsonVersion());
287+
}
288+
289+
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
290+
return CloudSchedulerStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
291+
}
292+
293+
/** Returns a new gRPC builder for this class. */
265294
public static Builder newBuilder() {
266295
return Builder.createDefault();
267296
}
268297

298+
/** Returns a new REST builder for this class. */
299+
public static Builder newHttpJsonBuilder() {
300+
return Builder.createHttpJsonDefault();
301+
}
302+
269303
/** Returns a new builder for this class. */
270304
public static Builder newBuilder(ClientContext clientContext) {
271305
return new Builder(clientContext);
@@ -411,6 +445,19 @@ private static Builder createDefault() {
411445
return initDefaults(builder);
412446
}
413447

448+
private static Builder createHttpJsonDefault() {
449+
Builder builder = new Builder(((ClientContext) null));
450+
451+
builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
452+
builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
453+
builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
454+
builder.setEndpoint(getDefaultEndpoint());
455+
builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
456+
builder.setSwitchToMtlsEndpointAllowed(true);
457+
458+
return initDefaults(builder);
459+
}
460+
414461
private static Builder initDefaults(Builder builder) {
415462
builder
416463
.listJobsSettings()
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.scheduler.v1.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 CloudScheduler service API.
40+
*
41+
* <p>This class is for advanced usage.
42+
*/
43+
@Generated("by gapic-generator-java")
44+
@BetaApi
45+
public class HttpJsonCloudSchedulerCallableFactory
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)