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

Commit f42b2d0

Browse files
feat: Enable REST transport for most of Java and Go clients (#311)
* chore(deps): upgrade gapic-generator-java to 2.8.0 and update gax-java to 2.18.1 PiperOrigin-RevId: 450543911 Source-Link: googleapis/googleapis@5528344 Source-Link: https://github.com/googleapis/googleapis-gen/commit/9f6775cab1958982b88967a43e5e806af0f135db Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOWY2Nzc1Y2FiMTk1ODk4MmI4ODk2N2E0M2U1ZTgwNmFmMGYxMzVkYiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * chore: Integrate new gapic-generator-java and rules_gapic PiperOrigin-RevId: 454027580 Source-Link: googleapis/googleapis@1b22277 Source-Link: https://github.com/googleapis/googleapis-gen/commit/e04cea20d0d12eb5c3bdb360a9e72b654edcb638 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTA0Y2VhMjBkMGQxMmViNWMzYmRiMzYwYTllNzJiNjU0ZWRjYjYzOCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 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 * Update pom.xml Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Neenu Shaji <[email protected]>
1 parent ab4a6f5 commit f42b2d0

13 files changed

+2109
-21
lines changed

google-cloud-workflow-executions/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

6670
<!-- Test dependencies -->
6771
<dependency>
@@ -82,12 +86,24 @@
8286
<scope>test</scope>
8387
</dependency>
8488
<!-- Need testing utility classes for generated gRPC clients tests -->
89+
<dependency>
90+
<groupId>com.google.api</groupId>
91+
<artifactId>gax</artifactId>
92+
<classifier>testlib</classifier>
93+
<scope>test</scope>
94+
</dependency>
8595
<dependency>
8696
<groupId>com.google.api</groupId>
8797
<artifactId>gax-grpc</artifactId>
8898
<classifier>testlib</classifier>
8999
<scope>test</scope>
90100
</dependency>
101+
<dependency>
102+
<groupId>com.google.api</groupId>
103+
<artifactId>gax-httpjson</artifactId>
104+
<classifier>testlib</classifier>
105+
<scope>test</scope>
106+
</dependency>
91107
</dependencies>
92108

93109
<profiles>

google-cloud-workflow-executions/src/main/java/com/google/cloud/workflows/executions/v1/ExecutionsClient.java

+15-5
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import com.google.api.core.ApiFuture;
2020
import com.google.api.core.ApiFutures;
21-
import com.google.api.core.BetaApi;
2221
import com.google.api.gax.core.BackgroundResource;
2322
import com.google.api.gax.paging.AbstractFixedSizeCollection;
2423
import com.google.api.gax.paging.AbstractPage;
@@ -99,6 +98,20 @@
9998
* ExecutionsClient executionsClient = ExecutionsClient.create(executionsSettings);
10099
* }</pre>
101100
*
101+
* <p>To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over
102+
* the wire:
103+
*
104+
* <pre>{@code
105+
* // This snippet has been automatically generated for illustrative purposes only.
106+
* // It may require modifications to work in your environment.
107+
* ExecutionsSettings executionsSettings =
108+
* ExecutionsSettings.newBuilder()
109+
* .setTransportChannelProvider(
110+
* ExecutionsSettings.defaultHttpJsonTransportProviderBuilder().build())
111+
* .build();
112+
* ExecutionsClient executionsClient = ExecutionsClient.create(executionsSettings);
113+
* }</pre>
114+
*
102115
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
103116
*/
104117
@Generated("by gapic-generator-java")
@@ -123,7 +136,6 @@ public static final ExecutionsClient create(ExecutionsSettings settings) throws
123136
* Constructs an instance of ExecutionsClient, using the given stub for making calls. This is for
124137
* advanced usage - prefer using create(ExecutionsSettings).
125138
*/
126-
@BetaApi("A restructuring of stub classes is planned, so this may break in the future")
127139
public static final ExecutionsClient create(ExecutionsStub stub) {
128140
return new ExecutionsClient(stub);
129141
}
@@ -137,7 +149,6 @@ protected ExecutionsClient(ExecutionsSettings settings) throws IOException {
137149
this.stub = ((ExecutionsStubSettings) settings.getStubSettings()).createStub();
138150
}
139151

