Skip to content

Commit fb5a137

Browse files
feat: Enable REST transport for most of Java and Go clients (#719)
* 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 * deps: adding gax-httpjson * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * fix: unnecessary deps Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Tomo Suzuki <suztomo@google.com>
1 parent 4deed43 commit fb5a137

8 files changed

Lines changed: 1150 additions & 7 deletions

File tree

java-billingbudgets/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ implementation 'com.google.cloud:google-cloud-billingbudgets'
5656
If you are using Gradle without BOM, add this to your dependencies
5757

5858
```Groovy
59-
implementation 'com.google.cloud:google-cloud-billingbudgets:2.2.0'
59+
implementation 'com.google.cloud:google-cloud-billingbudgets:2.2.1'
6060
```
6161

6262
If you are using SBT, add this to your dependencies
6363

6464
```Scala
65-
libraryDependencies += "com.google.cloud" % "google-cloud-billingbudgets" % "2.2.0"
65+
libraryDependencies += "com.google.cloud" % "google-cloud-billingbudgets" % "2.2.1"
6666
```
6767

6868
## Authentication

java-billingbudgets/google-cloud-billingbudgets/pom.xml

Lines changed: 16 additions & 0 deletions
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>
@@ -84,12 +88,24 @@
8488
<scope>test</scope>
8589
</dependency>
8690
<!-- Need testing utility classes for generated gRPC clients tests -->
91+
<dependency>
92+
<groupId>com.google.api</groupId>
93+
<artifactId>gax</artifactId>
94+
<classifier>testlib</classifier>
95+
<scope>test</scope>
96+
</dependency>
8797
<dependency>
8898
<groupId>com.google.api</groupId>
8999
<artifactId>gax-grpc</artifactId>
90100
<classifier>testlib</classifier>
91101
<scope>test</scope>
92102
</dependency>
103+
<dependency>
104+
<groupId>com.google.api</groupId>
105+
<artifactId>gax-httpjson</artifactId>
106+
<classifier>testlib</classifier>
107+
<scope>test</scope>
108+
</dependency>
93109
</dependencies>
94110

95111
<profiles>

java-billingbudgets/google-cloud-billingbudgets/src/main/java/com/google/cloud/billing/budgets/v1/BudgetServiceClient.java

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

java-billingbudgets/google-cloud-billingbudgets/src/main/java/com/google/cloud/billing/budgets/v1/BudgetServiceSettings.java

Lines changed: 21 additions & 2 deletions
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;
@@ -123,11 +124,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
123124
return BudgetServiceStubSettings.defaultCredentialsProviderBuilder();
124125
}
125126

126-
/** Returns a builder for the default ChannelProvider for this service. */
127+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
127128
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
128129
return BudgetServiceStubSettings.defaultGrpcTransportProviderBuilder();
129130
}
130131

132+
/** Returns a builder for the default REST ChannelProvider for this service. */
133+
@BetaApi
134+
public static InstantiatingHttpJsonChannelProvider.Builder
135+
defaultHttpJsonTransportProviderBuilder() {
136+
return BudgetServiceStubSettings.defaultHttpJsonTransportProviderBuilder();
137+
}
138+
131139
public static TransportChannelProvider defaultTransportChannelProvider() {
132140
return BudgetServiceStubSettings.defaultTransportChannelProvider();
133141
}
@@ -137,11 +145,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil
137145
return BudgetServiceStubSettings.defaultApiClientHeaderProviderBuilder();
138146
}
139147

140-
/** Returns a new builder for this class. */
148+
/** Returns a new gRPC builder for this class. */
141149
public static Builder newBuilder() {
142150
return Builder.createDefault();
143151
}
144152

153+
/** Returns a new REST builder for this class. */
154+
@BetaApi
155+
public static Builder newHttpJsonBuilder() {
156+
return Builder.createHttpJsonDefault();
157+
}
158+
145159
/** Returns a new builder for this class. */
146160
public static Builder newBuilder(ClientContext clientContext) {
147161
return new Builder(clientContext);
@@ -179,6 +193,11 @@ private static Builder createDefault() {
179193
return new Builder(BudgetServiceStubSettings.newBuilder());
180194
}
181195

196+
@BetaApi
197+
private static Builder createHttpJsonDefault() {
198+
return new Builder(BudgetServiceStubSettings.newHttpJsonBuilder());
199+
}
200+
182201
public BudgetServiceStubSettings.Builder getStubSettingsBuilder() {
183202
return ((BudgetServiceStubSettings.Builder) getStubSettings());
184203
}

java-billingbudgets/google-cloud-billingbudgets/src/main/java/com/google/cloud/billing/budgets/v1/stub/BudgetServiceStubSettings.java

Lines changed: 50 additions & 3 deletions
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;
@@ -193,6 +196,11 @@ public BudgetServiceStub createStub() throws IOException {
193196
.equals(GrpcTransportChannel.getGrpcTransportName())) {
194197
return GrpcBudgetServiceStub.create(this);
195198
}
199+
if (getTransportChannelProvider()
200+
.getTransportName()
201+
.equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
202+
return HttpJsonBudgetServiceStub.create(this);
203+
}
196204
throw new UnsupportedOperationException(
197205
String.format(
198206
"Transport not supported: %s", getTransportChannelProvider().getTransportName()));
@@ -225,30 +233,56 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
225233
.setUseJwtAccessWithScope(true);
226234
}
227235

228-
/** Returns a builder for the default ChannelProvider for this service. */
236+
/** Returns a builder for the default gRPC ChannelProvider for this service. */
229237
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
230238
return InstantiatingGrpcChannelProvider.newBuilder()
231239
.setMaxInboundMessageSize(Integer.MAX_VALUE);
232240
}
233241

242+
/** Returns a builder for the default REST ChannelProvider for this service. */
243+
@BetaApi
244+
public static InstantiatingHttpJsonChannelProvider.Builder
245+
defaultHttpJsonTransportProviderBuilder() {
246+
return InstantiatingHttpJsonChannelProvider.newBuilder();
247+
}
248+
234249
public static TransportChannelProvider defaultTransportChannelProvider() {
235250
return defaultGrpcTransportProviderBuilder().build();
236251
}
237252

238253
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
239-
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
254+
public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
240255
return ApiClientHeaderProvider.newBuilder()
241256
.setGeneratedLibToken(
242257
"gapic", GaxProperties.getLibraryVersion(BudgetServiceStubSettings.class))
243258
.setTransportToken(
244259
GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
245260
}
246261

247-
/** Returns a new builder for this class. */
262+
@BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
263+
public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
264+
return ApiClientHeaderProvider.newBuilder()
265+
.setGeneratedLibToken(
266+
"gapic", GaxProperties.getLibraryVersion(BudgetServiceStubSettings.class))
267+
.setTransportToken(
268+
GaxHttpJsonProperties.getHttpJsonTokenName(),
269+
GaxHttpJsonProperties.getHttpJsonVersion());
270+
}
271+
272+
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
273+
return BudgetServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
274+
}
275+
276+
/** Returns a new gRPC builder for this class. */
248277
public static Builder newBuilder() {
249278
return Builder.createDefault();
250279
}
251280

281+
/** Returns a new REST builder for this class. */
282+
public static Builder newHttpJsonBuilder() {
283+
return Builder.createHttpJsonDefault();
284+
}
285+
252286
/** Returns a new builder for this class. */
253287
public static Builder newBuilder(ClientContext clientContext) {
254288
return new Builder(clientContext);
@@ -376,6 +410,19 @@ private static Builder createDefault() {
376410
return initDefaults(builder);
377411
}
378412

413+
private static Builder createHttpJsonDefault() {
414+
Builder builder = new Builder(((ClientContext) null));
415+
416+
builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
417+
builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
418+
builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
419+
builder.setEndpoint(getDefaultEndpoint());
420+
builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
421+
builder.setSwitchToMtlsEndpointAllowed(true);
422+
423+
return initDefaults(builder);
424+
}
425+
379426
private static Builder initDefaults(Builder builder) {
380427
builder
381428
.createBudgetSettings()
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.billing.budgets.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 BudgetService service API.
40+
*
41+
* <p>This class is for advanced usage.
42+
*/
43+
@Generated("by gapic-generator-java")
44+
@BetaApi
45+
public class HttpJsonBudgetServiceCallableFactory
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)