140-
@BetaApi("A restructuring of stub classes is planned, so this may break in the future")
141152
protected ExecutionsClient(ExecutionsStub stub) {
142153
this.settings = null;
143154
this.stub = stub;
@@ -147,7 +158,6 @@ public final ExecutionsSettings getSettings() {
147158
return settings;
148159
}
149160

150-
@BetaApi("A restructuring of stub classes is planned, so this may break in the future")
151161
public ExecutionsStub getStub() {
152162
return stub;
153163
}
@@ -297,7 +307,7 @@ public final ListExecutionsPagedResponse listExecutions(ListExecutionsRequest re
297307
* .build();
298308
* while (true) {
299309
* ListExecutionsResponse response = executionsClient.listExecutionsCallable().call(request);
300-
* for (Execution element : response.getResponsesList()) {
310+
* for (Execution element : response.getExecutionsList()) {
301311
* // doThingsWith(element);
302312
* }
303313
* String nextPageToken = response.getNextPageToken();

google-cloud-workflow-executions/src/main/java/com/google/cloud/workflows/executions/v1/ExecutionsSettings.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;
@@ -117,11 +118,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
117118
return ExecutionsStubSettings.defaultCredentialsProviderBuilder();
118119
}
119120

120-
/** Returns a builder for the default ChannelProvider for this service. */
121+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
121122
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
122123
return ExecutionsStubSettings.defaultGrpcTransportProviderBuilder();
123124
}
124125

126+
/** Returns a builder for the default REST ChannelProvider for this service. */
127+
@BetaApi
128+
public static InstantiatingHttpJsonChannelProvider.Builder
129+
defaultHttpJsonTransportProviderBuilder() {
130+
return ExecutionsStubSettings.defaultHttpJsonTransportProviderBuilder();
131+
}
132+
125133
public static TransportChannelProvider defaultTransportChannelProvider() {
126134
return ExecutionsStubSettings.defaultTransportChannelProvider();
127135
}
@@ -131,11 +139,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil
131139
return ExecutionsStubSettings.defaultApiClientHeaderProviderBuilder();
132140
}
133141

134-
/** Returns a new builder for this class. */
142+
/** Returns a new gRPC builder for this class. */
135143
public static Builder newBuilder() {
136144
return Builder.createDefault();
137145
}
138146

147+
/** Returns a new REST builder for this class. */
148+
@BetaApi
149+
public static Builder newHttpJsonBuilder() {
150+
return Builder.createHttpJsonDefault();
151+
}
152+
139153
/** Returns a new builder for this class. */
140154
public static Builder newBuilder(ClientContext clientContext) {
141155
return new Builder(clientContext);
@@ -173,6 +187,11 @@ private static Builder createDefault() {
173187
return new Builder(ExecutionsStubSettings.newBuilder());
174188
}
175189

190+
@BetaApi
191+
private static Builder createHttpJsonDefault() {
192+
return new Builder(ExecutionsStubSettings.newHttpJsonBuilder());
193+
}
194+
176195
public ExecutionsStubSettings.Builder getStubSettingsBuilder() {
177196
return ((ExecutionsStubSettings.Builder) getStubSettings());
178197
}

google-cloud-workflow-executions/src/main/java/com/google/cloud/workflows/executions/v1/stub/ExecutionsStubSettings.java

+50-4
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;
@@ -177,13 +180,17 @@ public UnaryCallSettings<CancelExecutionRequest, Execution> cancelExecutionSetti
177180
return cancelExecutionSettings;
178181
}
179182

180-
@BetaApi("A restructuring of stub classes is planned, so this may break in the future")
181183
public ExecutionsStub createStub() throws IOException {
182184
if (getTransportChannelProvider()
183185
.getTransportName()
184186
.equals(GrpcTransportChannel.getGrpcTransportName())) {
185187
return GrpcExecutionsStub.create(this);
186188
}
189+
if (getTransportChannelProvider()
190+
.getTransportName()
191+
.equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
192+
return HttpJsonExecutionsStub.create(this);
193+
}
187194
throw new UnsupportedOperationException(
188195
String.format(
189196
"Transport not supported: %s", getTransportChannelProvider().getTransportName()));
@@ -216,30 +223,56 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
216223
.setUseJwtAccessWithScope(true);
217224
}
218225

219-
/** Returns a builder for the default ChannelProvider for this service. */
226+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
220227
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
221228
return InstantiatingGrpcChannelProvider.newBuilder()
222229
.setMaxInboundMessageSize(Integer.MAX_VALUE);
223230
}
224231

232+
/** Returns a builder for the default REST ChannelProvider for this service. */
233+
@BetaApi
234+
public static InstantiatingHttpJsonChannelProvider.Builder
235+
defaultHttpJsonTransportProviderBuilder() {
236+
return InstantiatingHttpJsonChannelProvider.newBuilder();
237+
}
238+
225239
public static TransportChannelProvider defaultTransportChannelProvider() {
226240
return defaultGrpcTransportProviderBuilder().build();
227241
}
228242

229243
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
230-
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
244+
public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
231245
return ApiClientHeaderProvider.newBuilder()
232246
.setGeneratedLibToken(
233247
"gapic", GaxProperties.getLibraryVersion(ExecutionsStubSettings.class))
234248
.setTransportToken(
235249
GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
236250
}
237251

238-
/** Returns a new builder for this class. */
252+
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
253+
public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
254+
return ApiClientHeaderProvider.newBuilder()
255+
.setGeneratedLibToken(
256+
"gapic", GaxProperties.getLibraryVersion(ExecutionsStubSettings.class))
257+
.setTransportToken(
258+
GaxHttpJsonProperties.getHttpJsonTokenName(),
259+
GaxHttpJsonProperties.getHttpJsonVersion());
260+
}
261+
262+
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
263+
return ExecutionsStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
264+
}
265+
266+
/** Returns a new gRPC builder for this class. */
239267
public static Builder newBuilder() {
240268
return Builder.createDefault();
241269
}
242270

271+
/** Returns a new REST builder for this class. */
272+
public static Builder newHttpJsonBuilder() {
273+
return Builder.createHttpJsonDefault();
274+
}
275+
243276
/** Returns a new builder for this class. */
244277
public static Builder newBuilder(ClientContext clientContext) {
245278
return new Builder(clientContext);
@@ -340,6 +373,19 @@ private static Builder createDefault() {
340373
return initDefaults(builder);
341374
}
342375

376+
private static Builder createHttpJsonDefault() {
377+
Builder builder = new Builder(((ClientContext) null));
378+
379+
builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
380+
builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
381+
builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
382+
builder.setEndpoint(getDefaultEndpoint());
383+
builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
384+
builder.setSwitchToMtlsEndpointAllowed(true);
385+
386+
return initDefaults(builder);
387+
}
388+
343389
private static Builder initDefaults(Builder builder) {
344390
builder
345391
.listExecutionsSettings()
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.workflows.executions.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 Executions service API.
40+
*
41+
* <p>This class is for advanced usage.
42+
*/
43+
@Generated("by gapic-generator-java")
44+
@BetaApi
45+
public class HttpJsonExecutionsCallableFactory
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)